Seeking Review: bugfixes and javadoc fixes

View: New views
2 Messages — Rating Filter:   Alert me  

Seeking Review: bugfixes and javadoc fixes

by Ed Burns :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

SECTION: API changes

M      jsf-api/src/javax/faces/event/AfterAddToParentEvent.java
M      jsf-api/src/javax/faces/application/ResourceDependency.java

- remove spurious @return occurrences

M      jsf-api/src/javax/faces/component/UIComponentBase.java

- Big bug fix regarding postback.

SECTION: Mojarra changes

M      nbproject/project.xml

- Add test dirs to project

M      jsf-ri/src/com/sun/faces/application/StateManagerImpl.java

- Big bug fix regarding ProjectStage

SECTION: Diffs

Index: nbproject/project.xml
===================================================================
--- nbproject/project.xml (revision 4850)
+++ nbproject/project.xml (working copy)
@@ -51,6 +51,12 @@
                     <location>jsf-api/test</location>
                     <encoding>UTF-8</encoding>
                 </source-folder>
+                <source-folder>
+                    <label>jsf-ri\test</label>
+                    <type>java</type>
+                    <location>jsf-ri/test</location>
+                    <encoding>UTF-8</encoding>
+                </source-folder>
             </folders>
             <ide-actions>
                 <action name="build">
@@ -96,6 +102,10 @@
                         <label>jsf-api\test</label>
                         <location>jsf-api/test</location>
                     </source-folder>
+                    <source-folder style="packages">
+                        <label>jsf-ri\test</label>
+                        <location>jsf-ri/test</location>
+                    </source-folder>
                     <source-file>
                         <location>build.xml</location>
                     </source-file>
@@ -118,7 +128,8 @@
                 <package-root>jsf-ri/build/generate</package-root>
                 <package-root>jsf-tools/src</package-root>
                 <package-root>jsf-api/test</package-root>
-                <classpath mode="compile">jsf-api/build/classes:lib/jsf-extensions-test-time.jar:dependencies/glassfish/lib/appserv-rt.jar:dependencies/glassfish/lib/javaee.jar:dependencies/jars/com-sun-commons-beanutils.jar:dependencies/jars/com-sun-commons-collections.jar:dependencies/jars/com-sun-commons-digester-1.5.jar:dependencies/jars/com-sun-commons-digester.jar:dependencies/jars/com-sun-commons-logging-1.0.4.jar:dependencies/jars/com-sun-commons-logging-api.jar:dependencies/jars/commons-codec-1.3.jar:dependencies/jars/commons-collections-3.2.jar:dependencies/jars/commons-httpclient-3.1.jar:dependencies/jars/commons-io-1.3.1.jar:dependencies/jars/commons-lang-2.3.jar:dependencies/jars/commons-logging-1.1.jar:dependencies/jars/cssparser-0.9.4.jar:dependencies/jars/htmlunit-1.14.jar:dependencies/jars/ivy-2.0.0-beta1.jar:dependencies/jars/jaxen-1.1.1.jar:dependencies/jars/js-1.6R7.jar:dependencies/jars/jsp-api-2.1.jar:dependencies/jars/jsr250-api-1.0.jar:dependencies/jars/jstl-1.2.jar:dependencies/jars/junit-3.8.1.jar:dependencies/jars/maven-repository-importer-1.2.jar:dependencies/jars/nekohtml-0.9.5.jar:dependencies/jars/portlet-api-1.0.jar:dependencies/jars/servlet-api-2.5.jar:dependencies/jars/tlddoc-1.3.jar:dependencies/jars/xercesImpl-2.6.2.jar:dependencies/jars/xmlParserAPIs-2.6.2.jar:dependencies/jars/com-sun-commons-beanutils-1.6.1.jar:dependencies/apache-tomcat-6.0.13/lib/catalina.jar:dependencies/jars/com-sun-commons-collections-2.1.jar:dependencies/jetty-6.1.4rc0/lib/annotations/jetty-annotations-6.1.4rc0.jar:dependencies/jetty-6.1.4rc0/lib/plus/jetty-plus-6.1.4rc0.jar:dependencies/glassfish/lib/ant/lib/ant.jar</classpath>
+                <package-root>jsf-ri/test</package-root>
+                <classpath mode="compile">jsf-api/build/classes:lib/jsf-extensions-test-time.jar:dependencies/glassfish/lib/appserv-rt.jar:dependencies/glassfish/lib/javaee.jar:dependencies/jars/com-sun-commons-beanutils.jar:dependencies/jars/com-sun-commons-collections.jar:dependencies/jars/com-sun-commons-digester-1.5.jar:dependencies/jars/com-sun-commons-digester.jar:dependencies/jars/com-sun-commons-logging-1.0.4.jar:dependencies/jars/com-sun-commons-logging-api.jar:dependencies/jars/commons-codec-1.3.jar:dependencies/jars/commons-collections-3.2.jar:dependencies/jars/commons-httpclient-3.1.jar:dependencies/jars/commons-io-1.3.1.jar:dependencies/jars/commons-lang-2.3.jar:dependencies/jars/commons-logging-1.1.jar:dependencies/jars/cssparser-0.9.4.jar:dependencies/jars/htmlunit-1.14.jar:dependencies/jars/ivy-2.0.0-beta1.jar:dependencies/jars/jaxen-1.1.1.jar:dependencies/jars/js-1.6R7.jar:dependencies/jars/jsp-api-2.1.jar:dependencies/jars/jsr250-api-1.0.jar:dependencies/jars/jstl-1.2.jar:dependencies/jars/junit-3.8.1.jar:dependencies/jars/maven-repository-importer-1.2.jar:dependencies/jars/nekohtml-0.9.5.jar:dependencies/jars/portlet-api-1.0.jar:dependencies/jars/servlet-api-2.5.jar:dependencies/jars/tlddoc-1.3.jar:dependencies/jars/xercesImpl-2.6.2.jar:dependencies/jars/xmlParserAPIs-2.6.2.jar:dependencies/jars/com-sun-commons-beanutils-1.6.1.jar:dependencies/apache-tomcat-6.0.13/lib/catalina.jar:dependencies/jars/com-sun-commons-collections-2.1.jar:dependencies/jetty-6.1.4rc0/lib/annotations/jetty-annotations-6.1.4rc0.jar:dependencies/jetty-6.1.4rc0/lib/plus/jetty-plus-6.1.4rc0.jar:dependencies/glassfish/lib/ant/lib/ant.jar:lib/cactus-1.7.1-javaee5.jar</classpath>
                 <source-level>1.5</source-level>
             </compilation-unit>
         </java-data>
