You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2005/09/16 22:30:17 UTC
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/...
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);
}
}
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
Posted by Rich Feit <ri...@gmail.com>.
Whoops, I meant to delete the entire 'schema' directory. Fixed with
r289661 - thanks for noticing it.
Rich
Eddie O'Neil wrote:
>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 <ri...@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 <ri...@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);
>>> }
>>> }
>>>
>>>
>>>
>>>
>>>
>
>
>
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
Posted by Eddie O'Neil <ek...@gmail.com>.
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 <ri...@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 <ri...@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);
> > }
> > }
> >
> >
> >
>
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/gramma
Posted by Rich Feit <ri...@gmail.com>.
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 <ri...@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);
> }
> }
>
>
>
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/gramma
Posted by Eddie O'Neil <ek...@gmail.com>.
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 <ri...@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);
}
}