Author: clement
Date: Wed Sep 26 02:01:13 2007
New Revision: 579527

URL: http://svn.apache.org/viewvc?rev=579527&view=rev
Log:
Change the iPOJO Plugin name to be "Maven compliant" (org.apache.felix.ipojo 
becomes maven-ipojo-plugin)
Fix a bug on fields from super class in the manipulator.

Modified:
    
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/ConstructorCodeAdapter.java
    
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/Manipulator.java
    
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/MethodCodeAdapter.java
    
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java

Modified: 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/ConstructorCodeAdapter.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/ConstructorCodeAdapter.java?rev=579527&r1=579526&r2=579527&view=diff
==============================================================================
--- 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/ConstructorCodeAdapter.java
 (original)
+++ 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/ConstructorCodeAdapter.java
 Wed Sep 26 02:01:13 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.felix.ipojo.manipulation;
 
+import java.util.Set;
+
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodAdapter;
 import org.objectweb.asm.MethodVisitor;
@@ -40,17 +42,24 @@
      * Is the super call detected ?
      */
     private boolean m_superDetected;
+    
+    /**
+     * Set of contained fields.
+     */
+    private Set m_fields;
 
     /** 
      * PropertyCodeAdapter constructor.
      * A new FiledCodeAdapter should be create for each method visit.
      * @param mv MethodVisitor
      * @param owner Name of the class
+     * @param fields List of contained fields
      */
