List of usage examples for org.aspectj.weaver.loadtime.definition Definition getWeaverOptions
public String getWeaverOptions()
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)// w w w.j av a2 s .c om */ 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)//w ww. j a v a2 s.c o m */ 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 . ja v a 2 s. c o m*/ * @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:org.eclipse.osgi.aspectj.tests.AspectAdminImplTest.java
License:Open Source License
public void testNoAspectsButOptionsInAopXml() { Bundle bundle = EasyMock.createMock(Bundle.class); URL testAopDefFile = this.getClass().getResource("test-aop-with-options.xml"); //$NON-NLS-1$ Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(bundle.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile); EasyMock.replay(bundle);/*from w ww . j a v a 2 s . c om*/ aspectRegistry.bundleResolved(bundle); EasyMock.verify(bundle); Definition definition = aspectRegistry.getExportedAspectDefinitions(bundle); assertNotNull(definition); assertEquals(0, definition.getAspectClassNames().size()); assertEquals("here are the options ", definition.getWeaverOptions()); //$NON-NLS-1$ Definition resolvedRequires = aspectRegistry.resolveRequiredBundle(bundle, AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedRequires); assertEquals(0, resolvedRequires.getAspectClassNames().size()); assertEquals("here are the options ", resolvedRequires //$NON-NLS-1$ .getWeaverOptions()); Definition resolvedImports = aspectRegistry.resolveImportedPackage(bundle, "org.eclipse.equinox.weaving.tests", //$NON-NLS-1$ AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedImports); assertEquals(0, resolvedImports.getAspectClassNames().size()); assertEquals("here are the options ", resolvedImports //$NON-NLS-1$ .getWeaverOptions()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectAdminImplTest.java
License:Open Source License
public void testNonExportedAspectsButOptionsInAopXml() { Bundle bundle = EasyMock.createMock(Bundle.class); URL testAopDefFile = this.getClass().getResource("test-aop-with-options-and-aspects.xml"); //$NON-NLS-1$ Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(bundle.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile); EasyMock.replay(bundle);/*from www . j a va2s .c o m*/ aspectRegistry.bundleResolved(bundle); EasyMock.verify(bundle); Definition definition = aspectRegistry.getExportedAspectDefinitions(bundle); assertNotNull(definition); assertEquals(0, definition.getAspectClassNames().size()); assertEquals("here are the options ", definition.getWeaverOptions()); //$NON-NLS-1$ Definition resolvedRequires = aspectRegistry.resolveRequiredBundle(bundle, AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedRequires); assertEquals(0, resolvedRequires.getAspectClassNames().size()); assertEquals("here are the options ", resolvedRequires //$NON-NLS-1$ .getWeaverOptions()); Definition resolvedImports = aspectRegistry.resolveImportedPackage(bundle, "org.eclipse.equinox.weaving.tests", //$NON-NLS-1$ AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedImports); assertEquals(0, resolvedImports.getAspectClassNames().size()); assertEquals("here are the options ", resolvedImports //$NON-NLS-1$ .getWeaverOptions()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectAdminImplTest.java
License:Open Source License
public void testExportedAspectsAndOptionsInAopXml() { Bundle bundle = EasyMock.createMock(Bundle.class); URL testAopDefFile = this.getClass().getResource("test-aop-with-options-and-aspects.xml"); //$NON-NLS-1$ Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put(Constants.EXPORT_PACKAGE, "org.eclipse.equinox.weaving.tests"); //$NON-NLS-1$ EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(bundle.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile); EasyMock.replay(bundle);//from ww w .j a v a2 s.co m aspectRegistry.bundleResolved(bundle); EasyMock.verify(bundle); Definition definition = aspectRegistry.getExportedAspectDefinitions(bundle); List<?> aspectClassNames = definition.getAspectClassNames(); assertEquals(1, aspectClassNames.size()); assertEquals("org.eclipse.equinox.weaving.tests.TestAspectType", //$NON-NLS-1$ aspectClassNames.get(0)); assertEquals(AspectAdmin.ASPECT_POLICY_NOT_DEFINED, aspectRegistry.getAspectPolicy(bundle, "org.eclipse.equinox.weaving.tests")); //$NON-NLS-1$ assertEquals("here are the options ", definition.getWeaverOptions()); Definition resolvedRequires = aspectRegistry.resolveRequiredBundle(bundle, AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedRequires); assertEquals(1, aspectClassNames.size()); assertEquals("org.eclipse.equinox.weaving.tests.TestAspectType", //$NON-NLS-1$ aspectClassNames.get(0)); assertEquals("here are the options ", resolvedRequires.getWeaverOptions()); Definition resolvedImports = aspectRegistry.resolveImportedPackage(bundle, "org.eclipse.equinox.weaving.tests", //$NON-NLS-1$ AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED); assertNotNull(resolvedImports); assertEquals(1, aspectClassNames.size()); assertEquals("org.eclipse.equinox.weaving.tests.TestAspectType", //$NON-NLS-1$ aspectClassNames.get(0)); assertEquals("here are the options ", resolvedImports.getWeaverOptions()); }