You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/06/16 17:34:55 UTC

svn commit: r190936 [3/3] - in /incubator/beehive/trunk/wsm: ./ drt/tests/org/apache/beehive/wsm/jsr181/model/fakeAnnotations/ src/api/schemas/ src/core/org/apache/beehive/wsm/axis/ src/core/org/apache/beehive/wsm/exception/ src/core/org/apache/beehive/wsm/model/ src/core/org/apache/beehive/wsm/model/jsr181/ src/core/org/apache/beehive/wsm/processor/apt/

Added: incubator/beehive/trunk/wsm/src/api/schemas/jsr181-handler-config.xsd
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/api/schemas/jsr181-handler-config.xsd?rev=190936&view=auto
==============================================================================
--- incubator/beehive/trunk/wsm/src/api/schemas/jsr181-handler-config.xsd (added)
+++ incubator/beehive/trunk/wsm/src/api/schemas/jsr181-handler-config.xsd Thu Jun 16 08:34:54 2005
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="http://www.bea.com/xml/ns/jws"
+            xmlns:jws="http://www.bea.com/xml/ns/jws"
+            xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
+            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            elementFormDefault="qualified"
+            attributeFormDefault="unqualified"
+            version="1.1">
+    <xsd:annotation>
+        <xsd:documentation>
+        <![CDATA[
+            This is the schema definition for the handler chain configuration
+            file used by JSR-181.  It relies on the handler definitions that
+            are part of the standard J2EE deployment descriptors.
+        ]]>
+        </xsd:documentation>
+    </xsd:annotation>
+    
+    <xsd:import namespace="http://java.sun.com/xml/ns/j2ee" schemaLocation="j2ee_1_4.xsd"/>
+    <xsd:import namespace="http://java.sun.com/xml/ns/j2ee" schemaLocation="j2ee_web_services_1_1.xsd"/>
+ 
+    <xsd:complexType name="handler-chainType">
+        <xsd:sequence>
+            <xsd:element name="handler-chain-name" type="j2ee:string"/>
+            <xsd:element name="handler" 
+                         type="j2ee:port-component_handlerType" 
+                         minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="handler-configType">
+        <xsd:sequence>
+            <xsd:element name="handler-chain"
+                         type="jws:handler-chainType"
+                         minOccurs="1" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:element name="handler-config" type="jws:handler-configType"/>
+</xsd:schema>

