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>.
      */