Remove traces, add test checking static inner classes
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1548797 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/module/DefaultBindingModule.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/module/DefaultBindingModule.java
index 39cbc09..564a9bb 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/module/DefaultBindingModule.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/module/DefaultBindingModule.java
@@ -19,24 +19,7 @@
package org.apache.felix.ipojo.manipulator.metadata.annotation.module;
-import org.apache.felix.ipojo.annotations.Bind;
-import org.apache.felix.ipojo.annotations.Component;
-import org.apache.felix.ipojo.annotations.Controller;
-import org.apache.felix.ipojo.annotations.Handler;
-import org.apache.felix.ipojo.annotations.HandlerDeclaration;
-import org.apache.felix.ipojo.annotations.Instantiate;
-import org.apache.felix.ipojo.annotations.Invalidate;
-import org.apache.felix.ipojo.annotations.Modified;
-import org.apache.felix.ipojo.annotations.PostRegistration;
-import org.apache.felix.ipojo.annotations.PostUnregistration;
-import org.apache.felix.ipojo.annotations.Property;
-import org.apache.felix.ipojo.annotations.Provides;
-import org.apache.felix.ipojo.annotations.Requires;
-import org.apache.felix.ipojo.annotations.ServiceController;
-import org.apache.felix.ipojo.annotations.ServiceProperty;
-import org.apache.felix.ipojo.annotations.Unbind;
-import org.apache.felix.ipojo.annotations.Updated;
-import org.apache.felix.ipojo.annotations.Validate;
+import org.apache.felix.ipojo.annotations.*;
import org.apache.felix.ipojo.manipulator.Reporter;
import org.apache.felix.ipojo.manipulator.metadata.annotation.ComponentWorkbench;
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.ComponentVisitor;
@@ -56,6 +39,8 @@
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.bind.Action;
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.bind.MethodBindVisitor;
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.bind.ParameterBindVisitor;
+import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.generic.GenericVisitor;
+import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.generic.GenericVisitorFactory;
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.util.Elements;
import org.apache.felix.ipojo.manipulator.metadata.annotation.visitor.util.Names;
import org.apache.felix.ipojo.manipulator.spi.AbsBindingModule;
@@ -285,6 +270,8 @@
return new PostRegistrationVisitor(context.getWorkbench(), node.name);
}
});
+
+ bind(Context.class).to(new GenericVisitorFactory("context", ""));
}
private DocumentBuilder m_builder;
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/RequiresVisitor.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/RequiresVisitor.java
index 8154169..3fef762 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/RequiresVisitor.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/RequiresVisitor.java
@@ -178,7 +178,7 @@
@Override
public void visitEnum(String name, String desc, String value) {
if (name.equals("policy")) {
- m_policy = getPolicy(value.toString());
+ m_policy = getPolicy(value);
}
}
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/GenericVisitorFactory.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/GenericVisitorFactory.java
index c08bdc1..91c02b9 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/GenericVisitorFactory.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/GenericVisitorFactory.java
@@ -43,6 +43,7 @@
// Need to build a new Element instance for each created visitor
public AnnotationVisitor newAnnotationVisitor(BindingContext context) {
+ System.out.println("Create annotation visitor for " + context.getNode());
if (context.getNode() instanceof ClassNode) {
return new TypeGenericVisitor(context.getWorkbench(),
new Element(m_name, m_namespace));
diff --git a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/RootGenericVisitor.java b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/RootGenericVisitor.java
index 2bb65aa..9a96b41 100644
--- a/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/RootGenericVisitor.java
+++ b/ipojo/manipulator/manipulator/src/main/java/org/apache/felix/ipojo/manipulator/metadata/annotation/visitor/generic/RootGenericVisitor.java
@@ -70,6 +70,8 @@
}
}
+
+
/**
* End of the visit.
* All attribute were visited, we can update collectors data.
@@ -84,7 +86,7 @@
} else {
// No ID provided, generate a new one from the element's namespace (aka handler's namespace)
m_id = element.getNameSpace();
- if (!workbench.getIds().containsKey(m_id) && isClassType()) {
+ if (m_id != null && !workbench.getIds().containsKey(m_id) && isClassType()) {
// No Elements were already registered under that namespace
workbench.getIds().put(m_id, element);
} else {
diff --git a/ipojo/manipulator/manipulator/src/test/java/org/apache/felix/ipojo/manipulation/InnerClassAdapterTest.java b/ipojo/manipulator/manipulator/src/test/java/org/apache/felix/ipojo/manipulation/InnerClassAdapterTest.java
index 421d0db..a6f4e4c 100644
--- a/ipojo/manipulator/manipulator/src/test/java/org/apache/felix/ipojo/manipulation/InnerClassAdapterTest.java
+++ b/ipojo/manipulator/manipulator/src/test/java/org/apache/felix/ipojo/manipulation/InnerClassAdapterTest.java
@@ -170,9 +170,6 @@
ManipulatedClassLoader classloader = manipulate(className, manipulator);
-
-
-
Class cl = classloader.findClass(className);
Assert.assertNotNull(cl);
Assert.assertNotNull(manipulator.getManipulationMetadata());
@@ -322,4 +319,29 @@
assertThat(clazz.getDeclaredField(flag)).isNotNull();
}
+ @Test
+ public void testThatStaticInnerClassesAreNotManipulated() throws Exception {
+ Manipulator manipulator = new Manipulator();
+ String className = "test.inner.ComponentWithInnerClasses";
+ ManipulatedClassLoader classLoader = manipulate(className, manipulator);
+
+ Class clazz = classLoader.findClass(className);
+ Class inner = findInnerClass(clazz.getClasses(), "MyStaticInnerClass");
+ assertThat(inner).isNotNull();
+ Method bar = inner.getMethod("bar");
+ Object o = inner.newInstance();
+ bar.setAccessible(true);
+ assertThat(bar).isNotNull();
+ assertThat((String) bar.invoke(o)).isEqualTo("bar");
+ }
+
+ private Class findInnerClass(Class[] classes, String name) {
+ for (Class clazz : classes) {
+ if (clazz.getName().contains(name)) {
+ return clazz;
+ }
+ }
+ return null;
+ }
+
}
diff --git a/ipojo/manipulator/manipulator/src/test/java/test/inner/ComponentWithInnerClasses.java b/ipojo/manipulator/manipulator/src/test/java/test/inner/ComponentWithInnerClasses.java
index f54cc95..3e6544a 100644
--- a/ipojo/manipulator/manipulator/src/test/java/test/inner/ComponentWithInnerClasses.java
+++ b/ipojo/manipulator/manipulator/src/test/java/test/inner/ComponentWithInnerClasses.java
@@ -81,6 +81,7 @@
public native void baz();
}
+
private class MyInnerClass {
public String foo() {
return ComponentWithInnerClasses.this.foo;