List of usage examples for org.aspectj.weaver.loadtime.definition Definition Definition
public Definition()
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)/*ww 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)// w ww . j a v a 2s. 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 ww .j a va2s . com * @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.AspectResolverTest.java
License:Open Source License
public void testResolveOwnAspects() { Definition ownAspects = new Definition(); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(ownAspects); EasyMock.expect(bundleDescription.getResolvedRequires()).andStubReturn(new BundleDescription[0]); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.replay(mocks);/*ww w. j ava 2 s . c o m*/ AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(1, resolvedAspects.getAspectDefinitions().size()); assertSame(ownAspects, resolvedAspects.getAspectDefinitions().get(0)); assertEquals("bundle:0.0.0;", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveIgnoreOwnAspects() { Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put("Eclipse-AspectBundle", "finished"); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); Definition ownAspects = new Definition(); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(ownAspects); EasyMock.expect(bundleDescription.getResolvedRequires()).andStubReturn(new BundleDescription[0]); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); EasyMock.replay(mocks);//from ww w . j a va2s.co m AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(0, resolvedAspects.getAspectDefinitions().size()); assertEquals("", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveWithSupplementers() { Definition ownAspects = new Definition(); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(ownAspects); EasyMock.expect(bundleDescription.getResolvedRequires()).andStubReturn(new BundleDescription[0]); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); Supplementer supplementer = new Supplementer(supplementerBundle, null, null, null, null); EasyMock.expect(supplementerRegistry.getSupplementers(10l)) .andStubReturn(new Supplementer[] { supplementer }); Definition supplementerAspects = new Definition(); EasyMock.expect(aspectAdmin.getExportedAspectDefinitions(supplementerBundle)) .andStubReturn(supplementerAspects); EasyMock.expect(aspectAdmin.getAspectDefinition(supplementerBundle)).andStubReturn(new Definition()); Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.replay(mocks);/*from w w w. jav a 2s.com*/ AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(2, resolvedAspects.getAspectDefinitions().size()); assertSame(supplementerAspects, resolvedAspects.getAspectDefinitions().get(0)); assertSame(ownAspects, resolvedAspects.getAspectDefinitions().get(1)); assertEquals("bundle:0.0.0;supplementer:1.2.3;", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveWithRequiredBundlesNoApplyAspectsPolicy() { Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put(Constants.REQUIRE_BUNDLE, "required1"); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(null); EasyMock.expect(bundleDescription.getResolvedRequires()) .andStubReturn(new BundleDescription[] { requiredBundle1Desc }); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); Definition requiredBundleAspects = new Definition(); EasyMock.expect(/* w w w . j ava2 s.com*/ aspectAdmin.resolveRequiredBundle(requiredBundle1, AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED)) .andStubReturn(requiredBundleAspects); EasyMock.expect(aspectAdmin.getAspectDefinition(requiredBundle1)).andStubReturn(new Definition()); EasyMock.replay(mocks); AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(1, resolvedAspects.getAspectDefinitions().size()); assertSame(requiredBundleAspects, resolvedAspects.getAspectDefinitions().get(0)); assertEquals("required1:1.1.1;", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveWithRequiredBundlesDoApplyAspectsPolicy() { Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put(Constants.REQUIRE_BUNDLE, "required1;apply-aspects:=true"); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(null); EasyMock.expect(bundleDescription.getResolvedRequires()) .andStubReturn(new BundleDescription[] { requiredBundle1Desc }); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); Definition requiredBundleAspects = new Definition(); EasyMock.expect(aspectAdmin.resolveRequiredBundle(requiredBundle1, AspectAdmin.ASPECT_APPLY_POLICY_TRUE)) .andStubReturn(requiredBundleAspects); EasyMock.expect(aspectAdmin.getAspectDefinition(requiredBundle1)).andStubReturn(new Definition()); EasyMock.replay(mocks);/* w w w. jav a 2 s .co m*/ AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(1, resolvedAspects.getAspectDefinitions().size()); assertSame(requiredBundleAspects, resolvedAspects.getAspectDefinitions().get(0)); assertEquals("required1:1.1.1;", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveWithRequiredBundlesDontApplyAspectsPolicy() { Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put(Constants.REQUIRE_BUNDLE, "required1;apply-aspects:=false"); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(null); EasyMock.expect(bundleDescription.getResolvedRequires()) .andStubReturn(new BundleDescription[] { requiredBundle1Desc }); EasyMock.expect(bundleDescription.getResolvedImports()).andStubReturn(new ExportPackageDescription[0]); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); EasyMock.expect(aspectAdmin.resolveRequiredBundle(requiredBundle1, AspectAdmin.ASPECT_APPLY_POLICY_FALSE)) .andStubReturn(null);// www .j a va 2s . c o m EasyMock.expect(aspectAdmin.getAspectDefinition(requiredBundle1)).andStubReturn(new Definition()); EasyMock.replay(mocks); AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(0, resolvedAspects.getAspectDefinitions().size()); assertEquals("", resolvedAspects.getFingerprint()); }
From source file:org.eclipse.osgi.aspectj.tests.AspectResolverTest.java
License:Open Source License
public void testResolveWithImportedPackageNoApplyAspectsPolicy() { Hashtable<Object, Object> headers = new Hashtable<Object, Object>(); headers.put(Constants.IMPORT_PACKAGE, "imported1"); EasyMock.expect(bundle.getHeaders()).andStubReturn(headers); EasyMock.expect(aspectAdmin.getAspectDefinition(bundle)).andStubReturn(null); EasyMock.expect(bundleDescription.getResolvedRequires()).andStubReturn(new BundleDescription[0]); EasyMock.expect(bundleDescription.getResolvedImports()) .andStubReturn(new ExportPackageDescription[] { importedPackage1 }); EasyMock.expect(supplementerRegistry.getSupplementers(10l)).andStubReturn(new Supplementer[0]); Definition importedPackageAspects = new Definition(); EasyMock.expect(aspectAdmin.resolveImportedPackage(importedBundle1, "imported1", //$NON-NLS-1$ AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED)).andStubReturn(importedPackageAspects); EasyMock.expect(aspectAdmin.getAspectDefinition(requiredBundle1)).andStubReturn(new Definition()); EasyMock.replay(mocks);/*from w w w . j av a 2 s. c om*/ AspectConfiguration resolvedAspects = resolver.resolveAspectsFor(bundle, bundleDescription); EasyMock.verify(mocks); assertNotNull(resolvedAspects); assertEquals(1, resolvedAspects.getAspectDefinitions().size()); assertSame(importedPackageAspects, resolvedAspects.getAspectDefinitions().get(0)); assertEquals("imported1:5.5.5;", resolvedAspects.getFingerprint()); }