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

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

Introduction

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

Prototype

public List<String> getAspectClassNames() 

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)//from  w  w  w .  ja va2  s  .com
 */
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 w w  . ja va2  s  . co 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.
 * /*from   w  w w. j  a  v  a 2s.  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 testResolveUnresolveBundle() {
    Bundle bundleWithDef = EasyMock.createMock(Bundle.class);
    Bundle bundleWithoutDef = EasyMock.createMock(Bundle.class);

    URL testAopDefFile = this.getClass().getResource("test-aop.xml"); //$NON-NLS-1$
    EasyMock.expect(bundleWithDef.getHeaders()).andStubReturn(new Hashtable<Object, Object>());
    EasyMock.expect(bundleWithDef.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile);

    EasyMock.expect(bundleWithoutDef.getHeaders()).andStubReturn(new Hashtable<Object, Object>());
    EasyMock.expect(bundleWithoutDef.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(null);

    // step 1: resolve bundles
    EasyMock.replay(bundleWithDef, bundleWithoutDef);
    aspectRegistry.bundleResolved(bundleWithDef);
    aspectRegistry.bundleResolved(bundleWithoutDef);
    EasyMock.verify(bundleWithDef, bundleWithoutDef);

    Definition definition = aspectRegistry.getAspectDefinition(bundleWithDef);
    assertNotNull(definition);//from   w  w w. j a va2 s.  co  m
    List<?> aspectClassNames = definition.getAspectClassNames();
    assertNotNull(aspectClassNames);
    assertEquals(1, aspectClassNames.size());
    assertEquals("org.eclipse.equinox.weaving.tests.TestAspectType", //$NON-NLS-1$
            aspectClassNames.get(0));

    definition = aspectRegistry.getAspectDefinition(bundleWithoutDef);
    assertNull(definition);

    // step 2: unresolve bundles
    aspectRegistry.bundleUnresolved(bundleWithDef);
    aspectRegistry.bundleUnresolved(bundleWithoutDef);

    assertNull(aspectRegistry.getAspectDefinition(bundleWithDef));
    assertNull(aspectRegistry.getAspectDefinition(bundleWithoutDef));
}

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  ava 2  s. co 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 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 w w w. ja 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 testExportedAspectsInAopXml() {
    Bundle bundle = EasyMock.createMock(Bundle.class);

    URL testAopDefFile = this.getClass().getResource("test-aop.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 www . j  av a2  s.  c om*/
    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$

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

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

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);// w  w w  .j  a va 2s  . 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());
}

From source file:org.eclipse.osgi.aspectj.tests.AspectAdminImplTest.java

License:Open Source License

public void testConcreteAspectsInAopXml() {
    Bundle bundle = EasyMock.createMock(Bundle.class);

    URL testAopDefFile = this.getClass().getResource("test-aop-with-concrete-aspect.xml"); //$NON-NLS-1$
    Hashtable<Object, Object> headers = new Hashtable<Object, Object>();
    headers.put(Constants.EXPORT_PACKAGE,
            "org.eclipse.equinox.weaving.tests, org.eclipse.equinox.weaving.tests.concrete"); //$NON-NLS-1$
    EasyMock.expect(bundle.getHeaders()).andStubReturn(headers);
    EasyMock.expect(bundle.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile);

    EasyMock.replay(bundle);//  ww  w . j  a va2s  .  co  m
    aspectRegistry.bundleResolved(bundle);
    EasyMock.verify(bundle);

    // exported definition
    Definition definition = aspectRegistry.getExportedAspectDefinitions(bundle);
    List<?> aspectClassNames = definition.getAspectClassNames();
    assertEquals(1, aspectClassNames.size());
    assertEquals("org.eclipse.equinox.weaving.tests.MyAspect", //$NON-NLS-1$
            aspectClassNames.get(0));
    assertEquals(AspectAdmin.ASPECT_POLICY_NOT_DEFINED,
            aspectRegistry.getAspectPolicy(bundle, "org.eclipse.equinox.weaving.tests")); //$NON-NLS-1$

    List<?> concreteAspects = definition.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    Definition.ConcreteAspect concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);

    // resolved require bundle
    Definition resolvedRequires = aspectRegistry.resolveRequiredBundle(bundle,
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    aspectClassNames = resolvedRequires.getAspectClassNames();
    assertEquals(1, aspectClassNames.size());
    assertEquals("org.eclipse.equinox.weaving.tests.MyAspect", //$NON-NLS-1$
            aspectClassNames.get(0));
    assertEquals(AspectAdmin.ASPECT_POLICY_NOT_DEFINED,
            aspectRegistry.getAspectPolicy(bundle, "org.eclipse.equinox.weaving.tests")); //$NON-NLS-1$

    concreteAspects = resolvedRequires.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);

    // resolve import package 1
    Definition resolvedImports = aspectRegistry.resolveImportedPackage(bundle,
            "org.eclipse.equinox.weaving.tests", //$NON-NLS-1$
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    aspectClassNames = resolvedImports.getAspectClassNames();
    assertEquals(1, aspectClassNames.size());
    assertEquals("org.eclipse.equinox.weaving.tests.MyAspect", //$NON-NLS-1$
            aspectClassNames.get(0));
    assertEquals(AspectAdmin.ASPECT_POLICY_NOT_DEFINED,
            aspectRegistry.getAspectPolicy(bundle, "org.eclipse.equinox.weaving.tests")); //$NON-NLS-1$
    concreteAspects = resolvedImports.getConcreteAspects();
    assertEquals(0, concreteAspects.size());

    // resolve import package 2
    resolvedImports = aspectRegistry.resolveImportedPackage(bundle,
            "org.eclipse.equinox.weaving.tests.concrete", //$NON-NLS-1$
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    aspectClassNames = resolvedImports.getAspectClassNames();
    assertEquals(0, aspectClassNames.size());
    concreteAspects = resolvedImports.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);
}

