Author: tfmorris
Date: 2008-05-27 15:33:33-0700
New Revision: 14812
Modified:
trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java
trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java
trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java
trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java
Log:
Issue 5029 - Fix failing tests, add missing Javadoc, add TODOs for additional work
Modified: trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java?view=diff&rev=14812&p1=trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java&p2=trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java&r1=14811&r2=14812
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java (original)
+++ trunk/src/argouml-app/src/org/argouml/moduleloader/ModuleLoader2.java 2008-05-27 15:33:33-0700
@@ -27,7 +27,6 @@
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
@@ -55,8 +54,7 @@
import org.argouml.profile.ProfileException;
import org.argouml.profile.ProfileFacade;
import org.argouml.profile.UserDefinedProfile;
-import org.argouml.profile.internal.ProfileManagerImpl;
-import org.argouml.ui.ProjectBrowser;
+
/**
* This is the module loader that loads modules implementing the
@@ -574,8 +572,6 @@
return;
}
- LOG.info("Reading profiles...");
- loadProfilesFromJarFile(jarfile, file);
Manifest manifest;
try {
@@ -609,7 +605,10 @@
if (loadedClass) {
// Add this to search list for I18N properties
- Translator.addClassLoader(classloader);
+ Translator.addClassLoader(classloader);
+
+ LOG.info("Reading profiles...");
+ loadProfilesFromJarFile(jarfile, file);
} else {
LOG.error("Failed to find any loadable ArgoUML modules in jar "
+ file);
@@ -624,13 +623,20 @@
*/
private void loadProfilesFromJarFile(JarFile jarfile, File file) {
Enumeration<JarEntry> entries = jarfile.entries();
- for(JarEntry entry = entries.nextElement(); entries.hasMoreElements(); entry = entries.nextElement()) {
+ // TODO: This should ask the module for its profiles rather than just
+ // assuming that any .xmi file is a profile. The module may have
+ // bundled .xmi files for other reasons.
+ for (JarEntry entry = entries.nextElement(); entries.hasMoreElements();
+ entry = entries.nextElement()) {
if (entry.getName().toLowerCase().endsWith(".xmi")) {
try {
- UserDefinedProfile udp = new UserDefinedProfile(new URL("jar:file:"+file.getCanonicalPath()+"!/"+entry.getName()));
+ URL url = new URL("jar:file:" + file.getCanonicalPath()
+ + "!/" + entry.getName());
+ UserDefinedProfile udp = new UserDefinedProfile(url);
ProfileFacade.getManager().registerProfile(udp);
- LOG.debug("Registered Profile: " + udp.getDisplayName()+"...");
+ LOG.debug("Registered Profile: " + udp.getDisplayName()
+ + "...");
} catch (ProfileException e) {
LOG.error("Exception", e);
} catch (IOException e) {
Modified: trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java?view=diff&rev=14812&p1=trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java&p2=trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java&r1=14811&r2=14812
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java (original)
+++ trunk/src/argouml-app/src/org/argouml/profile/ProfileReference.java 2008-05-27 15:33:33-0700
@@ -28,7 +28,7 @@
import java.net.URL;
/**
- * Support for the profile reference which internally to Argo implies having
+ * A reference to a Profile which internally implies having
* both a public profile reference and the path to the profile file.
*
* @author Luis Sergio Oliveira (euluis)
Modified: trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java?view=diff&rev=14812&p1=trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java&p2=trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java&r1=14811&r2=14812
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java (original)
+++ trunk/src/argouml-app/src/org/argouml/profile/URLModelLoader.java 2008-05-27 15:33:33-0700
@@ -27,7 +27,6 @@
import java.net.URL;
import java.util.Collection;
-import org.apache.log4j.Logger;
import org.argouml.model.Model;
import org.argouml.model.UmlException;
import org.argouml.model.XmiReader;
@@ -40,13 +39,13 @@
*/
public class URLModelLoader implements ProfileModelLoader {
- private static final Logger LOG = Logger.getLogger(URLModelLoader.class);
-
/**
* @param url the url/system id to load
- * @param publicId the publicId for which the model will be known - must be
- * equal in different machines in order to be possible to load the model.
- * @return the model
+ * @param publicId the publicId for which the model will be known - must be
+ * equal in different machines in order to be possible to
+ * load the model.
+ * @return a collection of top level elements in the profile (usually a
+ * single package stereotyped <<profile>>
* @throws ProfileException if the XMIReader couldn't read the profile
*/
public Collection loadModel(URL url, URL publicId)
@@ -65,7 +64,17 @@
}
}
- public Collection loadModel(ProfileReference reference) throws ProfileException {
- return loadModel(reference.getPublicReference(), reference.getPublicReference());
+ /**
+ * Load a profile from a ProfileReference.
+ *
+ * @param reference ProfileReference for desired profile
+ * @return a collection of top level elements in the profile (usually a
+ * single package stereotyped <<profile>>
+ * @throws ProfileException if the XMIReader couldn't read the profile
+ */
+ public Collection loadModel(final ProfileReference reference)
+ throws ProfileException {
+ return loadModel(reference.getPublicReference(), reference
+ .getPublicReference());
}
}
Modified: trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java?view=diff&rev=14812&p1=trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java&p2=trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java&r1=14811&r2=14812
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java (original)
+++ trunk/src/argouml-app/src/org/argouml/profile/UserDefinedProfile.java 2008-05-27 15:33:33-0700
@@ -31,7 +31,6 @@
import java.util.Collection;
import java.util.List;
import java.util.StringTokenizer;
-import java.util.Vector;
import org.argouml.model.Model;
@@ -44,7 +43,7 @@
private String displayName;
private File modelFile;
- private Collection model;
+ private Collection profilePackages;
private boolean fromZargo;
/**
@@ -63,7 +62,7 @@
throw new ProfileException(
"Failed to create the ProfileReference.", e);
}
- model = new FileModelLoader().loadModel(reference);
+ profilePackages = new FileModelLoader().loadModel(reference);
fromZargo = false;
completeLoading();
@@ -90,21 +89,22 @@
throw new ProfileException(
"Failed to create the ProfileReference.", e);
}
- model = new ReaderModelLoader(reader).loadModel(reference);
+ profilePackages = new ReaderModelLoader(reader).loadModel(reference);
fromZargo = true;
completeLoading();
}
+ // TODO: Add missing Javadoc
public UserDefinedProfile(URL url) throws ProfileException {
- ProfileReference reference = null;
- reference = new UserProfileReference(url.getPath(), url);
- model = new URLModelLoader().loadModel(reference);
+ ProfileReference reference =
+ new UserProfileReference(url.getPath(), url);
+ profilePackages = new URLModelLoader().loadModel(reference);
fromZargo = false;
completeLoading();
- }
+ }
/**
@@ -112,7 +112,7 @@
*/
private void completeLoading() {
- for (Object obj : model) {
+ for (Object obj : profilePackages) {
if (Model.getExtensionMechanismsHelper().hasStereotype(obj,
"profile")) {
@@ -121,33 +121,40 @@
if (name != null) {
displayName = name;
} else {
+ // TODO: I18N
displayName = "Untitled";
}
-
+
+ // TODO: Instead of a TaggedValue, why can't this just use
+ // Dependencies with the <<appliedProfile>> stereotype? It
+ // seems designed exactly for cases like this.
+
// load profile dependencies
- String dep = Model.getFacade().getTaggedValueValue(obj, "Dependency");
+ String dep = Model.getFacade().getTaggedValueValue(obj,
+ "Dependency");
StringTokenizer st = new StringTokenizer(dep, " ,;:");
-
+
String prof = null;
-
- do {
+
+ while (st.hasMoreTokens()) {
prof = st.nextToken();
if (prof != null) {
- this.addProfileDependency(lookForRegisteredProfile(prof));
+ this.addProfileDependency(
+ lookForRegisteredProfile(prof));
}
- } while(st.hasMoreTokens());
-
+ }
+
}
}
}
- private Profile lookForRegisteredProfile(String value) {
+ private Profile lookForRegisteredProfile(String name) {
ProfileManager man = ProfileFacade.getManager();
List<Profile> regs = man.getRegisteredProfiles();
- for (Profile profile : regs) {
- if (profile.getDisplayName().equalsIgnoreCase(value)) {
+ for (Profile profile : regs) {
+ if (profile.getDisplayName().equalsIgnoreCase(name)) {
return profile;
}
}
@@ -202,6 +209,6 @@
@Override
public Collection getProfilePackages() {
- return model;
+ return profilePackages;
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.