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

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

Introduction

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

Prototype

public String getWeaverOptions() 

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