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 [3/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/...

Modified: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidationModel.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidationModel.java?rev=289648&r1=289647&r2=289648&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidationModel.java (original)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/model/validation/ValidationModel.java Fri Sep 16 13:27:57 2005
@@ -17,16 +17,13 @@
  */
 package org.apache.beehive.netui.compiler.model.validation;
 
-import org.apache.beehive.netui.compiler.model.schema.validator11.FormsetDocument;
-import org.apache.beehive.netui.compiler.model.schema.validator11.FormValidationDocument;
+import org.apache.beehive.netui.compiler.model.XmlElementSupport;
+import org.apache.beehive.netui.compiler.model.XmlModelWriter;
+import org.apache.beehive.netui.compiler.model.XmlModelWriterException;
 import org.apache.beehive.netui.compiler.JpfLanguageConstants;
 import org.apache.beehive.netui.compiler.FatalCompileTimeException;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlDocumentProperties;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlOptions;
+import org.w3c.dom.Element;
 
-import java.io.PrintStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -39,6 +36,7 @@
 import java.util.Iterator;
 
 public abstract class ValidationModel
+        extends XmlElementSupport
         implements JpfLanguageConstants
 {
     private Map _localeSets = new HashMap();
@@ -206,8 +204,8 @@
         ValidatableField field = entity.getField( fieldName );
         if ( field == null )
         {
-            field = ValidatableFieldFactory.getInstance( fieldName, ruleInfo.getFieldDisplayName(),
-                                                         ruleInfo.getFieldDisplayNameKey(), getValidatorVersion() );
+            field = new ValidatableField( fieldName, ruleInfo.getFieldDisplayName(), ruleInfo.getFieldDisplayNameKey(),
+                                          ! getValidatorVersion().equals(ValidatorVersion.oneZero) );
             entity.addField( field );
         }
 
@@ -217,8 +215,9 @@
         if ( rule != null ) { field.addRule( rule ); }
     }
     
+    
     public void writeXml( PrintWriter writer, File mergeFile )
-        throws XmlException, IOException, FatalCompileTimeException
+        throws IOException, FatalCompileTimeException, XmlModelWriterException
     {
         //
         // First, if we haven't written the all-locale rules to each locale, do so now.
@@ -248,81 +247,33 @@
             _rulesToAddForAllLocales = null;
         }
         
+        String publicID;
+        String systemID;
         
-        //
-        // Create and initialize the document, or parse the given one (with which we'll merge).
-        //
-        FormValidationDocument doc;
-        
-        if ( mergeFile != null && mergeFile.canRead() )
+        if ( _validatorVersion.equals( ValidatorVersion.oneZero ) )
         {
-            doc = FormValidationDocument.Factory.parse( mergeFile );
+            publicID = "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN";
+            systemID = "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd";
         }
         else
         {
-            doc = FormValidationDocument.Factory.newInstance();
+            publicID = "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN";
+            systemID = "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd";
         }
         
-        XmlDocumentProperties dp = doc.documentProperties();
-        
-        if ( dp.getDoctypeName() == null )
-        {
-            dp.setDoctypeName( "form-validation" );  // NOI18N
-        }
-
-        if ( dp.getDoctypePublicId() == null )
-        {
-            if ( _validatorVersion.equals( ValidatorVersion.oneZero ) )
-            {
-                dp.setDoctypePublicId( "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" );
-            }
-            else
-            {
-                dp.setDoctypePublicId( "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN" );
-            }
-        }
-
-        if ( dp.getDoctypeSystemId() == null )
-        {
-            if ( _validatorVersion.equals( ValidatorVersion.oneZero ) )
-            {
-                dp.setDoctypeSystemId( "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd" );
-            }
-            else
-            {
-                dp.setDoctypeSystemId( "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd" );
-            }
-        }
-        
-        
-        FormValidationDocument.FormValidation formValidationElement = doc.getFormValidation();
-        
-        if ( formValidationElement == null )
-        {
-            formValidationElement = doc.addNewFormValidation();
-        }
-        
-        
-        //
-        // Write the "generated by" comment.
-        //
-        XmlCursor curs = formValidationElement.newCursor();        
-        String headerComment = getHeaderComment( mergeFile );
-        if ( headerComment != null ) curs.insertComment( headerComment );
-                
-        
+        String comment = getHeaderComment(mergeFile);
+        XmlModelWriter xw = new XmlModelWriter( mergeFile, "form-validation", publicID, systemID, comment);
+        writeXML(xw, xw.getRootElement());
+        xw.simpleFastWrite(writer);
+    }
+    
+    protected void writeToElement(XmlModelWriter xw, Element element)
+    {
         //
         // Now write out all the LocaleSets, which contain the forms/fields/rules.
         //
-        writeLocaleSets( formValidationElement );
-        writeLocaleSet( _defaultLocaleSet, formValidationElement );
-        
-        //
-        // Write the file.
-        //
-        XmlOptions options = new XmlOptions();
-        options.setSavePrettyPrint();
-        doc.save( writer, options );
+        writeLocaleSets(xw, element);
+        writeLocaleSet(xw, element, _defaultLocaleSet);
     }
     
     protected String getHeaderComment( File mergeFile )
@@ -331,7 +282,7 @@
         return null;
     }
     
-    private void writeLocaleSets( FormValidationDocument.FormValidation formValidationElement )
+    private void writeLocaleSets(XmlModelWriter xw, Element element)
     {
         //
         // Commons Validator behavior is to build a key from the locale of a FormSet
@@ -370,57 +321,48 @@
             }
         }
 
-        writeLocaleSets( langCountryVariant, formValidationElement );
-        writeLocaleSets( langCountry, formValidationElement );
-        writeLocaleSets( lang, formValidationElement );
+        writeLocaleSets(xw, element, langCountryVariant);
+        writeLocaleSets(xw, element, langCountry);
+        writeLocaleSets(xw, element, lang);
     }
 
-    private void writeLocaleSets( Collection locales, FormValidationDocument.FormValidation formValidationElement )
+    private void writeLocaleSets(XmlModelWriter xw, Element element, Collection locales)
     {
         for ( java.util.Iterator ii = locales.iterator(); ii.hasNext(); )  
         {
             Locale locale = ( Locale ) ii.next();
             LocaleSet localeSet = ( LocaleSet ) _localeSets.get( locale );
-            writeLocaleSet( localeSet, formValidationElement );
+            writeLocaleSet(xw, element, localeSet);
         }
     }
 