-    public ConstructorCodeAdapter(final MethodVisitor mv, final String owner) {
+    public ConstructorCodeAdapter(final MethodVisitor mv, final String owner, 
Set fields) {
         super(mv);
         m_owner = owner;
         m_superDetected = false;
+        m_fields = fields;
     }
 
 
@@ -67,7 +76,7 @@
             final String owner,
             final String name,
             final String desc) {
-        if (owner.equals(m_owner)) {
+        if (m_fields.contains(name) && m_owner.equals(owner)) {
             if (opcode == GETFIELD) {
                 String gDesc = "()" + desc;
                 visitMethodInsn(INVOKEVIRTUAL, owner, "_get" + name, gDesc);

Modified: 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/Manipulator.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/Manipulator.java?rev=579527&r1=579526&r2=579527&view=diff
==============================================================================
--- 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/Manipulator.java
 (original)
+++ 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/Manipulator.java
 Wed Sep 26 02:01:13 2007
@@ -92,7 +92,7 @@
         ckReader.accept(ck, ClassReader.SKIP_FRAMES);
         is1.close();
 
-        m_fields = ck.getFields();
+        m_fields = ck.getFields(); // GEt visited fields (contains only POJO 
fields)
 
         // Get interface and remove POJO interface is presents
         String[] its = ck.getInterfaces();
@@ -128,7 +128,7 @@
             InputStream is2 = url.openStream();
             ClassReader cr0 = new ClassReader(is2);
             ClassWriter cw0 = new ClassWriter(ClassWriter.COMPUTE_MAXS);
-            PojoAdapter preprocess = new PojoAdapter(cw0);
+            PojoAdapter preprocess = new PojoAdapter(cw0, m_fields);
             cr0.accept(preprocess, ClassReader.SKIP_FRAMES);
             is2.close();
 
@@ -196,7 +196,7 @@
             InputStream is2 = new ByteArrayInputStream(origin);
             ClassReader cr0 = new ClassReader(is2);
             ClassWriter cw0 = new ClassWriter(ClassWriter.COMPUTE_MAXS);
-            PojoAdapter preprocess = new PojoAdapter(cw0);
+            PojoAdapter preprocess = new PojoAdapter(cw0, m_fields);
             cr0.accept(preprocess, ClassReader.SKIP_FRAMES);
             is2.close();
             finalWriter = cw0;

Modified: 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/MethodCodeAdapter.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/MethodCodeAdapter.java?rev=579527&r1=579526&r2=579527&view=diff
==============================================================================
--- 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/MethodCodeAdapter.java
 (original)
+++ 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/MethodCodeAdapter.java
 Wed Sep 26 02:01:13 2007
@@ -18,6 +18,8 @@
  */
 package org.apache.felix.ipojo.manipulation;
 
+import java.util.Set;
+
 import org.objectweb.asm.Label;
 import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
@@ -40,6 +42,11 @@
      * Name of the method.
      */
     private String m_name;
+    
+    /**
+     * Contained fields.
+     */
+    private Set m_fields;
 
     /**
      * MethodCodeAdapter constructor. 
@@ -48,11 +55,13 @@
      * @param access : Method access
      * @param name : Method name
      * @param desc : Method descriptor
+     * @param fields : Contained fields
      */
-    public MethodCodeAdapter(final MethodVisitor mv, final String owner, int 
access, String name, String desc) {
+    public MethodCodeAdapter(final MethodVisitor mv, final String owner, int 
access, String name, String desc, Set fields) {
         super(mv, access, name, desc);
         m_owner = owner;
         m_name = name;
+        m_fields = fields;
     }
 
     /**
@@ -64,7 +73,7 @@
      * @param desc : descriptor of the field
      */
     public void visitFieldInsn(final int opcode, final String owner, final 
String name, final String desc) {
-        if (owner.equals(m_owner)) {
+        if (owner.equals(m_owner) && m_fields.contains(name)) {
             if (opcode == GETFIELD) {
                 String gDesc = "()" + desc;
                 visitMethodInsn(INVOKEVIRTUAL, owner, "_get" + name, gDesc);

Modified: 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java?rev=579527&r1=579526&r2=579527&view=diff
==============================================================================
--- 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java
 (original)
+++ 
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java
 Wed Sep 26 02:01:13 2007
@@ -19,7 +19,10 @@
 package org.apache.felix.ipojo.manipulation;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import org.objectweb.asm.AnnotationVisitor;
 import org.objectweb.asm.Attribute;
@@ -50,7 +53,8 @@
     /**
      * Field list.
      */
-    private List m_fields = new ArrayList();
+    private Set m_fields;
+    
 
     /**
      * Method list.
@@ -65,9 +69,12 @@
     /**
      * Constructor.
      * @param arg0 : class adapter on which delegate.
+     * @param fields : map of contained fields.
+     * @param m_fields2 
      */
-    public PojoAdapter(ClassVisitor arg0) {
+    public PojoAdapter(ClassVisitor arg0, Map fields) {
         super(arg0);
+        m_fields = fields.keySet();
     }
 
     /**
@@ -121,7 +128,6 @@
         createGetComponentInstanceMethod();
 
         m_methods.clear();
-        m_fields.clear();
 
         cv.visitEnd();
     }
@@ -140,7 +146,6 @@
     public FieldVisitor visitField(int access, String name, String desc, 
String signature, Object value) {
         // Add the field to the list.
         if ((access & ACC_STATIC) == 0) {
-            m_fields.add(name);
             addFlagField(name);
             m_getterSetterCreator.visitField(access, name, desc, signature, 
value);
         }
@@ -187,7 +192,7 @@
                 return null;
             } else {
                 // return new ConstructorCodeAdapter(mv, access, desc, 
m_owner);
-                return new ConstructorCodeAdapter(mv, m_owner);
+                return new ConstructorCodeAdapter(mv, m_owner, m_fields);
             }
         } else { // "Normal methods"
             // avoid manipulating static methods.
@@ -213,7 +218,7 @@
             }
 
             MethodVisitor mv = super.visitMethod(access, name, desc, 
signature, exceptions);
-            return new MethodCodeAdapter(mv, m_owner, access, name, desc);
+            return new MethodCodeAdapter(mv, m_owner, access, name, desc, 
m_fields);
         }
     }
 
@@ -300,8 +305,9 @@
         mv.visitMethodInsn(INVOKEVIRTUAL, 
"org/apache/felix/ipojo/InstanceManager", "getRegistredFields", 
"()Ljava/util/Set;");
         mv.visitVarInsn(ASTORE, 2);
 
-        for (int i = 0; i < m_fields.size(); i++) {
-            String field = (String) m_fields.get(i);
+        Iterator it = m_fields.iterator();
+        while (it.hasNext()) {
+            String field = (String) it.next();
             mv.visitVarInsn(ALOAD, 2);
             mv.visitLdcInsn(field);
             mv.visitMethodInsn(INVOKEINTERFACE, "java/util/Set", "contains", 
"(Ljava/lang/Object;)Z");


Reply via email to