Index: jsf-api/src/javax/faces/event/AfterAddToParentEvent.java
===================================================================
--- jsf-api/src/javax/faces/event/AfterAddToParentEvent.java (revision 4850)
+++ jsf-api/src/javax/faces/event/AfterAddToParentEvent.java (working copy)
@@ -64,7 +64,6 @@
     /**
      * RELEASE_PENDING (edburns,rogerk) add documentation
      * @param listener
-     * @return
      */
     @Override
     public boolean isAppropriateListener(FacesListener listener) {
Index: jsf-api/src/javax/faces/component/UIComponentBase.java
===================================================================
--- jsf-api/src/javax/faces/component/UIComponentBase.java (revision 4850)
+++ jsf-api/src/javax/faces/component/UIComponentBase.java (working copy)
@@ -1900,8 +1900,14 @@
             } else {
                 eraseParent(element);
                 element.setParent(component);
+                FacesContext context = FacesContext.getCurrentInstance();
+                // Make sure to clear our cache if the component is a UIViewRoot and
+                // it does not yet have children.  This will be the case when
+                // the UIViewRoot has been freshly instantiated.
+                if (0 == this.size() && this.component instanceof UIViewRoot) {
+                    clearPostbackAndRestoreViewCache(context);
+                }
                 super.add(index, element);
-                FacesContext context = FacesContext.getCurrentInstance();
                 doPostAddProcessing(context, element);
             }
         }
@@ -1913,8 +1919,15 @@
             } else {
                 eraseParent(element);
                 element.setParent(component);
+                FacesContext context = FacesContext.getCurrentInstance();
+                // Make sure to clear our cache if the component is a UIViewRoot and
+                // it does not yet have children.  This will be the case when
+                // the UIViewRoot has been freshly instantiated.
+                if (0 == this.size() && this.component instanceof UIViewRoot) {
+                    clearPostbackAndRestoreViewCache(context);
+                }
+
                 result = super.add(element);
-                FacesContext context = FacesContext.getCurrentInstance();
                 doPostAddProcessing(context, element);
             }
             return result;
