List of usage examples for org.aspectj.asm IRelationship getSourceHandle
public String getSourceHandle();
From source file:edu.utdallas.fdaf.aspectj.reverse.AspectJ2UMLConverter.java
License:Open Source License
/** * Adds the model's aspect-related relationships to the Package. * /*from w ww .ja v a 2 s.co m*/ * @param model the AJ Model facade * @param packageObject the UML Package * @param fragment the AspectJ/Java model package associated with packageObject */ void addAspectRelationships(AJProjectModelFacade model, Package packageObject, IPackageFragment fragment) { // You can narrow this to include on certain kinds of relationships AJRelationshipType[] relsTypes = AJRelationshipManager.getAllRelationshipTypes(); // check first to see if there is a model // will return false if there has not yet been a successful build of this project if (model.hasModel()) { // all relationships for project // can also query for relationships on individual elements or compilation units List<IRelationship> rels = model.getRelationshipsForProject(relsTypes); for (IRelationship rel : rels) { // Source is an IProgramElement handle, which refers to a piece of the program in AspectJ's World String sourceJHandle = ajHandleToJavaHandle(rel.getSourceHandle()); NamedElement sourceElement = a2uInfo.get(sourceJHandle); for (String targetHandle : rel.getTargets()) { String targetJHandle = ajHandleToJavaHandle(targetHandle); NamedElement targetElement = a2uInfo.get(targetJHandle); try { System.err.println("Calling addAspectRelationship - rel = " + rel.getName()); System.err.println("==>Source: jHandle=" + sourceJHandle + ", sourceElement=" + sourceElement.getQualifiedName() + " (class " + sourceElement.getClass().getName() + ")"); System.err.println("==>Target: jHandle=" + targetJHandle + ", targetElement=" + targetElement.getQualifiedName() + " (class " + targetElement.getClass().getName() + ")"); addAspectRelationship(rel, sourceElement, targetElement); } catch (Exception e) { // TODO Auto-generated catch block System.err.println("Exception thrown by addAspectRelationship"); System.err.println("***rel = " + rel.getName()); System.err.println("***Source: jHandle=" + sourceJHandle + ", sourceElement=" + sourceElement.getQualifiedName()); System.err.println("***Target: jHandle=" + targetJHandle + ", targetElement=" + targetElement.getQualifiedName()); e.printStackTrace(); } } } } }
From source file:org.caesarj.compiler.asm.StructureModelDump.java
License:Open Source License
protected void printRelationshipMap(CaesarJAsmManager asmManager) { System.out.println("Dumping Relationship Map"); IHierarchy hierarchy = asmManager.getHierarchy(); IRelationshipMap map = asmManager.getRelationshipMap(); Set entries = map.getEntries(); Iterator i = entries.iterator(); while (i.hasNext()) { List relationships = map.get((String) i.next()); Iterator j = relationships.iterator(); while (j.hasNext()) { IRelationship relationship = (IRelationship) j.next(); System.out.println("Relationship '" + relationship.getName() + "' of kind '" + relationship.getKind() + "' has " + relationship.getTargets().size() + " target(s) "); System.out.println(" source handle -->" + relationship.getSourceHandle()); Iterator k = relationship.getTargets().iterator(); while (k.hasNext()) { IProgramElement element = hierarchy.findElementForHandle((String) k.next()); System.out.println(" -> '" + element.getName() + "' of kind '" + element.getKind() + "' with handle " + element.getHandleIdentifier()); }//from www .j a va 2s . c om } } }
From source file:org.eclipse.ajdt.core.model.AJModel.java
License:Open Source License
/** * @param proj the project whose relationships we are looking for * @param relTypes the relationship types we are looking for * @return all DECLARED_ON relationships for the given java element * /* ww w .j a v a 2 s. c om*/ * @deprecated see bug 253245 */ public List/*AJRelationship*/ getAllRelationships(IProject proj, AJRelationshipType[] relTypes) { AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(proj); if (model.hasModel()) { // returns false if project is not built List/*IRelationship*/ allRels = model.getRelationshipsForProject(relTypes); List/*AJRelationship*/ ajRels = new ArrayList(allRels.size()); for (Iterator relIter = allRels.iterator(); relIter.hasNext();) { IRelationship rel = (IRelationship) relIter.next(); IJavaElement source = model.programElementToJavaElement(rel.getSourceHandle()); if (source instanceof IntertypeElement) { for (Iterator targetIter = rel.getTargets().iterator(); targetIter.hasNext();) { String target = (String) targetIter.next(); // ensure a Java handle is used here. // because the things being compared to are // Java handles. // This is avoiding problems when Type is in a .aj file IJavaElement elt = model.programElementToJavaElement(target); elt = JavaCore.create(AspectJCore.convertToJavaCUHandle(elt.getHandleIdentifier(), elt)); if (elt != null) { // will be null if type is an aspect type or contained in an aspect type AJRelationship ajRel = new AJRelationship(source, AJRelationshipManager.toRelationshipType(rel.getName()), elt, rel.hasRuntimeTest()); ajRels.add(ajRel); } } } } return ajRels; } else { return Collections.EMPTY_LIST; } }
From source file:org.eclipse.ajdt.core.model.AJModelChecker.java
License:Open Source License
private static List<String> invalidAdviceRelationsip(IRelationship rel, AJProjectModelFacade model) { List<String> problems = new ArrayList<String>(); if (rel.getKind() == IRelationship.Kind.ADVICE || rel.getKind() == IRelationship.Kind.ADVICE_AFTER || rel.getKind() == IRelationship.Kind.ADVICE_AFTERRETURNING || rel.getKind() == IRelationship.Kind.ADVICE_AFTERTHROWING || rel.getKind() == IRelationship.Kind.ADVICE_BEFORE || rel.getKind() == IRelationship.Kind.ADVICE_AROUND) { IJavaElement elt = model.programElementToJavaElement(rel.getSourceHandle()); if (!elt.exists()) { problems.add("Java Element does not exist: " + rel.getSourceHandle() + "\n\tIt is the source relationship of " + toRelString(rel) + "\n\tThis may not actually be a problem if compiling broken code or advising static initializers."); }/* w w w .jav a 2 s .c om*/ if (elt.getElementType() == IJavaElement.COMPILATION_UNIT || elt.getElementType() == IJavaElement.CLASS_FILE) { problems.add( "Java Element is wrong type (advice relationships should not contain any types or compilation units): " + rel.getSourceHandle() + "\n\tIt is the source relationship of " + toRelString(rel)); } for (Iterator<String> targetIter = rel.getTargets().iterator(); targetIter.hasNext();) { String target = targetIter.next(); elt = model.programElementToJavaElement(target); if (!elt.exists()) { problems.add("Java Element does not exist: " + target + "\n\tIt is the source relationship of " + toRelString(rel) + "\n\tThis may not actually be a problem if compiling broken code or advising static initializers."); } if (elt != AJProjectModelFacade.ERROR_JAVA_ELEMENT && (elt.getElementType() == IJavaElement.COMPILATION_UNIT || elt.getElementType() == IJavaElement.CLASS_FILE)) { problems.add( "Java Element is wrong type (advice relationships should not contain any types or compilation units): " + target + "\n\tIt is the source relationship of " + toRelString(rel)); } } } return problems; }
From source file:org.eclipse.ajdt.core.model.AJModelChecker.java
License:Open Source License
private static List<String> itdsNotOnType(IRelationship rel, AJProjectModelFacade model) { List<String> problems = new ArrayList<String>(); if (rel.getKind() == IRelationship.Kind.DECLARE_INTER_TYPE) { IJavaElement elt = model.programElementToJavaElement(rel.getSourceHandle()); if (!elt.exists()) { problems.add("Java Element does not exist: " + rel.getSourceHandle() + "\n\tIt is the source relationship of " + toRelString(rel) + "\n\tThis may not actually be a problem if compiling broken code."); }/* www . j av a2s .c o m*/ if (elt != AJProjectModelFacade.ERROR_JAVA_ELEMENT && (elt.getElementType() == IJavaElement.FIELD || elt.getElementType() == IJavaElement.METHOD || elt.getElementType() == IJavaElement.LOCAL_VARIABLE || elt.getElementType() == IJavaElement.INITIALIZER || elt.getElementType() == IJavaElement.COMPILATION_UNIT || elt.getElementType() == IJavaElement.CLASS_FILE) && !(elt instanceof IntertypeElement || elt instanceof DeclareElement)) { problems.add( "Java Element is wrong type (ITD relationships should only contain types and intertype elements): " + rel.getSourceHandle() + "\n\tIt is the source relationship of " + toRelString(rel)); } for (Iterator<String> targetIter = rel.getTargets().iterator(); targetIter.hasNext();) { String target = targetIter.next(); elt = model.programElementToJavaElement(target); if (!elt.exists()) { problems.add("Java Element does not exist: " + target + "\n\tIt is the source relationship of " + toRelString(rel) + "\n\tThis may not actually be a problem if compiling broken code."); } if (elt != AJProjectModelFacade.ERROR_JAVA_ELEMENT && (elt.getElementType() == IJavaElement.FIELD || elt.getElementType() == IJavaElement.METHOD || elt.getElementType() == IJavaElement.LOCAL_VARIABLE || elt.getElementType() == IJavaElement.INITIALIZER || elt.getElementType() == IJavaElement.COMPILATION_UNIT || elt.getElementType() == IJavaElement.CLASS_FILE) && !(elt instanceof IntertypeElement || elt instanceof DeclareElement)) { problems.add( "Java Element is wrong type (ITD relationships should only contain types and intertype elements): " + target + "\n\tIt is the source relationship of " + toRelString(rel)); } } } return problems; }
From source file:org.eclipse.ajdt.core.model.AJModelChecker.java
License:Open Source License
private static String toRelString(IRelationship rel) { StringBuffer sb = new StringBuffer(); sb.append(rel.getSourceHandle()); sb.append(" --"); sb.append(rel.getName());/*from w ww . j av a 2s. c om*/ sb.append("--> "); for (Iterator<String> targetIter = rel.getTargets().iterator(); targetIter.hasNext();) { String target = targetIter.next(); sb.append(target); if (targetIter.hasNext()) { sb.append(", "); } } return sb.toString(); }
From source file:org.eclipse.ajdt.core.model.AJProjectModelFacade.java
License:Open Source License
/** * useful for testing/*www . j a va 2s . co m*/ */ public static String printRelationship(IRelationship rel) { return rel.getSourceHandle() + " --" + rel.getName() + "--> " + rel.getTargets(); }
From source file:org.eclipse.ajdt.core.parserbridge.AJCompilationUnitProblemFinder.java
License:Open Source License
private static Set<String> getITDNames(CompilationUnit unit, AJProjectModelFacade model) { Set<String> names = new HashSet<String>(); Map relsMap = model.getRelationshipsForFile(unit, new AJRelationshipType[] { AJRelationshipManager.DECLARED_ON, AJRelationshipManager.ASPECT_DECLARATIONS }); for (Iterator relsMapIter = relsMap.values().iterator(); relsMapIter.hasNext();) { List rels = (List) relsMapIter.next(); for (Iterator relsIter = rels.iterator(); relsIter.hasNext();) { IRelationship rel = (IRelationship) relsIter.next(); IProgramElement[] ipes;/*from w ww. jav a 2 s . co m*/ if (rel.getName().equals(AJRelationshipManager.DECLARED_ON.getDisplayName())) { ipes = new IProgramElement[1]; ipes[0] = model.getProgramElement(rel.getSourceHandle()); } else { List<String> targets = rel.getTargets(); ipes = new IProgramElement[targets.size()]; for (int i = 0; i < ipes.length; i++) { ipes[i] = model.getProgramElement(targets.get(i)); } } for (int i = 0; i < ipes.length; i++) { String longName = ipes[i].getName(); String[] splits = longName.split("\\."); String lastSegment = splits[splits.length - 1]; String itdName = lastSegment; // ignore constructors if (splits.length > 1 && itdName.equals(splits[splits.length - 2])) { continue; } names.add(itdName); } } } return names; }
From source file:org.eclipse.ajdt.core.tests.AJCoreTest.java
License:Open Source License
static void compareElementsFromRelationships(AJRelationshipType[] rels, IProject project) throws JavaModelException { IJavaProject jProject = JavaCore.create(project); AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(jProject.getProject()); List allRels = model.getRelationshipsForProject(rels); if (!model.hasModel() || allRels.size() == 0) { // if the project or model didn't build properly we'd get no // relationships // and the test would blindly pass without this check fail("No relationships found for project " + project.getName()); //$NON-NLS-1$ }//from w w w.ja va 2s .c o m for (Iterator iter = allRels.iterator(); iter.hasNext();) { IRelationship rel = (IRelationship) iter.next(); HandleTestUtils.checkAJHandle(rel.getSourceHandle(), model); for (Iterator targetIter = rel.getTargets().iterator(); targetIter.hasNext();) { String handle = (String) targetIter.next(); HandleTestUtils.checkAJHandle(handle, model); } } }
From source file:org.eclipse.ajdt.core.tests.model.AJModelTest2.java
License:Open Source License
/** * Tests for a injar/binary relationship for an element advised by advice in * another project (by adding that project's bin directory to the * aspectpath)/*from w w w.j av a2 s. c om*/ * * @throws Exception */ public void testAspectPathDirWeaving() throws Exception { createPredefinedProject14("MyAspectLibrary"); //$NON-NLS-1$ IProject weaveMeProject = createPredefinedProject("WeaveMe"); //$NON-NLS-1$ this.waitForIndexes(); AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(weaveMeProject); AJRelationshipType[] rels = new AJRelationshipType[] { AJRelationshipManager.ADVISED_BY }; List<IRelationship> allRels = model.getRelationshipsForProject(rels); boolean gotBinaryAdvice = false; for (IRelationship rel : allRels) { IJavaElement source = model.programElementToJavaElement(rel.getSourceHandle()); if (source.getElementName().equals("main")) { //$NON-NLS-1$ for (String targetStr : rel.getTargets()) { IJavaElement target = model.programElementToJavaElement(targetStr); if (target.getElementName().indexOf("before") != -1) { //$NON-NLS-1$ gotBinaryAdvice = true; } } } } assertTrue("Didn't find main element advised by before advice", //$NON-NLS-1$ gotBinaryAdvice); }