You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shale.apache.org by cr...@apache.org on 2006/11/21 22:46:37 UTC
svn commit: r477909 - in /shale/framework/trunk/shale-tiger: ./
src/main/java/org/apache/shale/tiger/view/faces/
src/test/java/org/apache/shale/tiger/config/
src/test/java/org/apache/shale/tiger/faces/
src/test/java/org/apache/shale/tiger/view/faces/
Author: craigmcc
Date: Tue Nov 21 13:46:36 2006
New Revision: 477909
URL: http://svn.apache.org/viewvc?view=rev&rev=477909
Log:
Scan fields in superclasses for annotations, as well as the originally
annotated class. Thanks to Ingo Dueppe for the patch!
SHALE-190
Added:
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java (with props)
Modified:
shale/framework/trunk/shale-tiger/pom.xml
shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/LifecycleListener2TestCase.java
Modified: shale/framework/trunk/shale-tiger/pom.xml
URL: http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/pom.xml?view=diff&rev=477909&r1=477908&r2=477909
==============================================================================
--- shale/framework/trunk/shale-tiger/pom.xml (original)
+++ shale/framework/trunk/shale-tiger/pom.xml Tue Nov 21 13:46:36 2006
@@ -152,6 +152,8 @@
<mkdir dir="${basedir}/target/test-webapp/WEB-INF/classes/org/apache/shale/tiger/config"/>
<copy todir="${basedir}/target/test-webapp/WEB-INF/classes/org/apache/shale/tiger/config"
file="${basedir}/target/test-classes/org/apache/shale/tiger/config/TestBean.class"/>
+ <copy todir="${basedir}/target/test-webapp/WEB-INF/classes/org/apache/shale/tiger/config"
+ file="${basedir}/target/test-classes/org/apache/shale/tiger/config/TestBean2.class"/>
<mkdir dir="${basedir}/target/test-webapp/WEB-INF/classes/org/apache/shale/tiger/faces"/>
<copy todir="${basedir}/target/test-webapp/WEB-INF/classes/org/apache/shale/tiger/faces">
<fileset dir="${basedir}/target/test-classes/org/apache/shale/tiger/faces"
Modified: shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java
URL: http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java?view=diff&rev=477909&r1=477908&r2=477909
==============================================================================
--- shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java (original)
+++ shale/framework/trunk/shale-tiger/src/main/java/org/apache/shale/tiger/view/faces/LifecycleListener2.java Tue Nov 21 13:46:36 2006
@@ -1026,6 +1026,29 @@
/**
+ * <p>Return an array of all <code>Field</code>s reflecting declared
+ * fields in this class, or in any superclass other than
+ * <code>java.lang.Object</code>.</p>
+ *
+ * @param clazz Class to be analyzed
+ */
+ private Field[] fields(Class clazz) {
+
+ Map<String,Field> fields = new HashMap<String,Field>();
+ do {
+ for (Field field : clazz.getDeclaredFields()) {
+ if (!fields.containsKey(field.getName())) {
+ fields.put(field.getName(), field);
+ }
+ }
+ } while ((clazz = clazz.getSuperclass()) != Object.class);
+ return (Field[]) fields.values().toArray(new Field[fields.size()]);
+
+ }
+
+
+
+ /**
* <p>Return a list of URLs to implicit configuration resources
* embedded in this application.</p>
*
@@ -1394,8 +1417,8 @@
default:
break;
}
- // FIXME - should we look for inherited fields with @Property/@Value too?
- for (Field field : clazz.getDeclaredFields()) {
+ Field[] fields = fields(clazz);
+ for (Field field : fields) {
if (log().isTraceEnabled()) {
log().trace(" Scanning field '" + field.getName() + "'");
}
Added: shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java
URL: http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java?view=auto&rev=477909
==============================================================================
--- shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java (added)
+++ shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java Tue Nov 21 13:46:36 2006
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you 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.shale.tiger.config;
+
+import org.apache.shale.tiger.managed.Bean;
+import org.apache.shale.tiger.managed.Property;
+import org.apache.shale.tiger.managed.Scope;
+import org.apache.shale.tiger.managed.Value;
+
+/**
+ * <p>JavaBean class for testing.</p>
+ */
+@Bean(name="bean2a", scope=Scope.APPLICATION)
+public class TestBean2 extends TestBean {
+
+ /** Creates a new instance of TestBean2 */
+ public TestBean2() {
+ }
+
+ /**
+ * Holds value of property xtraProperty.
+ */
+ @Value("Xtra Override")
+ private String xtraProperty = "Xtra";
+
+ /**
+ * Getter for property xtraProperty.
+ * @return Value of property xtraProperty.
+ */
+ public String getXtraProperty() {
+
+ return this.xtraProperty;
+ }
+
+ /**
+ * Setter for property xtraProperty.
+ * @param xtraProperty New value of property xtraProperty.
+ */
+ public void setXtraProperty(String xtraProperty) {
+
+ this.xtraProperty = xtraProperty;
+ }
+
+}
Propchange: shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/config/TestBean2.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Modified: shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java
URL: http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java?view=diff&rev=477909&r1=477908&r2=477909
==============================================================================
--- shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java (original)
+++ shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/faces/VariableResolverImplTestCase.java Tue Nov 21 13:46:36 2006
@@ -219,7 +219,7 @@
externalContext.getApplicationMap().
get(LifecycleListener2.FACES_CONFIG_CONFIG);
assertNotNull(config);
- assertEquals(8, config.getManagedBeans().size());
+ assertEquals(9, config.getManagedBeans().size());
}
Modified: shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/LifecycleListener2TestCase.java
URL: http://svn.apache.org/viewvc/shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/LifecycleListener2TestCase.java?view=diff&rev=477909&r1=477908&r2=477909
==============================================================================
--- shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/LifecycleListener2TestCase.java (original)
+++ shale/framework/trunk/shale-tiger/src/test/java/org/apache/shale/tiger/view/faces/LifecycleListener2TestCase.java Tue Nov 21 13:46:36 2006
@@ -162,7 +162,7 @@
assertNotNull(config);
Map<String,ManagedBeanConfig> mbMap = fcConfig.getManagedBeans();
assertNotNull(mbMap);
- assertEquals(8, mbMap.size());
+ assertEquals(9, mbMap.size());
ManagedPropertyConfig mpConfig = null;
@@ -299,6 +299,91 @@
assertEquals("stringProperty", mpConfig.getName());
assertEquals("java.lang.String", mpConfig.getType());
assertEquals("Override The Annotation", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ // Validate configuration of bean2a
+ ManagedBeanConfig bean2a = fcConfig.getManagedBean("bean2a");
+ assertNotNull(bean2a);
+ assertTrue(bean2a == mbMap.get("bean2a"));
+ assertEquals("bean2a", bean2a.getName());
+ assertEquals("org.apache.shale.tiger.config.TestBean2", bean2a.getType());
+ assertEquals("application", bean2a.getScope());
+ assertNull(bean2a.getListEntries());
+ assertNull(bean2a.getMapEntries());
+ Map<String,ManagedPropertyConfig> bean2aMap = bean2a.getProperties();
+ assertNotNull(bean2aMap);
+ assertEquals(9, bean2aMap.size());
+
+ mpConfig = bean2a.getProperty("byteProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("byteProperty"));
+ assertEquals("byteProperty", mpConfig.getName());
+ assertEquals("byte", mpConfig.getType());
+ assertEquals("-1", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("charProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("charProperty"));
+ assertEquals("charProperty", mpConfig.getName());
+ assertEquals("char", mpConfig.getType());
+ assertEquals("z", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("doubleProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("doubleProperty"));
+ assertEquals("doubleProperty", mpConfig.getName());
+ assertEquals("double", mpConfig.getType());
+ assertEquals("-2.0", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("floatProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("floatProperty"));
+ assertEquals("floatProperty", mpConfig.getName());
+ assertEquals("float", mpConfig.getType());
+ assertEquals("-3.0", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("intProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("intProperty"));
+ assertEquals("intProperty", mpConfig.getName());
+ assertEquals("int", mpConfig.getType());
+ assertEquals("-4", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("longProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("longProperty"));
+ assertEquals("longProperty", mpConfig.getName());
+ assertEquals("long", mpConfig.getType());
+ assertEquals("-5", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("shortProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("shortProperty"));
+ assertEquals("shortProperty", mpConfig.getName());
+ assertEquals("short", mpConfig.getType());
+ assertEquals("-6", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("stringProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("stringProperty"));
+ assertEquals("stringProperty", mpConfig.getName());
+ assertEquals("java.lang.String", mpConfig.getType());
+ assertEquals("Annotated", mpConfig.getValue());
+ assertTrue(!mpConfig.isNullValue());
+
+ mpConfig = bean2a.getProperty("xtraProperty");
+ assertNotNull(mpConfig);
+ assertTrue(mpConfig == bean2aMap.get("xtraProperty"));
+ assertEquals("xtraProperty", mpConfig.getName());
+ assertEquals("java.lang.String", mpConfig.getType());
+ assertEquals("Xtra Override", mpConfig.getValue());
assertTrue(!mpConfig.isNullValue());
// Validate configuration of bean3