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 2006/12/21 17:24:06 UTC
svn commit: r489394 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/internal/
main/java/org/apache/tapestry/internal/services/
main/java/org/apache/tapestry/test/ site/apt/guide/
test/java/org/apache/tapestry/integration...
Author: hlship
Date: Thu Dec 21 08:24:05 2006
New Revision: 489394
URL: http://svn.apache.org/viewvc?view=rev&rev=489394
Log:
Add support for naming conventions for event handler methods
Added:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryUtils.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ActionPage.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/NumberSelect.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryUtils.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryUtils.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/TapestryUtils.java Thu Dec 21 08:24:05 2006
@@ -38,4 +38,14 @@
}
}
+ /**
+ * Converts the first character of a string to lowercase, leavining the rest of the string
+ * unchanged.
+ */
+ public static String decapitalize(String input)
+ {
+ char first = input.charAt(0);
+
+ return Character.toLowerCase(first) + input.substring(1);
+ }
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/OnEventWorker.java Thu Dec 21 08:24:05 2006
@@ -17,11 +17,13 @@
import java.util.List;
import org.apache.tapestry.annotations.OnEvent;
+import org.apache.tapestry.internal.TapestryUtils;
import org.apache.tapestry.ioc.util.BodyBuilder;
import org.apache.tapestry.model.MutableComponentModel;
import org.apache.tapestry.runtime.Component;
import org.apache.tapestry.services.ClassTransformation;
import org.apache.tapestry.services.ComponentClassTransformWorker;
+import org.apache.tapestry.services.MethodFilter;
import org.apache.tapestry.services.MethodSignature;
import org.apache.tapestry.services.TransformConstants;
import org.apache.tapestry.services.TransformUtils;
@@ -35,9 +37,20 @@
{
static final String OBJECT_ARRAY_TYPE = "java.lang.Object[]";
- public void transform(ClassTransformation transformation, MutableComponentModel model)
+ private final String[] _empty = new String[0];
+
+ public void transform(final ClassTransformation transformation, MutableComponentModel model)
{
- List<MethodSignature> methods = transformation.findMethodsWithAnnotation(OnEvent.class);
+ MethodFilter filter = new MethodFilter()
+ {
+ public boolean accept(MethodSignature signature)
+ {
+ return signature.getMethodName().startsWith("on")
+ || transformation.getMethodAnnotation(signature, OnEvent.class) != null;
+ };
+ };
+
+ List<MethodSignature> methods = transformation.findMethods(filter);
// No methods, no work.
@@ -66,7 +79,7 @@
OnEvent annotation = transformation.getMethodAnnotation(method, OnEvent.class);
- String[] eventTypes = annotation.value();
+ String[] eventTypes = extractEventTypes(method, annotation);
if (eventTypes.length > 0)
{
@@ -81,7 +94,7 @@
closeCount++;
}
- String[] componentIds = annotation.component();
+ String[] componentIds = extractComponentIds(method, annotation);
if (componentIds.length > 0)
{
@@ -125,6 +138,48 @@
for (int i = 0; i < closeCount; i++)
builder.end();
+ }
+
+ private String[] extractComponentIds(MethodSignature method, OnEvent annotation)
+ {
+ if (annotation != null)
+ return annotation.component();
+
+ // Method name started with "on". Extract the component id, if present.
+
+ String name = method.getMethodName();
+
+ int fromx = name.indexOf("From");
+
+ if (fromx < 0)
+ return _empty;
+
+ String componentId = name.substring(fromx + 4);
+
+ return new String[]
+ { TapestryUtils.decapitalize(componentId) };
+ }
+
+ private String[] extractEventTypes(MethodSignature method, OnEvent annotation)
+ {
+ if (annotation != null)
+ return annotation.value();
+
+ // Method name started with "on". Extract the event type.
+
+ String name = method.getMethodName();
+
+ int fromx = name.indexOf("From");
+
+ String eventName = fromx == -1 ? name.substring(2) : name.substring(2, fromx);
+
+ // This is intended for onAnyFromComponentId, but just onAny works too (and is dangerous).
+
+ if (eventName.equals("AnyEvent"))
+ return _empty;
+
+ return new String[]
+ { TapestryUtils.decapitalize(eventName) };
}
private void buildMethodParameters(BodyBuilder builder, MethodSignature method)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/test/TapestryTestCase.java Thu Dec 21 08:24:05 2006
@@ -461,7 +461,7 @@
protected final <T extends Annotation> void train_getMethodAnnotation(ClassTransformation ct,
MethodSignature signature, Class<T> annotationClass, T annotation)
{
- expect(ct.getMethodAnnotation(signature, annotationClass)).andReturn(annotation);
+ expect(ct.getMethodAnnotation(signature, annotationClass)).andReturn(annotation).atLeastOnce();
}
protected final ClasspathAssetAliasManager newClasspathAssetAliasManager()
Modified: tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/site/apt/guide/event.apt Thu Dec 21 08:24:05 2006
@@ -58,8 +58,39 @@
[]
- The OnEvent annotation allows events to be selected based on the originating component,
- or on the type of event.
+ In the above example, the choose() method will be invoked on <any event> that originates
+ inn component <<<choose>>>. Since ActionLink components only emit a single type of event, "action",
+ this will not be a problem.
+
+ Some components can emit more than one type of event, in which case you will want to be more specific:
+
++---+
+ @OnEvent(value = "action", component = "choose")
+ void choose(int value)
+ {
+ _value = value;
+ }
++---+
+
+ The value attribute of the OnEvent annotation is the name of the event to match.
+
+Event Handler Method Convention Names
+
+ As an alternative to the use of annotations, you may name your events in a specific fashion, and Tapestry will invoke your methods just as if
+ they were annotated.
+
+ This style of event handler methods start with the prefix "on", followed by the name of the action (capitalized). You may then continue by adding "From" and
+ a capitalized component id.
+
+ The previous example may be rewritten as:
+
++---+
+ void onActionFromChoose(int value)
+ {
+ _value = value;
+ }
++---+
+
Context
@@ -68,7 +99,7 @@
an elaborate type mechanism with the odd name "DataSqueezer".
Again, whatever your value is (string, number, date), it is converted into a plain string.
- This results in a more readable string.
+ This results in a more readable URL.
If you have multiple context values (by binding a list or array of objects to the ActionLink's
context parameter), then each one, in order, will be added to the URL.
@@ -134,7 +165,7 @@
passed to any activate event handlers. In this way, information about the page can be encoded into URIs for the page, in a light-weight
(and human readable) manner.
- This was created with the intent of handling pages that exist to view (or perhaps edit) a specific instance of some type; in the
+ This was created with the intent of handling pages that exist to view (or perhaps to edit) a specific instance of some type; in the
context of a CRUD application, the context is used to store the primary key of some entity object:
+---+
@@ -147,14 +178,12 @@
@Inject
private CustomerDAO _customerDAO;
- @OnEvent("passivate")
- long passivate()
+ long onPassivate()
{
return _customer.getId();
}
- @OnEvent("activate")
- void activate(long customerId)
+ void onActivate(long customerId)
{
_customer = _customerDAO.get(customerId);
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ActionPage.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ActionPage.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ActionPage.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/ActionPage.java Thu Dec 21 08:24:05 2006
@@ -12,48 +12,43 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.integration.app1.pages;
-
-import org.apache.tapestry.annotations.ComponentClass;
-import org.apache.tapestry.annotations.OnEvent;
-import org.apache.tapestry.annotations.Persist;
-
-/**
- *
- */
-@ComponentClass
-public class ActionPage
-{
- private int _index;
-
- // Must be persistent, to survive from one request to the next.
- // An action request is always followed by a redirect request.
- @Persist
- private int _value;
-
- @OnEvent(component = "choose")
- void choose(int value)
- {
- _value = value;
- }
-
- public int getIndex()
- {
- return _index;
- }
-
- public void setIndex(int index)
- {
- _index = index;
- }
-
- public int getValue()
- {
- return _value;
- }
-
- public String getLinkClass()
- {
- return _index == _value ? "selected" : null;
- }
-}
+package org.apache.tapestry.integration.app1.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.Persist;
+
+@ComponentClass
+public class ActionPage
+{
+ private int _index;
+
+ // Must be persistent, to survive from one request to the next.
+ // An action request is always followed by a redirect request.
+ @Persist
+ private int _value;
+
+ void onActionFromChoose(int value)
+ {
+ _value = value;
+ }
+
+ public int getIndex()
+ {
+ return _index;
+ }
+
+ public void setIndex(int index)
+ {
+ _index = index;
+ }
+
+ public int getValue()
+ {
+ return _value;
+ }
+
+ public String getLinkClass()
+ {
+ return _index == _value ? "selected" : null;
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/NumberSelect.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/NumberSelect.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/NumberSelect.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/NumberSelect.java Thu Dec 21 08:24:05 2006
@@ -16,7 +16,6 @@
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.InjectPage;
-import org.apache.tapestry.annotations.OnEvent;
@ComponentClass
public class NumberSelect
@@ -41,8 +40,7 @@
@InjectPage
private ShowSelection _showSelection;
- @OnEvent(component = "select")
- Object doSelect(int index)
+ Object onActionFromSelect(int index)
{
_showSelection.setSelected(index);
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java Thu Dec 21 08:24:05 2006
@@ -15,7 +15,6 @@
package org.apache.tapestry.integration.app1.pages;
import org.apache.tapestry.annotations.ComponentClass;
-import org.apache.tapestry.annotations.OnEvent;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.integration.app1.data.IncidentData;
@@ -43,8 +42,7 @@
return _incident;
}
- @OnEvent("prepare")
- void prepare()
+ void onPrepare()
{
if (_incident == null)
_incident = new IncidentData();
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java?view=auto&rev=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/TapestryUtilsTest.java Thu Dec 21 08:24:05 2006
@@ -0,0 +1,64 @@
+package org.apache.tapestry.internal;
+
+import java.io.Closeable;
+import java.io.IOException;
+
+import org.apache.tapestry.ioc.test.TestBase;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+public class TapestryUtilsTest extends TestBase
+{
+ @Test
+ public void close_null_is_noop()
+ {
+ TapestryUtils.close(null);
+ }
+
+ @Test
+ public void close_success() throws Exception
+ {
+ Closeable c = newMock(Closeable.class);
+
+ c.close();
+
+ replay();
+
+ TapestryUtils.close(c);
+
+ verify();
+ }
+
+ @Test
+ public void close_ignores_exceptions() throws Exception
+ {
+ Closeable c = newMock(Closeable.class);
+
+ c.close();
+ setThrowable(new IOException());
+
+ replay();
+
+ TapestryUtils.close(c);
+
+ verify();
+ }
+
+ @Test(dataProvider = "decapitalize_inputs")
+ public void decapitalize(String input, String expected)
+ {
+ assertEquals(TapestryUtils.decapitalize(input), expected);
+ }
+
+ @DataProvider(name = "decapitalize_inputs")
+ public Object[][] decaptialize_inputs()
+ {
+ return new Object[][]
+ {
+ { "Alpha", "alpha" },
+ { "beta", "beta" },
+ { "A", "a" },
+ { "z", "z" },
+ { "0abc", "0abc" } };
+ }
+}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java?view=diff&rev=489394&r1=489393&r2=489394
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/OnEventWorkerTest.java Thu Dec 21 08:24:05 2006
@@ -14,13 +14,13 @@
package org.apache.tapestry.internal.services;
+import static org.easymock.EasyMock.aryEq;
+import static org.easymock.EasyMock.eq;
+
import java.lang.reflect.Modifier;
-import java.util.Collections;
-import java.util.List;
import org.apache.tapestry.annotations.OnEvent;
import org.apache.tapestry.internal.test.InternalBaseTestCase;
-import org.apache.tapestry.ioc.internal.util.CollectionFactory;
import org.apache.tapestry.model.MutableComponentModel;
import org.apache.tapestry.services.ClassTransformation;
import org.apache.tapestry.services.MethodSignature;
@@ -44,8 +44,10 @@
ClassTransformation ct = newClassTransformation();
MutableComponentModel model = newMutableComponentModel();
- List<MethodSignature> methods = CollectionFactory.newList();
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ MethodSignature sig = new MethodSignature("foo");
+
+ train_findMethods(ct, sig);
+ train_getMethodAnnotation(ct, sig, OnEvent.class, null);
replay();
@@ -63,8 +65,7 @@
MethodSignature signature = new MethodSignature("foo");
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -102,8 +103,7 @@
MethodSignature signature = new MethodSignature("foo");
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -135,6 +135,49 @@
verify();
}
+ protected final void train_addInjectedField(ClassTransformation ct, String suggestedName,
+ String actualName, String... values)
+ {
+ expect(ct.addInjectedField(eq(String[].class), eq(suggestedName), aryEq(values)))
+ .andReturn(actualName);
+ }
+
+ @Test
+ public void by_convention_on_event_type()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ MethodSignature signature = new MethodSignature("onSubmit");
+
+ train_findMethods(ct, signature);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, null);
+
+ train_addInjectedField(ct, "eventTypes", "_v", "submit");
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ "if ($1.matchesByEventType(_v))",
+ "{",
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.onSubmit()\");",
+ "onSubmit();",
+ "}",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
@Test
public void filter_by_component_id()
{
@@ -147,8 +190,7 @@
MethodSignature signature = new MethodSignature("foo");
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -182,6 +224,44 @@
}
@Test
+ public void by_convention_on_component_id()
+ {
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ MethodSignature signature = new MethodSignature("onAnyEventFromZork");
+
+ train_findMethods(ct, signature);
+
+ train_getMethodAnnotation(ct, signature, OnEvent.class, null);
+
+ train_addInjectedField(ct, "componentIds", "_ids", "zork");
+
+ train_getResourcesFieldName(ct, "_res");
+
+ train_getClassName(ct, "foo.Bar");
+
+ train_extendMethod(
+ ct,
+ TransformConstants.HANDLE_COMPONENT_EVENT,
+ "{",
+ BOILERPLATE_1,
+ "if ($1.matchesByComponentId(_res, _ids))",
+ "{",
+ BOILERPLATE_2,
+ "$1.setSource(this, \"foo.Bar.onAnyEventFromZork()\");",
+ "onAnyEventFromZork();",
+ "}",
+ "}");
+
+ replay();
+
+ new OnEventWorker().transform(ct, model);
+
+ verify();
+ }
+
+ @Test
public void filter_by_both()
{
ClassTransformation ct = newClassTransformation();
@@ -195,8 +275,7 @@
MethodSignature signature = new MethodSignature("foo");
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -246,8 +325,7 @@
MethodSignature signature = new MethodSignature(Modifier.PRIVATE, "java.lang.String",
"foo", null, null);
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -284,8 +362,7 @@
new String[]
{ "java.lang.String" }, null);
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -322,8 +399,7 @@
new String[]
{ "boolean" }, null);
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -361,8 +437,7 @@
new String[]
{ "java.lang.String", "java.lang.Integer" }, null);
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -400,8 +475,7 @@
new String[]
{ "java.lang.String", OnEventWorker.OBJECT_ARRAY_TYPE, "java.lang.Integer" }, null);
- List<MethodSignature> methods = Collections.singletonList(signature);
- train_findMethodsWithAnnotation(ct, OnEvent.class, methods);
+ train_findMethods(ct, signature);
train_getMethodAnnotation(ct, signature, OnEvent.class, annotation);
@@ -419,7 +493,8 @@
"{",
BOILERPLATE_1,
BOILERPLATE_2,
- String.format("$1.setSource(this, \"foo.Bar.%s\");", signature.getMediumDescription()),
+ String.format("$1.setSource(this, \"foo.Bar.%s\");", signature
+ .getMediumDescription()),
"foo((java.lang.String)$1.coerceContext(0, \"java.lang.String\"), ",
"$1.getContext(), ",
"(java.lang.Integer)$1.coerceContext(1, \"java.lang.Integer\"));",