Forgot attributions on these; apologies. BEEHIVE-938 patch from Krista Baker BEEHIVE-937 patch from Carlin Rogers
Thanks for the help... On 9/19/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Author: ekoneil > Date: Mon Sep 19 07:32:36 2005 > New Revision: 290172 > > URL: http://svn.apache.org/viewcvs?rev=290172&view=rev > Log: > Two more NetUI bug fixes and changes to the urlTemplate and jsfWeb webapp > builds to start copying XMLBeans. > > BEEHIVE-938 PageFlowConfig from beehive-netui-config, > max-nesting-stack-depth is set incorrectly > BEEHIVE-937 Add validation to the beehive-url-template-config.xml file > processing > > BB: self > Test: NetUI DRT / urlTemplates / jsfWeb pass > > > Modified: > > beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultURLTemplatesFactory.java > > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/bean/PageFlowConfig.java > > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/parser/NetUIConfigParser.java > beehive/trunk/netui/test/webapps/jsf/build.xml > beehive/trunk/netui/test/webapps/urlTemplates/build.xml > > Modified: > beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultURLTemplatesFactory.java > URL: > http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultURLTemplatesFactory.java?rev=290172&r1=290171&r2=290172&view=diff > ============================================================================== > --- > beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultURLTemplatesFactory.java > (original) > +++ > beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultURLTemplatesFactory.java > Mon Sep 19 07:32:36 2005 > @@ -20,9 +20,12 @@ > import org.apache.beehive.netui.core.urltemplates.URLTemplate; > import org.apache.beehive.netui.core.urltemplates.URLTemplates; > import org.apache.beehive.netui.core.urltemplates.URLTemplatesFactory; > -import org.apache.beehive.netui.util.internal.InternalStringBuilder; > import org.apache.beehive.netui.util.logging.Logger; > import org.apache.beehive.netui.util.xml.DomUtils; > +import org.apache.beehive.netui.util.xml.XmlInputStreamResolver; > +import > org.apache.beehive.netui.util.xml.validation.SchemaValidationException; > +import org.apache.beehive.netui.util.xml.validation.SchemaValidator; > +import org.apache.beehive.netui.util.xml.validation.SchemaValidatorFactory; > > import java.io.InputStream; > import java.io.IOException; > @@ -31,6 +34,8 @@ > import javax.servlet.ServletContext; > import javax.xml.parsers.DocumentBuilder; > import javax.xml.parsers.DocumentBuilderFactory; > +import javax.xml.parsers.ParserConfigurationException; > + > import org.w3c.dom.Document; > import org.w3c.dom.Element; > import org.xml.sax.SAXException; > @@ -51,6 +56,18 @@ > private static final String URL_TEMPLATE_REF_GROUP = > "url-template-ref-group"; > private static final String VALUE = "value"; > > + private static final String CONFIG_SCHEMA = > "org/apache/beehive/netui/core/urltemplates/schema/url-template-config.xsd"; > + > + private static final XmlInputStreamResolver SCHEMA_RESOLVER = new > XmlInputStreamResolver() { > + public String getResourcePath() { > + return CONFIG_SCHEMA; > + } > + > + public InputStream getInputStream() { > + return > DefaultURLTemplatesFactory.class.getClassLoader().getResourceAsStream(getResourcePath()); > + } > + }; > + > // The actual URL templates and template ref groups > private URLTemplates _urlTemplates; > > @@ -114,19 +131,35 @@ > public void load( ServletContext servletContext ) > { > _urlTemplates = new URLTemplates(); > - InputStream stream = null; > + InputStream xmlInputStream = null; > + InputStream xsdInputStream = null; > > try > { > - stream = servletContext.getResourceAsStream( _configFilePath ); > - if ( stream != null ) > + xmlInputStream = servletContext.getResourceAsStream( > _configFilePath ); > + if ( xmlInputStream != null ) > { > + // Validate the XML against the schema > + xsdInputStream = SCHEMA_RESOLVER.getInputStream(); > + SchemaValidator schemaValidator = > SchemaValidatorFactory.getInstance(); > + schemaValidator.validate(xsdInputStream, xmlInputStream); > + try > + { > + if ( xmlInputStream != null ) > + xmlInputStream.close(); > + } > + catch ( IOException io ) > + { > + _log.error( "An exception occurred closing the input > stream for \"" + _configFilePath + "\"", io ); > + } > + > + // Parse, then load the templates and template ref groups > + xmlInputStream = servletContext.getResourceAsStream( > _configFilePath ); > + > DocumentBuilderFactory dbFactory = > DocumentBuilderFactory.newInstance(); > DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); > - Document document = dBuilder.parse( stream ); > + Document document = dBuilder.parse( xmlInputStream ); > Element root = document.getDocumentElement(); > - > - // Load the templates and template ref groups > loadTemplates( root ); > loadTemplateRefGroups( root ); > } > @@ -134,19 +167,18 @@ > { > if ( _log.isInfoEnabled() ) > { > - String contextName = > servletContext.getServletContextName(); > - InternalStringBuilder message = new > InternalStringBuilder(); > - if ( contextName != null ) > - { > - message.append( contextName ).append( " - " ); > - } > - > - message.append( "Running without URL template > descriptor, " ); > - message.append( _configFilePath ); > - _log.info( message.toString() ); > + _log.info( "Running without URL template descriptor, " + > _configFilePath ); > } > } > } > + catch ( SchemaValidationException sve ) > + { > + _log.error("Validation errors occurred parsing the config file > \"" + _configFilePath + "\". Cause: " + sve, sve); > + } > + catch ( ParserConfigurationException pce ) > + { > + _log.error( "Problem loading URL template descriptor file " + > _configFilePath, pce ); > + } > catch ( SAXException se ) > { > _log.error( "Problem parsing URL template descriptor in " + > _configFilePath, se ); > @@ -155,23 +187,11 @@ > { > _log.error( "Problem reading URL template descriptor file " + > _configFilePath, ioe ); > } > - catch ( Exception e ) > - { > - _log.error( "Problem loading URL template descriptor file " + > _configFilePath, e ); > - } > finally > { > - // Close the stream > - if ( stream != null ) > - { > - try > - { > - stream.close(); > - } > - catch ( Exception ignore ) > - { > - } > - } > + // Close the streams > + try { if ( xmlInputStream != null ) xmlInputStream.close(); } > catch ( Exception ignore ) {} > + try { if ( xsdInputStream != null ) xsdInputStream.close(); } > catch( IOException ignore ) {} > } > } > > > Modified: > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/bean/PageFlowConfig.java > URL: > http://svn.apache.org/viewcvs/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/bean/PageFlowConfig.java?rev=290172&r1=290171&r2=290172&view=diff > ============================================================================== > --- > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/bean/PageFlowConfig.java > (original) > +++ > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/bean/PageFlowConfig.java > Mon Sep 19 07:32:36 2005 > @@ -70,7 +70,7 @@ > if(maxForwardsPerRequest != null) > _maxForwardsPerRequest = maxForwardsPerRequest.intValue(); > if(maxNestingStackDepth != null) > - _maxForwardsPerRequest = maxNestingStackDepth.intValue(); > + _maxNestingStackDepth = maxNestingStackDepth.intValue(); > if(multipartHandler != null) > _multipartHandler = multipartHandler; > if(preventCache != null) > > Modified: > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/parser/NetUIConfigParser.java > URL: > http://svn.apache.org/viewcvs/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/parser/NetUIConfigParser.java?rev=290172&r1=290171&r2=290172&view=diff > ============================================================================== > --- > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/parser/NetUIConfigParser.java > (original) > +++ > beehive/trunk/netui/src/util/org/apache/beehive/netui/util/config/parser/NetUIConfigParser.java > Mon Sep 19 07:32:36 2005 > @@ -138,10 +138,12 @@ > xmlInputStream.close(); > } > catch(IOException io) { > - throw new ConfigInitializationException("An exception > occurred closing the input stream for \"" + theXmlResolver.getResourcePath()); > + throw new ConfigInitializationException("An exception > occurred closing the input stream for \"" + > + theXmlResolver.getResourcePath() + "\""); > } > > - configBean = parse(theXmlResolver.getResourcePath(), > theXmlResolver.getInputStream()); > + xmlInputStream = theXmlResolver.getInputStream(); > + configBean = parse(theXmlResolver.getResourcePath(), > xmlInputStream); > } > finally { > try {if(xmlInputStream != null) xmlInputStream.close();} > catch(IOException ignore) {} > > Modified: beehive/trunk/netui/test/webapps/jsf/build.xml > URL: > http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/jsf/build.xml?rev=290172&r1=290171&r2=290172&view=diff > ============================================================================== > --- beehive/trunk/netui/test/webapps/jsf/build.xml (original) > +++ beehive/trunk/netui/test/webapps/jsf/build.xml Mon Sep 19 07:32:36 2005 > @@ -38,6 +38,12 @@ > tofile="${webapp.dir}/WEB-INF/web.xml" > overwrite="true" failonerror="true"/> > > + <!-- deploy XMLBeans which isn't included in the default webapp > template --> > + <copy todir="${webapp.dir}/WEB-INF/lib"> > + <fileset refid="xbean.fileset"/> > + <fileset refid="jsr173.fileset"/> > + </copy> > + > <build-webapp webappDir="${webapp.dir}"/> > > <!-- Touch all JSPs to ensure that they're compiled. When switching > between MyFaces and the JSF RI, > @@ -120,7 +126,9 @@ > </ant> > </target> > > - <target name="bvt.jsf-ri" description="Run the bvt suite against the JSF > Reference Implementation with full server start / stop support." > depends="clean,build.jsf-ri"> > + <target name="bvt.jsf-ri" > + description="Run the bvt suite against the JSF Reference > Implementation with full server start / stop support." > + depends="clean,build.jsf-ri"> > <ant antfile="${test.dir}/ant/testRecorder.xml" inheritAll="false" > target="server.test"> > <property name="app.build.file" > location="${app.dir}/jsf/build.xml"/> > <property name="suite.name" value="bvt"/> > @@ -133,7 +141,9 @@ > </ant> > </target> > > - <target name="bvt.myfaces" description="Run the bvt suite against the > MyFaces with full server start / stop support." depends="clean,build.myfaces"> > + <target name="bvt.myfaces" > + description="Run the bvt suite against the MyFaces with full > server start / stop support." > + depends="clean,build.myfaces"> > <ant antfile="${test.dir}/ant/testRecorder.xml" inheritAll="false" > target="server.test"> > <property name="app.build.file" > location="${app.dir}/jsf/build.xml"/> > <property name="suite.name" value="bvt"/> > @@ -144,6 +154,10 @@ > <property name="formatter.type" value="xml"/> > <property name="formatter.usefile" value="true"/> > </ant> > + </target> > + > + <target name="bvt" description="Default JSF + NetUI test webapp"> > + <antcall target="bvt.myfaces"/> > </target> > > <target name="ensure.deployed" description="Deploy webapp"> > > Modified: beehive/trunk/netui/test/webapps/urlTemplates/build.xml > URL: > http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/urlTemplates/build.xml?rev=290172&r1=290171&r2=290172&view=diff > ============================================================================== > --- beehive/trunk/netui/test/webapps/urlTemplates/build.xml (original) > +++ beehive/trunk/netui/test/webapps/urlTemplates/build.xml Mon Sep 19 > 07:32:36 2005 > @@ -52,6 +52,12 @@ > <property name="webapp.file" > location="${app.dir}/urlTemplates/testRecorder/config/testRecorder-webapp.xml"/> > <property name="struts.version" value="${struts.version}"/> > </ant> > + > + <!-- deploy XMLBeans which isn't included in the default webapp > template --> > + <copy todir="${webapp.dir}/WEB-INF/lib"> > + <fileset refid="xbean.fileset"/> > + <fileset refid="jsr173.fileset"/> > + </copy> > </target> > > <target name="clean" description="Clean webapp"> > > >
