You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2006/12/01 18:49:35 UTC
svn commit: r481321 [2/2] - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/ main/java/org/apache/tapestry/annotations/
main/java/org/apache/tapestry/internal/services/
main/java/org/apache/tapestry/internal/util/ main/jav...
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAnonymousWorkerTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAnonymousWorkerTest.java?view=auto&rev=481321
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAnonymousWorkerTest.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectAnonymousWorkerTest.java Fri Dec 1 09:49:32 2006
@@ -0,0 +1,95 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.services;
+
+import org.apache.tapestry.annotations.Inject;
+import org.apache.tapestry.internal.test.InternalBaseTestCase;
+import org.apache.tapestry.ioc.ServiceLocator;
+import org.apache.tapestry.model.MutableComponentModel;
+import org.apache.tapestry.services.ClassTransformation;
+import org.apache.tapestry.services.ComponentClassTransformWorker;
+import org.apache.tapestry.services.InjectionProvider;
+import org.apache.tapestry.services.WebRequest;
+import org.testng.annotations.Test;
+
+public class InjectAnonymousWorkerTest extends InternalBaseTestCase
+{
+ private static final String WEBREQUEST_CLASS_NAME = WebRequest.class.getName();
+
+ @Test
+ public void anonymous_injection()
+ {
+ ServiceLocator locator = newServiceLocator();
+ InjectionProvider ip = newMock(InjectionProvider.class);
+ Inject annotation = newMock(Inject.class);
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
+ train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
+
+ train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
+
+ train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, true);
+
+ ct.claimField("myfield", annotation);
+
+ replay();
+
+ ComponentClassTransformWorker worker = new InjectAnonymousWorker(locator, ip);
+
+ worker.transform(ct, model);
+
+ verify();
+ }
+
+ @Test
+ public void anonymous_injection_not_provided()
+ {
+ ServiceLocator locator = newServiceLocator();
+ InjectionProvider ip = newMock(InjectionProvider.class);
+ Inject annotation = newMock(Inject.class);
+ ClassTransformation ct = newClassTransformation();
+ MutableComponentModel model = newMutableComponentModel();
+
+ train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
+ train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
+
+ train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
+
+ train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, false);
+
+ train_getClassName(ct, "foo.Baz");
+
+ replay();
+
+ ComponentClassTransformWorker worker = new InjectAnonymousWorker(locator, ip);
+
+ try
+ {
+ worker.transform(ct, model);
+ unreachable();
+ }
+ catch (RuntimeException ex)
+ {
+ assertEquals(ex.getMessage(), ServicesMessages.noInjectionFound(
+ "foo.Baz",
+ "myfield",
+ WEBREQUEST_CLASS_NAME));
+ }
+
+ verify();
+ }
+}
Copied: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectNamedWorkerTest.java (from r480115, tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectNamedWorkerTest.java?view=diff&rev=481321&p1=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java&r1=480115&p2=tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectNamedWorkerTest.java&r2=481321
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectWorkerTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InjectNamedWorkerTest.java Fri Dec 1 09:49:32 2006
@@ -20,14 +20,10 @@
import org.apache.tapestry.ioc.ServiceLocator;
import org.apache.tapestry.model.MutableComponentModel;
import org.apache.tapestry.services.ClassTransformation;
-import org.apache.tapestry.services.InjectionProvider;
import org.apache.tapestry.services.WebRequest;
import org.testng.annotations.Test;
-/**
- *
- */
-public class InjectWorkerTest extends InternalBaseTestCase
+public class InjectNamedWorkerTest extends InternalBaseTestCase
{
private static final String WEBREQUEST_CLASS_NAME = WebRequest.class.getName();
@@ -37,7 +33,6 @@
{
ObjectProvider provider = newObjectProvider();
ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
Inject annotation = newMock(Inject.class);
ClassTransformation ct = newClassTransformation();
MutableComponentModel model = newMutableComponentModel();
@@ -59,91 +54,10 @@
replay();
- InjectWorker worker = new InjectWorker(provider, locator, ip);
+ InjectNamedWorker worker = new InjectNamedWorker(provider, locator);
worker.transform(ct, model);
verify();
- }
-
- @Test
- public void no_value_for_annotation()
- {
- ObjectProvider provider = newObjectProvider();
- ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
- Inject annotation = newMock(Inject.class);
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
- train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
- train_value(annotation, "");
-
- train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
-
- train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, true);
-
- ct.claimField("myfield", annotation);
-
- replay();
-
- InjectWorker worker = new InjectWorker(provider, locator, ip);
-
- worker.transform(ct, model);
-
- verify();
- }
-
- @Test
- public void anonymous_injection_not_provided()
- {
- ObjectProvider provider = newObjectProvider();
- ServiceLocator locator = newServiceLocator();
- InjectionProvider ip = newMock(InjectionProvider.class);
- Inject annotation = newMock(Inject.class);
- ClassTransformation ct = newClassTransformation();
- MutableComponentModel model = newMutableComponentModel();
-
- train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
- train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
- train_value(annotation, "");
-
- train_getFieldType(ct, "myfield", WEBREQUEST_CLASS_NAME);
-
- train_provideInjection(ip, "myfield", WEBREQUEST_CLASS_NAME, locator, ct, model, false);
-
- train_getClassName(ct, "foo.Baz");
-
- replay();
-
- InjectWorker worker = new InjectWorker(provider, locator, ip);
-
- try
- {
- worker.transform(ct, model);
- unreachable();
- }
- catch (RuntimeException ex)
- {
- assertEquals(ex.getMessage(), ServicesMessages.noInjectionFound(
- "foo.Baz",
- "myfield",
- WEBREQUEST_CLASS_NAME));
- }
-
- verify();
- }
-
- protected void train_getClassName(ClassTransformation transformation, String className)
- {
- expect(transformation.getClassName()).andReturn(className);
- }
-
- private void train_value(Inject annotation, String value)
- {
- expect(annotation.value()).andReturn(value);
}
}
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java?view=diff&rev=481321&r1=481320&r2=481321
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/InternalClassTransformationImplTest.java Fri Dec 1 09:49:32 2006
@@ -45,6 +45,7 @@
import org.apache.tapestry.internal.transform.pages.ChildClassInheritsAnnotation;
import org.apache.tapestry.internal.transform.pages.ClaimedFields;
import org.apache.tapestry.internal.transform.pages.EventHandlerTarget;
+import org.apache.tapestry.internal.transform.pages.FindFieldClass;
import org.apache.tapestry.internal.transform.pages.ParentClass;
import org.apache.tapestry.internal.transform.pages.TargetObject;
import org.apache.tapestry.internal.transform.pages.TargetObjectSubclass;
@@ -223,6 +224,64 @@
assertEquals(fields.size(), 1);
assertEquals(fields.get(0), "_annotatedField");
+
+ verify();
+ }
+
+ @Test
+ public void find_fields_of_type() throws Exception
+ {
+ Log log = newLog();
+
+ replay();
+
+ ClassTransformation ct = createClassTransformation(FindFieldClass.class, log);
+
+ checkFindFields(ct, "boolean", "_booleanValue");
+ checkFindFields(ct, "int[]", "_intArrayValue");
+ checkFindFields(ct, "java.lang.String", "_stringValue");
+ checkFindFields(ct, "java.util.Date[]", "_dateArrayValue");
+
+ verify();
+ }
+
+ @Test
+ public void find_fields_of_type_excludes_claimed_fields() throws Exception
+ {
+ Log log = newLog();
+
+ replay();
+
+ ClassTransformation ct = createClassTransformation(FindFieldClass.class, log);
+
+ ct.claimField("_booleanValue", this);
+
+ checkFindFields(ct, "boolean");
+
+ verify();
+ }
+
+ private void checkFindFields(ClassTransformation ct, String fieldType, String... expectedNames)
+ {
+ List<String> actual = ct.findFieldsOfType(fieldType);
+
+ assertEquals(actual, Arrays.asList(expectedNames));
+ }
+
+ @Test
+ public void find_fields_with_annotation_excludes_claimed_files() throws Exception
+ {
+ Log log = newLog();
+
+ replay();
+
+ ClassTransformation ct = createClassTransformation(ParentClass.class, log);
+
+ ct.claimField("_annotatedField", this);
+
+ List<String> fields = ct.findFieldsWithAnnotation(Retain.class);
+
+ assertTrue(fields.isEmpty());
verify();
}
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=481321&r1=481320&r2=481321
==============================================================================
--- 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 Fri Dec 1 09:49:32 2006
@@ -16,7 +16,6 @@
import static java.lang.String.format;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Modifier;
import java.util.Collections;
import java.util.List;
@@ -440,11 +439,6 @@
return newMock(OnEvent.class);
}
- protected final void train_getClassName(ClassTransformation ct, String className)
- {
- expect(ct.getClassName()).andReturn(className);
- }
-
protected final void train_value(OnEvent annotation, String[] values)
{
expect(annotation.value()).andReturn(values);
@@ -453,11 +447,5 @@
protected final void train_component(OnEvent annotation, String[] values)
{
expect(annotation.component()).andReturn(values);
- }
-
- protected final <T extends Annotation> void train_getMethodAnnotation(ClassTransformation ct,
- MethodSignature signature, Class<T> annotationClass, T annotation)
- {
- expect(ct.getMethodAnnotation(signature, annotationClass)).andReturn(annotation);
}
}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/FindFieldClass.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/FindFieldClass.java?view=auto&rev=481321
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/FindFieldClass.java (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/transform/pages/FindFieldClass.java Fri Dec 1 09:49:32 2006
@@ -0,0 +1,72 @@
+// Copyright 2006 The Apache Software Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.tapestry.internal.transform.pages;
+
+import java.util.Date;
+
+import org.apache.tapestry.annotations.ComponentClass;
+
+@ComponentClass
+public class FindFieldClass
+{
+ private boolean _booleanValue;
+
+ private int[] _intArrayValue;
+
+ private String _stringValue;
+
+ private Date[] _dateArrayValue;
+
+ public boolean isBooleanValue()
+ {
+ return _booleanValue;
+ }
+
+ public void setBooleanValue(boolean booleanValue)
+ {
+ _booleanValue = booleanValue;
+ }
+
+ public Date[] getDateArrayValue()
+ {
+ return _dateArrayValue;
+ }
+
+ public void setDateArrayValue(Date[] dateArrayValue)
+ {
+ _dateArrayValue = dateArrayValue;
+ }
+
+ public int[] getIntArrayValue()
+ {
+ return _intArrayValue;
+ }
+
+ public void setIntArrayValue(int[] intArrayValue)
+ {
+ _intArrayValue = intArrayValue;
+ }
+
+ public String getStringValue()
+ {
+ return _stringValue;
+ }
+
+ public void setStringValue(String stringValue)
+ {
+ _stringValue = stringValue;
+ }
+
+}
Added: tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/AssetDemo.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/AssetDemo.html?view=auto&rev=481321
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/AssetDemo.html (added)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/AssetDemo.html Fri Dec 1 09:49:32 2006
@@ -0,0 +1,13 @@
+<t:comp type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
+
+ <p>
+ This page demonstrates the ability to inject assets into components and pass them around as parameters.
+ </p>
+
+ <p>
+ The Tapestry banner:
+ </p>
+
+ <t:comp type="Img" src="icon"/>
+
+</t:comp>
\ No newline at end of file