Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java')
-rw-r--r--bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java183
1 files changed, 94 insertions, 89 deletions
diff --git a/bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java b/bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java
index 9534299f0..09d2a488d 100644
--- a/bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java
+++ b/bundles/org.eclipse.equinox.weaving.aspectj/src/org/eclipse/equinox/weaving/aspectj/loadtime/OSGiWeavingAdaptor.java
@@ -36,43 +36,35 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
private static final String DEFAULT_AOP_CONTEXT_LOCATION = "META-INF/aop.xml";
+ private final ClassLoader classLoader;
+
private boolean initialized;
private boolean initializing;
- private ClassLoader classLoader;
-
- private OSGiWeavingContext weavingContext;
+ private final StringBuffer namespaceAddon;
- private StringBuffer namespaceAddon;
+ private final OSGiWeavingContext weavingContext;
- public OSGiWeavingAdaptor(ClassLoader loader, OSGiWeavingContext context) {
+ public OSGiWeavingAdaptor(final ClassLoader loader,
+ final OSGiWeavingContext context) {
super();
this.classLoader = loader;
this.weavingContext = context;
this.namespaceAddon = new StringBuffer();
}
- // Bug 215177: Adapt to updated (AJ 1.5.4) super class signature:
/**
- * @see org.aspectj.weaver.tools.WeavingAdaptor#weaveClass(java.lang.String,
- * byte[], boolean)
+ * @see org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor#getNamespace()
*/
- public byte[] weaveClass(String name, byte[] bytes, boolean mustWeave)
- throws IOException {
-
- /* Avoid recursion during adaptor initialization */
- if (!initializing) {
- if (!initialized) {
- initializing = true;
- initialize(classLoader, weavingContext);
- initialized = true;
- initializing = false;
- }
- // Bug 215177: Adapt to updated (AJ 1.5.4) super class signature:
- bytes = super.weaveClass(name, bytes, mustWeave);
+ public String getNamespace() {
+ final String namespace = super.getNamespace();
+ if (namespace != null && namespace.length() > 0
+ && namespaceAddon.length() > 0) {
+ return namespace + " - " + namespaceAddon.toString(); //$NON-NLS-1$
+ } else {
+ return namespace;
}
- return bytes;
}
public void initialize() {
@@ -105,8 +97,8 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
* @param loader
*/
public List parseDefinitionsForBundle() {
- List definitions = new ArrayList();
- Set seenBefore = new HashSet();
+ final List definitions = new ArrayList();
+ final Set seenBefore = new HashSet();
try {
parseDefinitionsFromVisibility(definitions, seenBefore);
@@ -115,7 +107,7 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
info("no configuration found. Disabling weaver for bundler "
+ weavingContext.getClassLoaderName());
}
- } catch (Exception e) {
+ } catch (final Exception e) {
definitions.clear();
warn("parse definitions failed", e);
}
@@ -123,37 +115,32 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
return definitions;
}
- private void parseDefinitionsFromVisibility(List definitions, Set seenBefore) {
- String resourcePath = System.getProperty(
- "org.aspectj.weaver.loadtime.configuration", "");
- StringTokenizer st = new StringTokenizer(resourcePath, ";");
-
- while (st.hasMoreTokens()) {
- try {
- Enumeration xmls = weavingContext.getResources(st.nextToken());
-
- while (xmls.hasMoreElements()) {
- URL xml = (URL) xmls.nextElement();
- if (!seenBefore.contains(xml)) {
- info("using configuration "
- + weavingContext.getFile(xml));
- definitions.add(DocumentParser.parse(xml));
- seenBefore.add(xml);
+ // Bug 215177: Adapt to updated (AJ 1.5.4) super class signature:
+ /**
+ * @see org.aspectj.weaver.tools.WeavingAdaptor#weaveClass(java.lang.String,
+ * byte[], boolean)
+ */
+ public byte[] weaveClass(final String name, byte[] bytes,
+ final boolean mustWeave) throws IOException {
- addToNamespaceAddon(xml);
- } else {
- warn("ignoring duplicate definition: " + xml);
- }
- }
- } catch (Exception e) {
- warn("parse definitions failed", e);
+ /* Avoid recursion during adaptor initialization */
+ if (!initializing) {
+ if (!initialized) {
+ initializing = true;
+ initialize(classLoader, weavingContext);
+ initialized = true;
+ initializing = false;
}
+ // Bug 215177: Adapt to updated (AJ 1.5.4) super class signature:
+ bytes = super.weaveClass(name, bytes, mustWeave);
}
+ return bytes;
}
- private void addToNamespaceAddon(URL xml) {
- String bundleName = weavingContext.getBundleIdFromURL(xml);
- String bundleVersion = weavingContext.getBundleVersionFromURL(xml);
+ private void addToNamespaceAddon(final URL xml) {
+ final String bundleName = weavingContext.getBundleIdFromURL(xml);
+ final String bundleVersion = weavingContext
+ .getBundleVersionFromURL(xml);
namespaceAddon.append(bundleName);
namespaceAddon.append(":");
@@ -161,29 +148,22 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
namespaceAddon.append(";");
}
- private void parseDefinitionsFromRequiredBundles(List definitions,
- Set seenBefore) {
- Bundle[] bundles = weavingContext.getBundles();
-
- Arrays.sort(bundles, new Comparator() {
-
- public int compare(Object arg0, Object arg1) {
- long bundleId1 = ((Bundle) arg0).getBundleId();
- long bundleId2 = ((Bundle) arg1).getBundleId();
- return (int) (bundleId1 - bundleId2);
- }
- });
-
- for (int i = 0; i < bundles.length; i++) {
- parseDefinitionFromRequiredBundle(bundles[i], definitions,
- seenBefore);
+ private String getDefinitionLocation(final Bundle bundle) {
+ String aopContextHeader = (String) bundle.getHeaders().get(
+ AOP_CONTEXT_LOCATION_HEADER);
+ if (aopContextHeader != null) {
+ aopContextHeader = aopContextHeader.trim();
+ return aopContextHeader;
}
+
+ return DEFAULT_AOP_CONTEXT_LOCATION;
}
- private void parseDefinitionFromRequiredBundle(Bundle bundle,
- List definitions, Set seenBefore) {
+ private void parseDefinitionFromRequiredBundle(final Bundle bundle,
+ final List definitions, final Set seenBefore) {
try {
- URL aopXmlDef = bundle.getEntry(getDefinitionLocation(bundle));
+ final URL aopXmlDef = bundle
+ .getEntry(getDefinitionLocation(bundle));
if (aopXmlDef != null) {
if (!seenBefore.contains(aopXmlDef)) {
definitions.add(DocumentParser.parse(aopXmlDef));
@@ -194,32 +174,57 @@ public class OSGiWeavingAdaptor extends ClassLoaderWeavingAdaptor {
warn("ignoring duplicate definition: " + aopXmlDef);
}
}
- } catch (Exception e) {
+ } catch (final Exception e) {
warn("parse definitions failed", e);
}
}
- private String getDefinitionLocation(Bundle bundle) {
- String aopContextHeader = (String) bundle.getHeaders().get(
- AOP_CONTEXT_LOCATION_HEADER);
- if (aopContextHeader != null) {
- aopContextHeader = aopContextHeader.trim();
- return aopContextHeader;
- }
+ private void parseDefinitionsFromRequiredBundles(final List definitions,
+ final Set seenBefore) {
+ final Bundle[] bundles = weavingContext.getBundles();
- return DEFAULT_AOP_CONTEXT_LOCATION;
+ Arrays.sort(bundles, new Comparator() {
+
+ public int compare(final Object arg0, final Object arg1) {
+ final long bundleId1 = ((Bundle) arg0).getBundleId();
+ final long bundleId2 = ((Bundle) arg1).getBundleId();
+ return (int) (bundleId1 - bundleId2);
+ }
+ });
+
+ for (int i = 0; i < bundles.length; i++) {
+ parseDefinitionFromRequiredBundle(bundles[i], definitions,
+ seenBefore);
+ }
}
- /**
- * @see org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor#getNamespace()
- */
- public String getNamespace() {
- String namespace = super.getNamespace();
- if (namespace != null && namespace.length() > 0
- && namespaceAddon.length() > 0) {
- return namespace + " - " + namespaceAddon.toString(); //$NON-NLS-1$
- } else {
- return namespace;
+ private void parseDefinitionsFromVisibility(final List definitions,
+ final Set seenBefore) {
+ final String resourcePath = System.getProperty(
+ "org.aspectj.weaver.loadtime.configuration", "");
+ final StringTokenizer st = new StringTokenizer(resourcePath, ";");
+
+ while (st.hasMoreTokens()) {
+ try {
+ final Enumeration xmls = weavingContext.getResources(st
+ .nextToken());
+
+ while (xmls.hasMoreElements()) {
+ final URL xml = (URL) xmls.nextElement();
+ if (!seenBefore.contains(xml)) {
+ info("using configuration "
+ + weavingContext.getFile(xml));
+ definitions.add(DocumentParser.parse(xml));
+ seenBefore.add(xml);
+
+ addToNamespaceAddon(xml);
+ } else {
+ warn("ignoring duplicate definition: " + xml);
+ }
+ }
+ } catch (final Exception e) {
+ warn("parse definitions failed", e);
+ }
}
}

Back to the top