Author: gvanmatre
Date: Sat Jul 28 09:59:00 2007
New Revision: 560570

URL: http://svn.apache.org/viewvc?view=rev&rev=560570
Log:
When the shale-tiger Property annotation is evaluated, a nifty type converter 
is used to coerce the source data type to the target data type.  This utility 
reuses existing JSF converters outside the context of rendering.  It assumes a 
FacesContext and UIViewRoot.  I removed the requirement that a UIViewRoot is 
needed.  Since we are using converters for outside of the component tree, we 
just need a object that extends UIComponent (SHALE-406).

Added:
    
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
   (with props)
Modified:
    shale/framework/trunk/shale-core/pom.xml
    
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/util/ConverterHelper.java

Modified: shale/framework/trunk/shale-core/pom.xml
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/pom.xml?view=diff&rev=560570&r1=560569&r2=560570
==============================================================================
--- shale/framework/trunk/shale-core/pom.xml (original)
+++ shale/framework/trunk/shale-core/pom.xml Sat Jul 28 09:59:00 2007
@@ -64,6 +64,21 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-impl</artifactId>
+            <version>1.1.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-digester</groupId>
+            <artifactId>commons-digester</artifactId>
+            <version>1.8</version>
+            <scope>test</scope>
+        </dependency>
+        
+
+        <dependency>
             <groupId>org.apache.shale</groupId>
             <artifactId>shale-test</artifactId>
             <version>${version}</version>

Modified: 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/util/ConverterHelper.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/main/java/org/apache/shale/util/ConverterHelper.java?view=diff&rev=560570&r1=560569&r2=560570
==============================================================================
--- 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/util/ConverterHelper.java
 (original)
+++ 
shale/framework/trunk/shale-core/src/main/java/org/apache/shale/util/ConverterHelper.java
 Sat Jul 28 09:59:00 2007
@@ -18,6 +18,7 @@
 package org.apache.shale.util;
 
 import javax.faces.FacesException;
+import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.ConverterException;
@@ -65,7 +66,13 @@
         if (String.class == type) {
             return value;
         }
-        return converter(context, type).getAsObject(context, 
context.getViewRoot(), value);
+
+        UIViewRoot root = context.getViewRoot();
+        if (root == null) {
+            root = new UIViewRoot();
+        }
+        
+        return converter(context, type).getAsObject(context, root, value);
 
     }
 
@@ -88,7 +95,12 @@
         } else if ((String.class == type) && (value instanceof String)) {
             return (String) value;
         }
-        return converter(context, type).getAsString(context, 
context.getViewRoot(), value);
+        UIViewRoot root = context.getViewRoot();
+        if (root == null) {
+            root = new UIViewRoot();
+        }
+
+        return converter(context, type).getAsString(context, root, value);
 
     }
 

Added: 
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
URL: 
http://svn.apache.org/viewvc/shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java?view=auto&rev=560570
==============================================================================
--- 
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
 (added)
+++ 
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
 Sat Jul 28 09:59:00 2007
@@ -0,0 +1,109 @@
+/*
+ * 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.util;
+
+import java.net.URL;
+import java.util.Locale;
+
+import javax.faces.context.FacesContext;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.shale.test.base.AbstractJsfTestCase;
+import org.apache.shale.test.config.ConfigParser;
+
+/**
+ * <p>Test case for <code>ConverterHelper</code>.</p>
+ */
+public class ConverterHelperTestCase extends AbstractJsfTestCase {
+    
+
+    // ------------------------------------------------------------ 
Constructors
+
+
+    // Construct a new instance of this test case.
+    public ConverterHelperTestCase(String name) {
+        super(name);
+    }
+
+
+    // ---------------------------------------------------- Overall Test 
Methods
+
+
+    // Set up instance variables required by this test case.
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        helper = new ConverterHelper();
+        parser = new ConfigParser();
+
+        URL[] urls = parser.getPlatformURLs();
+        // load the runtime converters
+        parser.parse(urls);
+    }
+
+
+    // Return the tests included in this test case.
+    public static Test suite() {
+
+        return (new TestSuite(ConverterHelperTestCase.class));
+
+    }
+
+
+    // Tear down instance variables required by this test case.
+    protected void tearDown() throws Exception {
+
+        helper = null;
+        parser = null;
+        super.tearDown();
+
+    }
+
+
+    // ------------------------------------------------------ Instance 
Variables
+
+
+    // The instance to be tested
+    ConverterHelper helper = null;
+    ConfigParser parser = null;
+
+
+    // ------------------------------------------------------------ Test 
Methods
+
+
+    public void testNullViewRoot() {
+
+        assertNotNull(FacesContext.getCurrentInstance().getViewRoot());
+
+        String stringValue = "1";
+        
+        // Intentionally set the root to null
+        FacesContext.getCurrentInstance().setViewRoot(null);
+        Long longValue = (Long) 
helper.asObject(FacesContext.getCurrentInstance(), 
+                   Long.class, stringValue);
+        assertNotNull(longValue);
+        assertEquals((long) 1, longValue.longValue());
+        
+    }
+
+
+
+
+}

Propchange: 
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
shale/framework/trunk/shale-core/src/test/java/org/apache/shale/util/ConverterHelperTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL


Reply via email to