@@ -2038,7 +2051,7 @@
             }
         }
         
-        private static void doPostAddProcessing(FacesContext context, UIComponent added) {
+        private void doPostAddProcessing(FacesContext context, UIComponent added) {
             if (!isPostbackAndRestoreView(context)) {
                 context.getApplication().publishEvent(AfterAddToParentEvent.class, added);
                 processResourceDependencyOnComponentAndMaybeRenderer(context,
@@ -2048,7 +2061,13 @@
         
         private static final String IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME = "com.sun.faces.IS_POSTBACK_AND_RESTORE_VIEW";
         
-        private static boolean isPostbackAndRestoreView(FacesContext context) {
+        private void clearPostbackAndRestoreViewCache(FacesContext context) {
+            Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+            requestMap.remove(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME);
+                        
+        }
+        
+        private boolean isPostbackAndRestoreView(FacesContext context) {
             boolean result = false;
             Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
             if (requestMap.containsKey(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME)) {
@@ -2056,8 +2075,8 @@
             }
             else {
                 result = getResponseStateManager(context,
-                    context.getViewRoot().getRenderKitId()).isPostback(context)
-                         && PhaseId.RESTORE_VIEW.equals(context.getCurrentPhaseId());
+                    context.getViewRoot().getRenderKitId()).isPostback(context) &&
+                    context.getCurrentPhaseId().equals(PhaseId.RESTORE_VIEW);
                 requestMap.put(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME,
                         result ? Boolean.TRUE : Boolean.FALSE);
                 
@@ -2086,7 +2105,7 @@
     }
         
         
-        private static void processResourceDependencyOnComponentAndMaybeRenderer(FacesContext context,
+        private void processResourceDependencyOnComponentAndMaybeRenderer(FacesContext context,
                 UIComponent added) {
             processResourceDependencyAnnotation(context, added);
             Renderer renderer = added.getRenderer(context);
@@ -2095,7 +2114,7 @@
             }
         }
         
-        private static void processResourceDependencyAnnotation(FacesContext context,
+        private void processResourceDependencyAnnotation(FacesContext context,
                 Object source) {
             UIOutput resourceComponent = null;
             if (!source.getClass().isAnnotationPresent(ResourceDependency.class)) {
Index: jsf-api/src/javax/faces/application/ResourceDependency.java
===================================================================
--- jsf-api/src/javax/faces/application/ResourceDependency.java (revision 4850)
+++ jsf-api/src/javax/faces/application/ResourceDependency.java (working copy)
@@ -82,19 +82,16 @@
 
     /**
      * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
      */
     public String name();
 
     /**
      * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
      */
     public String library() default "";
 
     /**
      * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
      */
     public String target() default "";
 
Index: jsf-ri/src/com/sun/faces/application/StateManagerImpl.java
===================================================================
--- jsf-ri/src/com/sun/faces/application/StateManagerImpl.java (revision 4850)
+++ jsf-ri/src/com/sun/faces/application/StateManagerImpl.java (working copy)
@@ -99,6 +99,7 @@
     private int noOfViews;
     private int noOfViewsInLogicalView;
     private Map<String,Class<?>> classMap;
+    private boolean isDevelopmentMode;
 
 
     // ------------------------------------------------------------ Constructors
@@ -109,7 +110,7 @@
         serialProvider = SerializationProviderFactory
                              .createInstance(fContext.getExternalContext());
         webConfig = WebConfiguration.getInstance(fContext.getExternalContext());
-        if (fContext.getApplication().getProjectStage() != ProjectStage.Development) {
+        if (!(isDevelopmentMode = (fContext.getApplication().getProjectStage() == ProjectStage.Development))) {
             classMap = new ConcurrentHashMap<String,Class<?>>(32);
         }
     }
@@ -613,7 +614,9 @@
                 if (t != null && classMap != null) {
                     classMap.put(n.componentType, t);
                 } else {
-                    throw new NullPointerException();
+                    if (!isDevelopmentMode) {
+                        throw new NullPointerException();
+                    }
                 }
             }
--
| ed.burns@...  | office: 408 884 9519 OR x31640
| homepage:         | http://purl.oclc.org/NET/edburns/
| aim: edburns0sunw | iim: ed.burns@...

Re: Seeking Review: bugfixes and javadoc fixes

by Jason Lee :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Nothing jumps out at me.  You answered all my questions on IRC.

r=jdlee

On Wed, Jun 4, 2008 at 9:44 AM, Ed Burns <Ed.Burns@...> wrote:
SECTION: API changes

M      jsf-api/src/javax/faces/event/AfterAddToParentEvent.java
M      jsf-api/src/javax/faces/application/ResourceDependency.java

- remove spurious @return occurrences

M      jsf-api/src/javax/faces/component/UIComponentBase.java

- Big bug fix regarding postback.

SECTION: Mojarra changes

M      nbproject/project.xml

- Add test dirs to project

M      jsf-ri/src/com/sun/faces/application/StateManagerImpl.java

- Big bug fix regarding ProjectStage

SECTION: Diffs

Index: nbproject/project.xml
===================================================================
--- nbproject/project.xml       (revision 4850)
+++ nbproject/project.xml       (working copy)
@@ -51,6 +51,12 @@
                    <location>jsf-api/test</location>
                    <encoding>UTF-8</encoding>
                </source-folder>
+                <source-folder>
+                    <label>jsf-ri\test</label>
+                    <type>java</type>
+                    <location>jsf-ri/test</location>
+                    <encoding>UTF-8</encoding>
+                </source-folder>
            </folders>
            <ide-actions>
                <action name="build">
@@ -96,6 +102,10 @@
                        <label>jsf-api\test</label>
                        <location>jsf-api/test</location>
                    </source-folder>
+                    <source-folder style="packages">
+                        <label>jsf-ri\test</label>
+                        <location>jsf-ri/test</location>
+                    </source-folder>
                    <source-file>
                        <location>build.xml</location>
                    </source-file>
@@ -118,7 +128,8 @@
                <package-root>jsf-ri/build/generate</package-root>
                <package-root>jsf-tools/src</package-root>
                <package-root>jsf-api/test</package-root>
-                <classpath mode="compile">jsf-api/build/classes:lib/jsf-extensions-test-time.jar:dependencies/glassfish/lib/appserv-rt.jar:dependencies/glassfish/lib/javaee.jar:dependencies/jars/com-sun-commons-beanutils.jar:dependencies/jars/com-sun-commons-collections.jar:dependencies/jars/com-sun-commons-digester-1.5.jar:dependencies/jars/com-sun-commons-digester.jar:dependencies/jars/com-sun-commons-logging-1.0.4.jar:dependencies/jars/com-sun-commons-logging-api.jar:dependencies/jars/commons-codec-1.3.jar:dependencies/jars/commons-collections-3.2.jar:dependencies/jars/commons-httpclient-3.1.jar:dependencies/jars/commons-io-1.3.1.jar:dependencies/jars/commons-lang-2.3.jar:dependencies/jars/commons-logging-1.1.jar:dependencies/jars/cssparser-0.9.4.jar:dependencies/jars/htmlunit-1.14.jar:dependencies/jars/ivy-2.0.0-beta1.jar:dependencies/jars/jaxen-1.1.1.jar:dependencies/jars/js-1.6R7.jar:dependencies/jars/jsp-api-2.1.jar:dependencies/jars/jsr250-api-1.0.jar:dependencies/jars/jstl-1.2.jar:dependencies/jars/junit-3.8.1.jar:dependencies/jars/maven-repository-importer-1.2.jar:dependencies/jars/nekohtml-0.9.5.jar:dependencies/jars/portlet-api-1.0.jar:dependencies/jars/servlet-api-2.5.jar:dependencies/jars/tlddoc-1.3.jar:dependencies/jars/xercesImpl-2.6.2.jar:dependencies/jars/xmlParserAPIs-2.6.2.jar:dependencies/jars/com-sun-commons-beanutils-1.6.1.jar:dependencies/apache-tomcat-6.0.13/lib/catalina.jar:dependencies/jars/com-sun-commons-collections-2.1.jar:dependencies/jetty-6.1.4rc0/lib/annotations/jetty-annotations-6.1.4rc0.jar:dependencies/jetty-6.1.4rc0/lib/plus/jetty-plus-6.1.4rc0.jar:dependencies/glassfish/lib/ant/lib/ant.jar</classpath>
+                <package-root>jsf-ri/test</package-root>
+                <classpath mode="compile">jsf-api/build/classes:lib/jsf-extensions-test-time.jar:dependencies/glassfish/lib/appserv-rt.jar:dependencies/glassfish/lib/javaee.jar:dependencies/jars/com-sun-commons-beanutils.jar:dependencies/jars/com-sun-commons-collections.jar:dependencies/jars/com-sun-commons-digester-1.5.jar:dependencies/jars/com-sun-commons-digester.jar:dependencies/jars/com-sun-commons-logging-1.0.4.jar:dependencies/jars/com-sun-commons-logging-api.jar:dependencies/jars/commons-codec-1.3.jar:dependencies/jars/commons-collections-3.2.jar:dependencies/jars/commons-httpclient-3.1.jar:dependencies/jars/commons-io-1.3.1.jar:dependencies/jars/commons-lang-2.3.jar:dependencies/jars/commons-logging-1.1.jar:dependencies/jars/cssparser-0.9.4.jar:dependencies/jars/htmlunit-1.14.jar:dependencies/jars/ivy-2.0.0-beta1.jar:dependencies/jars/jaxen-1.1.1.jar:dependencies/jars/js-1.6R7.jar:dependencies/jars/jsp-api-2.1.jar:dependencies/jars/jsr250-api-1.0.jar:dependencies/jars/jstl-1.2.jar:dependencies/jars/junit-3.8.1.jar:dependencies/jars/maven-repository-importer-1.2.jar:dependencies/jars/nekohtml-0.9.5.jar:dependencies/jars/portlet-api-1.0.jar:dependencies/jars/servlet-api-2.5.jar:dependencies/jars/tlddoc-1.3.jar:dependencies/jars/xercesImpl-2.6.2.jar:dependencies/jars/xmlParserAPIs-2.6.2.jar:dependencies/jars/com-sun-commons-beanutils-1.6.1.jar:dependencies/apache-tomcat-6.0.13/lib/catalina.jar:dependencies/jars/com-sun-commons-collections-2.1.jar:dependencies/jetty-6.1.4rc0/lib/annotations/jetty-annotations-6.1.4rc0.jar:dependencies/jetty-6.1.4rc0/lib/plus/jetty-plus-6.1.4rc0.jar:dependencies/glassfish/lib/ant/lib/ant.jar:lib/cactus-1.7.1-javaee5.jar</classpath>
                <source-level>1.5</source-level>
            </compilation-unit>
        </java-data>
Index: jsf-api/src/javax/faces/event/AfterAddToParentEvent.java
===================================================================
--- jsf-api/src/javax/faces/event/AfterAddToParentEvent.java    (revision 4850)
+++ jsf-api/src/javax/faces/event/AfterAddToParentEvent.java    (working copy)
@@ -64,7 +64,6 @@
    /**
     * RELEASE_PENDING (edburns,rogerk) add documentation
     * @param listener
-     * @return
     */
    @Override
    public boolean isAppropriateListener(FacesListener listener) {
Index: jsf-api/src/javax/faces/component/UIComponentBase.java
===================================================================
--- jsf-api/src/javax/faces/component/UIComponentBase.java      (revision 4850)
+++ jsf-api/src/javax/faces/component/UIComponentBase.java      (working copy)
@@ -1900,8 +1900,14 @@
            } else {
                eraseParent(element);
                element.setParent(component);
+                FacesContext context = FacesContext.getCurrentInstance();
+                // Make sure to clear our cache if the component is a UIViewRoot and
+                // it does not yet have children.  This will be the case when
+                // the UIViewRoot has been freshly instantiated.
+                if (0 == this.size() && this.component instanceof UIViewRoot) {
+                    clearPostbackAndRestoreViewCache(context);
+                }
                super.add(index, element);
-                FacesContext context = FacesContext.getCurrentInstance();
                doPostAddProcessing(context, element);
            }
        }
@@ -1913,8 +1919,15 @@
            } else {
                eraseParent(element);
                element.setParent(component);
+                FacesContext context = FacesContext.getCurrentInstance();
+                // Make sure to clear our cache if the component is a UIViewRoot and
+                // it does not yet have children.  This will be the case when
+                // the UIViewRoot has been freshly instantiated.
+                if (0 == this.size() && this.component instanceof UIViewRoot) {
+                    clearPostbackAndRestoreViewCache(context);
+                }
+
                result = super.add(element);
-                FacesContext context = FacesContext.getCurrentInstance();
                doPostAddProcessing(context, element);
            }
            return result;
@@ -2038,7 +2051,7 @@
            }
        }

-        private static void doPostAddProcessing(FacesContext context, UIComponent added) {
+        private void doPostAddProcessing(FacesContext context, UIComponent added) {
            if (!isPostbackAndRestoreView(context)) {
                context.getApplication().publishEvent(AfterAddToParentEvent.class, added);
                processResourceDependencyOnComponentAndMaybeRenderer(context,
@@ -2048,7 +2061,13 @@

        private static final String IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME = "com.sun.faces.IS_POSTBACK_AND_RESTORE_VIEW";

-        private static boolean isPostbackAndRestoreView(FacesContext context) {
+        private void clearPostbackAndRestoreViewCache(FacesContext context) {
+            Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+            requestMap.remove(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME);
+
+        }
+
+        private boolean isPostbackAndRestoreView(FacesContext context) {
            boolean result = false;
            Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
            if (requestMap.containsKey(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME)) {
@@ -2056,8 +2075,8 @@
            }
            else {
                result = getResponseStateManager(context,
-                    context.getViewRoot().getRenderKitId()).isPostback(context)
-                         && PhaseId.RESTORE_VIEW.equals(context.getCurrentPhaseId());
+                    context.getViewRoot().getRenderKitId()).isPostback(context) &&
+                    context.getCurrentPhaseId().equals(PhaseId.RESTORE_VIEW);
                requestMap.put(IS_POSTBACK_AND_RESTORE_VIEW_REQUEST_ATTR_NAME,
                        result ? Boolean.TRUE : Boolean.FALSE);

@@ -2086,7 +2105,7 @@
    }


-        private static void processResourceDependencyOnComponentAndMaybeRenderer(FacesContext context,
+        private void processResourceDependencyOnComponentAndMaybeRenderer(FacesContext context,
                UIComponent added) {
            processResourceDependencyAnnotation(context, added);
            Renderer renderer = added.getRenderer(context);
@@ -2095,7 +2114,7 @@
            }
        }

-        private static void processResourceDependencyAnnotation(FacesContext context,
+        private void processResourceDependencyAnnotation(FacesContext context,
                Object source) {
            UIOutput resourceComponent = null;
            if (!source.getClass().isAnnotationPresent(ResourceDependency.class)) {
Index: jsf-api/src/javax/faces/application/ResourceDependency.java
===================================================================
--- jsf-api/src/javax/faces/application/ResourceDependency.java (revision 4850)
+++ jsf-api/src/javax/faces/application/ResourceDependency.java (working copy)
@@ -82,19 +82,16 @@

    /**
     * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
     */
    public String name();

    /**
     * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
     */
    public String library() default "";

    /**
     * RELEASE_PENDING (edburns,rogerk) Add docs
-     * @return
     */
    public String target() default "";

Index: jsf-ri/src/com/sun/faces/application/StateManagerImpl.java
===================================================================
--- jsf-ri/src/com/sun/faces/application/StateManagerImpl.java  (revision 4850)
+++ jsf-ri/src/com/sun/faces/application/StateManagerImpl.java  (working copy)
@@ -99,6 +99,7 @@
    private int noOfViews;
    private int noOfViewsInLogicalView;
    private Map<String,Class<?>> classMap;
+    private boolean isDevelopmentMode;


    // ------------------------------------------------------------ Constructors
@@ -109,7 +110,7 @@
        serialProvider = SerializationProviderFactory
                             .createInstance(fContext.getExternalContext());
        webConfig = WebConfiguration.getInstance(fContext.getExternalContext());
-        if (fContext.getApplication().getProjectStage() != ProjectStage.Development) {
+        if (!(isDevelopmentMode = (fContext.getApplication().getProjectStage() == ProjectStage.Development))) {
            classMap = new ConcurrentHashMap<String,Class<?>>(32);
        }
    }
@@ -613,7 +614,9 @@
                if (t != null && classMap != null) {
                    classMap.put(n.componentType, t);
                } else {
-                    throw new NullPointerException();
+                    if (!isDevelopmentMode) {
+                        throw new NullPointerException();
+                    }
                }
            }
--
| ed.burns@...  | office: 408 884 9519 OR x31640
| homepage:         | http://purl.oclc.org/NET/edburns/
| aim: edburns0sunw | iim: ed.burns@...



--
Jason Lee, SCJP
Software Architect -- Objectstream, Inc.
Mojarra and Mojarra Scales Dev Team
https://mojarra.dev.java.net
https://scales.dev.java.net
http://blogs.steeplesoft.com