From source file:org.eclipse.osgi.aspectj.tests.AspectAdminImplTest.java

License:Open Source License

public void testExportedAndNotExportedConcreteAspectsInAopXml() {
    Bundle bundle = EasyMock.createMock(Bundle.class);

    URL testAopDefFile = this.getClass()
            .getResource("test-aop-with-concrete-aspects-in-different-packages.xml"); //$NON-NLS-1$
    Hashtable<Object, Object> headers = new Hashtable<Object, Object>();
    headers.put(Constants.EXPORT_PACKAGE, "org.eclipse.equinox.weaving.tests.concrete"); //$NON-NLS-1$
    EasyMock.expect(bundle.getHeaders()).andStubReturn(headers);
    EasyMock.expect(bundle.getEntry(AspectAdmin.AOP_CONTEXT_DEFAULT_LOCATION)).andReturn(testAopDefFile);

    EasyMock.replay(bundle);//  ww w.jav  a  2s.co m
    aspectRegistry.bundleResolved(bundle);
    EasyMock.verify(bundle);

    Definition definition = aspectRegistry.getExportedAspectDefinitions(bundle);
    List<?> aspectClassNames = definition.getAspectClassNames();
    assertEquals(0, aspectClassNames.size());

    List<?> concreteAspects = definition.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    Definition.ConcreteAspect concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);

    // resolved require bundle
    Definition resolvedRequires = aspectRegistry.resolveRequiredBundle(bundle,
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    aspectClassNames = resolvedRequires.getAspectClassNames();
    assertEquals(0, aspectClassNames.size());

    concreteAspects = definition.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);

    // resolve import package 1
    Definition resolvedImports = aspectRegistry.resolveImportedPackage(bundle,
            "org.eclipse.equinox.weaving.tests.concrete", //$NON-NLS-1$
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    aspectClassNames = resolvedImports.getAspectClassNames();
    assertEquals(0, aspectClassNames.size());
    concreteAspects = resolvedImports.getConcreteAspects();
    assertEquals(1, concreteAspects.size());
    concreteAspect = (ConcreteAspect) concreteAspects.get(0);
    assertEquals("tracing.AbstractTracing", concreteAspect.extend); //$NON-NLS-1$
    assertEquals("org.eclipse.equinox.weaving.tests.concrete.MyTracing", //$NON-NLS-1$
            concreteAspect.name);
    assertNull(concreteAspect.perclause);
    assertEquals("com.xyz.first, *", concreteAspect.precedence); //$NON-NLS-1$
    assertEquals("within(org.maw.*)", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).expression);
    assertEquals("tracingScope", //$NON-NLS-1$
            ((Definition.Pointcut) concreteAspect.pointcuts.get(0)).name);

    // resolve import package 2
    resolvedImports = aspectRegistry.resolveImportedPackage(bundle,
            "org.eclipse.equinox.weaving.tests.concrete.nonvisible", //$NON-NLS-1$
            AspectAdmin.ASPECT_APPLY_POLICY_NOT_DEFINED);
    assertNull(resolvedImports);
}