Author: clement
Date: Thu Sep 20 00:50:53 2007
New Revision: 577607

URL: http://svn.apache.org/viewvc?rev=577607&view=rev
Log:
Solve the Felix-372 bugs about static method manipulation.
Avoid importing org.objectweb.asm.tree that is not used (Maven transitive 
dependency).
Fix warning messages when compiling iPOJO core about split-packages.

Modified:
    felix/trunk/ipojo/core/pom.xml
    felix/trunk/ipojo/manipulator/pom.xml
    
felix/trunk/ipojo/manipulator/src/main/java/org/apache/felix/ipojo/manipulation/PojoAdapter.java

Modified: felix/trunk/ipojo/core/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/core/pom.xml?rev=577607&r1=577606&r2=577607&view=diff
==============================================================================
--- felix/trunk/ipojo/core/pom.xml (original)
+++ felix/trunk/ipojo/core/pom.xml Thu Sep 20 00:50:53 2007
@@ -48,7 +48,8 @@
             <Import-Package>
               org.osgi.framework, 
               org.osgi.service.cm,
-              org.osgi.service.log
+              org.osgi.service.log,
+                         !org.objectweb.asm*
             </Import-Package>
             <Private-Package>
                org.apache.felix.ipojo.manipulation,
@@ -60,9 +61,7 @@
                        org.apache.felix.ipojo.handlers.dependency.nullable,
                org.apache.felix.ipojo.handlers.lifecycle.callback,
                org.apache.felix.ipojo.handlers.lifecycle.controller,
-               org.objectweb.asm,
-               org.objectweb.asm.commons,
-               org.objectweb.asm.tree  <!-- to remove -->
+               org.objectweb.asm*;-split-package:=merge-first
             </Private-Package>
             <Export-Package>
               org.apache.felix.ipojo; version="0.7.3", 

Modified: felix/trunk/ipojo/manipulator/pom.xml
URL: 
http://svn.apache.org/viewvc/felix/trunk/ipojo/manipulator/pom.xml?rev=577607&r1=577606&r2=577607&view=diff
==============================================================================
--- felix/trunk/ipojo/manipulator/pom.xml (original)
+++ felix/trunk/ipojo/manipulator/pom.xml Thu Sep 20 00:50:53 2007
@@ -21,12 +21,12 @@
       <groupId>asm</groupId>
       <artifactId>asm-commons</artifactId>
       <version>3.0</version>
-    </dependency>
-    <!-- to remove -->
-    <dependency>
-      <groupId>asm</groupId>
-      <artifactId>asm-tree</artifactId>
-      <version>3.0</version>
+      <exclusions>
+       <exclusion>
+               <groupId>asm</groupId>
+               <artifactId>asm-tree</artifactId>
+       </exclusion>
+          </exclusions>
     </dependency>
     <dependency>
       <groupId>${pom.groupId}</groupId>
@@ -45,15 +45,14 @@
           <instructions>          
             <Bundle-Name>iPOJO Manipulator</Bundle-Name>
             <Bundle-Vendor>Clement ESCOFFIER</Bundle-Vendor>
-            <Bundle-Description> iPOJO Manipulator </Bundle-Description>
+            <Bundle-Description> iPOJO Manipulator </Bundle-Description>
             <Export-Package>org.apache.felix.ipojo.manipulator</Export-Package>
             <Private-Package>
-               org.apache.felix.ipojo.manipulation,
+               org.apache.felix.ipojo.manipulation,
                org.apache.felix.ipojo.manipulation.annotations,
                org.apache.felix.ipojo.xml.parser,
                org.objectweb.asm,
-               org.objectweb.asm.commons,
-               org.objectweb.asm.tree <!-- to remove -->
+               org.objectweb.asm.commons
             </Private-Package>
           </instructions>
         </configuration>

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=577607&r1=577606&r2=577607&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
 Thu Sep 20 00:50:53 2007
@@ -172,9 +172,11 @@
      * @see org.objectweb.asm.ClassAdapter#visitMethod(int, java.lang.String, 
java.lang.String, java.lang.String, java.lang.String[])
      */
     public MethodVisitor visitMethod(int access, String name, String desc, 
String signature, String[] exceptions) {
-        if (name.equals("<clinit>") || name.equals("class$")) {
+        // Avoid manipulating special method
+               if (name.equals("<clinit>") || name.equals("class$")) {
             return super.visitMethod(access, name, desc, signature, 
exceptions);
         }
+               // The constructor is manipulated separatly
         if (name.equals("<init>")) {
             // 1) change the constructor descriptor (add a component manager 
arg as first argument)
             String newDesc = desc.substring(1);
@@ -189,7 +191,13 @@
                 //return new ConstructorCodeAdapter(mv, access, desc, m_owner);
                 return new ConstructorCodeAdapter(mv, m_owner);
             }
-        } else {
+        } else { // "Normal methods"
+
+                       // avoid manipulating static methods.
+                       if ((access & ACC_STATIC) == ACC_STATIC) {
+                                       return super.visitMethod(access, name, 
desc, signature, exceptions);
+            }
+                       
             Type[] args = Type.getArgumentTypes(desc);
             String id = name;
             for (int i = 0; i < args.length; i++) {


Reply via email to