List of usage examples for org.aspectj.weaver.loadtime.definition Definition appendWeaverOptions
public void appendWeaverOptions(String option)
From source file:org.eclipse.equinox.weaving.aspectj.loadtime.AspectAdminImpl.java
License:Open Source License
/** * @see org.eclipse.equinox.weaving.aspectj.AspectAdmin#resolveImportedPackage(org.osgi.framework.Bundle, * java.lang.String, int)/*from w w w.j a v a2 s. co m*/ */ public Definition resolveImportedPackage(final Bundle bundle, final String packageName, final int applyAspectsPolicy) { if (AspectAdmin.ASPECT_APPLY_POLICY_TRUE == applyAspectsPolicy) { final Definition exportedAspectDefinitions = getExportedAspectDefinitions(bundle); final Definition result = new Definition(); if (exportedAspectDefinitions != null) { final List<?> aspectClassNames = exportedAspectDefinitions.getAspectClassNames(); for (final Iterator<?> iterator = aspectClassNames.iterator(); iterator.hasNext();) { final String aspectName = (String) iterator.next(); final String aspectPackageName = getPackage(aspectName); if (aspectPackageName.equals(packageName)) { result.getAspectClassNames().add(aspectName); } } final Iterator<?> concreteAspects = exportedAspectDefinitions.getConcreteAspects().iterator(); while (concreteAspects.hasNext()) { final Definition.ConcreteAspect concreteAspect = (ConcreteAspect) concreteAspects.next(); if (concreteAspect.name != null && getPackage(concreteAspect.name).equals(packageName)) { result.getConcreteAspects().add(concreteAspect); } } if (exportedAspectDefinitions.getWeaverOptions().trim().length() > 0) { result.appendWeaverOptions(exportedAspectDefinitions.getWeaverOptions()); } } if (result.getAspectClassNames().size() > 0 || result.getConcreteAspects().size() > 0 || result.getWeaverOptions().length() > 0) { return result; } else { return null; } } else if (AspectAdmin.ASPECT_APPLY_POLICY_FALSE == applyAspectsPolicy) { return null; } else { final Definition exportedAspectDefinitions = getExportedAspectDefinitions(bundle); final Definition result = new Definition(); if (exportedAspectDefinitions != null) { final List<?> aspectClassNames = exportedAspectDefinitions.getAspectClassNames(); for (final Iterator<?> iterator = aspectClassNames.iterator(); iterator.hasNext();) { final String aspectName = (String) iterator.next(); final String aspectPackageName = getPackage(aspectName); final int aspectPolicy = getAspectPolicy(bundle, aspectPackageName); if (aspectPackageName.equals(packageName) && (AspectAdmin.ASPECT_POLICY_NOT_DEFINED == aspectPolicy || AspectAdmin.ASPECT_POLICY_OPT_OUT == aspectPolicy)) { result.getAspectClassNames().add(aspectName); } } final Iterator<?> concreteAspects = exportedAspectDefinitions.getConcreteAspects().iterator(); while (concreteAspects.hasNext()) { final Definition.ConcreteAspect concreteAspect = (ConcreteAspect) concreteAspects.next(); final String aspectPackageName = getPackage(concreteAspect.name); final int aspectPolicy = getAspectPolicy(bundle, aspectPackageName); if (aspectPackageName.equals(packageName) && (AspectAdmin.ASPECT_POLICY_NOT_DEFINED == aspectPolicy || AspectAdmin.ASPECT_POLICY_OPT_OUT == aspectPolicy)) { result.getConcreteAspects().add(concreteAspect); } } if (exportedAspectDefinitions.getWeaverOptions().trim().length() > 0) { result.appendWeaverOptions(exportedAspectDefinitions.getWeaverOptions()); } } if (result.getAspectClassNames().size() > 0 || result.getConcreteAspects().size() > 0 || result.getWeaverOptions().length() > 0) { return result; } else { return null; } } }
From source file:org.eclipse.equinox.weaving.aspectj.loadtime.AspectAdminImpl.java
License:Open Source License
/** * @see org.eclipse.equinox.weaving.aspectj.AspectAdmin#resolveRequiredBundle(org.osgi.framework.Bundle, * int)/*from w w w .j a v a2s.c om*/ */ public Definition resolveRequiredBundle(final Bundle bundle, final int applyAspectsPolicy) { if (AspectAdmin.ASPECT_APPLY_POLICY_TRUE == applyAspectsPolicy) { return getExportedAspectDefinitions(bundle); } else if (AspectAdmin.ASPECT_APPLY_POLICY_FALSE == applyAspectsPolicy) { return null; } else { final Definition exportedAspectDefinitions = getExportedAspectDefinitions(bundle); final Definition result = new Definition(); if (exportedAspectDefinitions != null) { final Iterator<?> aspects = exportedAspectDefinitions.getAspectClassNames().iterator(); while (aspects.hasNext()) { final String aspect = (String) aspects.next(); final String aspectPackage = getPackage(aspect); final int aspectPolicy = getAspectPolicy(bundle, aspectPackage); if (aspectPolicy == AspectAdmin.ASPECT_POLICY_NOT_DEFINED || aspectPolicy == AspectAdmin.ASPECT_POLICY_OPT_OUT) { result.getAspectClassNames().add(aspect); } } final Iterator<?> concreteAspects = exportedAspectDefinitions.getConcreteAspects().iterator(); while (concreteAspects.hasNext()) { final Definition.ConcreteAspect concreteAspect = (Definition.ConcreteAspect) concreteAspects .next(); final String aspectPackage = getPackage(concreteAspect.name); final int aspectPolicy = getAspectPolicy(bundle, aspectPackage); if (aspectPolicy == AspectAdmin.ASPECT_POLICY_NOT_DEFINED || aspectPolicy == AspectAdmin.ASPECT_POLICY_OPT_OUT) { result.getConcreteAspects().add(concreteAspect); } } if (exportedAspectDefinitions.getWeaverOptions().trim().length() > 0) { result.appendWeaverOptions(exportedAspectDefinitions.getWeaverOptions()); } } if (result.getAspectClassNames().size() > 0 || result.getConcreteAspects().size() > 0 || result.getWeaverOptions().length() > 0) { return result; } else { return null; } } }
From source file:org.eclipse.equinox.weaving.aspectj.loadtime.AspectAdminImpl.java
License:Open Source License
/** * Parse the aspect definition for the given bundle, if there is one. * /* w w w . j a va2s.c om*/ * @param bundle The bundle for which the aspect definition should be parsed */ protected void parseDefinitions(final Bundle bundle) { try { Definition allAspectsDefinition = null; final Set<String> exportedAspects = new LinkedHashSet<String>(); final Set<Definition.ConcreteAspect> exportedConcreteAspects = new HashSet<Definition.ConcreteAspect>(); final Map<String, Integer> policies = new HashMap<String, Integer>(); final Set<String> exportedPackages = new HashSet<String>(); // try to find aop.xml file final String aopXmlLocation = getDefinitionLocation(bundle); final URL aopXmlDef = bundle.getEntry(aopXmlLocation); if (aopXmlDef != null) { allAspectsDefinition = DocumentParser.parse(aopXmlDef); } // parse export package headers final Dictionary<?, ?> manifest = bundle.getHeaders(""); //$NON-NLS-1$ final ManifestElement[] exports = ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) manifest.get(Constants.EXPORT_PACKAGE)); for (int i = 0; exports != null && i < exports.length; i++) { final String packageName = exports[i].getValue(); exportedPackages.add(packageName); // policies final String policy = exports[i].getDirective(ASPECT_POLICY_DIRECTIVE); if (policy != null && policy.trim().toLowerCase().equals(ASPECT_POLICY_DIRECTIVE_OPT_OUT)) { policies.put(packageName, AspectAdmin.ASPECT_POLICY_OPT_OUT); } if (policy != null && policy.trim().toLowerCase().equals(ASPECT_POLICY_DIRECTIVE_OPT_IN)) { policies.put(packageName, AspectAdmin.ASPECT_POLICY_OPT_IN); } // aspects final String allaspects = exports[i].getAttribute(ASPECTS_ATTRIBUTE); if (allaspects != null) { final String[] aspects = ManifestElement.getArrayFromList(allaspects); if (aspects != null) { for (int j = 0; j < aspects.length; j++) { exportedAspects.add(packageName + "." + aspects[j]); //$NON-NLS-1$ } } } } // add aop.xml declared aspects to the list of exported aspects if their packages are exported if (allAspectsDefinition != null && allAspectsDefinition.getAspectClassNames() != null) { final Iterator<?> iterator = allAspectsDefinition.getAspectClassNames().iterator(); while (iterator.hasNext()) { final String aspect = (String) iterator.next(); final String packageName = getPackage(aspect); if (exportedPackages.contains(packageName)) { exportedAspects.add(aspect); } } } if (allAspectsDefinition != null && allAspectsDefinition.getConcreteAspects().size() > 0) { final Iterator<?> iterator = allAspectsDefinition.getConcreteAspects().iterator(); while (iterator.hasNext()) { final Definition.ConcreteAspect concreteAspect = (Definition.ConcreteAspect) iterator.next(); if (concreteAspect.name != null && exportedPackages.contains(getPackage(concreteAspect.name))) { exportedConcreteAspects.add(concreteAspect); } } } if (allAspectsDefinition != null) { this.aspectDefinitions.put(bundle, allAspectsDefinition); } if (exportedAspects.size() > 0 || exportedConcreteAspects.size() > 0 || (allAspectsDefinition != null && allAspectsDefinition.getWeaverOptions().length() > 0)) { final Definition exportedAspectsDefinition = new Definition(); exportedAspectsDefinition.getAspectClassNames().addAll(exportedAspects); exportedAspectsDefinition.getConcreteAspects().addAll(exportedConcreteAspects); if (allAspectsDefinition != null && allAspectsDefinition.getWeaverOptions().trim().length() > 0) { exportedAspectsDefinition.appendWeaverOptions(allAspectsDefinition.getWeaverOptions()); } this.aspectDefinitionsExported.put(bundle, exportedAspectsDefinition); } if (policies.size() > 0) { this.aspectPolicies.put(bundle, policies); } } catch (final Exception e) { e.printStackTrace(); } }
From source file:sf.arunner.AspectUtil.java
License:Open Source License
public static List<Definition> createAopDefinitions(Class<?> testclass) { Definition def = new Definition(); List<String> a = def.getAspectClassNames(); for (String aspect : findAspects(testclass)) a.add(aspect);//from w w w. j a v a2 s .c o m def.appendWeaverOptions("-verbose"); def.getIncludePatterns().add("*..*"); return Collections.singletonList(def); }