-    private void writeLocaleSet( LocaleSet localeSet, FormValidationDocument.FormValidation formValidationElement )
+    private void writeLocaleSet(XmlModelWriter xw, Element element, LocaleSet localeSet)
     {
-        FormsetDocument.Formset[] existingFormSetElements = formValidationElement.getFormsetArray();
-        FormsetDocument.Formset formSetElementToUse = null;
         Locale locale = localeSet.getLocale();
+        Element formSetElement = null;
         
-        for ( int i = 0; i < existingFormSetElements.length; i++ )
-        {
-            FormsetDocument.Formset existingFormSetElement = existingFormSetElements[i];
-            
-            if ( locale == null && existingFormSetElement.getLanguage() == null )
-            {
-                formSetElementToUse = existingFormSetElement;
-                break;
-            }
-            else if ( locale != null && locale.getLanguage().equals( existingFormSetElement.getLanguage() ) )
-            {
-                if ( ( locale.getCountry().length() == 0 && existingFormSetElement.getCountry() == null )
-                     || locale.getCountry().equals( existingFormSetElement.getCountry() ) )
-                {
-                    if ( ( locale.getVariant().length() == 0 && existingFormSetElement.getVariant() == null )
-                         || locale.getVariant().equals( existingFormSetElement.getVariant() ) )
-                    {
-                        formSetElementToUse = existingFormSetElement;
-                        break;
-                    }
+        if (locale == null) {
+            formSetElement = findChildElement(xw, element, "formset", "language", null, false);
+        } else {
+            Element possibleMatch = findChildElement(xw, element, "formset", "language", locale.getLanguage(), false);
+            if (possibleMatch != null) {
+                String country = getElementAttribute(possibleMatch, "country");
+                String variant = getElementAttribute(possibleMatch, "variant");
+                String localeCountry = locale.getCountry();
+                String localeVariant = locale.getVariant();
+                
+                if (((localeCountry.length() == 0 && country == null) || localeCountry.equals(country))
+                    && ((localeVariant.length() == 0 && variant == null) || localeVariant.equals(variant))) {
+                    formSetElement = possibleMatch;
                 }
             }
         }
         
-        if ( formSetElementToUse == null )
-        {
-            formSetElementToUse = formValidationElement.addNewFormset();
+        if (formSetElement == null) {
+            formSetElement = xw.addElement(element, "formset");
         }
         
-        localeSet.writeToXMLBean( formSetElementToUse );
+        localeSet.writeXML(xw, formSetElement);
     }
 
     public boolean isEmpty()

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd?rev=289648&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd Fri Sep 16 13:27:57 2005
@@ -0,0 +1,695 @@
+<!--
+     DTD for the Struts Application Configuration File, Version 1.1
+
+     To support validation of your configuration file, include the following
+     DOCTYPE element at the beginning (after the "xml" declaration):
+
+     <!DOCTYPE struts-config PUBLIC
+       "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
+       "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
+
+     $Id: struts-config_1_1.dtd 51429 2004-02-17 05:51:48Z martinc $
+-->
+
+
+<!-- ========== Defined Types ============================================= -->
+
+
+<!-- An "AttributeName" is the identifier of a page, request, session, or
+     application scope attribute.
+-->
+<!ENTITY % AttributeName "CDATA">
+
+
+<!-- A "BeanName" is the identifier of a JavaBean, such as a form bean,
+     and also serves as the name of the corresponding scripting variable
+     and the name of the JSP attribute under which the bean is accessed.
+     Therefore, it must conform to the rules for a Java identifier.
+-->
+<!ENTITY % BeanName "CDATA">
+
+
+<!-- A "Boolean" is the string representation of a boolean (true or false)
+     variable.
+-->
+<!ENTITY % Boolean "(true|false|yes|no)">
+
+
+<!-- A "ClassName" is the fully qualified name of a Java class that is
+     instantiated to provide the functionality of the enclosing element.
+-->
+<!ENTITY % ClassName "CDATA">
+
+
+<!-- An "Integer" is a character string consisting solely of numeric digits,
+     optionally preceeded by a minus sign, that can be converted to a
+     32-bit integer.
+-->
+<!ENTITY % Integer "CDATA">
+
+
+<!-- A "Location" is a relative path, delimited by "/" characters, that
+     defines the location of a resource relative to the location of the
+     Struts configuration file itself.
+-->
+<!ENTITY % Location "#PCDATA">
+
+
+<!-- A "PropName" is the name of a JavaBeans property, and must begin with
+     a lower case letter and contain only characters that are legal in a
+     Java identifier.
+-->
+<!ENTITY % PropName "CDATA">
+
+
+<!-- A "RequestPath" is an module-relative URI path, beginning with a
+     slash, that identifies a mapped resource (such as a JSP page or a servlet)
+     within this web application.
+-->
+<!ENTITY % RequestPath "CDATA">
+
+
+<!-- The name of a JSP bean scope within which such a form bean may be
+     accessed.
+-->
+<!ENTITY % RequestScope "(request|session)">
+
+
+<!-- ========== Top Level Elements ======================================== -->
+
+
+<!-- The "struts-config" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT struts-config (data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)>
+<!ATTLIST struts-config  id             ID              #IMPLIED>
+
+
+<!-- The "data-sources" element describes a set of DataSource objects [JDBC 2.0
+     Standard Extension]. The individual DataSource objects are configured through
+     nested <data-source> elements.
+-->
+<!ELEMENT data-sources (data-source*)>
+<!ATTLIST data-sources   id             ID              #IMPLIED>
+
+
+<!-- The "data-source" element describes a DataSource object [JDBC 2.0 Standard
+     Extension] that will be instantiated, configured, and made available as a
+     servlet context attribute (or "application-scope bean"). Any object can be
+     specified so long as it implements [javax.sql.DataSource] and can be
+     configured entirely from JavaBean properties. The following attributes
+     are required:
+
+     className       The configuration bean for this DataSource object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.DataSourceConfig"]
+
+     key             Servlet context attribute key under which this data source
+                     will be stored.  Default is the value specified by string
+                     constant defined by Globals.DATA_SOURCE_KEY. The application
+                     module prefix (if any) is appended to the key
+                     (${key}$prefix}).
+                     [org.apache.struts.Globals.DATA_SOURCE_KEY]
+
+                     NOTE: The application module prefix includes the leading
+                     slash, so the default datasource for a module named "foo" is
+                     stored under "org.apache.struts.action.DATA_SOURCE/foo".
+
+     type            Fully qualified Java class name for this data source object.
+                     The class must implement DataSource [javax.sql.DataSource],
+                     and the object must be configurable entirely from JavaBean
+                     properties.
+-->
+<!ELEMENT data-source (set-property*)>
+<!ATTLIST data-source    id             ID              #IMPLIED>
+<!ATTLIST data-source    className      %ClassName;     #IMPLIED>
+<!ATTLIST data-source    key            %AttributeName; #IMPLIED>
+<!ATTLIST data-source    type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-beans" element describes the set of form bean descriptors for this
+     module. The following attributes are defined:
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionFormBean objects. If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "formBean" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT form-beans (form-bean*)>
+<!ATTLIST form-beans     id             ID              #IMPLIED>
+<!ATTLIST form-beans     type           %ClassName;     #IMPLIED>
+
+
+<!-- The "form-bean" element describes an ActionForm subclass
+     [org.apache.struts.action.ActionForm] that can be referenced by an "action"
+     element.
+
+
+The "form-bean" element describes a particular form bean, which is a
+     JavaBean that implements the org.apache.struts.action.ActionForm
+     class.  The following attributes are defined:
+
+     className       The configuration bean for this form bean object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormBeanConfig"]
+
+     dynamic         If the form bean type is a  DynaActionForm subclass (that you
+                     created), then (and only then) set this attribute to "true".
+                     If the type is set to the default DynaActionForm or any
+                     conventional ActionForm subclass, then this attribute can be
+                     omitted.
+                     [true] if type is "org.apache.struts.action.DynaActionForm"
+                     [false] otherwise  DEPRECATED - THIS IS NOW DETERMINED
+                     DYNAMICALLY BASED ON THE SPECIFIED IMPLEMENTATION CLASS.
+
+     name            The unique identifier for this form bean. Referenced by the
+                     <action> element to specify which form bean to use with its
+                     request.
+
+     type            Fully qualified Java class name of the ActionForm subclass
+                     to use with this form bean.
+-->
+<!ELEMENT form-bean (icon?, display-name?, description?, set-property*, form-property*)>
+<!ATTLIST form-bean      id             ID              #IMPLIED>
+<!ATTLIST form-bean      className      %ClassName;     #IMPLIED>
+<!ATTLIST form-bean      dynamic        %Boolean;       #IMPLIED>
+<!ATTLIST form-bean      name           %BeanName;      #REQUIRED>
+<!ATTLIST form-bean      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "form-property" element describes a JavaBean property that can be used to
+     configure an instance of a DynaActionForm or a subclass thereof. This element
+     is only utilized when the "type" attribute of the enclosing "form-bean" element
+     is [org.apache.struts.action.DynaActionForm] or a subclass of DynaActionForm. If
+     a custom DynaActionForm subclass is used, then the "dynamic" attribute of the
+     enclosing <form-bean> element must be set to "true". Since Struts 1.1.
+
+     className       The configuration bean for this form property object. If
+                     specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.FormPropertyConfig"]
+
+     initial         String representation of the initial value for this property.
+                     If not specified, primitives will be initialized to zero and
+                     objects initialized to the zero-argument instantiation of that
+                     object class.  For example, Strings will be initialized to ""
+
+
+     name            The name of the JavaBean property described by this element.
+
+     size            The number of array elements to create if the value of the
+                     "type" attribute specifies an array, but there is no value
+                     specified for the "initial" attribute.
+
+     type            Fully qualified Java class name of the field underlying this
+                     property, optionally followed by "[]" to indicate that the
+                     field is indexed.
+-->
+<!ELEMENT form-property  (set-property*)>
+<!ATTLIST form-property  className      %ClassName;     #IMPLIED>
+<!ATTLIST form-property  initial        CDATA           #IMPLIED>
+<!ATTLIST form-property  name           %PropName;      #REQUIRED>
+<!ATTLIST form-property  size           %Integer;       #IMPLIED>
+<!ATTLIST form-property  type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-exceptions" element describes a set of exceptions that might be
+     thrown by an Action object. The handling of individual exception types is
+     configured through nested exception elements. An <action> element may
+     override a global exception handler by registering a local exception handler
+     for the same exception type. Since Struts 1.1.
+-->
+<!ELEMENT global-exceptions (exception*)>
+<!ATTLIST global-exceptions id          ID              #IMPLIED>
+
+
+<!-- The "exception" element registers an ExceptionHandler for an exception type.
+     The following attributes are defined:
+
+    bundle           Servlet context attribute for the message resources bundle
+                     associated with this handler. The default attribute is the
+                     value specified by the string constant declared at
+                     Globals.MESSAGES_KEY.
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+    className        The configuration bean for this ExceptionHandler object.
+                     If specified, className must be a subclass of the default
+                     configuration bean
+                     ["org.apache.struts.config.ExceptionConfig"]
+
+    handler          Fully qualified Java class name for this exception handler.
+                     ["org.apache.struts.action.ExceptionHandler"]
+
+    key              The key to use with this handler's message resource bundle
+                     that will retrieve the error message template for this
+                     exception.
+
+    path             The module-relative URI to the resource that will complete
+                     the request/response if this exception occurs.
+
+    scope            The context ("request" or "session") that is used to access
+                     the ActionError object [org.apache.struts.action.ActionError]
+                     for this exception.
+
+    type             Fully qualified Java class name of the exception type to
+                     register with this handler.
+-->
+<!ELEMENT exception (icon?, display-name?, description?, set-property*)>
+<!ATTLIST exception      id             ID              #IMPLIED>
+<!ATTLIST exception      bundle         %AttributeName; #IMPLIED>
+<!ATTLIST exception      className      %ClassName;     #IMPLIED>
+<!ATTLIST exception      handler        %ClassName;     #IMPLIED>
+<!ATTLIST exception      key            CDATA           #REQUIRED>
+<!ATTLIST exception      path           %RequestPath;   #IMPLIED>
+<!ATTLIST exception      scope          CDATA           #IMPLIED>
+<!ATTLIST exception      type           %ClassName;     #REQUIRED>
+
+
+<!-- The "global-forwards" element describes a set of ActionForward objects
+     [org.apache.struts.action.ActionForward] that are available to all Action
+     objects as a return value. The individual ActionForwards are configured
+     through nested <forward> elements. An <action> element may override a global
+     forward by defining a local <forward> of the same name.
+
+     type            Fully qualified Java class to use when instantiating
+                     ActionForward objects.  If specified, the object must be a
+                     subclass of the default class type.
+
+                     WARNING:  For Struts 1.0, this value is ignored.  You
+                     can set the default implementation class name with the
+                     "forward" initialization parameter to the Struts
+                     controller servlet.
+-->
+<!ELEMENT global-forwards (forward*)>
+<!ATTLIST global-forwards id            ID              #IMPLIED>
+<!ATTLIST global-forwards type          %ClassName;     #IMPLIED>
+
+
+<!-- The "forward" element describes an ActionForward that is to be made
+     available to an Action as a return value. An ActionForward is referenced by
+     a logical name and encapsulates a URI. A "forward" element may be used to
+     describe both global and local ActionForwards. Global forwards are available
+     to all the Action objects in the module. Local forwards can be
+     nested within an <action> element and only available to an Action object
+     when it is invoked through that ActionMapping.
+
+     className       Fully qualified Java class name of ActionForward
+                     subclass to use for this object.
+                     ["org.apache.struts.action.ActionForward"]
+
+    contextRelative  Set this to "true" if, in a modular application, the path
+                     attribute starts with a slash "/" and should be considered
+                     relative to the entire web application rather than the module.
+                     Since Struts 1.1.
+                     [false]
+
+     name            The unique identifier for this forward. Referenced by the
+                     Action object at runtime to select - by its logical name -
+                     the resource that should complete the request/response.
+
+     path            The module-relative or context-relative path to the resources
+                     that is encapsulated by the logical name of this ActionForward.
+                     If the path is to be considered context-relative when used in
+                     a modular application, then the contextRelative attribute
+                     should be set to "true". This value should begin with a slash
+                     ("/") character.
+
+     redirect        Set to "true" if a redirect instruction should be issued to
+                     the user-agent so that a new request is issued for this
+                     forward's resource. If true,  RequestDispatcher.Redirect is
+                     called. If "false", RequestDispatcher.forward is called instead.
+                     [false]
+-->
+<!ELEMENT forward (icon?, display-name?, description?, set-property*)>
+<!ATTLIST forward        id             ID              #IMPLIED>
+<!ATTLIST forward        className      %ClassName;     #IMPLIED>
+<!ATTLIST forward        contextRelative %Boolean;      #IMPLIED>
+<!ATTLIST forward        name           CDATA           #REQUIRED>
+<!ATTLIST forward        path           %RequestPath;   #REQUIRED>
+<!ATTLIST forward        redirect       %Boolean;       #IMPLIED>
+
+
+<!-- The "action-mappings" element describes a set of ActionMapping objects
+     [org.apache.struts.action.ActionMapping] that are available to process
+     requests matching the url-pattern our ActionServlet registered with the
+     container. The individual ActionMappings are configured through nested
+     <action> elements. The following attributes are defined:
+
+     type           Fully qualified Java class to use when instantiating
+                    ActionMapping objects. If specified, the object must be a
+                    subclass of the default class type.
+
+                    WARNING:  For Struts 1.0, this value is ignored.  You
+                    can set the default implementation class name with the
+                    "mapping" initialization parameter to the Struts
+                    controller servlet.
+-->
+<!ELEMENT action-mappings (action*)>
+<!ATTLIST action-mappings id             ID              #IMPLIED>
+<!ATTLIST action-mappings type           %ClassName;     #IMPLIED>
+
+
+<!-- The "action" element describes an ActionMapping object that is to be used
+     to process a request for a specific module-relative URI. The following
+     attributes are defined:
+
+     attribute       Name of the request-scope or session-scope attribute that
+                     is used to access our ActionForm bean, if it is other than
+                     the bean's specified "name". Optional if "name" is specified,
+                     else not valid.
+
+     className       The fully qualified Java class name of the ActionMapping
+                     subclass to use for this action mapping object. Defaults to
+                     the type specified by the enclosing <action-mappings>
+                     element or to "org.apache.struts.action.ActionMapping" if
+                     not specified.
+                     ["org.apache.struts.action.ActionMapping"]
+
+     forward         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     include         Module-relative path of the servlet or other resource that
+                     will process this request, instead of the Action class
+                     specified by "type".  The path WILL NOT be processed
+                     through the "forwardPattern" attribute that is configured
+                     on the "controller" element for this module.
+                     Exactly one of "forward", "include", or "type" must be
+                     specified.
+
+     input           Module-relative path of the action or other resource to
+                     which control should be returned if a validation error is
+                     encountered. Valid only when "name" is specified. Required
+                     if "name" is specified and the input bean returns
+                     validation errors. Optional if "name" is specified and the
+                     input bean does not return validation errors.
+
+     name            Name of the form bean, if any, that is associated with this
+                     action mapping.
+
+     path            The module-relative path of the submitted request, starting
+                     with a "/" character, and without the filename extension if
+                     extension mapping is used.
+
+                     NOTE:  Do *not* include a period in your path name,
+                     because it will look like a filename extension and
+                     cause your Action to not be located.
+
+     parameter       General-purpose configuration parameter that can be used to
+                     pass extra information to the Action object selected by
+                     this action mapping.
+
+     prefix          Prefix used to match request parameter names to ActionForm
+                     property names, if any. Optional if "name" is specified,
+                     else not allowed.
+
+     roles           Comma-delimited list of security role names that are allowed
+                     access to this ActionMapping object. Since Struts 1.1.
+
+     scope           The context ("request" or "session") that is used to
+                     access our ActionForm bean, if any.  Optional if "name" is
+                     specified, else not valid.
+
+     suffix          Suffix used to match request parameter names to ActionForm
+                     bean property names, if any. Optional if "name" is
+                     specified, else not valid.
+
+     type            Fully qualified Java class name of the Action subclass
+                     [org.apache.struts.action.Action] that will process requests
+                     for this action mapping. Not valid if either the "forward"
+                     or "include" attribute is specified.  Exactly one of
+                     "forward", "include", or "type" must be specified.
+
+     unknown         Set to "true" if this object should be configured as the
+                     default action mapping for this module. If a request does not
+                     match another object, it will be passed to the ActionMapping
+                     object with unknown set to "true". Only one ActionMapping
+                     can be marked as "unknown" within a module.
+                     [false]
+
+     validate        Set to "true" if the validate method of the ActionForm bean
+                     should be called prior to calling the Action object for this
+                     action mapping, or set to "false" if you do not want the
+                     validate method called.
+                     [true]
+-->
+<!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)>
+<!ATTLIST action         id             ID              #IMPLIED>
+<!ATTLIST action         attribute      %BeanName;      #IMPLIED>
+<!ATTLIST action         className      %ClassName;     #IMPLIED>
+<!ATTLIST action         forward        %RequestPath;   #IMPLIED>
+<!ATTLIST action         include        %RequestPath;   #IMPLIED>
+<!ATTLIST action         input          %RequestPath;   #IMPLIED>
+<!ATTLIST action         name           %BeanName;      #IMPLIED>
+<!ATTLIST action         parameter      CDATA           #IMPLIED>
+<!ATTLIST action         path           %RequestPath;   #REQUIRED>
+<!ATTLIST action         prefix         CDATA           #IMPLIED>
+<!ATTLIST action         roles          CDATA           #IMPLIED>
+<!ATTLIST action         scope          %RequestScope;  #IMPLIED>
+<!ATTLIST action         suffix         CDATA           #IMPLIED>
+<!ATTLIST action         type           %ClassName;     #IMPLIED>
+<!ATTLIST action         unknown        %Boolean;       #IMPLIED>
+<!ATTLIST action         validate       %Boolean;       #IMPLIED>
+
+
+<!-- The "controller" element describes the ControllerConfig bean
+     [org.apache.struts.config.ControllerConfig] that encapsulates
+     a module's runtime configuration. The following
+     attributes are defined:
+
+     bufferSize      The size of the input buffer used when processing
+                     file uploads.
+                     [4096]
+
+     className       Fully qualified Java class name of the
+                     ControllerConfig subclass for this controller object.
+                     If specified, the object must be a subclass of the
+                     default class.
+                     ["org.apache.struts.config.ControllerConfig"]
+
+     contentType     Default content type (and optional character encoding) to
+                     be set on each response. May be overridden by the Action,
+                     JSP, or other resource to which the request is forwarded.
+                     ["text/html"]
+
+     debug           Debugging detail level for this module. [0]
+                     DEPRECATED - configure the logging detail level
+                     in your underlying logging implementation.
+
+     forwardPattern  Replacement pattern defining how the "path" attribute of a
+                     <forward> element is mapped to a context-relative URL when
+                     it starts with a slash (and when the contextRelative
+                     property is false). This value may consist of any
+                     combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the "path" attribute of the  selected
+                     "forward" element
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                     Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is "$M$P",
+                     which is consistent with the previous behavior of
+                     forwards.  Since Struts 1.1.  ["$M$P"]
+
+     inputForward    Set to "true" if you want the "input" attribute of
+                     <action> elements to be the name of a local or global
+                     ActionForward, which will then be used to calculate the
+                     ultimate URL. Set to "false" (the default) to treat the
+                     "input" parameter of <action> elements as a
+                     module-relative path to the resource
+                     to be used as the input form. Since Struts 1.1.
+                     [false]
+
+     locale          Set to "true" if you want a Locale object stored in the
+                     user's session if not already present.
+                     [true]
+
+     maxFileSize     The maximum size (in bytes) of a file to be accepted as a
+                     file upload.  Can be expressed as a number followed by a
+                     "K", "M", or "G", which are interpreted to mean kilobytes,
+                     megabytes, or gigabytes, respectively.
+                     ["250M"]
+
+     memFileSize     The maximum size (in bytes) of a file whose contents will
+                     be retained in memory after uploading. Files larger than
+                     this threshold will be written to some alternative storage
+                     medium, typically a hard disk. Can be expressed as a number
+                     followed by a "K", "M", or "G", which are interpreted to
+                     mean kilobytes, megabytes, or gigabytes, respectively.
+                     ["256K"]
+
+     multipartClass  The fully qualified Java class name of the multipart
+                     request handler class to be used with this module.
+                     ["org.apache.struts.upload.CommonsMultipartRequestHandler"]
+
+     nocache         Set to "true" if you want the controller to add HTTP
+                     headers for defeating caching to every response from
+                     this module.  [false]
+
+     pagePattern     Replacement pattern defining how the "page" attribute of
+                     custom tags using it is mapped to a context-relative URL
+                     of the corresponding resource.  This value may consist of
+                     any combination of the following:
+                     - "$M" - Replaced by the module prefix of this module
+                     - "$P" - Replaced by the value of the "page" attribute
+                     - "$$" - Causes a literal dollar sign to be rendered
+                     - "$x" - (Where "x" is any character not defined above)
+                              Silently swallowed, reserved for future use
+                     If not specified, the default forwardPattern is
+                     "$M$P", which is consistent with previous hard coded
+                     behavior of URL evaluation for "page" attributes.
+                     ["$M$P"]
+
+     processorClass  The fully qualified Java class name of the
+                     RequestProcessor subclass to be used with this module.
+                     ["org.apache.struts.action.RequestProcessor"]
+
+     tempDir         Temporary working directory to use when processing
+                     file uploads.
+                     [{Directory provided by servlet container}]
+-->
+<!ELEMENT controller     (set-property*)>
+<!ATTLIST controller     id             ID              #IMPLIED>
+<!ATTLIST controller     bufferSize     %Integer;       #IMPLIED>
+<!ATTLIST controller     className      %ClassName;     #IMPLIED>
+<!ATTLIST controller     contentType    CDATA           #IMPLIED>
+<!ATTLIST controller     debug          %Integer;       #IMPLIED>
+<!ATTLIST controller     forwardPattern CDATA           #IMPLIED>
+<!ATTLIST controller     inputForward   %Boolean;       #IMPLIED>
+<!ATTLIST controller     locale         %Boolean;       #IMPLIED>
+<!ATTLIST controller     maxFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     memFileSize    CDATA           #IMPLIED>
+<!ATTLIST controller     multipartClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     nocache        %Boolean;       #IMPLIED>
+<!ATTLIST controller     pagePattern    CDATA           #IMPLIED>
+<!ATTLIST controller     processorClass %ClassName;     #IMPLIED>
+<!ATTLIST controller     tempDir        CDATA           #IMPLIED>
+
+
+<!-- The "message-resources" element describes a MessageResources object with
+     message templates for this module. The following attributes are defined:
+
+     className       The configuration bean for this message resources object.
+                     If specified, the object must be a subclass of the default
+                     configuration bean.
+                     ["org.apache.struts.config.MessageResourcesConfig"]
+
+     factory         Fully qualified Java class name of the
+                     MessageResourcesFactory subclass to use for this message
+                     resources object.
+                     ["org.apache.struts.util.PropertyMessageResourcesFactory"]
+
+     key             Servlet context attribute under which this message
+                     resources bundle will be stored. The default attribute is
+                     the value specified by the string constant at
+                     [Globals.MESSAGES_KEY]. The module prefix (if
+                     any) is appended to the key (${key}${prefix}).
+                     [org.apache.struts.Globals.MESSAGES_KEY]
+
+                     NOTE: The module  prefix includes the leading
+                     slash, so the default message resource bundle for a module
+                     named "foo" is stored under
+                     "org.apache.struts.action.MESSAGE/foo".
+
+     null            Set to "true" if you want our message resources to return a
+                     null string for unknown message keys, or "false" to return a
+                     message with the bad key value.
+
+     parameter       Configuration parameter to be passed to the createResources
+                     method of our factory object.
+-->
+<!ELEMENT message-resources (set-property*)>
+<!ATTLIST message-resources id          ID              #IMPLIED>
+<!ATTLIST message-resources className   %ClassName;     #IMPLIED>
+<!ATTLIST message-resources factory     %ClassName;     #IMPLIED>
+<!ATTLIST message-resources key         %AttributeName; #IMPLIED>
+<!ATTLIST message-resources null        %Boolean;       #IMPLIED>
+<!ATTLIST message-resources parameter   CDATA           #REQUIRED>
+
+
+<!-- The "plug-in" element specifies the fully qualified class name of a
+     general-purpose application plug-in module that receives notification of
+     application startup and shutdown events. An instance of the specified class
+     is created for each element, and can be configured with nested <set-property>
+     elements. The following attributes are supported:
+
+     className       Fully qualified Java class name of the plug-in class; must
+                     implement [org.apache.struts.action.PlugIn].
+-->
+<!ELEMENT plug-in           (set-property*)>
+<!ATTLIST plug-in           id          ID              #IMPLIED>
+<!ATTLIST plug-in           className   %ClassName;     #REQUIRED>
+
+
+<!-- ========== Subordinate Elements ====================================== -->
+
+
+<!-- The "description" element contains descriptive (paragraph length) text
+     about the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT description    (#PCDATA)>
+<!ATTLIST description    id             ID              #IMPLIED>
+
+
+<!-- The "display-name" element contains a short (one line) description of
+     the surrounding element, suitable for use in GUI tools.
+-->
+<!ELEMENT display-name (#PCDATA)>
+<!ATTLIST display-name   id             ID              #IMPLIED>
+
+
+<!-- The "icon" element contains a small-icon and large-icon element which
+     specify the location, relative to the Struts configuration file, for small
+     and large images used to represent the surrounding element in GUI tools.
+-->
+<!ELEMENT icon           (small-icon?, large-icon?)>
+<!ATTLIST icon           id             ID              #IMPLIED>
+
+
+<!-- The "large-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a large (32x32 pixel)
+     icon image.
+-->
+<!ELEMENT large-icon     (%Location;)>
+<!ATTLIST large-icon     id             ID              #IMPLIED>
+
+
+<!-- The "set-property" element specifies the method name and initial value of
+     an additional JavaBean configuration property. When the object representing
+     the surrounding element is instantiated, the accessor for the indicated
+     property is called and passed the indicated value. The "set-property"
+     element is especially useful when a custom subclass is used with
+     <data-source>, <forward>, <action>, or <plug-in> elements. The subclass
+     can be passed whatever other properties may be required to configure the
+     object without changing how the struts-config is parsed.
+
+     property        Name of the JavaBeans property whose setter method
+                     will be called.
+
+     value           String representation of the value to which this
+                     property will be set, after suitable type conversion
+-->
+<!ELEMENT set-property   EMPTY>
+<!ATTLIST set-property   id             ID              #IMPLIED>
+<!ATTLIST set-property   property       %PropName;      #REQUIRED>
+<!ATTLIST set-property   value          CDATA           #REQUIRED>
+
+
+<!-- The "small-icon" element specifies the location, relative to the Struts
+     configuration file, of a resource containing a small (16x16 pixel)
+     icon image.
+-->
+<!ELEMENT small-icon     (%Location;)>
+<!ATTLIST small-icon     id             ID              #IMPLIED>
+

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.dtd
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd?rev=289648&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd Fri Sep 16 13:27:57 2005
@@ -0,0 +1,346 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xs:element name="action">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="icon" minOccurs="0"/>
+				<xs:element ref="display-name" minOccurs="0"/>
+				<xs:element ref="description" minOccurs="0"/>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="exception" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="forward" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="attribute" type="xs:string"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="forward" type="xs:string"/>
+			<xs:attribute name="include" type="xs:string"/>
+			<xs:attribute name="input" type="xs:string"/>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="parameter" type="xs:string"/>
+			<xs:attribute name="path" type="xs:string" use="required"/>
+			<xs:attribute name="prefix" type="xs:string"/>
+			<xs:attribute name="roles" type="xs:string"/>
+			<xs:attribute name="scope">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="request"/>
+						<xs:enumeration value="session"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="suffix" type="xs:string"/>
+			<xs:attribute name="type" type="xs:string"/>
+			<xs:attribute name="unknown">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="validate">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="action-mappings">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="action" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="type" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="controller">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="bufferSize" type="xs:string"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="contentType" type="xs:string"/>
+			<xs:attribute name="debug" type="xs:string"/>
+			<xs:attribute name="forwardPattern" type="xs:string"/>
+			<xs:attribute name="inputForward">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="locale">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="maxFileSize" type="xs:string"/>
+			<xs:attribute name="memFileSize" type="xs:string"/>
+			<xs:attribute name="multipartClass" type="xs:string"/>
+			<xs:attribute name="nocache">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="pagePattern" type="xs:string"/>
+			<xs:attribute name="processorClass" type="xs:string"/>
+			<xs:attribute name="tempDir" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="data-source">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="type" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="data-sources">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="data-source" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="description">
+		<xs:complexType>
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="id" type="xs:ID"/>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="display-name">
+		<xs:complexType>
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="id" type="xs:ID"/>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="exception">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="icon" minOccurs="0"/>
+				<xs:element ref="display-name" minOccurs="0"/>
+				<xs:element ref="description" minOccurs="0"/>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="bundle" type="xs:string"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="handler" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string" use="required"/>
+			<xs:attribute name="path" type="xs:string"/>
+			<xs:attribute name="scope" type="xs:string"/>
+			<xs:attribute name="type" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="form-bean">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="icon" minOccurs="0"/>
+				<xs:element ref="display-name" minOccurs="0"/>
+				<xs:element ref="description" minOccurs="0"/>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="form-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="dynamic">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="type" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="form-beans">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="form-bean" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="type" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="form-property">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="initial" type="xs:string"/>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="size" type="xs:string"/>
+			<xs:attribute name="type" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="forward">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="icon" minOccurs="0"/>
+				<xs:element ref="display-name" minOccurs="0"/>
+				<xs:element ref="description" minOccurs="0"/>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="contextRelative">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="path" type="xs:string" use="required"/>
+			<xs:attribute name="redirect">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="global-exceptions">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="exception" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="global-forwards">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="forward" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="type" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="icon">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="small-icon" minOccurs="0"/>
+				<xs:element ref="large-icon" minOccurs="0"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="large-icon">
+		<xs:complexType mixed="true">
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="id" type="xs:ID"/>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="message-resources">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="className" type="xs:string"/>
+			<xs:attribute name="factory" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="null">
+				<xs:simpleType>
+					<xs:restriction base="xs:NMTOKEN">
+						<xs:enumeration value="true"/>
+						<xs:enumeration value="false"/>
+						<xs:enumeration value="yes"/>
+						<xs:enumeration value="no"/>
+					</xs:restriction>
+				</xs:simpleType>
+			</xs:attribute>
+			<xs:attribute name="parameter" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="plug-in">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="set-property" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="className" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="set-property">
+		<xs:complexType>
+			<xs:attribute name="id" type="xs:ID"/>
+			<xs:attribute name="property" type="xs:string" use="required"/>
+			<xs:attribute name="value" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="small-icon">
+		<xs:complexType mixed="true">
+			<xs:simpleContent>
+				<xs:extension base="xs:string">
+					<xs:attribute name="id" type="xs:ID"/>
+				</xs:extension>
+			</xs:simpleContent>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="struts-config">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="data-sources" minOccurs="0"/>
+				<xs:element ref="form-beans" minOccurs="0"/>
+				<xs:element ref="global-exceptions" minOccurs="0"/>
+				<xs:element ref="global-forwards" minOccurs="0"/>
+				<xs:element ref="action-mappings" minOccurs="0"/>
+				<xs:element ref="controller" minOccurs="0"/>
+				<xs:element ref="message-resources" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="plug-in" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="id" type="xs:ID"/>
+		</xs:complexType>
+	</xs:element>
+</xs:schema>

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-config_1_1.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd?rev=289648&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd Fri Sep 16 13:27:57 2005
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+	<xs:element name="arg">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="bundle" type="xs:string"/>
+			<xs:attribute name="position" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="arg0">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="arg1">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="arg2">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="arg3">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="constant">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="constant-name"/>
+				<xs:element ref="constant-value"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="constant-name" type="xs:string"/>
+	<xs:element name="constant-value" type="xs:string"/>
+	<xs:element name="field">
+		<xs:complexType>
+			<xs:choice minOccurs="0" maxOccurs="unbounded">
+				<xs:element ref="msg"/>
+				<xs:element ref="arg"/>
+				<xs:element ref="arg0"/>
+				<xs:element ref="arg1"/>
+				<xs:element ref="arg2"/>
+				<xs:element ref="arg3"/>
+				<xs:element ref="var"/>
+			</xs:choice>
+			<xs:attribute name="property" type="xs:string" use="required"/>
+			<xs:attribute name="depends" type="xs:string"/>
+			<xs:attribute name="page" type="xs:string"/>
+			<xs:attribute name="indexedListProperty" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="form">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="field" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="form-validation">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="global" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="formset" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="formset">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="constant" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="form" maxOccurs="unbounded"/>
+			</xs:sequence>
+			<xs:attribute name="language" type="xs:string"/>
+			<xs:attribute name="country" type="xs:string"/>
+			<xs:attribute name="variant" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="global">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="validator" minOccurs="0" maxOccurs="unbounded"/>
+				<xs:element ref="constant" minOccurs="0" maxOccurs="unbounded"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="javascript" type="xs:string"/>
+	<xs:element name="msg">
+		<xs:complexType>
+			<xs:attribute name="name" type="xs:string"/>
+			<xs:attribute name="key" type="xs:string"/>
+			<xs:attribute name="bundle" type="xs:string"/>
+			<xs:attribute name="resource" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="validator">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="javascript" minOccurs="0"/>
+			</xs:sequence>
+			<xs:attribute name="name" type="xs:string" use="required"/>
+			<xs:attribute name="classname" type="xs:string" use="required"/>
+			<xs:attribute name="method" type="xs:string" use="required"/>
+			<xs:attribute name="methodParams" type="xs:string" use="required"/>
+			<xs:attribute name="msg" type="xs:string" use="required"/>
+			<xs:attribute name="depends" type="xs:string"/>
+			<xs:attribute name="jsFunctionName" type="xs:string"/>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="var">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element ref="var-name"/>
+				<xs:element ref="var-value"/>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:element name="var-name" type="xs:string"/>
+	<xs:element name="var-value" type="xs:string"/>
+</xs:schema>

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/struts-validator_1_1.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd?rev=289648&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd Fri Sep 16 13:27:57 2005
@@ -0,0 +1,246 @@
+<!--
+    DTD for the Validator Rules Configuration File, Version 1.0
+
+    To allow for XML validation of your rules configuration
+    file, include the following DOCTYPE element at the beginning (after
+    the "xml" declaration):
+
+    <!DOCTYPE form-validation PUBLIC
+     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
+     "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
+
+    $Id: validator_1_0.dtd,v 1.4 2002/10/23 01:32:01 turner Exp $
+-->
+
+
+<!-- =================================================== Top Level Elements -->
+
+
+<!--
+     The "form-validation" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT form-validation (global*, formset*)>
+
+
+<!--
+    The elements defined here are all global and must be nested within a
+    "global" element.
+-->
+<!ELEMENT global (validator*, constant*)>
+
+
+<!--
+     The "validator" element defines what validators objects can be used with
+     the fields referenced by the formset elements. The validator element can
+     accept 4 properties: name, classname, method, methodparams, msg, depends,
+     and jsFunctionName.
+-->
+<!ELEMENT validator (javascript?)>
+<!ATTLIST validator name           CDATA #REQUIRED
+                    classname      CDATA #REQUIRED
+                    method         CDATA #REQUIRED
+                    methodParams   CDATA #REQUIRED
+                    msg            CDATA #REQUIRED
+                    depends        CDATA #IMPLIED
+                    jsFunctionName CDATA #IMPLIED >
+
+
+<!--
+     The "javascript" element defines a JavaScript that can be used to perform
+     client-side validators.
+-->
+<!ELEMENT javascript (#PCDATA)>
+
+
+<!--
+     The "constant" element defines a static value that can be used as
+     replacement parameters within "field" elements. The "constant-name" and
+     "constant-value" elements define the constant's reference id and replacement
+     value.
+-->
+<!ELEMENT constant (constant-name, constant-value)>
+<!ELEMENT constant-name  (#PCDATA)>
+<!ELEMENT constant-value (#PCDATA)>
+
+
+<!--
+      The "formset" element defines a set of forms for a locale. Formsets for
+      specific locales can override only those fields that change. The
+      localization is properly scoped, so that a formset can override just the
+      language, or just the country, or both.
+-->
+<!ELEMENT formset (constant*, form+)>
+<!ATTLIST formset language     CDATA #IMPLIED
+                  country      CDATA #IMPLIED >
+
+
+<!--
+     The "form" element defines a set of fields to be validated. The name
+     corresponds to the identifer the application assigns to the form. 
+-->
+<!ELEMENT form    (field+ )>
+<!ATTLIST form    name         CDATA #REQUIRED>
+
+
+<!--
+     The "field" element defines the properties to be validated. In a
+     web application, a field would also correspond to a control on
+     a HTML form. To validate the properties, the validator works through
+     a JavaBean representation. The field element can accept up to 4 
+     attributes:
+
+     property        The property on the JavaBean corresponding to this
+                     field element.
+
+     depends         The comma-delimited list of validators to apply against
+                     this field. For the field to succeed, all the
+                     validators must succeed.
+
+     page            The JavaBean corresponding to this form may include
+                     a page property. Only fields with a "page" attribute
+                     value that is equal to or less than the page property
+                     on the form JavaBean are processed. This is useful when
+                     using a "wizard" approach to completing a large form,
+                     to ensure that a page is not skipped.
+                     [0]
+
+     indexedListProperty
+                     The "indexedListProperty" is the method name that will
+                     return an array or a Collection used to retrieve the
+                     list and then loop through the list performing the
+                     validations for this field.
+
+-->
+<!ELEMENT field   (msg|arg0|arg1|arg2|arg3|var)*>
+<!ATTLIST field   property CDATA #REQUIRED
+                  depends  CDATA #IMPLIED
+                  page     CDATA #IMPLIED
+                  indexedListProperty CDATA #IMPLIED >
+
+
+<!--
+     The "msg" element defines a custom message key to use when one of the
+     validators for this field fails. Each validator has a default message
+     property that is used when a corresonding field msg is not specified.
+     Each validator applied to a field may have its own msg element.
+     The msg element accepts up to three attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT msg     EMPTY>
+<!ATTLIST msg     name     CDATA #IMPLIED
+                  key      CDATA #IMPLIED
+                  resource CDATA #IMPLIED >
+
+
+<!--
+     The "arg0" element defines the first replacement value to use with the
+     message template for this validator or this field.
+     The arg0 element accepts up to three attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg0    EMPTY>
+<!ATTLIST arg0    name     CDATA #IMPLIED
+                  key      CDATA #IMPLIED
+                  resource CDATA #IMPLIED >
+
+
+<!--
+     The "arg1" element defines the second replacement value to use with the
+     message template for this validator or this field.
+     The arg1 element accepts up to three attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg1    EMPTY>
+<!ATTLIST arg1    name     CDATA #IMPLIED
+                  key      CDATA #IMPLIED
+                  resource CDATA #IMPLIED >
+
+
+<!--
+     The "arg2" element defines the third replacement value to use with the
+     message template for this validator or this field.
+     The arg2 element accepts up to three attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg2    EMPTY>
+<!ATTLIST arg2    name     CDATA #IMPLIED
+                  key      CDATA #IMPLIED
+                  resource CDATA #IMPLIED >
+
+<!--
+     The "arg3" element defines the fourth replacement value to use with the
+     message template for this validator or this field.
+     The arg0 element accepts up to three attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg3    EMPTY>
+<!ATTLIST arg3    name     CDATA #IMPLIED
+                  key      CDATA #IMPLIED
+                  resource CDATA #IMPLIED >
+
+
+<!--
+     The "var" element can set parameters that a field may need to pass to
+     one of its validators, such as the minimum and maximum values in a
+     range validation. These parameters may also be referenced by one of the
+     arg? elements using a shell syntax: ${var:var-name}.
+-->
+<!ELEMENT var (var-name, var-value)>
+
+
+
+<!--
+     The name of the var parameter to provide to a field's validators.
+-->
+<!ELEMENT var-name  (#PCDATA)>
+
+
+
+<!--
+     The value of the var parameter to provide to a field's validators.
+-->
+<!ELEMENT var-value (#PCDATA)>
+
+<!-- eof -->

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_0.dtd
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd?rev=289648&view=auto
==============================================================================
--- beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd (added)
+++ beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd Fri Sep 16 13:27:57 2005
@@ -0,0 +1,293 @@
+<!--
+    DTD for the Validator Rules Configuration File, Version 1.1
+
+    To allow for XML validation of your rules configuration
+    file, include the following DOCTYPE element at the beginning (after
+    the "xml" declaration):
+
+    <!DOCTYPE form-validation PUBLIC
+     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1//EN"
+     "http://jakarta.apache.org/commons/dtds/validator_1_1.dtd">
+
+    $Id: validator_1_1.dtd,v 1.5 2003/08/11 23:50:31 dgraham Exp $
+-->
+
+
+
+<!--
+     The "form-validation" element is the root of the configuration file
+     hierarchy, and contains nested elements for all of the other
+     configuration settings.
+-->
+<!ELEMENT form-validation (global*, formset*)>
+
+
+<!--
+    The elements defined here are all global and must be nested within a
+    "global" element.
+-->
+<!ELEMENT global (validator*, constant*)>
+
+
+<!--
+     The "validator" element defines what validator objects can be used with
+     the fields referenced by the formset elements.
+-->
+<!ELEMENT validator (javascript?)>
+<!ATTLIST validator name CDATA #REQUIRED>
+<!ATTLIST validator classname CDATA #REQUIRED>
+<!ATTLIST validator method CDATA #REQUIRED>
+<!ATTLIST validator methodParams CDATA #REQUIRED>
+<!ATTLIST validator msg CDATA #REQUIRED>
+<!ATTLIST validator depends CDATA #IMPLIED>
+<!ATTLIST validator jsFunctionName CDATA #IMPLIED>
+<!ATTLIST validator jsFunction CDATA #IMPLIED>
+
+
+<!--
+     The "javascript" element defines a JavaScript that can be used to perform
+     client-side validators.
+-->
+<!ELEMENT javascript (#PCDATA)>
+
+
+<!--
+     The "constant" element defines a static value that can be used as
+     replacement parameters within "field" elements. The "constant-name" and
+     "constant-value" elements define the constant's reference id and replacement
+     value.
+-->
+<!ELEMENT constant (constant-name, constant-value)>
+<!ELEMENT constant-name  (#PCDATA)>
+<!ELEMENT constant-value (#PCDATA)>
+
+
+<!--
+      The "formset" element defines a set of forms for a locale. Formsets for
+      specific locales can override only those fields that change. The
+      localization is properly scoped, so that a formset can override just the
+      language, or just the country, or both.
+-->
+<!ELEMENT formset (constant*, form+)>
+<!ATTLIST formset language CDATA #IMPLIED>
+<!ATTLIST formset country CDATA #IMPLIED>
+<!ATTLIST formset variant CDATA #IMPLIED>
+
+
+<!--
+     The "form" element defines a set of fields to be validated. The name
+     corresponds to the identifer the application assigns to the form. 
+-->
+<!ELEMENT form (field+)>
+<!ATTLIST form name CDATA #REQUIRED>
+
+
+<!--
+     The "field" element defines the properties to be validated. In a
+     web application, a field would also correspond to a control on
+     a HTML form. To validate the properties, the validator works through
+     a JavaBean representation. The field element accepts these 
+     attributes:
+
+     property        The property on the JavaBean corresponding to this
+                     field element.
+
+     depends         The comma-delimited list of validators to apply against
+                     this field. For the field to succeed, all the
+                     validators must succeed.
+
+     page            The JavaBean corresponding to this form may include
+                     a page property. Only fields with a "page" attribute
+                     value that is equal to or less than the page property
+                     on the form JavaBean are processed. This is useful when
+                     using a "wizard" approach to completing a large form,
+                     to ensure that a page is not skipped.
+                     [0]
+
+     indexedListProperty
+                     The "indexedListProperty" is the method name that will
+                     return an array or a Collection used to retrieve the
+                     list and then loop through the list performing the
+                     validations for this field.
+
+-->
+<!ELEMENT field (msg|arg|arg0|arg1|arg2|arg3|var)*>
+<!ATTLIST field property CDATA #REQUIRED>
+<!ATTLIST field depends CDATA #IMPLIED>
+<!ATTLIST field page CDATA #IMPLIED>
+<!ATTLIST field indexedListProperty CDATA #IMPLIED>
+
+
+<!--
+     The "msg" element defines a custom message key to use when one of the
+     validators for this field fails. Each validator has a default message
+     property that is used when a corresonding field msg is not specified.
+     Each validator applied to a field may have its own msg element.
+     The msg element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+      
+      bundle     The resource bundle name that the key should be resolved in.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT msg EMPTY>
+<!ATTLIST msg key CDATA #REQUIRED>
+<!ATTLIST msg name CDATA #REQUIRED>
+<!ATTLIST msg bundle CDATA #IMPLIED>
+<!ATTLIST msg resource CDATA #IMPLIED>
+
+
+
+<!--
+     The "arg" element defines a replacement value to use with the
+     message template for this validator or this field.
+     The arg element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+      			  If not supplied, this argument will be used in the given 
+      			  position for every validator.
+      			  
+      bundle     The resource bundle name that the key should be resolved in.      			  
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+
+      position    The position of this replacement parameter in the message.
+      			  For example, position="0" will set the first argument.
+      			  [0]
+-->
+<!ELEMENT arg EMPTY>
+<!ATTLIST arg key CDATA #REQUIRED>
+<!ATTLIST arg bundle CDATA #IMPLIED>
+<!ATTLIST arg name CDATA #IMPLIED>
+<!ATTLIST arg resource CDATA #IMPLIED>
+<!ATTLIST arg position CDATA #IMPLIED>
+
+
+
+<!--
+
+		DEPRECATED Use <arg position="0"/> instead.
+
+     The "arg0" element defines the first replacement value to use with the
+     message template for this validator or this field.
+     The arg0 element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg0 EMPTY>
+<!ATTLIST arg0 name CDATA #IMPLIED>
+<!ATTLIST arg0 key CDATA #IMPLIED>
+<!ATTLIST arg0 resource CDATA #IMPLIED>
+
+
+<!--
+
+		DEPRECATED Use <arg position="1"/> instead.
+
+     The "arg1" element defines the second replacement value to use with the
+     message template for this validator or this field.
+     The arg1 element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg1 EMPTY>
+<!ATTLIST arg1 name CDATA #IMPLIED>
+<!ATTLIST arg1 key CDATA #IMPLIED>
+<!ATTLIST arg1 resource CDATA #IMPLIED>
+
+
+<!--
+
+		DEPRECATED Use <arg position="2"/> instead.
+
+     The "arg2" element defines the third replacement value to use with the
+     message template for this validator or this field.
+     The arg2 element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg2 EMPTY>
+<!ATTLIST arg2 name CDATA #IMPLIED>
+<!ATTLIST arg2 key CDATA #IMPLIED>
+<!ATTLIST arg2 resource CDATA #IMPLIED>
+
+
+<!--
+
+		DEPRECATED Use <arg position="3"/> instead.
+
+     The "arg3" element defines the fourth replacement value to use with the
+     message template for this validator or this field.
+     The arg0 element accepts these attributes.
+
+      name        The name of the validator corresponding to this msg.
+
+      key         The key that will return the message template from a
+                  resource bundle.
+
+      resource    If set to "false", the key is taken to be a literal
+                  value rather than a bundle key.
+                  [true]
+-->
+<!ELEMENT arg3 EMPTY>
+<!ATTLIST arg3 name CDATA #IMPLIED>
+<!ATTLIST arg3 key CDATA #IMPLIED>
+<!ATTLIST arg3 resource CDATA #IMPLIED>
+
+
+<!--
+     The "var" element can set parameters that a field may need to pass to
+     one of its validators, such as the minimum and maximum values in a
+     range validation. These parameters may also be referenced by one of the
+     arg? elements using a shell syntax: ${var:var-name}.
+-->
+<!ELEMENT var (var-name, var-value)>
+
+
+
+<!--
+     The name of the var parameter to provide to a field's validators.
+-->
+<!ELEMENT var-name  (#PCDATA)>
+
+
+
+<!--
+     The value of the var parameter to provide to a field's validators.
+-->
+<!ELEMENT var-value (#PCDATA)>
+
+
+

Propchange: beehive/trunk/netui/src/compiler-core/org/apache/beehive/netui/compiler/resources/validator_1_1.dtd
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInstanceImpl.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInstanceImpl.java?rev=289648&r1=289647&r2=289648&view=diff
==============================================================================
--- beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInstanceImpl.java (original)
+++ beehive/trunk/netui/src/compiler-xdoclet/org/apache/beehive/netui/compiler/xdoclet/typesystem/impl/declaration/AnnotationInstanceImpl.java Fri Sep 16 13:27:57 2005
@@ -31,6 +31,7 @@
 import xjavadoc.XProgramElement;
 import xjavadoc.XTag;
 import xjavadoc.XMember;
+import xjavadoc.XType;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -129,6 +130,10 @@
 
     public TypeDeclaration getContainingType()
     {
+        if (_containingElement instanceof XType)
+        {
+            return WrapperFactory.get().getTypeDeclaration((XType) _containingElement);
+        }
         assert _containingElement instanceof XMember : _containingElement.getClass().getName();
         MemberDeclaration member = WrapperFactory.get().getMemberDeclaration( ( XMember ) _containingElement );
         return CompilerUtils.getOuterClass( member );