Example usage for org.aspectj.weaver.loadtime.definition Definition Definition

List of usage examples for org.aspectj.weaver.loadtime.definition Definition Definition

Introduction

In this page you can find the example usage for org.aspectj.weaver.loadtime.definition Definition Definition.

Prototype

public Definition() 

Source Link

Usage

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());
}