[jboss-cvs] JBossAS SVN: r59954 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jan 23 16:08:17 EST 2007
Author: flavia.rainone at jboss.com
Date: 2007-01-23 16:08:16 -0500 (Tue, 23 Jan 2007)
New Revision: 59954
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
Log:
[JBAOP-325] Duplicate constructor issue is solved.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByConJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -232,7 +232,7 @@
addInvokeJoinpointMethod();
addMethodInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(callingClass, jp);
@@ -273,18 +273,16 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
CtClass[] ctorParams1 = new CtClass[params.length + 2];
- CtClass[] ctorParams2 = new CtClass[3];
+ CtClass[] ctorParams2 = new CtClass[2];
ctorParams1[0] = ctorParams2[0] = jp;
ctorParams1[1] = ctorParams2[1] = callingClass;
System.arraycopy(params, 0, ctorParams1, 2, params.length);
- ctorParams2[2] = instrumentor.forName("java.lang.Object[]");
StringBuffer body = new StringBuffer();
body.append("{");
@@ -306,15 +304,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 0)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + " setArguments($3);}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
-
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
private CtClass[] getInvokeJoinPointParameters()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConByMethodJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -244,7 +244,7 @@
addInvokeJoinpointMethod();
addMethodInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(callingClass, jp);
@@ -286,23 +286,21 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
final int offset = (hasCallingObject) ? 2 : 1;
CtClass[] ctorParams1 = new CtClass[params.length + offset];
- CtClass[] ctorParams2 = new CtClass[offset + 1];
+ CtClass[] ctorParams2 = new CtClass[offset];
ctorParams1[0] = ctorParams2[0] = jp;
if (hasCallingObject)
{
ctorParams1[1] = ctorParams2[1] = callingClass;
}
System.arraycopy(params, 0, ctorParams1, offset, params.length);
- ctorParams2[offset] = instrumentor.forName("java.lang.Object[]");
-
+
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" this($1." + INFO_FIELD + ");");
@@ -326,14 +324,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 0)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + "setArguments($" + (offset + 1) + ");}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
private CtClass[] getInvokeJoinPointParams()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructionJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -209,7 +209,7 @@
addInvokeJoinpointMethod();
addConstructionInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(advisedClass, jp);
@@ -259,19 +259,17 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
CtClass[] ctorParams1 = new CtClass[params.length + 1];
- CtClass[] ctorParams2 = new CtClass[3];
+ CtClass[] ctorParams2 = new CtClass[2];
ctorParams1[0] = ctorParams2[0] = jp;
System.arraycopy(params, 0, ctorParams1, 1, params.length);
ctorParams2[1] = params[0];
- ctorParams2[2] = instrumentor.forName("java.lang.Object[]");
-
+
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" this($1." + INFO_FIELD + ");");
@@ -294,14 +292,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 1)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + " setArguments($3);}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
/**
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ConstructorJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -191,7 +191,7 @@
addInvokeJoinpointMethod();
addMethodInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(advisedClass, jp);
@@ -233,18 +233,16 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
CtClass[] ctorParams1 = new CtClass[params.length + 1];
- CtClass[] ctorParams2 = new CtClass[2];
+ CtClass[] ctorParams2 = new CtClass[1];
ctorParams1[0] = ctorParams2[0] = jp;
System.arraycopy(params, 0, ctorParams1, 1, params.length);
- ctorParams2[1] = instrumentor.forName("java.lang.Object[]");
-
+
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" this($1." + INFO_FIELD + ");");
@@ -264,14 +262,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 0)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + " setArguments($2);}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
/**
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -161,15 +161,13 @@
}
}
- public final void appendParameterListWithArgs(StringBuffer code)
+ public final void appendParameterListWithoutArgs(StringBuffer code)
{
if (targetCallerList != null)
{
+ code.append(',');
code.append(targetCallerList);
- code.append(",");
}
-
- code.append(ARGUMENTS);
}
@@ -816,18 +814,26 @@
code.append(" if(" + INFO_FIELD + ".getInterceptors() != null)");
code.append(" {");
- code.append(" " + joinpointFqn + " jp = new " + joinpointClass.getName() + "(this, ");
+ code.append(" " + joinpointFqn + " jp = new " + joinpointClass.getName() + "(this");
if (argsFoundBefore)
{
- parameters.appendParameterListWithArgs(code);
+ parameters.appendParameterListWithoutArgs(code);
}
else
{
- code.append("$$");
+ code.append(", $$");
}
code.append(aspects.toString() + cflows.toString() + ");");
+
+ if (argsFoundBefore)
+ {
+ code.append(" jp.setArguments(");
+ code.append(ARGUMENTS);
+ code.append(");");
+ }
+
if (!isVoid())
{
code.append(" " + RETURN_VALUE + " = ($r)");
@@ -933,18 +939,18 @@
private void createConstructors(ClassPool pool, CtClass superClass, CtClass clazz, AdviceSetupsByType setups) throws NotFoundException, CannotCompileException
{
CtConstructor[] superCtors = superClass.getDeclaredConstructors();
- if (superCtors.length != 3 && !this.getClass().equals(MethodJoinPointGenerator.class)
+ if (superCtors.length != 3 && superCtors.length != 2 && !this.getClass().equals(MethodJoinPointGenerator.class)
&& !FieldJoinPointGenerator.class.isAssignableFrom(this.getClass()))
{
- throw new RuntimeException("JoinPoints should only have 3 and only constructors, not " + superCtors.length);
+ throw new RuntimeException("JoinPoints should have 2 or 3 constructors, not " + superCtors.length);
}
else if (superCtors.length != 2 && FieldJoinPointGenerator.class.isAssignableFrom(this.getClass()))
{
throw new RuntimeException("Field JoinPoints should only have 2 and only constructors, not " + superCtors.length);
}
- else if (superCtors.length != 4 && this.getClass().equals(MethodJoinPointGenerator.class))
+ else if (superCtors.length != 4 && superCtors.length != 3 && this.getClass().equals(MethodJoinPointGenerator.class))
{
- throw new RuntimeException("Method JoinPoints should only have 4 and only constructors, not " + superCtors.length);
+ throw new RuntimeException("Method JoinPoints should have 3 or 4 constructors, not " + superCtors.length);
}
int publicIndex = -1;
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByConJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -230,7 +230,7 @@
addInvokeJoinpointMethod();
addMethodInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(callingClass, jp);
@@ -283,15 +283,14 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
final int offset = hasTargetObject ? 3 : 2;
CtClass[] ctorParams1 = new CtClass[params.length + offset];
- CtClass[] ctorParams2 = new CtClass[offset + 1];
+ CtClass[] ctorParams2 = new CtClass[offset];
ctorParams1[0] = ctorParams2[0] = jp;
ctorParams1[1] = ctorParams2[1] = callingClass;
if (hasTargetObject)
@@ -299,8 +298,7 @@
ctorParams1[2] = ctorParams2[2] = targetClass;
}
System.arraycopy(params, 0, ctorParams1, offset, params.length);
- ctorParams2[offset] = instrumentor.forName("java.lang.Object[]");
-
+
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" this($1." + INFO_FIELD + ");");
@@ -327,14 +325,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 0)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + "setArguments($" + (offset + 1) + ");}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodByMethodJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -241,7 +241,7 @@
addInvokeJoinpointMethod();
addMethodInfoField();
addPublicConstructor();
- addProtectedConstructor();
+ addProtectedConstructors();
addDispatchMethods();
TransformerCommon.compileOrLoadClass(callingClass, jp);
@@ -294,25 +294,23 @@
}
/**
- * This constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructor()
- throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
int offset = 1;
if (hasTargetObject) offset++;
if (hasCallingObject) offset++;
CtClass[] ctorParams1 = new CtClass[params.length + offset];
- CtClass[] ctorParams2 = new CtClass[offset + 1];
+ CtClass[] ctorParams2 = new CtClass[offset];
int index = 0;
ctorParams1[index] = ctorParams2[index++] = jp;
if (hasTargetObject) ctorParams1[index] = ctorParams2[index++] = targetClass;
if (hasCallingObject) ctorParams1[index] = ctorParams2[index++] = callingClass;
System.arraycopy(params, 0, ctorParams1, offset, params.length);
- ctorParams2[index++] = instrumentor.forName("java.lang.Object[]");
-
+
StringBuffer body = new StringBuffer();
body.append("{");
body.append(" this($1." + INFO_FIELD + ");");
@@ -337,14 +335,16 @@
jp);
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
+ if (params.length > 0)
+ {
+ protectedConstructor = CtNewConstructor.make(
ctorParams2,
new CtClass[0],
- body.toString() + " setArguments($" + index + ");}",
+ body.toString() + "}",
jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
private CtClass[] getInvokeJoinpointParameters()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-01-23 20:03:19 UTC (rev 59953)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/MethodJoinPointGenerator.java 2007-01-23 21:08:16 UTC (rev 59954)
@@ -280,10 +280,10 @@
}
/**
- * These constructor will be called by invokeJoinpoint in the generated subclass when we need to
- * instantiate a joinpoint containing target and args
+ * These constructors will be called by invokeJoinpoint in the generated
+ * subclass when we need to instantiate a joinpoint containing target and args
*/
- protected void addProtectedConstructors() throws CannotCompileException, NotFoundException
+ protected void addProtectedConstructors() throws CannotCompileException
{
CtClass[] ctorParams1 = new CtClass[params.length + 1];
CtClass[] ctorParams2 = null;
@@ -300,18 +300,16 @@
{
offset = 2;
// second version of constructor, that receives Arguments array
- ctorParams2 = new CtClass[3];
+ ctorParams2 = new CtClass[2];
System.arraycopy(ctorParams1, 0, ctorParams2, 0, 2);
- ctorParams2[2] = instrumentor.forName("java.lang.Object[]");
-
+
body.append(" this." + TARGET_FIELD + " = $2;");
body.append(" super.setTargetObject($2);");
}
else
{
- ctorParams2 = new CtClass[2];
+ ctorParams2 = new CtClass[1];
ctorParams2[0] = ctorParams1[0];
- ctorParams2[1] = ctorParams1[0].getClassPool().get("java.lang.Object[]");
}
@@ -331,14 +329,16 @@
protectedConstructor.setModifiers(Modifier.PROTECTED);
jp.addConstructor(protectedConstructor);
-
- protectedConstructor = CtNewConstructor.make(
- ctorParams2,
- new CtClass[0],
- body.toString() + " setArguments($" + (offset + 1) + ");}",
- jp);
- protectedConstructor.setModifiers(Modifier.PROTECTED);
- jp.addConstructor(protectedConstructor);
+ if (params.length > 1)
+ {
+ protectedConstructor = CtNewConstructor.make(
+ ctorParams2,
+ new CtClass[0],
+ body.toString() + "}",
+ jp);
+ protectedConstructor.setModifiers(Modifier.PROTECTED);
+ jp.addConstructor(protectedConstructor);
+ }
}
/**
More information about the jboss-cvs-commits
mailing list