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++) {