List of usage examples for org.aspectj.asm IRelationship hasRuntimeTest
public boolean hasRuntimeTest();
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 * // w w w. ja v a 2 s. c o m * @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.AJProjectModelFacade.java
License:Open Source License
public boolean hasRuntimeTest(IJavaElement je) { if (!isInitialized) { return false; }// www . ja va 2 s . com IProgramElement ipe = javaElementToProgramElement(je); List<IRelationship> relationships = relationshipMap.get(ipe); if (relationships != null) { for (IRelationship rel : relationships) { if (rel.hasRuntimeTest()) { return true; } } } return false; }
From source file:org.eclipse.ajdt.core.tests.model.AJModelTest2.java
License:Open Source License
/** * Tests for the existence of a particular "advised by" relationship with a * runtime test, and one without.//from ww w .ja va 2s .c om * * @throws Exception */ public void testHasRuntimeTest() throws Exception { IProject project = createPredefinedProject("MarkersTest"); //$NON-NLS-1$ AJRelationshipType[] rels = new AJRelationshipType[] { AJRelationshipManager.ADVISED_BY }; AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(project); List<IRelationship> allRels = model.getRelationshipsForProject(rels); boolean gotBeforeAdviceWithoutRuntimeTest = false; boolean gotAroundAdviceWithRuntimeTest = false; for (IRelationship rel : allRels) { IJavaElement source = model.programElementToJavaElement(rel.getSourceHandle()); if (source.getElementName().equals("bar")) { //$NON-NLS-1$ for (String targetStr : rel.getTargets()) { IJavaElement target = model.programElementToJavaElement(targetStr); if (target.getElementName().equals("before") //$NON-NLS-1$ && !rel.hasRuntimeTest()) { gotBeforeAdviceWithoutRuntimeTest = true; } else if (target.getElementName().equals("around") //$NON-NLS-1$ && rel.hasRuntimeTest()) { gotAroundAdviceWithRuntimeTest = true; } } } } assertTrue("Didn't find \"bar\" element advised by before advice without a runtime test", //$NON-NLS-1$ gotBeforeAdviceWithoutRuntimeTest); assertTrue("Didn't find \"bar\" element advised by around advice with a runtime test", //$NON-NLS-1$ gotAroundAdviceWithRuntimeTest); }
From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java
License:Open Source License
private void createMarker(IResource resource, int lineNumber, List<IRelationship> relationships) { String markerType = null;/*from w w w. j a va 2 s .c o m*/ boolean hasRuntime = false; for (IRelationship relationship : relationships) { hasRuntime |= relationship.hasRuntimeTest(); String customMarkerType = getCustomMarker(relationship); if (customMarkerType != null) { // Create a marker of the saved type or don't create one. // user has configured a custom marker createCustomMarker(resource, customMarkerType, lineNumber, relationship); } else { // must repeat for each target since // each target may be of a different type List<String> targets = relationship.getTargets(); for (String target : targets) { String markerTypeForRelationship = getMarkerTypeForRelationship(relationship, target); if (markerTypeForRelationship != null) { if (markerType == null) { markerType = markerTypeForRelationship; } else if (!markerType.equals(markerTypeForRelationship)) { markerType = getCombinedMarkerType(markerType, markerTypeForRelationship, hasRuntime); } } } } } // end for // Create the marker if (markerType != null) { try { IMarker marker = resource.createMarker(markerType); marker.setAttribute(IMarker.LINE_NUMBER, lineNumber); String label; int numTargets = getNumTargets(relationships); if (numTargets == 1) { label = getMarkerLabel(relationships); } else { label = getMultipleMarkersLabel(numTargets); } marker.setAttribute(IMarker.MESSAGE, label); marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH); } catch (CoreException e) { } } }
From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java
License:Open Source License
/** * Get the marker type that should be used for the given relationship * /*w w w . j a v a 2 s . co m*/ * @param relationship * @param target * @return */ private String getMarkerTypeForRelationship(IRelationship relationship, String target) { String name = relationship.getName(); boolean runtimeTest = relationship.hasRuntimeTest(); String markerType; if (name.equals(AsmRelationshipProvider.ADVISED_BY)) { IProgramElement advice = model.getProgramElement(target); AdviceKind ak; if (advice.getExtraInfo() != null) { ak = AdviceKind.stringToKind(advice.getExtraInfo().getExtraAdviceInformation()); } else { ak = null; } if (runtimeTest) { if (ak == null) { markerType = IAJModelMarker.DYNAMIC_ADVICE_MARKER; } else if (ak == AdviceKind.Before) { markerType = IAJModelMarker.DYNAMIC_BEFORE_ADVICE_MARKER; } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning || ak == AdviceKind.AfterThrowing) { markerType = IAJModelMarker.DYNAMIC_AFTER_ADVICE_MARKER; } else if (ak == AdviceKind.Around) { markerType = IAJModelMarker.DYNAMIC_AROUND_ADVICE_MARKER; } else { markerType = IAJModelMarker.DYNAMIC_ADVICE_MARKER; } } else { // no runtime test if (ak == null) { markerType = IAJModelMarker.ADVICE_MARKER; } else if (ak == AdviceKind.Before) { markerType = IAJModelMarker.BEFORE_ADVICE_MARKER; } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning || ak == AdviceKind.AfterThrowing) { markerType = IAJModelMarker.AFTER_ADVICE_MARKER; } else if (ak == AdviceKind.Around) { markerType = IAJModelMarker.AROUND_ADVICE_MARKER; } else { markerType = IAJModelMarker.ADVICE_MARKER; } } } else if (name.equals(AsmRelationshipProvider.ADVISES)) { IProgramElement advice = model.getProgramElement(relationship.getSourceHandle()); AdviceKind ak; if (advice.getExtraInfo() != null) { ak = AdviceKind.stringToKind(advice.getExtraInfo().getExtraAdviceInformation()); } else { ak = null; // hmmm...sometmes ExtradviceInformtion is null. // try to get the advice kind by the name if (advice.getName().startsWith("before")) { ak = AdviceKind.Before; } else if (advice.getName().startsWith("after")) { ak = AdviceKind.After; } else if (advice.getName().startsWith("around")) { ak = AdviceKind.Around; } } if (runtimeTest) { if (ak == null) { markerType = IAJModelMarker.SOURCE_DYNAMIC_ADVICE_MARKER; } else if (ak == AdviceKind.Before) { markerType = IAJModelMarker.SOURCE_DYNAMIC_BEFORE_ADVICE_MARKER; } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning || ak == AdviceKind.AfterThrowing) { markerType = IAJModelMarker.SOURCE_DYNAMIC_AFTER_ADVICE_MARKER; } else if (ak == AdviceKind.Around) { markerType = IAJModelMarker.SOURCE_DYNAMIC_AROUND_ADVICE_MARKER; } else { markerType = IAJModelMarker.SOURCE_DYNAMIC_ADVICE_MARKER; } } else { // no runtime test if (ak == null) { markerType = IAJModelMarker.SOURCE_ADVICE_MARKER; } else if (ak == AdviceKind.Before) { markerType = IAJModelMarker.SOURCE_BEFORE_ADVICE_MARKER; } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning || ak == AdviceKind.AfterThrowing) { markerType = IAJModelMarker.SOURCE_AFTER_ADVICE_MARKER; } else if (ak == AdviceKind.Around) { markerType = IAJModelMarker.SOURCE_AROUND_ADVICE_MARKER; } else { markerType = IAJModelMarker.SOURCE_ADVICE_MARKER; } } } else if (name.equals(AsmRelationshipProvider.ANNOTATED_BY) || name.equals(AsmRelationshipProvider.SOFTENED_BY) || name.equals(AsmRelationshipProvider.INTER_TYPE_DECLARED_BY)) { // note that we ignore MATCHES_DECLARE because that is taken care of // by error and warning markers markerType = IAJModelMarker.ITD_MARKER; } else if (name.equals(AsmRelationshipProvider.ANNOTATES) || name.equals(AsmRelationshipProvider.INTER_TYPE_DECLARES) || name.equals(AsmRelationshipProvider.SOFTENS) || name.equals(AsmRelationshipProvider.MATCHED_BY)) { markerType = IAJModelMarker.SOURCE_ITD_MARKER; } else { markerType = null; } return markerType; }
From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java
License:Open Source License
/** * Get a label for the given relationship * //from w ww . java 2s . co m * @param relationship * @return */ private String getMarkerLabel(IRelationship relationship) { IProgramElement target = model.getProgramElement((String) relationship.getTargets().get(0)); return relationship.getName() + " " //$NON-NLS-1$ + (target != null ? target.toLinkLabelString(false) : "null") + (relationship.hasRuntimeTest() ? " " + //$NON-NLS-1$ UIMessages.AspectJEditor_runtimetest : ""); //$NON-NLS-1$ }