Author: tfmorris
Date: 2008-08-26 15:12:42-0700
New Revision: 15615

Modified:
   
trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java
   
trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java

Log:
Issue 5346: Allow reading projects saved with previous version of profile code

Modified: 
trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java?view=diff&rev=15615&p1=trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java&p2=trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java&r1=15614&r2=15615
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java
    (original)
+++ 
trunk/src/argouml-app/src/org/argouml/persistence/ProfileConfigurationFilePersister.java
    2008-08-26 15:12:42-0700
@@ -127,10 +127,11 @@
         String className = br.readLine().trim();
         profile = ProfileFacade.getManager().getProfileForClass(
                 className);
-        if (profile == null) 
+        if (profile == null) {
             throw new OpenException(
                 "Plugin profile \"" + className 
                 + "\" is not available in installation.", null);
+        }
         return profile;
     }
 
@@ -197,11 +198,12 @@
         writer.close();
         LOG.info("Wrote user defined profile \"" + profileFile 
             + "\", with size " + xmi.length() + ".");
-        if (isSomeProfileDirectoryConfigured(profileManager))
+        if (isSomeProfileDirectoryConfigured(profileManager)) {
             profileManager.refreshRegisteredProfiles();
-        else 
+        } else {
             profileManager.addSearchPathDirectory(
                 profilesDirectory.getAbsolutePath());
+        }
     }
 
     private static Profile getMatchingUserDefinedProfile(String fileName, 
@@ -290,6 +292,7 @@
                         w.println("\t\t</userDefined>");
                     } else {
                         w.println("\t\t<plugin>");
+                        // TODO: Don't persist our internal implementation 
names
                         w.println("\t\t\t" + profile.getClass().getName());
                         w.println("\t\t</plugin>");
                     }

Modified: 
trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java?view=diff&rev=15615&p1=trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java&p2=trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java&r1=15614&r2=15615
==============================================================================
--- 
trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java  
    (original)
+++ 
trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java  
    2008-08-26 15:12:42-0700
@@ -251,8 +251,23 @@
     }
 
 
+    private static final String OLD_PROFILE_PACKAGE = 
"org.argouml.uml.profile";
+
+    private static final String NEW_PROFILE_PACKAGE = 
+        "org.argouml.profile.internal";
+    
     public Profile getProfileForClass(String profileClass) {
         Profile found = null;
+        
+        // If we found an old-style name, update it to the new package name
+        if (profileClass.startsWith(OLD_PROFILE_PACKAGE)) {
+            profileClass = profileClass.replace(OLD_PROFILE_PACKAGE,
+                    NEW_PROFILE_PACKAGE);
+        }
+        
+        // Make sure the names didn't change again
+        assert profileUML.getClass().getName().startsWith(NEW_PROFILE_PACKAGE);
+        
         for (Profile p : profiles) {
             if (p.getClass().getName().equals(profileClass)) {
                 found = p;

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to