You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2010/02/19 19:54:01 UTC
svn commit: r911924 - in
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5:
internal/services/InternalClassTransformationImpl.java
services/ClassTransformation.java
Author: hlship
Date: Fri Feb 19 18:54:00 2010
New Revision: 911924
URL: http://svn.apache.org/viewvc?rev=911924&view=rev
Log:
Add createMethod() to ClassTransformation
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java?rev=911924&r1=911923&r2=911924&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java Fri Feb 19 18:54:00 2010
@@ -1182,6 +1182,25 @@
addOrReplaceMethod(signature, methodBody, true);
}
+ public TransformMethod createMethod(TransformMethodSignature signature)
+ {
+ failIfFrozen();
+
+ if (methods.containsKey(signature))
+ throw new RuntimeException(String.format(
+ "Unable to create new method %s as it already exists in class %s.", signature, getClassName()));
+
+ return addOrReplaceMethod(signature, null, true);
+ }
+
+ /**
+ * @param signature
+ * of method to add
+ * @param methodBody
+ * or null for default
+ * @param addAsNew
+ * if true, then fields in the method will not be transformed
+ */
private TransformMethodImpl addOrReplaceMethod(TransformMethodSignature signature, String methodBody,
boolean addAsNew)
{
@@ -1437,7 +1456,10 @@
description.append(exceptionTypes[i]);
}
- formatter.format("\n%s\n\n", methodBody);
+ if (methodBody != null)
+ formatter.format("\n%s", methodBody);
+
+ description.append("\n\n");
}
public TransformMethod getMethod(TransformMethodSignature signature)
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java?rev=911924&r1=911923&r2=911924&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java Fri Feb 19 18:54:00 2010
@@ -24,6 +24,8 @@
import org.apache.tapestry5.ioc.Predicate;
import org.slf4j.Logger;
+import sun.awt.ComponentFactory;
+
/**
* Contains class-specific information used when transforming a raw component class into an
* executable component class.
@@ -436,6 +438,8 @@
* component. This will be a protected field, accessible to the class and subclasses.
*
* @return name of field
+ * @deprecated Obtain the resources from {@link ComponentMethodInvocation#getComponentResources()} or
+ * as passed to {@link ComponentValueProvider#get(ComponentResources)} instead
*/
String getResourcesFieldName();
@@ -447,10 +451,21 @@
* remember to invoke the super class implemetation explicitly. Use this method to control when
* the super-class
* implementation is invoked.
+ *
+ * @deprecated Use {@link #createMethod(TransformMethodSignature)} instead
*/
void addMethod(TransformMethodSignature signature, String methodBody);
/**
+ * Creates a new method as a declared method of the class, with an empty (default) body that
+ * does nothing. Non-void methods will return null, false or 0. The method must not yet exist.
+ *
+ * @param signature
+ * defines the method to create
+ */
+ TransformMethod createMethod(TransformMethodSignature signature);
+
+ /**
* As with {@link #addMethod(TransformMethodSignature, String)}, but field references inside the
* method <em>will</em> be transformed, and the method <em>must not already exist</em>.
*/