[Issue 6501] Create dependencies between classes on import

[email protected] Mon, 22 Dec 2014 15:26:01 -0800 (PST)
Newsgroups gmane.comp.lang.uml.argouml.issues
Message-ID <[email protected]>
http://argouml.tigris.org/issues/show_bug.cgi?id=6501






------- Additional comments from [email protected] Mon Dec 22 15:26:01 -0800 2014 -------
Bob, I've just committed the complete method, hopefully not causing a conflict
for you:

    void addClassifierDependency(String name) {
        String classifierName = stripVarargAndGenerics(name);
        Object clientObj = parseState.getClassifier();
        if (clientObj == null) {
            return;
        }
        Object supplierObj = null;
        
        // first try: lookup classifierName in same namespace
        Object ns = Model.getFacade().getNamespace(clientObj);
        if (ns != null) {
            supplierObj = Model.getFacade().lookupIn(ns, classifierName);
        }
        
        // second try: resolve fully qualified classifier (xxx.yyy.Zzz)
        String packageName = getPackageName(name);
        if (supplierObj == null && packageName != null && packageName.length() >
0) {
            classifierName = this.getClassifierName(name);
            Object mPackage = getPackage(packageName, true);
            supplierObj = Model.getFacade().lookupIn(mPackage, classifierName);
        }

        // third try: lookup in imports
        Object srcFile = parseStateStack.lastElement().getArtifact();
        if (supplierObj == null && srcFile != null) {
            Collection dependencies =
Model.getFacade().getClientDependencies(srcFile);
            for (Object dep : dependencies) {
                for (Object suppl : Model.getFacade().getSuppliers(dep)) {
                    if (Model.getFacade().isAPackage(suppl)) {
                        supplierObj = Model.getFacade().lookupIn(suppl,
classifierName);
                    } else if
(classifierName.equals(Model.getFacade().getName(suppl))) {
                        supplierObj = suppl;
                    }
                }
                if (supplierObj != null) {
                    break;
                }
            }
        }
        
        // finally build the dependency
        if (supplierObj != null) {
            buildDependency(supplierObj, clientObj, null);
        }
    }

Does this work well for your? I now have a nice dependency for

package demo;

import java.applet.*;

public class Test {

	private void test() {
		Applet a;
	}
}

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=448&dsMessageId=3093266

To unsubscribe from this list, e-mail: [[email protected]].
Please do not reply to this mail. Instead, add your comments in the issue.