beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eddie O'Neil <ekon...@gmail.com>
Subject Re: Fwd: svn commit: r289648 [1/6] - in /beehive/trunk/netui: src/compiler-core/ src/compiler-core/org/apache/beehive/netui/compiler/ src/compiler-core/org/apache/beehive/netui/compiler/genmodel/ src/compiler-core/org/apache/beehive/netui/compiler/gr
Date Fri, 16 Sep 2005 21:48:42 GMT
Rich--

  One question -- there's still one XSD in:

  netui/src/compiler-core/schema/processed-annotations/...

Is this still used?  I just did a full BVT run and didn't encounter
any build / test failures.

Eddie



On 9/16/05, Rich Feit <richfeit@gmail.com> wrote:
> Great, thanks for verifying it.  We're definitely on our way!
> Rich
> 
> Eddie O'Neil wrote:
> 
> >Rich--
> >
> >  Excellent!  Great to have the compiler moved over.
> >
> >  I've just finished test runs on Linux (FC3) and on WinXP -- both
> >passed at 100% for the JUnit, compiler, and test recorder tests.
> >
> >  I'll be working on the distribution part of this next.
> >
> >Eddie
> >
> >
> >
> >---------- Forwarded message ----------
> >From: rich@apache.org <rich@apache.org>
> >Date: Sep 16, 2005 2:30 PM
> >Subject: svn commit: r289648 [1/6] - in /beehive/trunk/netui:
> >src/compiler-core/
> >src/compiler-core/org/apache/beehive/netui/compiler/
> >src/compiler-core/org/apache/beehive/netui/compiler/genmodel/
> >src/compiler-core/org/apache/beehive/netui/compiler/grammar/ src/...
> >To: commits@beehive.apache.org
> >
> >
> >Author: rich
> >Date: Fri Sep 16 13:27:57 2005
> >New Revision: 289648
> >
> >URL: http://svn.apache.org/viewcvs?rev=289648&view=rev
> >Log:
> >Moved the NetUI compiler layer off of XMLBeans. The generated files
> >(struts-config-*.xml, pageflow-validation-*.xml, annotations-*.xml)
> >are now created (and merged, if Struts Merge or Validator Merge is
> >used) through APIs in the JDK.
> >
> >tests: bvt in netui (WinXP)
> >BB: bvt, run.tests against a dist (linux)
> >
> >
> >Added:
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/XmlElementSupport.java
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/XmlModelWriter.java
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/XmlModelWriterException.java
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd
> >  (with props)
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd
> >  (with props)
> >    beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInterfaceParser.java
> >  (with props)
> >    beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/env/FilerImpl.java
> >  (with props)
> >Removed:
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatableFieldFactory.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatableFieldOld.java
> >    beehive/trunk/netui/src/compiler-core/schema/struts-config/
> >    beehive/trunk/netui/src/compiler-core/schema/struts-validator/
> >Modified:
> >    beehive/trunk/netui/src/compiler-core/build.xml
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/AnnotationToXML.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FacesBackingGenerator.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerChecker.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerGenerator.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowChecker.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowGenerator.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowChecker.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowGenerator.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/diagnostics.properties
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidXmlFileType.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ActionModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ExceptionModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ForwardModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/MessageResourcesModel.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/StrutsApp.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/StrutsElementSupport.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/LocaleSet.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatableEntity.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidatableField.java
> >    beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidationModel.java
> >    beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInstanceImpl.java
> >    beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/DeclarationImpl.java
> >    beehive/trunk/netui/src/compiler/build.xml
> >    beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/AnnotationReader.java
> >    beehive/trunk/netui/test/src/compilerTests/org/apache/beehive/netui/test/compiler/OutputHandler.java
> >    beehive/trunk/netui/test/src/compilerTests/org/apache/beehive/netui/test/compiler/PageFlowCompilerTest.java
> >    beehive/trunk/netui/test/src/compilerTests/org/apache/beehive/netui/test/compiler/TestPropertyMgr.java
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/GA_DeprecationWarning/expectedOutput/struts-config--global.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/Jira390/expectedOutput/struts-config-Jira390.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/Jira611/expectedOutput/struts-config-Jira611-child.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/Jira611/expectedOutput/struts-config-Jira611-parent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/Nested_Abstract/expectedOutput/struts-config-Nested_Abstract.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/Nested_NewReturnTo/expectedOutput/struts-config-Nested_NewReturnTo.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ActionMethodOverload/expectedOutput/struts-config-PF_ActionMethodOverload.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ActionNegatives/expectedOutput/struts-config-PF_ActionNegatives.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ActionReadOnly/expectedOutput/struts-config-PF_ActionReadOnly.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ActionUseFormBean/expectedOutput/struts-config-PF_ActionUseFormBean.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ActionWithForm/expectedOutput/struts-config-PF_ActionWithForm.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_AnyNumberActionForward/expectedOutput/struts-config-PF_AnyNumberActionForward.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_CatchExceptionHandler/expectedOutput/struts-config-PF_CatchExceptionHandler.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_DeprecatedExceptionHandler/expectedOutput/struts-config-PF_DeprecatedExceptionHandler.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ForwardNotInActionOrController/expectedOutput/struts-config-PF_ForwardNotInActionOrController.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ForwardRedirect/expectedOutput/struts-config-PF_ForwardRedirect.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ForwardSyntax/expectedOutput/struts-config-PF_ForwardSyntax.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_InvalidAnnotations/expectedOutput/struts-config-PF_InvalidAnnotations.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_JustBeginAction/expectedOutput/struts-config-PF_JustBeginAction.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_LongLivedTrue/expectedOutput/struts-config-PF_LongLivedTrue.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_MissingForwardJPF/expectedOutput/struts-config-MissingForwardJPF.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_RedirectWithNavigateTo/expectedOutput/struts-config-PF_RedirectWithNavigateTo.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_RolesAllowed/expectedOutput/struts-config-PF_RolesAllowed.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_SameGlobalActionForwardName/expectedOutput/struts-config-PF_SameGlobalActionForwardName.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_SameMethodNameSig/expectedOutput/struts-config-PF_SameMethodNameSig.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_TwoActionValidationErrForward/expectedOutput/struts-config-PF_TwoActionValidationErrForward.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_TwoActionsSameForward/expectedOutput/struts-config-PF_TwoActionsSameForward.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_TwoBeginAction/expectedOutput/struts-config-PF_TwoBeginAction.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_ValidateErrorForward/expectedOutput/struts-config-PF_ValidateErrorForward.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_WrongActionMember/expectedOutput/struts-config-PF_WrongActionMember.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PF_WrongControlLocation/expectedOutput/struts-config-PF_WrongControlLocation.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_Abstract/expectedOutput/struts-config-PI_Abstract.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_Begin/expectedOutput/struts-config-PI_Begin-parent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_Begin/expectedOutput/struts-config-PI_Begin.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ControlsOverride/expectedOutput/struts-config-PI_ControlsOverride-parent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ControlsOverride/expectedOutput/struts-config-PI_ControlsOverride.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ForwardPath/expectedOutput/struts-config-PI_ForwardPath-parent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ForwardPath/expectedOutput/struts-config-PI_ForwardPath.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ReturnAction/expectedOutput/struts-config-PI_ReturnAction-parent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/PI_ReturnAction/expectedOutput/struts-config-PI_ReturnAction.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_ImplicitReferences/expectedOutput/struts-config--SF_ImplicitReferences.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_ImplicitReferences/expectedOutput/struts-config-SF_ImplicitReferences.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_ImplicitReferencesNested/expectedOutput/struts-config--SF_ImplicitReferencesNested.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_ImplicitReferencesNested/expectedOutput/struts-config-SF_ImplicitReferencesNested.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_InvalidRelativePath/expectedOutput/struts-config--SF_InvalidRelativePath.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/SF_InvalidRelativePath/expectedOutput/struts-config-SF_InvalidRelativePath.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/retrievePopupOutput/expectedOutput/struts-config-retrievePopupOutput.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleActionReadOnlyUseFormBeanWarning/expectedOutput/struts-config-simpleActionReadOnlyUseFormBeanWarning.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleBeginAbstractParent/expectedOutput/struts-config-simpleBeginAbstractParent-childFlow.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleBeginAbstractParent/expectedOutput/struts-config-simpleBeginAbstractParent.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleBeginActionMethodOverride/expectedOutput/struts-config-simpleBeginActionMethodOverride-childFlow.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleBeginActionMethodOverride/expectedOutput/struts-config-simpleBeginActionMethodOverride.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleInheritedBegin/expectedOutput/struts-config-simpleInheritedBegin-childFlow.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleInheritedBegin/expectedOutput/struts-config-simpleInheritedBegin.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleInvalidPathWarning/expectedOutput/struts-config-simpleInvalidPathWarning.expected
> >    beehive/trunk/netui/test/src/compilerTests/testsuite/simpleReadOnlyUseFormBeanWarning/expectedOutput/struts-config-simpleReadOnlyUseFormBeanWarning.expected
> >    beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test6/merge-jpf-struts-config.xml
> >
> >Modified: beehive/trunk/netui/src/compiler-core/build.xml
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/build.xml?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/build.xml (original)
> >+++ beehive/trunk/netui/src/compiler-core/build.xml Fri Sep 16 13:27:57 2005
> >@@ -9,7 +9,6 @@
> >     <property name="module.classes.dir"
> >location="${classes.dir}/${module.name}"/>
> >
> >     <path id="module.classpath">
> >-        <path refid="xbean.dependency.path"/>
> >         <fileset refid="controls.fileset"/>
> >     </path>
> >
> >@@ -21,8 +20,6 @@
> >
> >         <mkdir dir="${module.classes.dir}"/>
> >
> >-        <antcall target="compile.schemas"/>
> >-
> >         <javac srcdir="${module.dir}"
> >                destdir="${module.classes.dir}"
> >                classpathref="module.classpath"
> >@@ -37,34 +34,10 @@
> >         <copy todir="${module.classes.dir}">
> >             <fileset dir="${module.dir}" includes="**/*.properties"/>
> >             <fileset dir="${module.dir}" includes="**/*.xml"/>
> >+            <fileset dir="${module.dir}" includes="**/*.xsd"/>
> >+            <fileset dir="${module.dir}" includes="**/*.dtd"/>
> >             <fileset dir="${module.dir}" includes="META-INF/**"/>
> >         </copy>
> >-    </target>
> >-
> >-    <target name="compile.schemas">
> >-        <!-- run the XMLBean compiler for the struts-config schema -->
> >-        <ant antfile="${netui.ant.dir}/xmlBean.xml">
> >-            <property name="xsd.root.dir"
> >value="${module.dir}/schema/struts-config"/>
> >-            <property name="class.output.dir" value="${module.classes.dir}"/>
> >-            <property name="xbean.inputs"
> >value="${module.dir}/schema/struts-config/*.xsd*"/>
> >-            <property name="xbean.output"
> >value="${module.classes.dir}/org/apache/beehive/netui/compiler/model/schema/struts11/StrutsConfigDocument.class"/>
> >-        </ant>
> >-
> >-        <!-- run the XMLBean compiler for the struts-validator schema -->
> >-        <ant antfile="${netui.ant.dir}/xmlBean.xml">
> >-            <property name="xsd.root.dir"
> >value="${module.dir}/schema/struts-validator"/>
> >-            <property name="class.output.dir" value="${module.classes.dir}"/>
> >-            <property name="xbean.inputs"
> >value="${module.dir}/schema/struts-validator/*.xsd*"/>
> >-            <property name="xbean.output"
> >value="${module.classes.dir}/org/apache/beehive/netui/compiler/model/schema/validator11/ValidatorDocument.class"/>
> >-        </ant>
> >-
> >-        <!-- run the XMLBean compiler for the processed-annotations schema -->
> >-        <ant antfile="${netui.ant.dir}/xmlBean.xml">
> >-            <property name="xsd.root.dir"
> >value="${module.dir}/schema/processed-annotations"/>
> >-            <property name="class.output.dir" value="${module.classes.dir}"/>
> >-            <property name="xbean.inputs"
> >value="${module.dir}/schema/processed-annotations/*.xsd*"/>
> >-            <property name="xbean.output"
> >value="${module.classes.dir}/org/apache/beehive/netui/compiler/schema/annotations/ProcessedAnnotationsDocument.class"/>
> >-        </ant>
> >     </target>
> >
> >     <target name="clean">
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/AnnotationToXML.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/AnnotationToXML.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/AnnotationToXML.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/AnnotationToXML.java
> >Fri Sep 16 13:27:57 2005
> >@@ -24,49 +24,53 @@
> > import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationValue;
> > import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.beehive.netui.compiler.schema.annotations.ProcessedAnnotationsDocument;
> >-import org.apache.beehive.netui.compiler.schema.annotations.AnnotatedElement;
> >-import org.apache.beehive.netui.compiler.schema.annotations.ProcessedAnnotation;
> >-import org.apache.beehive.netui.compiler.schema.annotations.AnnotationAttribute;
> > import org.apache.beehive.netui.compiler.model.StrutsApp;
> >-import org.apache.xmlbeans.XmlOptions;
> >+import org.apache.beehive.netui.compiler.model.XmlModelWriter;
> >+import org.apache.beehive.netui.compiler.model.XmlModelWriterException;
> >+import org.w3c.dom.Element;
> >
> > import java.util.Map;
> > import java.util.Iterator;
> > import java.util.List;
> >+import java.util.Date;
> > import java.io.File;
> > import java.io.IOException;
> > import java.io.PrintWriter;
> >
> > public class AnnotationToXML
> > {
> >-    private static final String ANNOTATIONS_FILE_PREFIX = "jpf-annotations";
> >+    private static final String ANNOTATIONS_FILE_PREFIX = "annotations";
> >
> >-    private ProcessedAnnotationsDocument _doc;
> >+    private XmlModelWriter _xw;
> >     private TypeDeclaration _typeDecl;
> >
> >-    public AnnotationToXML( TypeDeclaration typeDecl )
> >+    public AnnotationToXML(TypeDeclaration typeDecl)
> >+            throws IOException, XmlModelWriterException
> >     {
> >-        _doc = ProcessedAnnotationsDocument.Factory.newInstance();
> >         _typeDecl = typeDecl;
> >-        ProcessedAnnotationsDocument.ProcessedAnnotations pa =
> >_doc.addNewProcessedAnnotations();
> >-        pa.setTypeName( typeDecl.getQualifiedName() );
> >+        String typeName = typeDecl.getQualifiedName();
> >+        StringBuffer comment = new StringBuffer(" Generated from ");
> >+        comment.append(typeName);
> >+        comment.append( " on " ).append( new Date().toString() ).append( ' ' );
> >+        _xw = new XmlModelWriter(null, "processed-annotations", null,
> >null, comment.toString());
> >+        _xw.addElementWithText(_xw.getRootElement(), "type-name", typeName);
> >     }
> >
> >     public void include( MemberDeclaration memberDecl,
> >AnnotationInstance annotation )
> >     {
> >-        AnnotatedElement element =
> >_doc.getProcessedAnnotations().addNewAnnotatedElement();
> >         String name = memberDecl instanceof TypeDeclaration
> >                       ? ( ( TypeDeclaration ) memberDecl ).getQualifiedName()
> >                       : memberDecl.getSimpleName();
> >-        element.setElementName( name );
> >-        ProcessedAnnotation xmlAnnotation = element.addNewAnnotation();
> >+        Element annotatedElement =
> >_xw.addElement(_xw.getRootElement(), "annotated-element");
> >+        _xw.addElementWithText(annotatedElement, "element-name", name);
> >+        Element xmlAnnotation = _xw.addElement(annotatedElement, "annotation");
> >         include( xmlAnnotation, annotation );
> >     }
> >
> >-    private void include( ProcessedAnnotation xmlAnnotation,
> >AnnotationInstance annotation )
> >+    private void include( Element xmlAnnotation, AnnotationInstance
> >annotation )
> >     {
> >-        xmlAnnotation.setAnnotationName(
> >annotation.getAnnotationType().getAnnotationTypeDeclaration().getQualifiedName()
> >);
> >+        String annotationName =
> >annotation.getAnnotationType().getAnnotationTypeDeclaration().getQualifiedName();
> >+        _xw.addElementWithText(xmlAnnotation, "annotation-name",
> >annotationName);
> >
> >         Map elementValues = annotation.getElementValues();
> >
> >@@ -78,8 +82,8 @@
> >
> >             String name = elementDecl.getSimpleName();
> >             Object value = annotationValue.getValue();
> >-            AnnotationAttribute xmlAttr =
> >xmlAnnotation.addNewAnnotationAttribute();
> >-            xmlAttr.setAttributeName( name );
> >+            Element xmlAttr = _xw.addElement(xmlAnnotation,
> >"annotation-attribute");
> >+            _xw.addElementWithText(xmlAttr, "attribute-name", name);
> >
> >             if ( value instanceof List )
> >             {
> >@@ -91,39 +95,35 @@
> >
> >                     // we only handle lists of annotations at the moment
> >                     assert listVal instanceof AnnotationInstance :
> >listVal.getClass().getName();
> >-                    include( xmlAttr.addNewAnnotationValue(), (
> >AnnotationInstance ) listVal );
> >+                    include(_xw.addElement(xmlAttr,
> >"annotation-value"), (AnnotationInstance) listVal);
> >                 }
> >             }
> >             else
> >             {
> >                 // we only support a few types at the moment
> >                 assert value instanceof TypeInstance || value
> >instanceof String : value.getClass().getName();
> >-                xmlAttr.setStringValue1( value.toString() );
> >+                _xw.addElementWithText(xmlAttr, "string-value",
> >value.toString());
> >             }
> >         }
> >     }
> >
> >     public void writeXml( Diagnostics diagnostics,
> >AnnotationProcessorEnvironment env )
> >+            throws IOException, XmlModelWriterException
> >     {
> >-        String typeName = _typeDecl.getQualifiedName();
> >-        String outputFilePath = StrutsApp.getOutputFileURI(
> >ANNOTATIONS_FILE_PREFIX, typeName, false );
> >-        PrintWriter writer = null;
> >-
> >-        try
> >-        {
> >-            XmlOptions options = new XmlOptions();
> >-            options.setSavePrettyPrint();
> >-            File outputFile = new File( outputFilePath );
> >-            writer = env.getFiler().createTextFile( outputFile );
> >-            _doc.save( writer, options );
> >-        }
> >-        catch ( IOException e )
> >-        {
> >-            diagnostics.addError( _typeDecl,
> >"error.could-not-generate", outputFilePath, e.getMessage() );
> >-        }
> >-        finally
> >-        {
> >-            if ( writer != null ) writer.close();
> >+        String outputFilePath = getFilePath(_typeDecl);
> >+        File outputFile = new File(outputFilePath);
> >+        PrintWriter writer = env.getFiler().createTextFile(outputFile);
> >+
> >+        try {
> >+            _xw.simpleFastWrite(writer);
> >+        } finally {
> >+            writer.close();
> >         }
> >+    }
> >+
> >+    public static String getFilePath(TypeDeclaration typeDecl)
> >+    {
> >+        String typeName = typeDecl.getQualifiedName();
> >+        return StrutsApp.getOutputFileURI( ANNOTATIONS_FILE_PREFIX,
> >typeName, false );
> >     }
> > }
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FacesBackingGenerator.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FacesBackingGenerator.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FacesBackingGenerator.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FacesBackingGenerator.java
> >Fri Sep 16 13:27:57 2005
> >@@ -22,8 +22,6 @@
> > import org.apache.beehive.netui.compiler.typesystem.declaration.MethodDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >
> >-import java.io.File;
> >-
> > public class FacesBackingGenerator
> >         extends BaseGenerator
> >         implements JpfLanguageConstants
> >@@ -36,26 +34,32 @@
> >     public void generate( ClassDeclaration publicClass )
> >         throws FatalCompileTimeException
> >     {
> >-        AnnotationInstance facesBackingAnnotation =
> >CompilerUtils.getAnnotation( publicClass, FACES_BACKING_TAG_NAME );
> >-        assert facesBackingAnnotation != null;  // checker should enforce this
> >-        AnnotationToXML atx = new AnnotationToXML( publicClass );
> >-
> >-        // Add the class-level @Jpf.FacesBacking annotation.
> >-        atx.include( publicClass, facesBackingAnnotation );
> >-
> >-        // For each method, add the @Jpf.CommandHandler annotation.
> >-        MethodDeclaration[] methods = CompilerUtils.getClassMethods(
> >publicClass, COMMAND_HANDLER_TAG_NAME );
> >-        for ( int i = 0; i < methods.length; i++ )
> >-        {
> >-            MethodDeclaration method = methods[i];
> >-            AnnotationInstance commandHandlerAnn =
> >CompilerUtils.getAnnotation( method, COMMAND_HANDLER_TAG_NAME );
> >-            atx.include( method, commandHandlerAnn );
> >+        try {
> >+            AnnotationInstance facesBackingAnnotation =
> >CompilerUtils.getAnnotation( publicClass, FACES_BACKING_TAG_NAME );
> >+            assert facesBackingAnnotation != null;  // checker should
> >enforce this
> >+            AnnotationToXML atx = new AnnotationToXML( publicClass );
> >+
> >+            // Add the class-level @Jpf.FacesBacking annotation.
> >+            atx.include( publicClass, facesBackingAnnotation );
> >+
> >+            // For each method, add the @Jpf.CommandHandler annotation.
> >+            MethodDeclaration[] methods =
> >CompilerUtils.getClassMethods( publicClass, COMMAND_HANDLER_TAG_NAME
> >);
> >+            for ( int i = 0; i < methods.length; i++ )
> >+            {
> >+                MethodDeclaration method = methods[i];
> >+                AnnotationInstance commandHandlerAnn =
> >CompilerUtils.getAnnotation( method, COMMAND_HANDLER_TAG_NAME );
> >+                atx.include( method, commandHandlerAnn );
> >+            }
> >+
> >+            // Add @Jpf.SharedFlowField, @Jpf.PageFlowField, @Control.
> >+            FlowControllerGenerator.includeFieldAnnotations( atx,
> >publicClass, PAGE_FLOW_FIELD_TAG_NAME );
> >+
> >+            // Write the file.
> >+            atx.writeXml( getDiagnostics(), getEnv() );
> >+        } catch (Exception e) {
> >+            getDiagnostics().addError( publicClass, "error.could-not-generate",
> >+
> >AnnotationToXML.getFilePath(publicClass), e.getMessage() );
> >+            e.printStackTrace();  // TODO: log instead
> >         }
> >-
> >-        // Add @Jpf.SharedFlowField, @Jpf.PageFlowField, @Control.
> >-        FlowControllerGenerator.includeFieldAnnotations( atx,
> >publicClass, PAGE_FLOW_FIELD_TAG_NAME );
> >-
> >-        // Write the file.
> >-        atx.writeXml( getDiagnostics(), getEnv() );
> >     }
> > }
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerChecker.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerChecker.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerChecker.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerChecker.java
> >Fri Sep 16 13:27:57 2005
> >@@ -34,7 +34,6 @@
> > import org.apache.beehive.netui.compiler.typesystem.type.ClassType;
> > import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
> > import org.apache.beehive.netui.compiler.processor.SilentDiagnostics;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.FilenameFilter;
> >@@ -272,7 +271,7 @@
> >     }
> >
> >     protected abstract GenStrutsApp createStrutsApp( ClassDeclaration jclass )
> >-        throws XmlException, IOException, FatalCompileTimeException;
> >+        throws IOException, FatalCompileTimeException;
> >
> >     protected void startCheckClass( ClassDeclaration jclass )
> >             throws FatalCompileTimeException
> >@@ -291,10 +290,6 @@
> >             strutsApp = createStrutsApp( jclass );
> >             strutsConfigFile = strutsApp.getStrutsConfigFile();
> >         }
> >-        catch ( XmlException e )
> >-        {
> >-            // will be reported at generate time
> >-        }
> >         catch ( IOException e )
> >         {
> >             // will be reported at generate time
> >@@ -302,8 +297,6 @@
> >
> >         if ( strutsConfigFile != null )
> >         {
> >-            File parentDir = strutsConfigFile.getParentFile();
> >-
> >             getFCSourceFileInfo().addReferencedFile( strutsConfigFile );
> >
> >             if ( strutsConfigFile.exists() && strutsApp != null && !
> >strutsApp.canWrite() )
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerGenerator.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerGenerator.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerGenerator.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/FlowControllerGenerator.java
> >Fri Sep 16 13:27:57 2005
> >@@ -24,7 +24,7 @@
> > import org.apache.beehive.netui.compiler.typesystem.declaration.FieldDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.TypeDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.xmlbeans.XmlException;
> >+import org.apache.beehive.netui.compiler.model.XmlModelWriterException;
> >
> > import java.io.File;
> > import java.io.FileNotFoundException;
> >@@ -47,7 +47,7 @@
> >     }
> >
> >     protected abstract GenStrutsApp createStrutsApp( ClassDeclaration cl )
> >-            throws XmlException, IOException, FatalCompileTimeException;
> >+            throws IOException, FatalCompileTimeException;
> >
> >     public void generate( ClassDeclaration publicClass )
> >     {
> >@@ -78,8 +78,7 @@
> >         catch ( Exception e )
> >         {
> >             e.printStackTrace();    // @TODO log
> >-            assert e instanceof XmlException || e instanceof
> >IOException || e instanceof FileNotFoundException
> >-                    : e.getClass().getName();
> >+            assert e instanceof IOException : e.getClass().getName();
> >             getDiagnostics().addError( publicClass, "error.could-not-generate",
> >                                        app != null ?
> >app.getStrutsConfigFile() : null, e.getMessage() );
> >         }
> >@@ -90,13 +89,18 @@
> >     }
> >
> >     private void writeFieldAnnotations( ClassDeclaration classDecl,
> >GenStrutsApp app )
> >-            throws FatalCompileTimeException
> >     {
> >-        AnnotationToXML atx = new AnnotationToXML( classDecl );
> >-
> >-        if ( includeFieldAnnotations( atx, classDecl, null ) )
> >-        {
> >-            atx.writeXml( getDiagnostics(), getEnv() );
> >+        try {
> >+            AnnotationToXML atx = new AnnotationToXML( classDecl );
> >+
> >+            if ( includeFieldAnnotations( atx, classDecl, null ) )
> >+            {
> >+                atx.writeXml( getDiagnostics(), getEnv() );
> >+            }
> >+        } catch (Exception e) {
> >+            getDiagnostics().addError(classDecl,
> >"error.could-not-generate", AnnotationToXML.getFilePath(classDecl),
> >+                                      e.getMessage() );
> >+            e.printStackTrace();  // TODO: log instead
> >         }
> >     }
> >
> >@@ -167,7 +171,7 @@
> >             e.printStackTrace();    // @TODO get rid of this
> >             assert e instanceof FileNotFoundException
> >                    || e instanceof IOException
> >-                   || e instanceof XmlException
> >+                   || e instanceof XmlModelWriterException
> >                     : e.getClass().getName();
> >
> >             getDiagnostics().addError( publicClass, "error.could-not-generate",
> >
> >Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java?rev=289648&view=auto
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java
> >(added)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java
> >Fri Sep 16 13:27:57 2005
> >@@ -0,0 +1,67 @@
> >+/*
> >+ * Copyright 2004 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.
> >+ *
> >+ * $Header:$
> >+ */
> >+package org.apache.beehive.netui.compiler;
> >+
> >+import org.xml.sax.EntityResolver;
> >+import org.xml.sax.InputSource;
> >+import org.xml.sax.SAXException;
> >+
> >+import java.io.IOException;
> >+import java.io.InputStream;
> >+
> >+/**
> >+ * Entity resolver that tries to find the resource locally (from
> >classloader, under
> >+ * org/apache/beehive/netui/compiler/resources) before trying to
> >resolve via the network.
> >+ */
> >+public class LocalFileEntityResolver implements EntityResolver
> >+{
> >+    private static final String RESORUCE_PATH_PREFIX =
> >"org/apache/beehive/netui/compiler/resources/";
> >+    private static final LocalFileEntityResolver INSTANCE = new
> >LocalFileEntityResolver();
> >+
> >+    protected LocalFileEntityResolver() {
> >+    }
> >+
> >+    public static LocalFileEntityResolver getInstance() {
> >+        return INSTANCE;
> >+    }
> >+
> >+    /**
> >+     * Resolve the entity.  First try to find it locally, then
> >fallback to the network.
> >+     */
> >+    public InputSource resolveEntity(String publicID, String
> >systemID) throws SAXException, IOException {
> >+        InputSource localFileInput = resolveLocalEntity(systemID);
> >+        return localFileInput != null ? localFileInput : new
> >InputSource(systemID);
> >+    }
> >+
> >+    /**
> >+     * Resolve the given entity locally.
> >+     */
> >+    public InputSource resolveLocalEntity(String systemID) throws
> >SAXException, IOException {
> >+        String localFileName = systemID;
> >+        int fileNameStart = localFileName.lastIndexOf('/') + 1;
> >+        if (fileNameStart < localFileName.length()) {
> >+            localFileName = systemID.substring(fileNameStart);
> >+        }
> >+        ClassLoader cl = LocalFileEntityResolver.class.getClassLoader();
> >+        InputStream stream =
> >cl.getResourceAsStream(RESORUCE_PATH_PREFIX + localFileName);
> >+        if (stream != null) {
> >+            return new InputSource(stream);
> >+        }
> >+        return null;
> >+    }
> >+}
> >
> >Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/LocalFileEntityResolver.java
> >------------------------------------------------------------------------------
> >    svn:eol-style = native
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowChecker.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowChecker.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowChecker.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowChecker.java
> >Fri Sep 16 13:27:57 2005
> >@@ -29,7 +29,6 @@
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> > import org.apache.beehive.netui.compiler.typesystem.type.DeclaredType;
> > import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.IOException;
> >@@ -193,7 +192,7 @@
> >     }
> >
> >     protected GenStrutsApp createStrutsApp( ClassDeclaration jclass )
> >-        throws XmlException, IOException, FatalCompileTimeException
> >+        throws IOException, FatalCompileTimeException
> >     {
> >         File sourceFile = CompilerUtils.getSourceFile( jclass, true );
> >         return new GenStrutsApp( sourceFile, jclass, getEnv(),
> >getFCSourceFileInfo(), true, getDiagnostics() );
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowGenerator.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowGenerator.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowGenerator.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/PageFlowGenerator.java
> >Fri Sep 16 13:27:57 2005
> >@@ -20,7 +20,6 @@
> > import org.apache.beehive.netui.compiler.genmodel.GenStrutsApp;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.IOException;
> >@@ -35,7 +34,7 @@
> >     }
> >
> >     protected GenStrutsApp createStrutsApp( ClassDeclaration jclass )
> >-        throws XmlException, IOException, FatalCompileTimeException
> >+        throws IOException, FatalCompileTimeException
> >     {
> >         File sourceFile = CompilerUtils.getSourceFile( jclass, true );
> >         return new GenStrutsApp( sourceFile, jclass, getEnv(),
> >getFCSourceFileInfo(), false, getDiagnostics() );
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowChecker.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowChecker.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowChecker.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowChecker.java
> >Fri Sep 16 13:27:57 2005
> >@@ -23,7 +23,6 @@
> > import org.apache.beehive.netui.compiler.grammar.InvalidAttributeType;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.IOException;
> >@@ -72,7 +71,7 @@
> >     }
> >
> >     protected GenStrutsApp createStrutsApp( ClassDeclaration jclass )
> >-        throws XmlException, IOException, FatalCompileTimeException
> >+        throws IOException, FatalCompileTimeException
> >     {
> >         File sourceFile = CompilerUtils.getSourceFile( jclass, true );
> >         return new GenSharedFlowStrutsApp( sourceFile, jclass,
> >getEnv(), getFCSourceFileInfo(), true, getDiagnostics() );
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowGenerator.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowGenerator.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowGenerator.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/SharedFlowGenerator.java
> >Fri Sep 16 13:27:57 2005
> >@@ -21,7 +21,6 @@
> > import org.apache.beehive.netui.compiler.genmodel.GenStrutsApp;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.IOException;
> >@@ -36,7 +35,7 @@
> >     }
> >
> >     protected GenStrutsApp createStrutsApp( ClassDeclaration jclass )
> >-            throws XmlException, IOException, FatalCompileTimeException
> >+            throws IOException, FatalCompileTimeException
> >     {
> >         File sourceFile = CompilerUtils.getSourceFile( jclass, true );
> >         return new GenSharedFlowStrutsApp( sourceFile, jclass,
> >getEnv(), getFCSourceFileInfo(), false, getDiagnostics() );
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/diagnostics.properties
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/diagnostics.properties?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/diagnostics.properties
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/diagnostics.properties
> >Fri Sep 16 13:27:57 2005
> >@@ -15,6 +15,7 @@
> > error.atmost-one-may-exist-6 = Only one of attributes "{0}", "{1}",
> >"{2}", "{3}", "{4}", or "{5}" may be present.
> > error.attr-dependency-not-found-1 = Attribute "{0}" may only be
> >present when attribute "{1}" is present.
> > error.attr-dependency-not-found-2 = Attribute "{0}" may only be
> >present when attribute "{1}" or "{2}" is present.
> >+error.attr-dependency-not-found-3 = Attribute "{0}" may only be
> >present when one of attributes "{1}", "{2}", or "{3}" is present.
> > error.unresolved-exception-handler = No exception handler method
> >named "{0}" could be found.
> > error.invalid-parent-directory = Could not create parent directory "{0}".
> > error.struts-config-not-writable = Cannot write to "{0}".
> >@@ -78,7 +79,7 @@
> > error.xml-parse-error = Error while parsing {0} (line {1}, column {2}): {3}
> > error.xml-parse-error-nocolumn = Error while parsing {0} (line {1}): {2}
> > error.xml-parse-error-nolinecolumn = Error while parsing {0}: {1}
> >-error.xml-read-error = Could not load {0}: {1}.
> >+error.xml-read-error = Could not load {0} due to {1}: {2}.
> >
> > error.invalid-uri = This URI is invalid: {0}
> > error.relative-uri = This attribute requires a relative path.
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
> >Fri Sep 16 13:27:57 2005
> >@@ -23,7 +23,6 @@
> > import org.apache.beehive.netui.compiler.JpfLanguageConstants;
> > import org.apache.beehive.netui.compiler.Diagnostics;
> > import org.apache.beehive.netui.compiler.FatalCompileTimeException;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.IOException;
> >@@ -35,7 +34,7 @@
> > {
> >     public GenSharedFlowStrutsApp( File sourceFile, ClassDeclaration
> >jclass, AnnotationProcessorEnvironment env,
> >                                    FlowControllerInfo fcInfo, boolean
> >checkOnly, Diagnostics diagnostics )
> >-            throws XmlException, IOException, FatalCompileTimeException
> >+            throws IOException, FatalCompileTimeException
> >     {
> >         super( sourceFile, jclass, env, fcInfo, checkOnly, diagnostics );
> >         recalculateStrutsConfigFile();  // it changes based on _isGlobalApp
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
> >Fri Sep 16 13:27:57 2005
> >@@ -28,20 +28,16 @@
> > import org.apache.beehive.netui.compiler.model.ForwardModel;
> > import org.apache.beehive.netui.compiler.model.MessageResourcesModel;
> > import org.apache.beehive.netui.compiler.model.StrutsApp;
> >+import org.apache.beehive.netui.compiler.model.XmlModelWriterException;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationInstance;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.ClassDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.MethodDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.Modifier;
> >-import org.apache.beehive.netui.compiler.typesystem.declaration.PackageDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.ParameterDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.TypeDeclaration;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> > import org.apache.beehive.netui.compiler.typesystem.type.DeclaredType;
> > import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
> >-import org.apache.beehive.netui.compiler.typesystem.type.ClassType;
> >-import org.apache.xmlbeans.XmlCursor;
> >-import org.apache.xmlbeans.XmlException;
> >-import org.apache.xmlbeans.XmlObject;
> >
> > import java.io.File;
> > import java.io.FileNotFoundException;
> >@@ -68,7 +64,7 @@
> >     private FlowControllerInfo _fcInfo;
> >
> >     protected void recalculateStrutsConfigFile()
> >-        throws XmlException, IOException, FatalCompileTimeException
> >+        throws IOException, FatalCompileTimeException
> >     {
> >         _strutsConfigFile = calculateStrutsConfigFile(); // caching this
> >     }
> >@@ -80,7 +76,7 @@
> >
> >     public GenStrutsApp( File sourceFile, ClassDeclaration jclass,
> >AnnotationProcessorEnvironment env,
> >                          FlowControllerInfo fcInfo, boolean
> >checkOnly, Diagnostics diagnostics )
> >-        throws XmlException, IOException, FatalCompileTimeException
> >+        throws IOException, FatalCompileTimeException
> >     {
> >         super( jclass.getQualifiedName() );
> >
> >@@ -328,9 +324,19 @@
> >     }
> >
> >     public void writeToFile()
> >-        throws FileNotFoundException, IOException, XmlException,
> >FatalCompileTimeException
> >+        throws FileNotFoundException, IOException,
> >XmlModelWriterException, FatalCompileTimeException
> >     {
> >-        writeToFile( getMergeFile( getMergeFileName() ) );
> >+        File strutsMergeFile = getMergeFile( getMergeFileName() );
> >+        PrintWriter writer = getEnv().getFiler().createTextFile(
> >_strutsConfigFile );
> >+
> >+        try
> >+        {
> >+            writeXml( writer, strutsMergeFile );
> >+        }
> >+        finally
> >+        {
> >+            writer.close();
> >+        }
> >     }
> >
> >     public boolean isStale()
> >@@ -419,23 +425,8 @@
> >
> >         return true;
> >     }
> >-
> >-
> >-    public void writeToFile( File strutsMergeFile )
> >-        throws FileNotFoundException, IOException, XmlException,
> >FatalCompileTimeException
> >-    {
> >-        PrintWriter writer = getEnv().getFiler().createTextFile(
> >_strutsConfigFile );
> >-
> >-        try
> >-        {
> >-            writeXml( writer, strutsMergeFile );
> >-        }
> >-        finally
> >-        {
> >-            writer.close();
> >-        }
> >-    }
> >-
> >+
> >+
> >     public File getStrutsConfigFile()
> >     {
> >         return _strutsConfigFile;
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
> >Fri Sep 16 13:27:57 2005
> >@@ -20,9 +20,9 @@
> > import org.apache.beehive.netui.compiler.CompilerUtils;
> > import org.apache.beehive.netui.compiler.JpfLanguageConstants;
> > import org.apache.beehive.netui.compiler.MergedControllerAnnotation;
> >-import org.apache.beehive.netui.compiler.Diagnostics;
> > import org.apache.beehive.netui.compiler.FatalCompileTimeException;
> > import org.apache.beehive.netui.compiler.model.FormBeanModel;
> >+import org.apache.beehive.netui.compiler.model.XmlModelWriterException;
> > import org.apache.beehive.netui.compiler.model.validation.ValidationModel;
> > import org.apache.beehive.netui.compiler.model.validation.ValidatorConstants;
> > import org.apache.beehive.netui.compiler.model.validation.ValidatorRule;
> >@@ -37,13 +37,10 @@
> > import org.apache.beehive.netui.compiler.typesystem.type.TypeInstance;
> > import org.apache.beehive.netui.compiler.typesystem.type.ClassType;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >-import org.apache.xmlbeans.XmlException;
> >
> > import java.io.File;
> > import java.io.FileNotFoundException;
> >-import java.io.FileOutputStream;
> > import java.io.IOException;
> >-import java.io.PrintStream;
> > import java.io.PrintWriter;
> > import java.util.Collection;
> > import java.util.Iterator;
> >@@ -430,7 +427,7 @@
> >     }
> >
> >     public void writeToFile()
> >-        throws FileNotFoundException, XmlException, IOException,
> >FatalCompileTimeException
> >+        throws FileNotFoundException, IOException,
> >FatalCompileTimeException, XmlModelWriterException
> >     {
> >         String outputFilePath = getOutputFileURI();
> >         File outputFile = new File( outputFilePath );
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
> >Fri Sep 16 13:27:57 2005
> >@@ -21,28 +21,28 @@
> > import org.apache.beehive.netui.compiler.AnnotationMemberType;
> > import org.apache.beehive.netui.compiler.FlowControllerInfo;
> > import org.apache.beehive.netui.compiler.Diagnostics;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.StrutsConfigDocument;
> >-import org.apache.beehive.netui.compiler.model.schema.validator11.FormValidationDocument;
> > import org.apache.beehive.netui.compiler.typesystem.env.AnnotationProcessorEnvironment;
> >
> >+import java.net.URL;
> >+
> >
> > public class ControllerGrammar
> >         extends BaseFlowControllerGrammar
> >-{
> >+{
> >     public ControllerGrammar( AnnotationProcessorEnvironment env,
> >Diagnostics diags, RuntimeVersionChecker rvc,
> >                               FlowControllerInfo fcInfo )
> >     {
> >         super( env, diags, null, rvc, fcInfo );
> >-
> >+
> >         addMemberType( LOGIN_REQUIRED_ATTR, new AnnotationMemberType(
> >null, this ) );
> >         addMemberType( ROLES_ALLOWED_ATTR, new RolesAllowedType( this ) );
> >         addMemberType( READONLY_ATTR, new AnnotationMemberType( null, this ) );
> >-        addMemberType( STRUTSMERGE_ATTR, new ValidXmlFileType(
> >StrutsConfigDocument.type, null, this, fcInfo ) );
> >+        addMemberType( STRUTSMERGE_ATTR, new ValidXmlFileType(
> >"struts-config_1_1.xsd", null, this, fcInfo ) );
> >         addMemberType( VALIDATOR_VERSION_ATTR, new
> >AnnotationMemberType( null, this ) );
> >-        addMemberType( VALIDATOR_MERGE_ATTR, new ValidXmlFileType(
> >FormValidationDocument.type, null, this, fcInfo ) );
> >+        addMemberType( VALIDATOR_MERGE_ATTR, new ValidXmlFileType(
> >"struts-validator_1_1.xsd", null, this, fcInfo ) );
> >         addMemberType( TILES_DEFINITIONS_CONFIGS_ATTR, new
> >TilesDefinitionsConfigsType( null, this, fcInfo ) );
> >         addMemberType( MULTIPART_HANDLER_ATTR, new
> >AnnotationMemberType( null, this ) );
> >-
> >+
> >         addMemberArrayGrammar( SHARED_FLOW_REFS_ATTR, new
> >SharedFlowRefGrammar( env, diags, rvc ) );
> >         addMemberArrayGrammar( FORWARDS_ATTR, new ForwardGrammar(
> >env, diags, null, rvc, fcInfo ) );
> >         addMemberArrayGrammar( CATCHES_ATTR, new CatchGrammar( env,
> >diags, null, rvc, CONTROLLER_TAG_NAME, fcInfo ) );
> >@@ -50,7 +50,7 @@
> >         addMemberArrayGrammar( VALIDATABLE_BEANS_ATTR, new
> >ValidatableBeanGrammar( env, diags, rvc ) );
> >         addMemberArrayGrammar( SIMPLE_ACTIONS_ATTR, new
> >SimpleActionGrammar( env, diags, rvc, fcInfo ) );
> >     }
> >-
> >+
> >     public String[][] getMutuallyExclusiveAttrs()
> >     {
> >         return null;
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidXmlFileType.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidXmlFileType.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidXmlFileType.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/grammar/ValidXmlFileType.java
> >Fri Sep 16 13:27:57 2005
> >@@ -19,154 +19,159 @@
> >
> > import org.apache.beehive.netui.compiler.AnnotationGrammar;
> > import org.apache.beehive.netui.compiler.FlowControllerInfo;
> >-import org.apache.xmlbeans.SchemaType;
> >-import org.apache.xmlbeans.XmlOptions;
> >-import org.apache.xmlbeans.XmlObject;
> >-import org.apache.xmlbeans.XmlError;
> >-import org.apache.xmlbeans.XmlException;
> >+import org.apache.beehive.netui.compiler.LocalFileEntityResolver;
> > import org.apache.beehive.netui.compiler.typesystem.declaration.AnnotationValue;
> >+import org.xml.sax.SAXParseException;
> >+import org.xml.sax.SAXException;
> >+import org.xml.sax.InputSource;
> >+import org.xml.sax.helpers.DefaultHandler;
> >
> >+import javax.xml.parsers.DocumentBuilderFactory;
> >+import javax.xml.parsers.DocumentBuilder;
> > import java.util.Map;
> > import java.util.Collections;
> > import java.util.HashMap;
> >-import java.util.List;
> >-import java.util.ArrayList;
> > import java.io.File;
> >+import java.io.IOException;
> >
> >
> > public class ValidXmlFileType
> >         extends WebappPathType
> > {
> >-    private SchemaType _schema;
> >+    private String _schemaFileName;
> >     private static Map _parseResults = Collections.synchronizedMap(
> >new HashMap() );
> >-
> >-    public ValidXmlFileType( SchemaType schema, String
> >requiredRuntimeVersion, AnnotationGrammar parentGrammar,
> >+
> >+    public ValidXmlFileType( String schemaFileName, String
> >requiredRuntimeVersion, AnnotationGrammar parentGrammar,
> >                              FlowControllerInfo fcInfo )
> >     {
> >         super( false, requiredRuntimeVersion, parentGrammar, fcInfo );
> >-        _schema = schema;
> >+        assert schemaFileName != null;
> >+        _schemaFileName = schemaFileName;
> >     }
> >
> >-
> >+
> >     protected boolean checkAnyExtension()
> >     {
> >         return true;
> >     }
> >
> >-
> >+
> >     protected boolean doFatalError()
> >     {
> >         return true;
> >     }
> >-
> >-
> >+
> >+
> >     protected boolean ignoreDirectories()
> >     {
> >         return false;
> >     }
> >-
> >-
> >+
> >+
> >     protected boolean allowFileInPageFlowSourceDir()
> >     {
> >         return true;
> >     }
> >-
> >-
> >+
> >+
> >     protected void runAdditionalChecks( File file, AnnotationValue value )
> >     {
> >-        try
> >+
> >+        //
> >+        // We cache the results of parsing the file until the file is
> >actually modified,
> >+        // so we don't end up continually re-parsing it.
> >+        //
> >+        ParseResults prevResults = ( ParseResults )
> >_parseResults.get( file.getPath() );
> >+        long lastModTime = file.lastModified();
> >+
> >+        if ( prevResults == null || lastModTime >
> >prevResults.getFileModTime() )
> >         {
> >-            //
> >-            // We cache the results of parsing the file until the
> >file is actually modified,
> >-            // so we don't end up continually re-parsing it.
> >-            //
> >-            ParseResults prevResults = ( ParseResults )
> >_parseResults.get( file.getPath() );
> >-
> >-            if ( prevResults == null || file.lastModified() >
> >prevResults.getFileModTime() )
> >+            try
> >             {
> >-                try
> >-                {
> >-                    XmlOptions options = new XmlOptions();
> >-                    options.setDocumentType( _schema );
> >-                    XmlObject xml = XmlObject.Factory.parse( file, options );
> >-                    List errorListener = new ArrayList();
> >-                    options.setErrorListener( errorListener );
> >-
> >-                    if ( !xml.validate( options ) )
> >-                    {
> >-                        assert !errorListener.isEmpty();
> >-
> >-                        XmlError err = ( XmlError ) errorListener.get( 0 );
> >-                        assert err != null;
> >-
> >-                        throw new XmlException( err.getMessage(), null, err );
> >-                    }
> >-                }
> >-                catch ( Exception e )
> >-                {
> >-                    _parseResults.put( file.getPath(), new
> >ParseResults( file.lastModified(), e ) );
> >-                    throw e;
> >+                LocalFileEntityResolver entityResolver =
> >LocalFileEntityResolver.getInstance();
> >+                InputSource schemaInput =
> >entityResolver.resolveLocalEntity(_schemaFileName);
> >+                assert schemaInput != null : "could not get schema
> >resource for " + _schemaFileName;
> >+                DocumentBuilderFactory factory =
> >DocumentBuilderFactory.newInstance();
> >+                factory.setNamespaceAware(true);
> >+                factory.setValidating(true);
> >+                factory.setAttribute(
> >"http://java.sun.com/xml/jaxp/properties/schemaLanguage",
> >+                                      "http://www.w3.org/2001/XMLSchema");
> >+                factory.setAttribute(
> >"http://java.sun.com/xml/jaxp/properties/schemaSource", schemaInput);
> >+                DocumentBuilder builder = factory.newDocumentBuilder();
> >+
> >builder.setEntityResolver(LocalFileEntityResolver.getInstance());
> >+                Validator handler = new Validator(lastModTime, file, value);
> >+                builder.setErrorHandler(handler);
> >+                builder.parse(file);
> >+                if (handler.hadErrors()) {
> >+                    return;
> >                 }
> >-
> >-                _parseResults.put( file.getPath(), new ParseResults(
> >file.lastModified(), null ) );
> >             }
> >-            else
> >+            catch ( SAXParseException e )
> >             {
> >-                Exception e = prevResults.getException();
> >-
> >-                if ( e != null )
> >-                {
> >-                    throw e;
> >-                }
> >+                addErrorDiagnostic( file, e, value );
> >+                _parseResults.put( file.getPath(), new ParseResults(
> >lastModTime, e ) );
> >+                return;
> >             }
> >+            catch ( Exception e )
> >+            {
> >+                _parseResults.put( file.getPath(), new ParseResults(
> >lastModTime, e ) );
> >+                addError( value, "error.xml-read-error",
> >+                          new Object[]{ file.getPath(),
> >e.getClass().getName(), e.getMessage() } );
> >+                return;
> >+            }
> >+
> >+            _parseResults.put( file.getPath(), new ParseResults(
> >lastModTime, null ) );
> >         }
> >-        catch ( XmlException e )
> >-        {
> >-            addErrorDiagnostic( e.getError(), value );
> >-        }
> >-        catch ( Exception e )
> >+        else
> >         {
> >-            addError( value, "error.xml-read-error", new Object[]{
> >file.getPath(), e.getMessage() } );
> >+            Exception e = prevResults.getException();
> >+
> >+            if (e instanceof SAXParseException) {
> >+                addErrorDiagnostic(file, (SAXParseException) e, value);
> >+            } else if (e != null) {
> >+                addError( value, "error.xml-read-error",
> >+                          new Object[]{ file.getPath(),
> >e.getClass().getName(), e.getMessage() } );
> >+            }
> >         }
> >     }
> >-
> >-    private void addErrorDiagnostic( XmlError err, AnnotationValue value )
> >+
> >+    private void addErrorDiagnostic( File file, SAXParseException
> >err, AnnotationValue value )
> >     {
> >-        if ( err.getColumn() != -1 && err.getLine() != -1 )
> >+        if ( err.getColumnNumber() != -1 && err.getLineNumber() != -1 )
> >         {
> >             Object[] args =
> >                     {
> >-                        err.getSourceName(),
> >-                        new Integer( err.getLine() ),
> >-                        new Integer( err.getColumn() ),
> >+                        file.getPath(),
> >+                        new Integer( err.getLineNumber() ),
> >+                        new Integer( err.getColumnNumber() ),
> >                         err.getMessage()
> >                     };
> >-
> >+
> >             addError( value, "error.xml-parse-error", args );
> >         }
> >-        else if ( err.getLine() != -1 )
> >+        else if ( err.getLineNumber() != -1 )
> >         {
> >             Object[] args =
> >             {
> >-                err.getSourceName(),
> >-                new Integer( err.getLine() ),
> >+                file.getPath(),
> >+                new Integer( err.getLineNumber() ),
> >                 err.getMessage()
> >             };
> >-
> >+
> >             addError( value, "error.xml-parse-error-nocolumn", args );
> >-        }
> >+        }
> >         else
> >         {
> >             Object[] args =
> >             {
> >-                err.getSourceName(),
> >+                file.getPath(),
> >                 err.getMessage()
> >             };
> >-
> >+
> >             addError( value, "error.xml-parse-error-nolinecolumn", args );
> >         }
> >     }
> >-
> >+
> >     private static class ParseResults
> >     {
> >         private long _fileModTime;
> >@@ -196,6 +201,46 @@
> >         public void setException( Exception exception )
> >         {
> >             _exception = exception;
> >+        }
> >+    }
> >+
> >+    private class Validator extends DefaultHandler {
> >+
> >+        private long _fileModTime;
> >+        private File _file;
> >+        private AnnotationValue _value;
> >+        private boolean _hadErrors = false;
> >+
> >+        public Validator(long fileModTime, File file, AnnotationValue value) {
> >+            _fileModTime = fileModTime;
> >+            _file = file;
> >+            _value = value;
> >+        }
> >+
> >+        public void error(SAXParseException ex)
> >+                throws SAXException {
> >+            ParseResults results = new ParseResults(_fileModTime, ex);
> >+            addErrorDiagnostic(_file, ex, _value );
> >+            _parseResults.put(_file.getPath(), results);
> >+            _hadErrors = true;
> >+        }
> >+
> >+        public void fatalError(SAXParseException ex)
> >+                throws SAXException {
> >+            error(ex);
> >+        }
> >+
> >+        public void warning(SAXParseException exception)
> >+                throws SAXException {
> >+            // TODO: add a compiler warning?
> >+        }
> >+
> >+        public boolean hadErrors() {
> >+            return _hadErrors;
> >+        }
> >+
> >+        public InputSource resolveEntity(String publicId, String
> >systemId) throws IOException, SAXException {
> >+            return super.resolveEntity(publicId, systemId);
> >         }
> >     }
> > }
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
> >Fri Sep 16 13:27:57 2005
> >@@ -17,8 +17,7 @@
> >  */
> > package org.apache.beehive.netui.compiler.model;
> >
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ForwardDocument;
> >-import org.apache.xmlbeans.XmlObject;
> >+import org.w3c.dom.Element;
> >
> > import java.util.LinkedHashMap;
> > import java.util.Iterator;
> >@@ -71,28 +70,13 @@
> >         return ( ForwardModel ) _forwards.get( forwardName );
> >     }
> >
> >-    public void writeForwards( ForwardDocument.Forward[]
> >existingForwards, XmlObject xmlForwardContainer )
> >+    public void writeForwards( XmlModelWriter xw, Element
> >forwardsParentElement )
> >     {
> >         for ( Iterator i = _forwards.values().iterator(); i.hasNext(); )
> >         {
> >             ForwardModel fwd = ( ForwardModel ) i.next();
> >-            ForwardDocument.Forward fwdToEdit = null;
> >-
> >-            for ( int j = 0; j < existingForwards.length; ++j )
> >-            {
> >-                if ( fwd.getName().equals( existingForwards[j].getName() ) )
> >-                {
> >-                    fwdToEdit = existingForwards[j];
> >-                    break;
> >-                }
> >-            }
> >-
> >-            if ( fwdToEdit == null )
> >-            {
> >-                fwdToEdit = addNewForward( xmlForwardContainer );
> >-            }
> >-
> >-            fwd.writeToXMLBean( fwdToEdit );
> >+            Element fwdToEdit = findChildElement(xw,
> >forwardsParentElement, "forward", "name", fwd.getName(), true);
> >+            fwd.writeXML( xw, fwdToEdit );
> >         }
> >     }
> >
> >@@ -112,6 +96,5 @@
> >     {
> >         _forwards.remove( forward.getName() );
> >     }
> >-
> >-    protected abstract ForwardDocument.Forward addNewForward(
> >XmlObject xmlForwardContainer );
> >+
> > }
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ActionModel.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ActionModel.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ActionModel.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ActionModel.java
> >Fri Sep 16 13:27:57 2005
> >@@ -22,13 +22,8 @@
> > import java.util.LinkedHashMap;
> > import java.util.Iterator;
> >
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ActionDocument.Action;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.SetPropertyDocument.SetProperty;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ExceptionDocument;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ForwardDocument;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ActionDocument;
> > import org.apache.beehive.netui.compiler.JpfLanguageConstants;
> >-import org.apache.xmlbeans.XmlObject;
> >+import org.w3c.dom.Element;
> >
> >
> > /**
> >@@ -43,11 +38,10 @@
> >
> >     private static final String JPF_ACTION_MAPPING_CLASSNAME =
> >PAGEFLOW_PACKAGE + ".config.PageFlowActionMapping";
> >
> >-
> >+
> >     // Struts attributes.
> >     private ArrayList _exceptionCatches = new ArrayList();
> >     private String _attribute;
> >-    private String _className;
> >     private String _forward;
> >     private String _include;
> >     private String _input;
> >@@ -88,7 +82,7 @@
> >         this._path = path;
> >         this._formBeanName = formName;
> >     }
> >-
> >+
> >     protected ActionModel( StrutsApp parent )
> >     {
> >         this( null, null, parent );
> >@@ -96,7 +90,7 @@
> >
> >     /**
> >      * Construct a copy of the given mapping, with the given path.
> >-     */
> >+     */
> >     public ActionModel( ActionModel src, String newPath )
> >     {
> >         super( src );
> >@@ -104,7 +98,6 @@
> >         this._formBeanName = src._formBeanName;
> >         _exceptionCatches = ( ArrayList ) src._exceptionCatches.clone();
> >         _attribute = src._attribute;
> >-        _className = src._className;
> >         _forward = src._forward;
> >         _include = src._include;
> >         _input = src._input;
> >@@ -126,127 +119,70 @@
> >         _unqualifiedActionPath = src._unqualifiedActionPath;
> >         _defaultForwardName = src._defaultForwardName;
> >     }
> >-
> >+
> >     public void setFormBeanName( String formBeanName )
> >     {
> >         _formBeanName = formBeanName;
> >     }
> >-
> >-    public void writeToXMLBean( Action xb )
> >+
> >+    protected void writeToElement(XmlModelWriter xw, Element element)
> >     {
> >-        xb.setPath( _path );
> >-
> >-        if ( xb.getName() == null && _formBeanName != null )
> >xb.setName( _formBeanName );
> >-        if ( xb.getClassName() == null && _className != null )
> >xb.setClassName( _className );
> >-        if ( xb.getType() == null && _type != null ) xb.setType( _type );
> >-        if ( xb.getAttribute() == null && _attribute != null )
> >xb.setAttribute( _attribute );
> >-        if ( xb.getInput() == null && _input != null ) xb.setInput( _input );
> >-        if ( xb.getParameter() == null && _parameter != null )
> >xb.setParameter( _parameter );
> >-        if ( xb.getPrefix() == null && _prefix != null )
> >xb.setPrefix( _prefix );
> >-        if ( xb.getSuffix() == null && _suffix != null )
> >xb.setSuffix( _suffix );
> >-
> >-        if ( xb.getScope() == null )
> >-        {
> >-            if ( _scope != null )
> >-            {
> >-                if ( _scope.equals( "request" ) )
> >-                {
> >-                    xb.setScope( Action.Scope.REQUEST );
> >-                }
> >-                else if ( _scope.equals( "session" ) )
> >-                {
> >-                    xb.setScope( Action.Scope.SESSION );
> >-                }
> >-                else
> >-                {
> >-                    assert false : _scope;
> >-                }
> >-            }
> >-            else
> >-            {
> >-                xb.setScope( Action.Scope.REQUEST );
> >-            }
> >-        }
> >-
> >-        if ( xb.getRoles() == null && _roles != null ) xb.setRoles( _roles );
> >-        if ( xb.getForward2() == null &&  _forward != null )
> >xb.setForward2( _forward );
> >-        if ( xb.getInclude() == null && _include != null )
> >xb.setInclude( _include );
> >-        if ( xb.getUnknown() == null && _unknown ) xb.setUnknown(
> >Action.Unknown.TRUE );
> >-        if ( xb.getValidate() == null ) xb.setValidate( _validate ?
> >Action.Validate.TRUE : Action.Validate.FALSE );
> >-
> >-        if (  _unqualifiedActionPath != null ) addSetProperty( xb,
> >"unqualifiedActionPath", _unqualifiedActionPath );
> >-        if ( _formMember != null ) addSetProperty( xb, "formMember",
> >_formMember );
> >-        if ( _formClass != null ) addSetProperty( xb, "formClass",
> >_formClass );
> >-        if ( _loginRequired ) addSetProperty( xb, "loginRequired",
> >_loginRequired );
> >-        if ( _preventDoubleSubmit ) addSetProperty( xb,
> >"preventDoubleSubmit", _preventDoubleSubmit );
> >-        if ( _isOverloaded ) addSetProperty( xb, "overloaded", _isOverloaded );
> >-        if ( _readonly ) addSetProperty( xb, "readonly", _readonly );
> >-        if ( _isSimpleAction ) addSetProperty( xb, "simpleAction",
> >_isSimpleAction );
> >-        if ( _defaultForwardName != null ) addSetProperty( xb,
> >"defaultForward", _defaultForwardName );
> >-
> >+        element.setAttribute("path", _path);
> >+        setElementAttribute(element, "name", _formBeanName);
> >+        setElementAttribute(element, "className", getClassName());
> >+        setElementAttribute(element, "type", _type);
> >+        setElementAttribute(element, "attribute", _attribute);
> >+        setElementAttribute(element, "input", _input);
> >+        setElementAttribute(element, "parameter", _parameter);
> >+        setElementAttribute(element, "prefix", _prefix);
> >+        setElementAttribute(element, "suffix", _suffix);
> >+        setElementAttribute(element, "scope", _scope != null ? _scope
> >: "request");
> >+        setElementAttribute(element, "roles", _roles);
> >+        setElementAttribute(element, "forward", _forward);
> >+        setElementAttribute(element, "include", _include);
> >+        setElementAttribute(element, "validate",
> >Boolean.toString(_validate));  // always set the value, even if false
> >+        addSetProperty( xw, element, "unqualifiedActionPath",
> >_unqualifiedActionPath );
> >+        addSetProperty( xw, element, "formMember", _formMember );
> >+        addSetProperty( xw, element, "formClass", _formClass );
> >+        addSetProperty( xw, element, "loginRequired", _loginRequired );
> >+        addSetProperty( xw, element, "preventDoubleSubmit",
> >_preventDoubleSubmit );
> >+        addSetProperty( xw, element, "overloaded", _isOverloaded );
> >+        addSetProperty( xw, element, "readonly", _readonly );
> >+        addSetProperty( xw, element, "simpleAction", _isSimpleAction );
> >+        addSetProperty( xw, element, "defaultForward", _defaultForwardName );
> >+        addSetProperty( xw, element, "formBeanMessageResourcesKey",
> >_formBeanMessageResourcesKey );
> >+
> >         if ( _conditionalForwards != null )
> >         {
> >-            addSetProperty( xb, "conditionalForwards", getMapString(
> >_conditionalForwards) );
> >-        }
> >-
> >-        if ( _formBeanMessageResourcesKey != null )
> >-        {
> >-            addSetProperty( xb, "formBeanMessageResourcesKey",
> >_formBeanMessageResourcesKey );
> >+            addSetProperty( xw, element, "conditionalForwards",
> >getMapString( _conditionalForwards) );
> >         }
> >-
> >+
> >         if ( _exceptionCatches != null && ! _exceptionCatches.isEmpty() )
> >         {
> >-            ExceptionDocument.Exception[] existingExceptions =
> >xb.getExceptionArray();
> >-
> >             for ( int i = 0; i < _exceptionCatches.size(); ++i )
> >             {
> >                 ExceptionModel ec = ( ExceptionModel )
> >_exceptionCatches.get( i );
> >-                ExceptionDocument.Exception exceptionToEdit = null;
> >-
> >-                for ( int j = 0; j < existingExceptions.length; ++j )
> >-                {
> >-                    if ( ec.getType().equals(
> >existingExceptions[j].getType() ) )
> >-                    {
> >-                        exceptionToEdit = existingExceptions[j];
> >-                        break;
> >-                    }
> >-                }
> >-
> >-                if ( exceptionToEdit == null )
> >-                {
> >-                    exceptionToEdit = xb.addNewException();
> >-                }
> >-
> >-                ec.writeToXMLBean( exceptionToEdit );
> >+                Element exceptionToEdit = findChildElement(xw,
> >element, "exception", "type", ec.getType(), true);
> >+                ec.writeXML( xw, exceptionToEdit );
> >             }
> >         }
> >-
> >+
> >         //
> >         // forwards
> >         //
> >-        writeForwards( xb.getForwardArray(), xb );
> >-
> >-        addComment( xb );
> >-    }
> >-
> >-    private void addSetProperty( ActionDocument.Action xb, String
> >propertyName, boolean propertyValue )
> >-    {
> >-        addSetProperty( xb, propertyName, Boolean.toString( propertyValue ) );
> >+        writeForwards( xw, element );
> >     }
> >-
> >-    private void addSetProperty( ActionDocument.Action xb, String
> >propertyName, String propertyValue )
> >+
> >+    private void addSetProperty( XmlModelWriter xw, Element element,
> >String propertyName, boolean propertyValue )
> >     {
> >-        SetProperty prop = xb.addNewSetProperty();
> >-        prop.setProperty( propertyName );
> >-        prop.setValue( propertyValue );
> >-        if ( xb.getClassName() == null ) xb.setClassName(
> >JPF_ACTION_MAPPING_CLASSNAME );
> >+        if (propertyValue) addSetProperty( xw, element, propertyName,
> >Boolean.toString( propertyValue ) );
> >     }
> >-
> >-    protected ForwardDocument.Forward addNewForward( XmlObject xmlObject )
> >+
> >+    private void addSetProperty( XmlModelWriter xw, Element element,
> >String propertyName, String propertyValue )
> >     {
> >-        return ( ( Action ) xmlObject ).addNewForward();
> >+        setCustomProperty(xw, element, propertyName, propertyValue,
> >JPF_ACTION_MAPPING_CLASSNAME);
> >     }
> >-
> >+
> >     /**
> >      * Implemented for {@link ExceptionContainer}.
> >      */
> >@@ -265,16 +201,6 @@
> >         this._attribute = attribute;
> >     }
> >
> >-    public String getClassName()
> >-    {
> >-        return _className;
> >-    }
> >-
> >-    public void setClassName( String className )
> >-    {
> >-        this._className = className;
> >-    }
> >-
> >     public String getForward()
> >     {
> >         return _forward;
> >@@ -309,7 +235,7 @@
> >     {
> >         return _formBeanName;
> >     }
> >-
> >+
> >     public String getFormBeanName()
> >     {
> >         return _formBeanName;
> >@@ -344,7 +270,7 @@
> >     {
> >         return _path;
> >     }
> >-
> >+
> >     public String getPath( boolean useUnqualifiedPath )
> >     {
> >         if ( useUnqualifiedPath && _unqualifiedActionPath != null )
> >@@ -446,7 +372,7 @@
> >     {
> >         _loginRequired = loginRequired;
> >     }
> >-
> >+
> >     public void setPreventDoubleSubmit( boolean preventDoubleSubmit )
> >     {
> >         _preventDoubleSubmit = preventDoubleSubmit;
> >@@ -501,23 +427,23 @@
> >     {
> >         _readonly = readonly;
> >     }
> >-
> >+
> >     public void addConditionalForward( String expression, String forwardName )
> >     {
> >         if ( _conditionalForwards == null ) _conditionalForwards =
> >new LinkedHashMap();
> >         _conditionalForwards.put( expression, forwardName );
> >     }
> >-
> >+
> >     private static String getMapString( Map map )
> >     {
> >         StringBuffer retVal = new StringBuffer();
> >-
> >+
> >         for ( Iterator i = map.entrySet().iterator(); i.hasNext(); )
> >         {
> >             Map.Entry entry = ( Map.Entry ) i.next();
> >             retVal.append( entry.getValue() ).append( ':' ).append(
> >entry.getKey() ).append( ';' );
> >         }
> >-
> >+
> >         return retVal.toString();
> >     }
> >
> >@@ -525,6 +451,6 @@
> >     {
> >         _formBeanMessageResourcesKey = formBeanMessageResourcesKey;
> >     }
> >-
> >+
> >
> > }
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ExceptionModel.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ExceptionModel.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ExceptionModel.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/ExceptionModel.java
> >Fri Sep 16 13:27:57 2005
> >@@ -17,10 +17,8 @@
> >  */
> > package org.apache.beehive.netui.compiler.model;
> >
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.SetPropertyDocument.SetProperty;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.ExceptionDocument;
> >-import org.apache.beehive.netui.compiler.model.validation.ValidatorConstants;
> > import org.apache.beehive.netui.compiler.JpfLanguageConstants;
> >+import org.w3c.dom.Element;
> >
> > public class ExceptionModel
> >         extends StrutsElementSupport
> >@@ -36,18 +34,18 @@
> >     private boolean _inheritedPath = false;
> >
> >     private static final String JPF_EXCEPTION_CONFIG_CLASSNAME =
> >PAGEFLOW_PACKAGE + ".config.PageFlowExceptionConfig";
> >-
> >-
> >+
> >+
> >     protected ExceptionModel( StrutsApp parentApp )
> >     {
> >         super( parentApp );
> >     }
> >-
> >+
> >     public ExceptionModel( String type, String path, String
> >handlerMethod, String message,
> >                            String messageKey, StrutsApp parentApp )
> >     {
> >         super( parentApp );
> >-
> >+
> >         _type = type;
> >         _path = path;
> >         _handlerMethod = handlerMethod;
> >@@ -115,56 +113,55 @@
> >         _handlerClass = handlerClass;
> >     }
> >
> >-    public void writeToXMLBean( ExceptionDocument.Exception xb )
> >-
> >+    protected void writeToElement(XmlModelWriter xw, Element element)
> >     {
> >-        xb.setType( _type );
> >+        element.setAttribute("type", _type);
> >
> >-        if ( xb.getPath() == null && _path != null )
> >+        if ( _path != null )
> >         {
> >             boolean relativeToModule = ! _path.startsWith( "/" );
> >-
> >+
> >             if ( relativeToModule )
> >             {
> >-                xb.setPath( "/" + _path );  // struts wants "/" --
> >assumes this is module-relative path
> >+                // struts wants "/" -- assumes this is module-relative path
> >+                setElementAttribute(element, "path", '/' + _path);
> >             }
> >             else
> >             {
> >-                xb.setPath( _path );
> >-                addSetProperty( xb, "isPathContextRelative", "true" );
> >+                setElementAttributeMayBeEmpty(element, "path", _path);
> >+                addSetProperty(xw, element, "isPathContextRelative", "true" );
> >             }
> >         }
> >-
> >-        if ( _inheritedPath ) addSetProperty( xb, "inheritedPath", "true" );
> >-
> >-        if ( xb.getKey() == null && _messageKey != null ) xb.setKey(
> >_messageKey );
> >-
> >+
> >+        if ( _inheritedPath ) addSetProperty(xw, element,
> >"inheritedPath", "true" );
> >+
> >+        //
> >+        // Set the message key.  If there isn't one, use the typename
> >as the message key.
> >+        setElementAttribute(element, "key", _messageKey);
> >+        if (_messageKey == null) setElementAttribute(element, "key", _type);
> >+
> >         //
> >         // Struts doesn't support "message" directly -- we'll add
> >this as a custom property.
> >         //
> >-        if ( _message != null ) addSetProperty( xb, "defaultMessage",
> >_message );
> >-
> >-        if ( xb.getKey() == null ) xb.setKey( _type );
> >-
> >+        addSetProperty(xw, element, "defaultMessage", _message );
> >+
> >         //
> >         // Note that we're setting the handler *method* as the
> >handler.  This would break Struts.
> >         //
> >-        if ( xb.getHandler() == null && _handlerMethod != null &&
> >_handlerClass == null )
> >-        {
> >-            xb.setHandler( _handlerMethod );
> >-            addSetProperty( xb, "isHandlerMethod", "true" );
> >+        if ( _handlerMethod != null && _handlerClass == null ) {
> >+            setElementAttribute(element, "handler", _handlerMethod);
> >+            addSetProperty(xw, element, "isHandlerMethod", "true" );
> >+        }
> >+        else {
> >+            setElementAttribute(element, "handler", _handlerClass);
> >         }
> >-
> >-        if ( _readonly ) addSetProperty( xb, "readonly", "true" );
> >-        if ( xb.getHandler() == null && _handlerClass != null )
> >xb.setHandler( _handlerClass );
> >-    }
> >-
> >-    private void addSetProperty( ExceptionDocument.Exception xb,
> >String propertyName, String propertyValue )
> >-    {
> >-        SetProperty prop = xb.addNewSetProperty();
> >-        prop.setProperty( propertyName );
> >-        prop.setValue( propertyValue );
> >-        if ( xb.getClassName() == null ) xb.setClassName(
> >JPF_EXCEPTION_CONFIG_CLASSNAME );
> >+
> >+        if ( _readonly ) addSetProperty(xw, element, "readonly", "true" );
> >+    }
> >+
> >+    private void addSetProperty( XmlModelWriter xw, Element element,
> >String propertyName, String propertyValue )
> >+    {
> >+        setCustomProperty(xw, element, propertyName, propertyValue,
> >JPF_EXCEPTION_CONFIG_CLASSNAME);
> >     }
> >
> >     public boolean isReadonly()
> >
> >Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
> >URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java?rev=289648&r1=289647&r2=289648&view=diff
> >==============================================================================
> >--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
> >(original)
> >+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/FormBeanModel.java
> >Fri Sep 16 13:27:57 2005
> >@@ -21,9 +21,8 @@
> > import java.util.Collection;
> > import java.util.List;
> >
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.FormBeanDocument;
> >-import org.apache.beehive.netui.compiler.model.schema.struts11.SetPropertyDocument.SetProperty;
> > import org.apache.beehive.netui.compiler.JpfLanguageConstants;
> >+import org.w3c.dom.Element;
> >
> >
> > /**
> >@@ -90,18 +89,17 @@
> >     }
> >
> >
> >-    private static final String JPF_ACTION_FORM_BEAN_CLASSNAME =
> >PAGEFLOW_PACKAGE + ".config.PageFlowActionFormBean";
> >+    private static final String CUSTOM_ACTION_FORM_BEAN_CLASSNAME =
> >PAGEFLOW_PACKAGE + ".config.PageFlowActionFormBean";
> >
> >     private String _id = "";  // NOI18N
> >-    private String _className = null;
> >     private boolean _dynamic = false;
> >     private String _name = null;  // required to be set
> >     private String _type = null;  // required to be set
> >-
> >-    /** This is a NetUI-specific property. */
> >+
> >+    /** This is a NetUI-specific property. */
> >     private String _actualType = null;
> >-
> >-    /** This is a NetUI-specific property. */
> >+
> >+    /** This is a NetUI-specific property. */
> >     private boolean _pageFlowScoped;  // required to be set
> >
> >     private ArrayList _properties = new ArrayList();
> >@@ -115,25 +113,21 @@
> >         _pageFlowScoped = pageFlowScoped;
> >     }
> >
> >-    public void writeToXMLBean( FormBeanDocument.FormBean xb )
> >+    protected void writeToElement(XmlModelWriter xw, Element element)
> >     {
> >-        xb.setName( _name );
> >+        element.setAttribute("name", _name);
> >
> >-        if ( xb.getType() == null ) xb.setType( _type );
> >-        if ( xb.getId() == null && _id != null && _id.length() > 0 )
> >xb.setId( _id );
> >-        if ( xb.getClassName() == null &&_className != null )
> >xb.setClassName( _className );
> >-        if ( xb.getDynamic() == null && _dynamic ) xb.setDynamic(
> >FormBeanDocument.FormBean.Dynamic.TRUE );
> >-
> >-        if ( _actualType != null && ! _actualType.equals( xb.getType() ) )
> >-        {
> >-            SetProperty prop = xb.addNewSetProperty();
> >-            prop.setProperty( "actualType" );
> >-            prop.setValue( _actualType );
> >-            if ( xb.getClassName() == null ) xb.setClassName(
> >JPF_ACTION_FORM_BEAN_CLASSNAME );
> >-        }
> >+        setElementAttribute(element, "type", _type);
> >+        setElementAttribute(element, "id", _id);
> >+        setElementAttribute(element, "className", getClassName());
> >+        setElementAttribute(element, "dynamic", _dynamic);
> >
> >+        if ( _actualType != null && !
> >_actualType.equals(element.getAttribute("type")) )
> >+        {
> >+            setCustomProperty(xw, element, "actualType", _actualType,
> >CUSTOM_ACTION_FORM_BEAN_CLASSNAME);
> >+        }
> >     }
> >-
> >+
> >     public String getId()
> >     {
> >         return _id;
> >@@ -144,11 +138,6 @@
> >         _id = id;
> >     }
> >
> >-    public String getClassName()
> >-    {
> >-        return _className;
> >-    }
> >-
> >     public void setClassName( String className )
> >     {
> >         if ( className != null )
> >@@ -156,7 +145,7 @@
> >             if ("org.apache.struts.action.DynaActionForm".equals(
> >className ) )  // NOI18N
> >                 _dynamic = true;
> >
> >-            _className = className;
> >+            setClassName(className);
> >         }
> >     }
> >
> >
> >
>

Mime
View raw message