Added: incubator/beehive/trunk/wsm/src/api/schemas/web-app_2_4.xsd
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/api/schemas/web-app_2_4.xsd?rev=190936&view=auto
==============================================================================
--- incubator/beehive/trunk/wsm/src/api/schemas/web-app_2_4.xsd (added)
+++ incubator/beehive/trunk/wsm/src/api/schemas/web-app_2_4.xsd Thu Jun 16 08:34:54 2005
@@ -0,0 +1,1233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+	    targetNamespace="http://java.sun.com/xml/ns/j2ee"
+	    xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
+	    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+	    elementFormDefault="qualified"
+	    attributeFormDefault="unqualified"
+	    version="2.4">
+  <xsd:annotation>
+    <xsd:documentation>
+      @(#)web-app_2_4.xsds	1.60 03/08/26
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      Copyright 2003 Sun Microsystems, Inc., 901 San Antonio
+      Road, Palo Alto, California 94303, U.S.A. All rights
+      reserved.
+
+      Sun Microsystems, Inc. has intellectual property rights
+      relating to technology described in this document. In
+      particular, and without limitation, these intellectual
+      property rights may include one or more of the U.S. patents
+      listed at http://www.sun.com/patents and one or more
+      additional patents or pending patent applications in the
+      U.S. and other countries.
+
+      This document and the technology which it describes are
+      distributed under licenses restricting their use, copying,
+      distribution, and decompilation. No part of this document
+      may be reproduced in any form by any means without prior
+      written authorization of Sun and its licensors, if any.
+
+      Third-party software, including font technology, is
+      copyrighted and licensed from Sun suppliers.
+
+      Sun, Sun Microsystems, the Sun logo, Solaris, Java, J2EE,
+      JavaServer Pages, Enterprise JavaBeans and the Java Coffee
+      Cup logo are trademarks or registered trademarks of Sun
+      Microsystems, Inc. in the U.S. and other countries.
+
+      Federal Acquisitions: Commercial Software - Government Users
+      Subject to Standard License Terms and Conditions.
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+      <![CDATA[
+
+	This is the XML Schema for the Servlet 2.4 deployment descriptor.
+	The deployment descriptor must be named "WEB-INF/web.xml" in the
+	web application's war file.  All Servlet deployment descriptors
+	must indicate the web application schema by using the J2EE
+	namespace:
+
+	http://java.sun.com/xml/ns/j2ee
+
+	and by indicating the version of the schema by
+	using the version element as shown below:
+
+	    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+	      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	      xsi:schemaLocation="..."
+	      version="2.4">
+	      ...
+	    </web-app>
+
+	The instance documents may indicate the published version of
+	the schema using the xsi:schemaLocation attribute for J2EE
+	namespace with the following location:
+
+	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
+
+	]]>
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:annotation>
+    <xsd:documentation>
+
+      The following conventions apply to all J2EE
+      deployment descriptor elements unless indicated otherwise.
+
+      - In elements that specify a pathname to a file within the
+	same JAR file, relative filenames (i.e., those not
+	starting with "/") are considered relative to the root of
+	the JAR file's namespace.  Absolute filenames (i.e., those
+	starting with "/") also specify names in the root of the
+	JAR file's namespace.  In general, relative names are
+	preferred.  The exception is .war files where absolute
+	names are preferred for consistency with the Servlet API.
+
+    </xsd:documentation>
+  </xsd:annotation>
+
+  <xsd:include schemaLocation="j2ee_1_4.xsd"/>
+  <xsd:include schemaLocation="jsp_2_0.xsd"/>
+
+
+<!-- **************************************************** -->
+
+
+  <xsd:element name="web-app" type="j2ee:web-appType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The web-app element is the root of the deployment
+	descriptor for a web application.  Note that the sub-elements
+	of this element can be in the arbitrary order. Because of
+	that, the multiplicity of the elements of distributable,
+	session-config, welcome-file-list, jsp-config, login-config,
+	and locale-encoding-mapping-list was changed from "?" to "*"
+	in this schema.  However, the deployment descriptor instance
+	file must not contain multiple elements of session-config,
+	jsp-config, and login-config. When there are multiple elements of
+	welcome-file-list or locale-encoding-mapping-list, the container
+	must concatinate the element contents.  The multiple occurance
+	of the element distributable is redundant and the container
+	treats that case exactly in the same way when there is only
+	one distributable.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:unique name="web-app-servlet-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The servlet element contains the name of a servlet.
+	  The name must be unique within the web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:servlet"/>
+      <xsd:field    xpath="j2ee:servlet-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-filter-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The filter element contains the name of a filter.
+	  The name must be unique within the web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:filter"/>
+      <xsd:field    xpath="j2ee:filter-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-ejb-local-ref-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The ejb-local-ref-name element contains the name of an EJB
+	  reference. The EJB reference is an entry in the web
+	  application's environment and is relative to the
+	  java:comp/env context.  The name must be unique within
+	  the web application.
+
+	  It is recommended that name is prefixed with "ejb/".
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:ejb-local-ref"/>
+      <xsd:field    xpath="j2ee:ejb-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-ejb-ref-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The ejb-ref-name element contains the name of an EJB
+	  reference. The EJB reference is an entry in the web
+	  application's environment and is relative to the
+	  java:comp/env context.  The name must be unique within
+	  the web application.
+
+	  It is recommended that name is prefixed with "ejb/".
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:ejb-ref"/>
+      <xsd:field    xpath="j2ee:ejb-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-resource-env-ref-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The resource-env-ref-name element specifies the name of
+	  a resource environment reference; its value is the
+	  environment entry name used in the web application code.
+	  The name is a JNDI name relative to the java:comp/env
+	  context and must be unique within a web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:resource-env-ref"/>
+      <xsd:field    xpath="j2ee:resource-env-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-message-destination-ref-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The message-destination-ref-name element specifies the name of
+	  a message destination reference; its value is the
+	  environment entry name used in the web application code.
+	  The name is a JNDI name relative to the java:comp/env
+	  context and must be unique within a web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:message-destination-ref"/>
+      <xsd:field    xpath="j2ee:message-destination-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-res-ref-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The res-ref-name element specifies the name of a
+	  resource manager connection factory reference.  The name
+	  is a JNDI name relative to the java:comp/env context.
+	  The name must be unique within a web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:resource-ref"/>
+      <xsd:field    xpath="j2ee:res-ref-name"/>
+    </xsd:unique>
+
+    <xsd:unique name="web-app-env-entry-name-uniqueness">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The env-entry-name element contains the name of a web
+	  application's environment entry.  The name is a JNDI
+	  name relative to the java:comp/env context.  The name
+	  must be unique within a web application.
+
+	</xsd:documentation>
+      </xsd:annotation>
+
+      <xsd:selector xpath="j2ee:env-entry"/>
+      <xsd:field    xpath="j2ee:env-entry-name"/>
+    </xsd:unique>
+
+    <xsd:key name="web-app-role-name-key">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  A role-name-key is specified to allow the references
+	  from the security-role-refs.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:security-role"/>
+      <xsd:field    xpath="j2ee:role-name"/>
+    </xsd:key>
+
+    <xsd:keyref name="web-app-role-name-references"
+		refer="j2ee:web-app-role-name-key">
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The keyref indicates the references from
+	  security-role-ref to a specified role-name.
+
+	</xsd:documentation>
+      </xsd:annotation>
+      <xsd:selector xpath="j2ee:servlet/j2ee:security-role-ref"/>
+      <xsd:field    xpath="j2ee:role-link"/>
+    </xsd:keyref>
+  </xsd:element>
+
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The auth-constraintType indicates the user roles that
+	should be permitted access to this resource
+	collection. The role-name used here must either correspond
+	to the role-name of one of the security-role elements
+	defined for this web application, or be the specially
+	reserved role-name "*" that is a compact syntax for
+	indicating all roles in the web application. If both "*"
+	and rolenames appear, the container interprets this as all
+	roles.  If no roles are defined, no user is allowed access
+	to the portion of the web application described by the
+	containing security-constraint.  The container matches
+	role names case sensitively when determining access.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+		   type="j2ee:descriptionType"
+		   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="role-name"
+		   type="j2ee:role-nameType"
+		   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="auth-methodType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The auth-methodType is used to configure the authentication
+	mechanism for the web application. As a prerequisite to
+	gaining access to any web resources which are protected by
+	an authorization constraint, a user must have authenticated
+	using the configured mechanism. Legal values are "BASIC",
+	"DIGEST", "FORM", "CLIENT-CERT", or a vendor-specific
+	authentication scheme.
+
+	Used in: login-config
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="dispatcherType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The dispatcher has four legal values: FORWARD, REQUEST, INCLUDE,
+	and ERROR. A value of FORWARD means the Filter will be applied
+	under RequestDispatcher.forward() calls.  A value of REQUEST
+	means the Filter will be applied under ordinary client calls to
+	the path or servlet. A value of INCLUDE means the Filter will be
+	applied under RequestDispatcher.include() calls.  A value of
+	ERROR means the Filter will be applied under the error page
+	mechanism.  The absence of any dispatcher elements in a
+	filter-mapping indicates a default of applying filters only under
+	ordinary client calls to the path or servlet.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:enumeration value="FORWARD"/>
+	<xsd:enumeration value="INCLUDE"/>
+	<xsd:enumeration value="REQUEST"/>
+	<xsd:enumeration value="ERROR"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:simpleType name="encodingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The encodingType defines IANA character sets.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[^\s]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-codeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The error-code contains an HTTP error code, ex: 404
+
+	Used in: error-page
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:xsdPositiveIntegerType">
+	<xsd:pattern value="\d{3}"/>
+	<xsd:attribute name="id" type="xsd:ID"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="error-pageType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The error-pageType contains a mapping between an error code
+	or exception type to the path of a resource in the web
+	application.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:choice>
+	<xsd:element name="error-code"
+		     type="j2ee:error-codeType"/>
+
+	<xsd:element name="exception-type"
+		     type="j2ee:fully-qualified-classType">
+	  <xsd:annotation>
+	    <xsd:documentation>
+
+	      The exception-type contains a fully qualified class
+	      name of a Java exception type.
+
+	    </xsd:documentation>
+	  </xsd:annotation>
+	</xsd:element>
+      </xsd:choice>
+
+      <xsd:element name="location"
+		   type="j2ee:war-pathType">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The location element contains the location of the
+	    resource in the web application relative to the root of
+	    the web application. The value of the location must have
+	    a leading `/'.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	Declaration of the filter mappings in this web
+	application is done by using filter-mappingType.
+	The container uses the filter-mapping
+	declarations to decide which filters to apply to a request,
+	and in what order. The container matches the request URI to
+	a Servlet in the normal way. To determine which filters to
+	apply it matches filter-mapping declarations either on
+	servlet-name, or on url-pattern for each filter-mapping
+	element, depending on which style is used. The order in
+	which filters are invoked is the order in which
+	filter-mapping declarations that match a request URI for a
+	servlet appear in the list of filter-mapping elements.The
+	filter-name value must be the value of the filter-name
+	sub-elements of one of the filter declarations in the
+	deployment descriptor.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="filter-name"
+		   type="j2ee:filter-nameType"/>
+      <xsd:choice>
+	<xsd:element name="url-pattern"
+		     type="j2ee:url-patternType"/>
+	<xsd:element name="servlet-name"
+		     type="j2ee:servlet-nameType"/>
+      </xsd:choice>
+      <xsd:element name="dispatcher"
+		   type="j2ee:dispatcherType"
+		   minOccurs="0" maxOccurs="4"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filter-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The logical name of the filter is declare
+	by using filter-nameType. This name is used to map the
+	filter.  Each filter name is unique within the web
+	application.
+
+	Used in: filter, filter-mapping
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:extension base="j2ee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="filterType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The filterType is used to declare a filter in the web
+	application. The filter is mapped to either a servlet or a
+	URL pattern in the filter-mapping element, using the
+	filter-name value to reference. Filters can access the
+	initialization parameters declared in the deployment
+	descriptor at runtime via the FilterConfig interface.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:group ref="j2ee:descriptionGroup"/>
+      <xsd:element name="filter-name"
+		   type="j2ee:filter-nameType"/>
+      <xsd:element name="filter-class"
+		   type="j2ee:fully-qualified-classType">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The fully qualified classname of the filter.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="init-param"
+		   type="j2ee:param-valueType"
+		   minOccurs="0" maxOccurs="unbounded">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The init-param element contains a name/value pair as
+	    an initialization param of a servlet filter
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="form-login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The form-login-configType specifies the login and error
+	pages that should be used in form based login. If form based
+	authentication is not used, these elements are ignored.
+
+	Used in: login-config
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+
+      <xsd:element name="form-login-page"
+		   type="j2ee:war-pathType">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The form-login-page element defines the location in the web
+	    app where the page that can be used for login can be
+	    found.  The path begins with a leading / and is interpreted
+	    relative to the root of the WAR.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="form-error-page"
+		   type="j2ee:war-pathType">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The form-error-page element defines the location in
+	    the web app where the error page that is displayed
+	    when login is not successful can be found.
+	    The path begins with a leading / and is interpreted
+	    relative to the root of the WAR.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="http-methodType">
+    <xsd:annotation>
+
+      <xsd:documentation>
+
+	The http-method contains an HTTP method recognized by the
+	web-app, for example GET, POST, ...
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:enumeration value="GET"/>
+	<xsd:enumeration value="POST"/>
+	<xsd:enumeration value="PUT"/>
+	<xsd:enumeration value="DELETE"/>
+	<xsd:enumeration value="HEAD"/>
+	<xsd:enumeration value="OPTIONS"/>
+	<xsd:enumeration value="TRACE"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mapping-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The locale-encoding-mapping-list contains one or more
+	locale-encoding-mapping(s).
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="locale-encoding-mapping"
+		   type="j2ee:locale-encoding-mappingType"
+		   maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="locale-encoding-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The locale-encoding-mapping contains locale name and
+	encoding name. The locale name must be either "Language-code",
+	such as "ja", defined by ISO-639 or "Language-code_Country-code",
+	such as "ja_JP".  "Country code" is defined by ISO-3166.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="locale"
+		   type="j2ee:localeType"/>
+      <xsd:element name="encoding"
+		   type="j2ee:encodingType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:simpleType name="localeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The localeType defines valid locale defined by ISO-639-1
+	and ISO-3166.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[a-z]{2}(_|-)?([\p{L}\-\p{Nd}]{2})?"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="login-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The login-configType is used to configure the authentication
+	method that should be used, the realm name that should be
+	used for this application, and the attributes that are
+	needed by the form login mechanism.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="auth-method"
+		   type="j2ee:auth-methodType"
+		   minOccurs="0"/>
+      <xsd:element name="realm-name"
+		   type="j2ee:string" minOccurs="0">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The realm name element specifies the realm name to
+	    use in HTTP Basic authorization.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="form-login-config"
+		   type="j2ee:form-login-configType"
+		   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The mime-mappingType defines a mapping between an extension
+	and a mime type.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:annotation>
+	<xsd:documentation>
+
+	  The extension element contains a string describing an
+	  extension. example: "txt"
+
+	</xsd:documentation>
+      </xsd:annotation>
+
+      <xsd:element name="extension"
+		   type="j2ee:string"/>
+      <xsd:element name="mime-type"
+		   type="j2ee:mime-typeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="mime-typeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The mime-typeType is used to indicate a defined mime type.
+
+	Example:
+	"text/plain"
+
+	Used in: mime-mapping
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:pattern value="[\p{L}\-\p{Nd}]+/[\p{L}\-\p{Nd}\.]+"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="nonEmptyStringType">
+    <xsd:annotation>
+      <xsd:documentation>
+	This type defines a string which contains at least one
+	character.
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:minLength value="1"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="security-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The security-constraintType is used to associate
+	security constraints with one or more web resource
+	collections
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="display-name"
+		   type="j2ee:display-nameType"
+		   minOccurs="0"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="web-resource-collection"
+		   type="j2ee:web-resource-collectionType"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="auth-constraint"
+		   type="j2ee:auth-constraintType"
+		   minOccurs="0"/>
+      <xsd:element name="user-data-constraint"
+		   type="j2ee:user-data-constraintType"
+		   minOccurs="0"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-mappingType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The servlet-mappingType defines a mapping between a
+	servlet and a url pattern.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="servlet-name"
+		   type="j2ee:servlet-nameType"/>
+      <xsd:element name="url-pattern"
+		   type="j2ee:url-patternType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servlet-nameType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The servlet-name element contains the canonical name of the
+	servlet. Each servlet name is unique within the web
+	application.
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:extension base="j2ee:nonEmptyStringType"/>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="servletType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The servletType is used to declare a servlet.
+	It contains the declarative data of a
+	servlet. If a jsp-file is specified and the load-on-startup
+	element is present, then the JSP should be precompiled and
+	loaded.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:group ref="j2ee:descriptionGroup"/>
+      <xsd:element name="servlet-name"
+		   type="j2ee:servlet-nameType"/>
+      <xsd:choice>
+	<xsd:element name="servlet-class"
+		     type="j2ee:fully-qualified-classType">
+	  <xsd:annotation>
+	    <xsd:documentation>
+
+	      The servlet-class element contains the fully
+	      qualified class name of the servlet.
+
+	    </xsd:documentation>
+	  </xsd:annotation>
+	</xsd:element>
+
+	<xsd:element name="jsp-file"
+		     type="j2ee:jsp-fileType"/>
+
+      </xsd:choice>
+
+      <xsd:element name="init-param"
+		   type="j2ee:param-valueType"
+		   minOccurs="0" maxOccurs="unbounded"/>
+      <xsd:element name="load-on-startup"
+		   type="j2ee:xsdIntegerType"
+		   minOccurs="0">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The load-on-startup element indicates that this
+	    servlet should be loaded (instantiated and have
+	    its init() called) on the startup of the web
+	    application. The optional contents of these
+	    element must be an integer indicating the order in
+	    which the servlet should be loaded. If the value
+	    is a negative integer, or the element is not
+	    present, the container is free to load the servlet
+	    whenever it chooses. If the value is a positive
+	    integer or 0, the container must load and
+	    initialize the servlet as the application is
+	    deployed. The container must guarantee that
+	    servlets marked with lower integers are loaded
+	    before servlets marked with higher integers. The
+	    container may choose the order of loading of
+	    servlets with the same load-on-start-up value.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="run-as"
+		   type="j2ee:run-asType"
+		   minOccurs="0"/>
+      <xsd:element name="security-role-ref"
+		   type="j2ee:security-role-refType"
+		   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="session-configType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The session-configType defines the session parameters
+	for this web application.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="session-timeout"
+		   type="j2ee:xsdIntegerType"
+		   minOccurs="0">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The session-timeout element defines the default
+	    session timeout interval for all sessions created
+	    in this web application. The specified timeout
+	    must be expressed in a whole number of minutes.
+	    If the timeout is 0 or less, the container ensures
+	    the default behaviour of sessions is never to time
+	    out. If this element is not specified, the container
+	    must set its default timeout period.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="transport-guaranteeType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The transport-guaranteeType specifies that the communication
+	between client and server should be NONE, INTEGRAL, or
+	CONFIDENTIAL. NONE means that the application does not
+	require any transport guarantees. A value of INTEGRAL means
+	that the application requires that the data sent between the
+	client and server be sent in such a way that it can't be
+	changed in transit. CONFIDENTIAL means that the application
+	requires that the data be transmitted in a fashion that
+	prevents other entities from observing the contents of the
+	transmission. In most cases, the presence of the INTEGRAL or
+	CONFIDENTIAL flag will indicate that the use of SSL is
+	required.
+
+	Used in: user-data-constraint
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:enumeration value="NONE"/>
+	<xsd:enumeration value="INTEGRAL"/>
+	<xsd:enumeration value="CONFIDENTIAL"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="user-data-constraintType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The user-data-constraintType is used to indicate how
+	data communicated between the client and container should be
+	protected.
+
+	Used in: security-constraint
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="description"
+		   type="j2ee:descriptionType"
+		   minOccurs="0"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="transport-guarantee"
+		   type="j2ee:transport-guaranteeType"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="war-pathType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The elements that use this type designate a path starting
+	with a "/" and interpreted relative to the root of a WAR
+	file.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:simpleContent>
+      <xsd:restriction base="j2ee:string">
+	<xsd:pattern value="/.*"/>
+      </xsd:restriction>
+    </xsd:simpleContent>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:simpleType name="web-app-versionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	This type contains the recognized versions of
+	web-application supported. It is used to designate the
+	version of the web application.
+
+      </xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:token">
+      <xsd:enumeration value="2.4"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-appType">
+
+    <xsd:choice minOccurs="0" maxOccurs="unbounded">
+      <xsd:group ref="j2ee:descriptionGroup"/>
+      <xsd:element name="distributable"
+		   type="j2ee:emptyType"/>
+      <xsd:element name="context-param"
+		   type="j2ee:param-valueType">
+
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The context-param element contains the declaration
+	    of a web application's servlet context
+	    initialization parameters.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+
+      <xsd:element name="filter"
+		   type="j2ee:filterType"/>
+      <xsd:element name="filter-mapping"
+		   type="j2ee:filter-mappingType"/>
+      <xsd:element name="listener"
+		   type="j2ee:listenerType"/>
+      <xsd:element name="servlet"
+		   type="j2ee:servletType"/>
+      <xsd:element name="servlet-mapping"
+		   type="j2ee:servlet-mappingType"/>
+      <xsd:element name="session-config"
+		   type="j2ee:session-configType"/>
+      <xsd:element name="mime-mapping"
+		   type="j2ee:mime-mappingType"/>
+      <xsd:element name="welcome-file-list"
+		   type="j2ee:welcome-file-listType"/>
+      <xsd:element name="error-page"
+		   type="j2ee:error-pageType"/>
+      <xsd:element name="jsp-config"
+		   type="j2ee:jsp-configType"/>
+      <xsd:element name="security-constraint"
+		   type="j2ee:security-constraintType"/>
+      <xsd:element name="login-config"
+		   type="j2ee:login-configType"/>
+      <xsd:element name="security-role"
+		   type="j2ee:security-roleType"/>
+      <xsd:group ref="j2ee:jndiEnvironmentRefsGroup"/>
+      <xsd:element name="message-destination"
+		   type="j2ee:message-destinationType"/>
+      <xsd:element name="locale-encoding-mapping-list"
+		   type="j2ee:locale-encoding-mapping-listType"/>
+    </xsd:choice>
+
+    <xsd:attribute name="version"
+		   type="j2ee:web-app-versionType"
+		   use="required"/>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="web-resource-collectionType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The web-resource-collectionType is used to identify a subset
+	of the resources and HTTP methods on those resources within
+	a web application to which a security constraint applies. If
+	no HTTP methods are specified, then the security constraint
+	applies to all HTTP methods.
+
+	Used in: security-constraint
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="web-resource-name"
+		   type="j2ee:string">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The web-resource-name contains the name of this web
+	    resource collection.
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+      <xsd:element name="description"
+		   type="j2ee:descriptionType"
+		   minOccurs="0"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="url-pattern"
+		   type="j2ee:url-patternType"
+		   maxOccurs="unbounded"/>
+      <xsd:element name="http-method"
+		   type="j2ee:http-methodType"
+		   minOccurs="0" maxOccurs="unbounded"/>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+<!-- **************************************************** -->
+
+  <xsd:complexType name="welcome-file-listType">
+    <xsd:annotation>
+      <xsd:documentation>
+
+	The welcome-file-list contains an ordered list of welcome
+	files elements.
+
+	Used in: web-app
+
+      </xsd:documentation>
+    </xsd:annotation>
+
+    <xsd:sequence>
+      <xsd:element name="welcome-file"
+		   type="xsd:string"
+		   maxOccurs="unbounded">
+	<xsd:annotation>
+	  <xsd:documentation>
+
+	    The welcome-file element contains file name to use
+	    as a default welcome file, such as index.html
+
+	  </xsd:documentation>
+	</xsd:annotation>
+      </xsd:element>
+    </xsd:sequence>
+    <xsd:attribute name="id" type="xsd:ID"/>
+  </xsd:complexType>
+
+</xsd:schema>
+

Added: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/IllegalHandlerConfigException.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/IllegalHandlerConfigException.java?rev=190936&view=auto
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/IllegalHandlerConfigException.java (added)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/IllegalHandlerConfigException.java Thu Jun 16 08:34:54 2005
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.beehive.wsm.exception;
+
+/**
+ * Exception thrown when an invalid @HandlerConfig XML file is encountered
+ */
+public class IllegalHandlerConfigException
+    extends RuntimeException {
+
+    public IllegalHandlerConfigException() {
+        super();
+    }
+
+    public IllegalHandlerConfigException(String message) {
+        super(message);
+    }
+
+    public IllegalHandlerConfigException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public IllegalHandlerConfigException(Throwable cause) {
+        super(cause);
+    }
+}

Added: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/Jsr181ValidationException.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/Jsr181ValidationException.java?rev=190936&view=auto
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/Jsr181ValidationException.java (added)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/exception/Jsr181ValidationException.java Thu Jun 16 08:34:54 2005
@@ -0,0 +1,39 @@
+/*
+ * 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.
+ */
+package org.apache.beehive.wsm.exception;
+
+/**
+ * Exception thrown when an invalid @HandlerConfig XML file is encountered
+ */
+public class Jsr181ValidationException
+    extends RuntimeException {
+
+    public Jsr181ValidationException() {
+        super();
+    }
+
+    public Jsr181ValidationException(String message) {
+        super(message);
+    }
+
+    public Jsr181ValidationException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public Jsr181ValidationException(Throwable cause) {
+        super(cause);
+    }
+}

Modified: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsTypeMetadata.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsTypeMetadata.java?rev=190936&r1=190935&r2=190936&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsTypeMetadata.java (original)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsTypeMetadata.java Thu Jun 16 08:34:54 2005
@@ -17,7 +17,6 @@
  */
 package org.apache.beehive.wsm.model;
 
-import java.net.URL;
 import java.util.Collection;
 import java.util.List;
 
@@ -27,9 +26,6 @@
  * @author Daryoush
  */
 public interface BeehiveWsTypeMetadata {
-
-    void initHandlersFromChainConfig(URL chainConfigURL, String chainName)
-        throws Exception;
 
     String getHcFileName();
 

Modified: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181MethodMetadataImpl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181MethodMetadataImpl.java?rev=190936&r1=190935&r2=190936&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181MethodMetadataImpl.java (original)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181MethodMetadataImpl.java Thu Jun 16 08:34:54 2005
@@ -55,10 +55,7 @@
         return; // no validation required
     }
 
-    public Jsr181MethodMetadataImpl(
-        String operationName,
-        Class javaType,
-        QName xmlReturnType) {
+    public Jsr181MethodMetadataImpl(String operationName, Class javaType, QName xmlReturnType) {
         this(operationName, javaType);
         setXmlReturnType(xmlReturnType);
     }

Modified: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181TypeMetadataImpl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181TypeMetadataImpl.java?rev=190936&r1=190935&r2=190936&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181TypeMetadataImpl.java (original)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/model/jsr181/Jsr181TypeMetadataImpl.java Thu Jun 16 08:34:54 2005
@@ -37,7 +37,6 @@
 import javax.jws.soap.SOAPBinding;
 import javax.jws.soap.SOAPMessageHandler;
 import javax.jws.soap.SOAPMessageHandlers;
-import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.beehive.wsm.model.BeehiveWsMethodMetadata;
 import org.apache.beehive.wsm.model.BeehiveWsParameterMetadata;
@@ -47,9 +46,16 @@
 import org.apache.beehive.wsm.model.ValidationException;
 import org.apache.beehive.wsm.model.java.JavaMethodInfo;
 import org.apache.beehive.wsm.model.java.JavaTypeInfo;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import org.apache.beehive.wsm.handlerconfig.HandlerConfigDocument;
+import org.apache.beehive.wsm.handlerconfig.HandlerChainType;
+import org.apache.beehive.wsm.handlerconfig.j2ee.PortComponentHandlerType;
+import org.apache.beehive.wsm.handlerconfig.j2ee.ParamValueType;
+import org.apache.beehive.wsm.handlerconfig.j2ee.XsdQNameType;
+import org.apache.beehive.wsm.exception.IllegalHandlerConfigException;
+import org.apache.beehive.wsm.exception.Jsr181ValidationException;
+import org.apache.xmlbeans.XmlObject;
+import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.XmlException;
 
 /**
  *
@@ -307,13 +313,11 @@
 
     private void initFromAnnotation(HandlerChain annotation) {
 
-        if(null == annotation) {
+        if(null == annotation)
             return;
-        }
 
-        if(! getSoapHandlers().isEmpty()) {
+        if(!getSoapHandlers().isEmpty())
             throw new IllegalArgumentException("@SOAPMessageHandlers and @HandlerChain are mutually exclusive");
-        }
 
         String hcPath = annotation.file();
         String hcName = annotation.name();
@@ -321,23 +325,16 @@
         setHcName(hcName);
         setHcFileName(hcPath);
 
-        try {
-            configureHandlerChain(hcPath, hcName);
-        }
-        catch(Throwable t) {
-            throw new RuntimeException(t.getMessage());
-        }
+        configureHandlerChain(hcPath, hcName);
     }
 
     private void initFromAnnotation(SOAPMessageHandlers annotation) {
 
-        if(null == annotation) {
+        if(null == annotation)
             return;
-        }
 
-        if(null != getHcFileName()) {
+        if(null != getHcFileName())
             throw new IllegalArgumentException("@SOAPMessageHandlers and @HandlerChain are mutually exclusive");
-        }
 
         for(SOAPMessageHandler soapMessageHandler : annotation.value()) {
             BeehiveWsSOAPMessageHandlerInfo smhi = new SOAPMessageHandlerInfo(soapMessageHandler);
@@ -346,184 +343,89 @@
         }
     }
 
-
-    private void configureHandlerChain(String handlerChainConfigPath, String handlerChainName)
-        throws Exception {
-        // get URL for handler-chain config
+    /**
+     * Initialize the @HandlerChain from the provided annotation.
+     * @param handlerChainConfigPath
+     * @param handlerChainName
+     * @throws IllegalHandlerConfigException when the given file does not exist, is invalid, or some other runtime error occurs
+     *                                       during processing.
+     */
+    private void configureHandlerChain(String handlerChainConfigPath, String handlerChainName) {
+        /* todo: need to figure out if URLs are the right thing to use here.  the spec says
+                 that URLs are relative (at the time of processing) or absolute.  how does
+                 that affect the runtime?  does it mean that the contents of this file need to be
+                 processed and deployed with the service and that this file *isn't* parsed
+                 at runtime?
+         */
         URL handlerChainConfigURL = findResource(handlerChainConfigPath, baseLocation);
-        if(null == handlerChainConfigURL) {
-            throw new Exception("@HandlerChain: cannot resolve relative URL: " + handlerChainConfigPath + "(base directory: " + baseLocation + ")");
-        }
+        if(null == handlerChainConfigURL)
+            throw new IllegalHandlerConfigException("Can not resolve relative URL: " + handlerChainConfigPath +
+                "(base directory: " + baseLocation + ")");
 
         // parse handler-chain config and add handler-chain to object model
         initHandlersFromChainConfig(handlerChainConfigURL, handlerChainName);
     }
 
     /**
-     * Finds a resource given a resource path. Tries absolute path (http://...
-     * or file:/...) first, then relative to basePath. This method does not use
-     * class loaders since it needs to work with source files as well as with
-     * (binary) class files.
-     *
-     * @param resourcePath the path of the resource, either absolute or relative
-     *                     (to basePath).
-     * @param basePath     only required when resourcePath is relative.
-     * @return URL of resource.
-     */
-    private URL findResource(String resourcePath, File basePath) {
-
-        URL resourceURL = null;
-
-        if(null == resourcePath || 0 == resourcePath.length())
-            return null;
-
-        // handle absolute URL
-        if(resourcePath.startsWith("http://") || resourcePath.startsWith("file:/")) {
-            try {
-                resourceURL = new URL(resourcePath);
-                return resourceURL;
-            }
-            catch(MalformedURLException e) {
-                /* todo: this needs to report the error... */
-                return null;
-            }
-        }
-
-        // handle relative URL (we cannot use class loaders here)
-        if((null == basePath) || (! basePath.exists())) {
-            return null;
-        }
-        if(resourcePath.startsWith("/")) {
-            String base = basePath.toString();
-            String temp = className;
-            int lastIdx = className.lastIndexOf('.');
-            if(0 >= lastIdx) {
-                return null;
-            }
-            temp = temp.substring(0, lastIdx).replace('.', File.separatorChar);
-            if(! base.endsWith(temp)) {
-                return null;
-            }
-            temp = base.substring(0, base.length() - temp.length());
-            try {
-                resourceURL = new File(temp, resourcePath).toURL();
-            }
-            catch(MalformedURLException e) {
-                return null;
-            }
-        }
-        else {
-            try {
-                resourceURL = new File(basePath, resourcePath).toURL();
-            }
-            catch(MalformedURLException e) {
-                return null;
-            }
-        }
-
-        return resourceURL;
-    }
-
-    /**
      * Made public so specific implementations can configure handlers relevant
      * to their own environment.  Calls to this are ignored if SOAPHandlers are
      * already configured.
      * e.g. in case the config file is located next to the .jws source file in
      * the context root of an axis webapp rather than in the classpath
      */
-    public void initHandlersFromChainConfig(URL chainConfigURL, String chainName)
-        throws Exception {
-        // check input parameters
-        if(! getSoapHandlers().isEmpty()) {
-            throw new Exception("@HandlerChain: annotation doesn't allow for @SOAPMessageHandlers");
-        }
-        if(null == chainConfigURL || null == chainName) {
-            throw new Exception("@HandlerChain: URL for handler-chain config required");
-        }
-
-        // create and configure factory
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setNamespaceAware(true);
-        factory.setIgnoringComments(true);
-
-        // todo: this is broken; validate the document!!!
-
-        NodeList handlerChainNodes = factory.newDocumentBuilder().parse(chainConfigURL.openStream()).getElementsByTagName("handler-chain");
-        for(int j = 0; j < handlerChainNodes.getLength(); j++) {
-            Node handlerChainNode = handlerChainNodes.item(j);
-            if(handlerChainNode.getNodeType() == Node.ELEMENT_NODE) {
-                Element chainElement = (Element)handlerChainNode;
-                NodeList chainNames = chainElement.getElementsByTagName("handler-chain-name");
-
-                // should only be one chain name so just grab the first one
-                // todo: this is broken; validate!!!
-                if(chainNames.getLength() > 0 && chainName.equals(chainNames.item(0).getFirstChild().getNodeValue())) {
-                    NodeList handlers = chainElement.getElementsByTagName("handler");
-                    for(int k = 0; k < handlers.getLength(); k++) {
-                        processHandlerNode(handlers.item(k));
-                    }
-                }
-            }
-        }
-    }
+    private void initHandlersFromChainConfig(URL chainConfigURL, String chainName) {
 
-    /**
-     * @param handlerNode todo: hack: use "endsWith()" to ignore namespace
-     */
-    private void processHandlerNode(Node handlerNode)
-        throws Exception {
-        if(handlerNode.hasChildNodes()) {
-            String handlerName = null;
-            String handlerClassName = null;
-            Map<String, String> initParams = new HashMap<String, String>();
-            Collection<String> roles = new ArrayList<String>();
-            Collection<String> headers = new ArrayList<String>();
-            Node currentChild = handlerNode.getFirstChild();
-            while(currentChild != null) {
-                String nodeName = currentChild.getNodeName();
-                if(nodeName.endsWith("handler-name")) {
-                    handlerName = currentChild.getFirstChild().getNodeValue();
-                }
-                else if(nodeName.endsWith("handler-class")) {
-                    handlerClassName = currentChild.getFirstChild().getNodeValue();
-                }
-                else if(nodeName.endsWith("soap-role")) {
-                    roles.add(currentChild.getFirstChild().getNodeValue());
-                }
-                else if(nodeName.endsWith("soap-header")) {
-                    headers.add(currentChild.getFirstChild().getNodeValue());
-                }
-                else if(nodeName.endsWith("init-param")) {
-                    nodeName = currentChild.getFirstChild().getNodeName();
-                    if(nodeName.endsWith("param-name")) {
-                        initParams.put(
-                            currentChild.getFirstChild().getNodeValue(),
-                            currentChild.getLastChild().getNodeValue());
-                    }
-                    else if(nodeName.endsWith("param-value")) {
-                        initParams.put(
-                            currentChild.getLastChild().getNodeValue(),
-                            currentChild.getFirstChild().getNodeValue()
-                        );
-                    }
-                }
-                currentChild = currentChild.getNextSibling();
-            }
+        /* todo: the JSR 181 annotation validation needs to occurr extenrally to where this XML file is processed */
+        if(!getSoapHandlers().isEmpty())
+            throw new Jsr181ValidationException("@HandlerChain: annotation doesn't allow for @SOAPMessageHandlers");
+
+        if(null == chainConfigURL || null == chainName)
+            throw new Jsr181ValidationException("@HandlerChain: URL for handler-chain config required");
 
-            addSOAPHandler(new SOAPMessageHandlerInfo(
-                handlerClassName,
-                handlerName,
-                initParams,
-                roles,
-                headers));
+        HandlerConfigDocument handlerConfigDocument;
+        try {
+            handlerConfigDocument = HandlerConfigDocument.Factory.parse(chainConfigURL);
         }
-    }
+        catch(IOException e) {
+            throw new IllegalHandlerConfigException("Exception occurred attempting to parse @HandlerConfig file from URL '" +
+                chainConfigURL + "'.  Cause: " + e);
+        }
+        catch(XmlException e) {
+            throw new IllegalHandlerConfigException("Exception occurred attempting to parse @HandlerConfig file from URL '" +
+                chainConfigURL + "'.  Cause: " + e);
+        }
+
+        /* this method throws an exception if validation fails */
+        validate(handlerConfigDocument);
+
+        HandlerChainType[] handlers = handlerConfigDocument.getHandlerConfig().getHandlerChainArray();
+        for(HandlerChainType handlerChain : handlers) {
+            /* todo: the handlerChain name isn't used.  why? */
+            // String handlerChainName = handlerChain.getHandlerChainName().getStringValue();
+            for(PortComponentHandlerType handler : handlerChain.getHandlerArray()) {
+                String handlerName = null;
+                String handlerClassName = null;
+                HashMap<String, String> initParams = new HashMap<String, String>();
+                ArrayList<String> roles = new ArrayList<String>();
+                ArrayList<String> headers = new ArrayList<String>();
+
+                handlerName = handler.getHandlerName().getStringValue();
+                handlerClassName = handler.getHandlerClass().getStringValue();
+                for(ParamValueType initParam : handler.getInitParamArray())
+                    initParams.put(initParam.getParamName().getStringValue(), initParam.getParamValue().getStringValue());
+
+                for(XsdQNameType xsdQName : handler.getSoapHeaderArray())
+                    headers.add(xsdQName.getStringValue());
 
-    /**
-     *
-     */
-    public void validate() {
-        // empty
+                for(org.apache.beehive.wsm.handlerconfig.j2ee.String soapRole : handler.getSoapRoleArray())
+                    roles.add(soapRole.getStringValue());
+
+                SOAPMessageHandlerInfo soapHandler =
+                    new SOAPMessageHandlerInfo(handlerClassName, handlerName, initParams, roles, headers);
+
+                addSOAPHandler(soapHandler);
+            }
+        }
     }
 
     /**
@@ -679,8 +581,7 @@
         return noDuplicateMethods;
     }
 
-    public BeehiveWsMethodMetadata getMethod(String methodName,
-                                             Class... paramTypes) {
+    public BeehiveWsMethodMetadata getMethod(String methodName, Class... paramTypes) {
         String sig = createCompleteMethodSignature(methodName, paramTypes);
 
         BeehiveWsMethodMetadata meta = methodMap.get(sig);
@@ -841,6 +742,94 @@
             if(! implementationFound) {
                 throw new ValidationException("method not implemented by " + jt.getName() + ": " + declaredMethod);
             }
+        }
+    }
+
+    /**
+     * Finds a resource given a resource path. Tries absolute path (http://...
+     * or file:/...) first, then relative to basePath. This method does not use
+     * class loaders since it needs to work with source files as well as with
+     * (binary) class files.
+     *
+     * @param resourcePath the path of the resource, either absolute or relative
+     *                     (to basePath).
+     * @param basePath     only required when resourcePath is relative.
+     * @return URL of resource.
+     */
+    private URL findResource(String resourcePath, File basePath) {
+
+        URL resourceURL = null;
+
+        if(null == resourcePath || 0 == resourcePath.length())
+            return null;
+
+        // handle absolute URL
+        if(resourcePath.startsWith("http://") || resourcePath.startsWith("file:/")) {
+            try {
+                resourceURL = new URL(resourcePath);
+                return resourceURL;
+            }
+            catch(MalformedURLException e) {
+                /* todo: this needs to report the error... */
+                return null;
+            }
+        }
+
+        // handle relative URL (we cannot use class loaders here)
+        if((null == basePath) || (! basePath.exists())) {
+            return null;
+        }
+        if(resourcePath.startsWith("/")) {
+            String base = basePath.toString();
+            String temp = className;
+            int lastIdx = className.lastIndexOf('.');
+            if(0 >= lastIdx) {
+                return null;
+            }
+            temp = temp.substring(0, lastIdx).replace('.', File.separatorChar);
+            if(! base.endsWith(temp)) {
+                return null;
+            }
+            temp = base.substring(0, base.length() - temp.length());
+            try {
+                resourceURL = new File(temp, resourcePath).toURL();
+            }
+            catch(MalformedURLException e) {
+                return null;
+            }
+        }
+        else {
+            try {
+                resourceURL = new File(basePath, resourcePath).toURL();
+            }
+            catch(MalformedURLException e) {
+                return null;
+            }
+        }
+
+        return resourceURL;
+    }
+
+    /**
+     * Internal method used to validate an XMLBean.
+     * @param xmlObject
+     */
+    private static void validate(XmlObject xmlObject) {
+        /* todo: for now, this method lives here.  It might be worth moving this into a utility somewhere
+                 if schema validation is needed on other XmlObjects
+         */
+        XmlOptions validateOptions = new XmlOptions();
+        validateOptions.setLoadLineNumbers();
+        ArrayList errorList = new ArrayList();
+        validateOptions.setErrorListener(errorList);
+        boolean isValid = xmlObject.validate(validateOptions);
+        if (!isValid) {
+            StringBuilder sb = new StringBuilder(128);
+            for(Object error : errorList) {
+                sb.append(error);
+                sb.append("\n");
+            }
+            throw new IllegalHandlerConfigException("Error parsing @HandlerChain definition.  " + sb.toString());
         }
     }
 }

Modified: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/TypeMirrorUtil.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/TypeMirrorUtil.java?rev=190936&r1=190935&r2=190936&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/TypeMirrorUtil.java (original)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/TypeMirrorUtil.java Thu Jun 16 08:34:54 2005
@@ -22,14 +22,21 @@
 import com.sun.mirror.type.TypeMirror;
 import com.sun.mirror.type.VoidType;
 
-public class TypeMirrorUtil {
+/**
+ * Package protected utilities for manipulating Mirror types.
+ */
+class TypeMirrorUtil {
 
-    // returns a class object of the specified type.
+    /**
+     * Return the class object for the specified TypeMirror.
+     * @param type
+     * @return
+     * @throws ClassNotFoundException
+     */
     public static Class classForName(TypeMirror type)
         throws ClassNotFoundException {
 
         Class clazz = null;
-
         try {
             if(type instanceof PrimitiveType) {
                 clazz = getPrimitiveClass(((PrimitiveType)type).getKind());

Modified: incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessor.java?rev=190936&r1=190935&r2=190936&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessor.java (original)
+++ incubator/beehive/trunk/wsm/src/core/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessor.java Thu Jun 16 08:34:54 2005
@@ -137,7 +137,8 @@
         }
         catch(Exception e) {
             messager.printError(_decl.getPosition(), "Exception occurred checking type \"" +
-                ((TypeDeclaration)_decl).getQualifiedName() + "\".  Cause: " + e.getMessage());
+                ((TypeDeclaration)_decl).getQualifiedName() + "\".  Cause: " + e);
+            e.printStackTrace();
         }
     }