Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 399832
Collapse All | Expand All

(-)a/plugins/org.eclipse.incquery.tooling.core/src/org/eclipse/incquery/tooling/core/generator/util/EMFPatternURIHandler.java (-3 / +20 lines)
Lines 53-59 Link Here
53
        List<String> fragments = new ArrayList<String>();
53
        List<String> fragments = new ArrayList<String>();
54
        EPackage p = e;
54
        EPackage p = e;
55
        while (nonEmptySuperPackage(p) != null) {
55
        while (nonEmptySuperPackage(p) != null) {
56
            fragments.add(p.getNsPrefix());
56
            fragments.add(p.getName());
57
            p = nonEmptySuperPackage(p);
57
            p = nonEmptySuperPackage(p);
58
            uriString = p.getNsURI();
58
            uriString = p.getNsURI();
59
59
Lines 109-120 Link Here
109
             */
109
             */
110
            for (EPackage p : uriToEPackageMap.values()) {
110
            for (EPackage p : uriToEPackageMap.values()) {
111
                EObject eObject = p.eResource().getEObject(fragment);
111
                EObject eObject = p.eResource().getEObject(fragment);
112
                EPackage e = p;
112
                if(eObject != null) {
113
                if(eObject != null) {
113
                    if(eObject instanceof ENamedElement) {
114
                    if(eObject instanceof ENamedElement) {
115
                    	remainingFragment = "";
116
                    	EObject parent = eObject.eContainer();
117
                    	/*
118
                    	 * Because this element was found by ID, p may not be the containing
119
                    	 * package. We must find the correct parent package along with all
120
                    	 * name elements inbetween.
121
                    	 */
122
                    	while (parent!= null && !(parent instanceof EPackage)){
123
                    		if (parent instanceof ENamedElement){
124
                    			remainingFragment += "/" + ((ENamedElement) parent).getName();
125
                    		}
126
                    		parent = parent.eContainer();
127
                    	}
128
                    	if (parent instanceof EPackage){
129
                    		e = (EPackage)parent;
130
                    	}
114
                        String name = ((ENamedElement) eObject).getName();
131
                        String name = ((ENamedElement) eObject).getName();
115
                        remainingFragment = "/" + name;
132
                        remainingFragment += "/" + name;
116
                    }
133
                    }
117
                    URI newUri = packageUriMap.get(p);
134
                    URI newUri = packageUriMap.get(e);
118
                    String newFragment = newUri.fragment() == null ? "/" + remainingFragment : newUri.fragment()
135
                    String newFragment = newUri.fragment() == null ? "/" + remainingFragment : newUri.fragment()
119
                        + remainingFragment;
136
                        + remainingFragment;
120
                    newUri = newUri.appendFragment(newFragment);
137
                    newUri = newUri.appendFragment(newFragment);

Return to bug 399832