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/01 22:53:22 UTC
svn commit: r179419 [6/6] - in /incubator/beehive/trunk/wsm/src:
api/javax/jws/ api/javax/jws/soap/ runtime/org/apache/beehive/wsm/axis/
runtime/org/apache/beehive/wsm/axis/ant/
runtime/org/apache/beehive/wsm/axis/databinding/
runtime/org/apache/beehive/wsm/axis/handlers/
runtime/org/apache/beehive/wsm/axis/registration/
runtime/org/apache/beehive/wsm/axis/security/
runtime/org/apache/beehive/wsm/axis/security/model/
runtime/org/apache/beehive/wsm/axis/tools/
runtime/org/apache/beehive/wsm/axis/util/
runtime/org/apache/beehive/wsm/axis/util/encoding/
runtime/org/apache/beehive/wsm/databinding/
runtime/org/apache/beehive/wsm/databinding/xmlbeans/
runtime/org/apache/beehive/wsm/model/
runtime/org/apache/beehive/wsm/model/java/
runtime/org/apache/beehive/wsm/model/jsr181/
runtime/org/apache/beehive/wsm/model/wsdl/
runtime/org/apache/beehive/wsm/processor/
runtime/org/apache/beehive/wsm/processor/apt/
runtime/org/apache/beehive/wsm/registration/
runtime/org/apache/beehive/wsm/util/ runtime/org/apache/beehive/wsm/wsdl/
runtime/schema/
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessorFactory.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessorFactory.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessorFactory.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/processor/apt/WsmAnnotationProcessorFactory.java Wed Jun 1 13:53:19 2005
@@ -28,20 +28,21 @@
import com.sun.mirror.apt.AnnotationProcessorFactory;
import com.sun.mirror.declaration.AnnotationTypeDeclaration;
-public class WsmAnnotationProcessorFactory implements AnnotationProcessorFactory {
+public class WsmAnnotationProcessorFactory
+ implements AnnotationProcessorFactory {
private static final Collection<String> supportedAnnotations =
- Collections.unmodifiableCollection(Arrays.asList(new String[]{
- "javax.jws.WebService",
- "javax.jws.WebMethod",
- "javax.jws.WebParam",
- "javax.jws.Oneway",
- "javax.jws.WebResult",
- "javax.jws.HandlerChain",
- "javax.jws.soap.InitParam",
- "javax.jws.soap.SOAPBinding",
- "javax.jws.soap.SOAPMessageHandler",
- "javax.jws.soap.SOAPMessageHandlers"
- }));
+ Collections.unmodifiableCollection(Arrays.asList(new String[]{
+ "javax.jws.WebService",
+ "javax.jws.WebMethod",
+ "javax.jws.WebParam",
+ "javax.jws.Oneway",
+ "javax.jws.WebResult",
+ "javax.jws.HandlerChain",
+ "javax.jws.soap.InitParam",
+ "javax.jws.soap.SOAPBinding",
+ "javax.jws.soap.SOAPMessageHandler",
+ "javax.jws.soap.SOAPMessageHandlers"
+ }));
private static final Collection<String> supportedOptions = Collections.emptySet();
@@ -53,7 +54,8 @@
return supportedOptions;
}
- public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds, AnnotationProcessorEnvironment env) {
+ public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atds, AnnotationProcessorEnvironment env)
+ {
return new WsmAnnotationProcessor(atds, env);
}
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/registration/TypeRegistrar.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/registration/TypeRegistrar.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/registration/TypeRegistrar.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/registration/TypeRegistrar.java Wed Jun 1 13:53:19 2005
@@ -27,11 +27,6 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.rmi.Remote;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.log4j.*;
-
import javax.jws.soap.SOAPBinding;
import javax.xml.namespace.QName;
import javax.xml.rpc.encoding.TypeMapping;
@@ -39,244 +34,256 @@
import org.apache.beehive.wsm.databinding.BindingLookupService;
import org.apache.beehive.wsm.databinding.GenericHolder;
+import org.apache.log4j.Logger;
public abstract class TypeRegistrar {
- static Logger logger = Logger.getLogger(TypeRegistrar.class);
+ static Logger logger = Logger.getLogger(TypeRegistrar.class);
- protected TypeMapping mTypeMapping;
+ protected TypeMapping mTypeMapping;
- protected BindingLookupService lookupService;
+ protected BindingLookupService lookupService;
- /**
- * @param typeMapping
- * @param lookupService
- */
- public TypeRegistrar(TypeMapping typeMapping,
- BindingLookupService lookupService) {
- super();
- mTypeMapping = typeMapping;
- this.lookupService = lookupService;
- }
-
- /**
- * @param cls
- * @return QName
- */
- protected abstract QName getRegisteredQName(Class cls);
-
- /**
- * @param cls
- * @param q
- */
- abstract protected void registerClassAsWithDefaultSearialization(Class cls,
- QName q, SOAPBinding.Style style,
- SOAPBinding.Use use);
-
- /**
- * @param cls
- * @param q
- */
- abstract protected void registerClassAsXMLBeans(Class cls, QName q);
-
- /**
- * @param cls
- * @param q
- * @throws ClassNotFoundException
- * @throws NoSuchMethodException
- * @throws InstantiationException
- * @throws IllegalAccessException
- * @throws InvocationTargetException
- */
- abstract protected void registerClassAsDataHandler(Class cls, QName q)
- throws ClassNotFoundException, NoSuchMethodException,
- InstantiationException, IllegalAccessException,
- InvocationTargetException;
-
- /**
- * @param cls
- * @param q
- */
- abstract protected void registerClassAsSoapEncodedArray(Class cls, QName q);
-
- /**
- * @param cls
- * @param q
- * @return boolean
- */
- abstract protected boolean classIsRegistered(Class cls, QName q);
-
- /**
- * @return QName
- */
- abstract public QName getVoidType();
-
- abstract protected boolean isBuiltInType(Class cls);
-
- abstract protected QName getBuiltInTypeQname(Class cls);
-
- public QName registerType(Class cls, SOAPBinding.Style style,
- SOAPBinding.Use use) {
- QName q;
- if (SOAPBinding.Use.ENCODED == use && cls.isArray()) {
- q = lookupService.class2qname(cls.getComponentType());
- }
- else {
- q = lookupService.class2qname(cls);
- }
- return registerType(cls, q, style, use);
- }
-
- public QName registerType(Class cls, QName q, SOAPBinding.Style style,
- SOAPBinding.Use use) {
- try {
- logger.debug("Register class: " + cls.getCanonicalName()
- + " qName: " + q);
- if (Void.TYPE.equals(cls))
- return null;
-
- if (isBuiltInType(cls))
- return getBuiltInTypeQname(cls);
- if (q == null)
- throw new RuntimeException(
- "Invalid registeration requestion qname is null");
-
- if (cls.isArray()) {
- if (SOAPBinding.Use.ENCODED == use) {
-
- // The Qname modification was needed to run the GoogleThe qname of the array must be different from the qname of the element.
- // I don't think the qname really matters, as the array qname wont be in the message
- // The qname of the array is available in the WSDL, but at this point we don't
- // have the information, I have added "Array" at the end of the qname, it can
- // be anything else and the code seems to work (from the client side).
- // if this needs to be the real name of the array, somehow WSDL information
- // must be made available to this method.
- QName arrayQname = new QName(q.getNamespaceURI(), q.getLocalPart()+"Array");
-
- if (!classIsRegistered(cls, arrayQname))
- registerClassAsSoapEncodedArray(cls, arrayQname);
- }
- // incase of literal, or encoded register the class also
- q = registerType(cls.getComponentType(), q, style, use);
-
- } else if (!classIsRegistered(cls, q)) {
- if (org.apache.xmlbeans.XmlObject.class.isAssignableFrom(cls)) {
- registerClassAsXMLBeans(cls, q);
- }
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- these datahandler using
- * classes are generally already registered but just in case...
- */
- else if (isActivationEnabled()
- && (java.awt.Image.class.isAssignableFrom(cls)
- || getMultipartClass().isAssignableFrom(cls) || getDataHandlerClass()
- .isAssignableFrom(cls))) {
- try {
- registerClassAsDataHandler(cls, q);
- } catch (Exception e) {
- /*
- * FIXME jcolwell@bea.com 2004-Oct-08 -- log this
- * properly
- */
- e.printStackTrace();
- }
- } else if (!Remote.class.isAssignableFrom(cls)
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- java.rmi.Remote is
- * prohibited by the jax-rpc spec.
- */
-
- /*
- * NOTE jcolwell@bea.com 2004-Oct-11 -- restricting against File
- * since, it doesn't make sense to serialize as a bean. That and
- * it causes an infinite loop as it keeps returning itself from
- * the getAbsoluteFile and getCanonicalFile calls
- */
- && !File.class.isAssignableFrom(cls)) {
- registerClassAsWithDefaultSearialization(cls, q, style, use);
- } else {
- throw new RuntimeException("failed to register "
- + cls.getName()
- + " as a valid web service datatype,"
- + " consider using a custom type mapping");
- }
- }
- // }
- // }
- logger.info("Registered class: " + cls.getCanonicalName()
- + " qName: " + q);
- return q;
- } catch (RuntimeException e) {
- logger.error("Failed to register class: " + cls.getCanonicalName()
- + " type: " + q.getNamespaceURI() + ":" + q.getLocalPart());
-
- e.printStackTrace();
- throw e;
- }
- } // public Class q2Class(QName qType) { //
-
- private boolean isActivationEnabled() {
- return null != getDataHandlerClass() && null != getMultipartClass();
- }
-
- private Class getDataHandlerClass() {
- try {
- return getClass().getClassLoader().loadClass(
- "javax.activation.DataHandler");
- } catch (Exception e) {
- }
- return null;
- }
-
- private Class getMultipartClass() {
- try {
- return getClass().getClassLoader().loadClass(
- "javax.mail.internet.MimeMultipart");
- } catch (Exception e) {
- }
- return null;
- }
-
- /**
- * @param t
- * @throws Exception
- */
- static public Class getHoldersValueClass(Type t) {
- Class res = null;
-
- if (t instanceof ParameterizedType) {
- ParameterizedType pt = (ParameterizedType) t;
- Type raw = pt.getRawType();
- if (GenericHolder.class.isAssignableFrom((Class) raw)) {
- Type[] typeArgs = pt.getActualTypeArguments();
- if (typeArgs[0] instanceof GenericArrayType) {
- Class arrayElementType = (Class) ((GenericArrayType) typeArgs[0])
- .getGenericComponentType();
- res = Array.newInstance(arrayElementType, 0).getClass();
- } else {
- res = (Class) typeArgs[0];
- }
- } else {
- throw new RuntimeException(
- "Invalid parameterized type for holder: " + t);
- }
-
- } else if (t instanceof Class) {
- if (Holder.class.isAssignableFrom((Class) t)) {
- // if type is not a holder type, there is no point to dig any
- // deeper
- Field[] publicFields = ((Class) t).getFields();
- for (int i = 0; i < publicFields.length; i++) {
- if (0 == "value".compareTo(publicFields[i].getName())) {
- res = publicFields[i].getType();
- break;
- }
- }
- } else {
- throw new RuntimeException("Invalid class. Type: " + t
- + " is not a holder.");
- }
- }
- // other wise just return the type
- return res;
- }
+ /**
+ * @param typeMapping
+ * @param lookupService
+ */
+ public TypeRegistrar(TypeMapping typeMapping,
+ BindingLookupService lookupService) {
+ super();
+ mTypeMapping = typeMapping;
+ this.lookupService = lookupService;
+ }
+
+ /**
+ * @param cls
+ * @return QName
+ */
+ protected abstract QName getRegisteredQName(Class cls);
+
+ /**
+ * @param cls
+ * @param q
+ */
+ abstract protected void registerClassAsWithDefaultSearialization(Class cls,
+ QName q, SOAPBinding.Style style,
+ SOAPBinding.Use use);
+
+ /**
+ * @param cls
+ * @param q
+ */
+ abstract protected void registerClassAsXMLBeans(Class cls, QName q);
+
+ /**
+ * @param cls
+ * @param q
+ * @throws ClassNotFoundException
+ * @throws NoSuchMethodException
+ * @throws InstantiationException
+ * @throws IllegalAccessException
+ * @throws InvocationTargetException
+ */
+ abstract protected void registerClassAsDataHandler(Class cls, QName q)
+ throws ClassNotFoundException, NoSuchMethodException,
+ InstantiationException, IllegalAccessException,
+ InvocationTargetException;
+
+ /**
+ * @param cls
+ * @param q
+ */
+ abstract protected void registerClassAsSoapEncodedArray(Class cls, QName q);
+
+ /**
+ * @param cls
+ * @param q
+ * @return boolean
+ */
+ abstract protected boolean classIsRegistered(Class cls, QName q);
+
+ /**
+ * @return QName
+ */
+ abstract public QName getVoidType();
+
+ abstract protected boolean isBuiltInType(Class cls);
+
+ abstract protected QName getBuiltInTypeQname(Class cls);
+
+ public QName registerType(Class cls, SOAPBinding.Style style,
+ SOAPBinding.Use use) {
+ QName q;
+ if(SOAPBinding.Use.ENCODED == use && cls.isArray()) {
+ q = lookupService.class2qname(cls.getComponentType());
+ }
+ else {
+ q = lookupService.class2qname(cls);
+ }
+ return registerType(cls, q, style, use);
+ }
+
+ public QName registerType(Class cls, QName q, SOAPBinding.Style style,
+ SOAPBinding.Use use) {
+ try {
+ logger.debug("Register class: " + cls.getCanonicalName()
+ + " qName: " + q);
+ if(Void.TYPE.equals(cls))
+ return null;
+
+ if(isBuiltInType(cls))
+ return getBuiltInTypeQname(cls);
+ if(q == null)
+ throw new RuntimeException(
+ "Invalid registeration requestion qname is null");
+
+ if(cls.isArray()) {
+ if(SOAPBinding.Use.ENCODED == use) {
+
+ // The Qname modification was needed to run the GoogleThe qname of the array must be different from the qname of the element.
+ // I don't think the qname really matters, as the array qname wont be in the message
+ // The qname of the array is available in the WSDL, but at this point we don't
+ // have the information, I have added "Array" at the end of the qname, it can
+ // be anything else and the code seems to work (from the client side).
+ // if this needs to be the real name of the array, somehow WSDL information
+ // must be made available to this method.
+ QName arrayQname = new QName(q.getNamespaceURI(), q.getLocalPart() + "Array");
+
+ if(!classIsRegistered(cls, arrayQname))
+ registerClassAsSoapEncodedArray(cls, arrayQname);
+ }
+ // incase of literal, or encoded register the class also
+ q = registerType(cls.getComponentType(), q, style, use);
+
+ }
+ else if(!classIsRegistered(cls, q)) {
+ if(org.apache.xmlbeans.XmlObject.class.isAssignableFrom(cls)) {
+ registerClassAsXMLBeans(cls, q);
+ }
+ /*
+ * NOTE jcolwell@bea.com 2004-Oct-11 -- these datahandler using
+ * classes are generally already registered but just in case...
+ */
+ else if(isActivationEnabled()
+ && (java.awt.Image.class.isAssignableFrom(cls)
+ || getMultipartClass().isAssignableFrom(cls) || getDataHandlerClass()
+ .isAssignableFrom(cls))) {
+ try {
+ registerClassAsDataHandler(cls, q);
+ }
+ catch(Exception e) {
+ /*
+ * FIXME jcolwell@bea.com 2004-Oct-08 -- log this
+ * properly
+ */
+ e.printStackTrace();
+ }
+ }
+ else if(!Remote.class.isAssignableFrom(cls)
+ /*
+ * NOTE jcolwell@bea.com 2004-Oct-11 -- java.rmi.Remote is
+ * prohibited by the jax-rpc spec.
+ */
+
+ /*
+ * NOTE jcolwell@bea.com 2004-Oct-11 -- restricting against File
+ * since, it doesn't make sense to serialize as a bean. That and
+ * it causes an infinite loop as it keeps returning itself from
+ * the getAbsoluteFile and getCanonicalFile calls
+ */
+ && !File.class.isAssignableFrom(cls)) {
+ registerClassAsWithDefaultSearialization(cls, q, style, use);
+ }
+ else {
+ throw new RuntimeException("failed to register "
+ + cls.getName()
+ + " as a valid web service datatype,"
+ + " consider using a custom type mapping");
+ }
+ }
+ // }
+ // }
+ logger.info("Registered class: " + cls.getCanonicalName()
+ + " qName: " + q);
+ return q;
+ }
+ catch(RuntimeException e) {
+ logger.error("Failed to register class: " + cls.getCanonicalName()
+ + " type: " + q.getNamespaceURI() + ":" + q.getLocalPart());
+
+ e.printStackTrace();
+ throw e;
+ }
+ } // public Class q2Class(QName qType) { //
+
+ private boolean isActivationEnabled() {
+ return null != getDataHandlerClass() && null != getMultipartClass();
+ }
+
+ private Class getDataHandlerClass() {
+ try {
+ return getClass().getClassLoader().loadClass(
+ "javax.activation.DataHandler");
+ }
+ catch(Exception e) {
+ }
+ return null;
+ }
+
+ private Class getMultipartClass() {
+ try {
+ return getClass().getClassLoader().loadClass(
+ "javax.mail.internet.MimeMultipart");
+ }
+ catch(Exception e) {
+ }
+ return null;
+ }
+
+ /**
+ * @param t
+ * @throws Exception
+ */
+ static public Class getHoldersValueClass(Type t) {
+ Class res = null;
+
+ if(t instanceof ParameterizedType) {
+ ParameterizedType pt = (ParameterizedType)t;
+ Type raw = pt.getRawType();
+ if(GenericHolder.class.isAssignableFrom((Class)raw)) {
+ Type[] typeArgs = pt.getActualTypeArguments();
+ if(typeArgs[0] instanceof GenericArrayType) {
+ Class arrayElementType = (Class)((GenericArrayType)typeArgs[0])
+ .getGenericComponentType();
+ res = Array.newInstance(arrayElementType, 0).getClass();
+ }
+ else {
+ res = (Class)typeArgs[0];
+ }
+ }
+ else {
+ throw new RuntimeException(
+ "Invalid parameterized type for holder: " + t);
+ }
+
+ }
+ else if(t instanceof Class) {
+ if(Holder.class.isAssignableFrom((Class)t)) {
+ // if type is not a holder type, there is no point to dig any
+ // deeper
+ Field[] publicFields = ((Class)t).getFields();
+ for(int i = 0; i < publicFields.length; i++) {
+ if(0 == "value".compareTo(publicFields[i].getName())) {
+ res = publicFields[i].getType();
+ break;
+ }
+ }
+ }
+ else {
+ throw new RuntimeException("Invalid class. Type: " + t
+ + " is not a holder.");
+ }
+ }
+ // other wise just return the type
+ return res;
+ }
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/InvalidTypeMappingException.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/InvalidTypeMappingException.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/InvalidTypeMappingException.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/InvalidTypeMappingException.java Wed Jun 1 13:53:19 2005
@@ -23,8 +23,8 @@
*
* @author Jonathan Colwell
*/
-public class InvalidTypeMappingException extends java.lang.Exception {
-
+public class InvalidTypeMappingException
+ extends java.lang.Exception {
public InvalidTypeMappingException() {
super();
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/TypeMappingUtil.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/TypeMappingUtil.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/TypeMappingUtil.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/TypeMappingUtil.java Wed Jun 1 13:53:19 2005
@@ -23,14 +23,14 @@
import javax.xml.namespace.QName;
-/*******************************************************************************
- *
+/**
+ * ****************************************************************************
*
* @author Jonathan Colwell
*/
public interface TypeMappingUtil {
-
- public QName registerType(Class cls) throws InvalidTypeMappingException;
+ public QName registerType(Class cls)
+ throws InvalidTypeMappingException;
public QName registerType(Class cls, QName expectedType)
throws InvalidTypeMappingException;
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/XmlBeanTypeMappingUtil.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/XmlBeanTypeMappingUtil.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/XmlBeanTypeMappingUtil.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/util/XmlBeanTypeMappingUtil.java Wed Jun 1 13:53:19 2005
@@ -22,7 +22,6 @@
package org.apache.beehive.wsm.util;
import java.lang.reflect.Method;
-
import javax.xml.namespace.QName;
import org.apache.xmlbeans.SchemaField;
@@ -31,28 +30,29 @@
import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.XmlObject;
-/*******************************************************************************
- *
+/**
+ * ****************************************************************************
*
* @author Jonathan Colwell
*/
-public class XmlBeanTypeMappingUtil implements TypeMappingUtil {
-
- public QName registerType(Class cls) throws InvalidTypeMappingException {
- throw new InvalidTypeMappingException
- ("this implementation does not support type registration");
+public class XmlBeanTypeMappingUtil
+ implements TypeMappingUtil {
+ public QName registerType(Class cls)
+ throws InvalidTypeMappingException {
+ throw new InvalidTypeMappingException
+ ("this implementation does not support type registration");
}
public QName registerType(Class cls, QName expectedType)
throws InvalidTypeMappingException {
-
+
throw new InvalidTypeMappingException
("this implementation does not support type registration");
}
public QName generateQName(Class type, String defaultNS) {
- if (XmlObject.class.isAssignableFrom(type)) {
+ if(XmlObject.class.isAssignableFrom(type)) {
return XmlBeans.typeForClass(type).getName();
}
else {
@@ -64,33 +64,33 @@
SchemaTypeLoader stl = XmlBeans.getContextTypeLoader();
SchemaType st = stl.findType(qType);
- if (st == null) {
+ if(st == null) {
SchemaField sf = stl.findElement(qType);
- if (sf != null) {
+ if(sf != null) {
st = sf.getType();
}
}
- if (st != null) {
+ if(st != null) {
Class xmlClass = st.getJavaClass();
//String clName = xmlClass.getName();
- if (st.isBuiltinType()) {
+ if(st.isBuiltinType()) {
Method[] declared = xmlClass.getDeclaredMethods();
Class natural =
scanDeclaredMethodsForViableReturnType(declared);
- if (natural != null) {
+ if(natural != null) {
return natural;
}
else {
// NOTE jcolwell@bea.com 2004-Nov-12 --
// XmlString declares no methods
- if (xmlClass.isInterface()) {
- for (Class cl : xmlClass.getInterfaces()) {
+ if(xmlClass.isInterface()) {
+ for(Class cl : xmlClass.getInterfaces()) {
natural = scanDeclaredMethodsForViableReturnType
(cl.getDeclaredMethods());
- if (natural != null) {
+ if(natural != null) {
return natural;
}
}
@@ -99,7 +99,7 @@
declared = xmlClass.getSuperclass().getDeclaredMethods();
natural = scanDeclaredMethodsForViableReturnType
(declared);
- if (natural != null) {
+ if(natural != null) {
return natural;
}
}
@@ -117,7 +117,7 @@
return xmlClass;
}
else {
- // NOTE jcolwell@bea.com 2004-Nov-30 --
+ // NOTE jcolwell@bea.com 2004-Nov-30 --
// keep in mind that a real TMU based on a viable SOAP stack should
// be used and this pure XmlBean implementation is just a fallback.
System.out.println("no schematype found for " + qType);
@@ -127,20 +127,20 @@
private Class scanDeclaredMethodsForViableReturnType
(Method[] declared) {
-
- for (Method meth : declared) {
-
+
+ for(Method meth : declared) {
+
Class returnType = meth.getReturnType();
//System.out.println(returnType.getName());
- if (!returnType.equals(Void.TYPE)) {
+ if(!returnType.equals(Void.TYPE)) {
/*
- * NOTE jcolwell@bea.com 2004-Nov-12 --
+ * NOTE jcolwell@bea.com 2004-Nov-12 --
* built-in XmlBeans types may be of the following natural
* types:
* primitives, byte arrays, Strings, Calendars, BigIntegers
* and BigDecimals
*/
- if (returnType.isArray()
+ if(returnType.isArray()
|| returnType.isPrimitive()
|| returnType.equals(String.class)
|| returnType.equals(QName.class)
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/AbstractWsdl2AJava.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/AbstractWsdl2AJava.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/AbstractWsdl2AJava.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/AbstractWsdl2AJava.java Wed Jun 1 13:53:19 2005
@@ -24,12 +24,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
-import java.net.MalformedURLException;
import java.util.Properties;
-
import org.apache.beehive.wsm.model.BeehiveWsTypeMetadata;
-import org.apache.beehive.wsm.model.wsdl.XmlBeanWSDLProcessor;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
@@ -37,126 +34,129 @@
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
-import org.apache.xmlbeans.XmlException;
/**
* @author dmehrtas
- *
*/
public abstract class AbstractWsdl2AJava {
+ VelocityEngine ve = null;
+ Template template = null;
- VelocityEngine ve = null;
- Template template = null;
-
- protected abstract BeehiveWsTypeMetadata getWSObjectModel(InputStream wsdl) throws Exception;
+ protected abstract BeehiveWsTypeMetadata getWSObjectModel(InputStream wsdl)
+ throws Exception;
-
- /**
- * @throws Exception
- *
- */
- public AbstractWsdl2AJava() throws Exception {
- super();
- }
-
- /**
- * @throws Exception
- * @throws ResourceNotFoundException
- * @throws ParseErrorException
- * @throws MethodInvocationException
- */
- public void init() throws Exception, ResourceNotFoundException,
- ParseErrorException, MethodInvocationException {
-
- Properties p = new Properties();
- p.setProperty(VelocityEngine.RESOURCE_LOADER, "class");
- p.setProperty("class." + VelocityEngine.RESOURCE_LOADER + ".class",
- ClasspathResourceLoader.class.getName());
- ve = new VelocityEngine();
- ve.init(p);
- String templateFileName = "org/apache/beehive/wsm/wsdl/wsdl2ajava.vm";
-
- try {
- template = ve.getTemplate(templateFileName);
- } catch (ResourceNotFoundException e) {
- // couldn't find the template
- System.out.println("Failed to find the tempate file: "
- + templateFileName + " in classpath: "
- + System.getProperty("java.class.path"));
- e.printStackTrace();
- throw e;
- } catch (ParseErrorException e) {
- // syntax error : problem parsing the template
- e.printStackTrace();
- throw e;
- } catch (MethodInvocationException e) {
- // something invoked in the template
- // threw an exception
- e.printStackTrace();
- throw e;
- } catch (Exception e) {
- e.printStackTrace();
- throw e;
- }
- }
-
- public void generateAnnotatedJavaFromWSDL(String wsdlFileName,
- String baseSrcDir) throws Exception {
-
- InputStream wsdl = new FileInputStream(wsdlFileName);
- BeehiveWsTypeMetadata om = getWSObjectModel(wsdl);
-
- String className = om.getWsName();
- String packageName = "web"; // Later see if the target name service is
- // better option
- String packageDirName = packageName.replaceAll("\\.", "/"); // nop right
- // now,
- // useful if
- // the
- // target
- // package
- // name
-
- File packageDir = new File(baseSrcDir + "/" + packageDirName);
- if (!packageDir.exists())
- packageDir.mkdirs();
-
- String fullFilePath = baseSrcDir + "/" + packageDirName + "/"
- + className + ".java";
-
- File srcFile = new File(fullFilePath);
- srcFile.createNewFile();
- Writer w = new FileWriter(srcFile, false);
- generateAnnotatedJavaFromOM(om, w);
- }
-
-
- public void generateAnnotatedJavaFromWSDL(InputStream wsdl, Writer w)
- throws Exception {
-
- BeehiveWsTypeMetadata om = getWSObjectModel(wsdl);
- generateAnnotatedJavaFromOM(om, w);
- }
-
- /**
- * @param w
- * @param om
- * @throws ResourceNotFoundException
- * @throws ParseErrorException
- * @throws MethodInvocationException
- * @throws Exception
- * @throws IOException
- */
- public void generateAnnotatedJavaFromOM(BeehiveWsTypeMetadata om, Writer w)
- throws ResourceNotFoundException, ParseErrorException,
- MethodInvocationException, Exception, IOException {
- VelocityContext context = new VelocityContext();
- context.put("webServiceOM", om);
- template.merge(context, w);
- w.close();
- }
+ /**
+ * @throws Exception
+ */
+ public AbstractWsdl2AJava()
+ throws Exception {
+ super();
+ }
+
+ /**
+ * @throws Exception
+ * @throws ResourceNotFoundException
+ * @throws ParseErrorException
+ * @throws MethodInvocationException
+ */
+ public void init()
+ throws Exception, ResourceNotFoundException,
+ ParseErrorException, MethodInvocationException {
+
+ Properties p = new Properties();
+ p.setProperty(VelocityEngine.RESOURCE_LOADER, "class");
+ p.setProperty("class." + VelocityEngine.RESOURCE_LOADER + ".class",
+ ClasspathResourceLoader.class.getName());
+ ve = new VelocityEngine();
+ ve.init(p);
+ String templateFileName = "org/apache/beehive/wsm/wsdl/wsdl2ajava.vm";
+
+ try {
+ template = ve.getTemplate(templateFileName);
+ }
+ catch(ResourceNotFoundException e) {
+ // couldn't find the template
+ System.out.println("Failed to find the tempate file: "
+ + templateFileName + " in classpath: "
+ + System.getProperty("java.class.path"));
+ e.printStackTrace();
+ throw e;
+ }
+ catch(ParseErrorException e) {
+ // syntax error : problem parsing the template
+ e.printStackTrace();
+ throw e;
+ }
+ catch(MethodInvocationException e) {
+ // something invoked in the template
+ // threw an exception
+ e.printStackTrace();
+ throw e;
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ public void generateAnnotatedJavaFromWSDL(String wsdlFileName,
+ String baseSrcDir)
+ throws Exception {
+
+ InputStream wsdl = new FileInputStream(wsdlFileName);
+ BeehiveWsTypeMetadata om = getWSObjectModel(wsdl);
+
+ String className = om.getWsName();
+ String packageName = "web"; // Later see if the target name service is
+ // better option
+ String packageDirName = packageName.replaceAll("\\.", "/"); // nop right
+ // now,
+ // useful if
+ // the
+ // target
+ // package
+ // name
+
+ File packageDir = new File(baseSrcDir + "/" + packageDirName);
+ if(!packageDir.exists())
+ packageDir.mkdirs();
+
+ String fullFilePath = baseSrcDir + "/" + packageDirName + "/"
+ + className + ".java";
+
+ File srcFile = new File(fullFilePath);
+ srcFile.createNewFile();
+ Writer w = new FileWriter(srcFile, false);
+ generateAnnotatedJavaFromOM(om, w);
+ }
+
+
+ public void generateAnnotatedJavaFromWSDL(InputStream wsdl, Writer w)
+ throws Exception {
+
+ BeehiveWsTypeMetadata om = getWSObjectModel(wsdl);
+ generateAnnotatedJavaFromOM(om, w);
+ }
+
+ /**
+ * @param w
+ * @param om
+ * @throws ResourceNotFoundException
+ * @throws ParseErrorException
+ * @throws MethodInvocationException
+ * @throws Exception
+ * @throws IOException
+ */
+ public void generateAnnotatedJavaFromOM(BeehiveWsTypeMetadata om, Writer w)
+ throws ResourceNotFoundException, ParseErrorException,
+ MethodInvocationException, Exception, IOException {
+ VelocityContext context = new VelocityContext();
+ context.put("webServiceOM", om);
+ template.merge(context, w);
+ w.close();
+ }
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Schema.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Schema.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Schema.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Schema.java Wed Jun 1 13:53:19 2005
@@ -21,19 +21,15 @@
import java.io.IOException;
import java.io.InputStream;
-
import javax.xml.namespace.QName;
-import org.xmlsoap.schemas.wsdl.TTypes;
-
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
-
import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelComplexType;
import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelElement;
import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelSimpleType;
-
+import org.xmlsoap.schemas.wsdl.TTypes;
public class Schema {
@@ -44,61 +40,63 @@
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
- public Schema(TTypes tt) throws IllegalAccessException, NoSuchFieldException {
-
+ public Schema(TTypes tt)
+ throws IllegalAccessException, NoSuchFieldException {
+
schemas = Utilities.selectChildren(tt, SchemaDocument.Schema.class);
}
-
+
/**
* @param stream
* @throws IOException
* @throws XmlException
*/
- public Schema(InputStream stream) throws XmlException, IOException {
+ public Schema(InputStream stream)
+ throws XmlException, IOException {
SchemaDocument schemaDoc = SchemaDocument.Factory.parse(stream);
schemas = new SchemaDocument.Schema[1];
schemas[0] = schemaDoc.getSchema();
- }
+ }
public XmlObject getTypeNode(QName q) {
// first find the schema with matching namespace
SchemaDocument.Schema schema = null;
- for (SchemaDocument.Schema nxtSchema : schemas) {
- if (nxtSchema.getTargetNamespace() != null
- && nxtSchema.getTargetNamespace().equals(
- q.getNamespaceURI())) {
+ for(SchemaDocument.Schema nxtSchema : schemas) {
+ if(nxtSchema.getTargetNamespace() != null
+ && nxtSchema.getTargetNamespace().equals(
+ q.getNamespaceURI())) {
schema = nxtSchema;
break;
}
}
- if (null == schema)
+ if(null == schema)
return null; // namespace is not found in this schema.
-
+
// look in complex types
TopLevelComplexType[] tlComplexTypes = schema.getComplexTypeArray();
- for( TopLevelComplexType nxtComplexType : tlComplexTypes) {
- if( nxtComplexType.getName().equals(q.getLocalPart())) {
+ for(TopLevelComplexType nxtComplexType : tlComplexTypes) {
+ if(nxtComplexType.getName().equals(q.getLocalPart())) {
return nxtComplexType;
}
}
// look in simple types
TopLevelSimpleType[] tlSimpleTypes = schema.getSimpleTypeArray();
- for( TopLevelSimpleType nxtSimpleType : tlSimpleTypes) {
- if( nxtSimpleType.getName().equals(q.getLocalPart())) {
+ for(TopLevelSimpleType nxtSimpleType : tlSimpleTypes) {
+ if(nxtSimpleType.getName().equals(q.getLocalPart())) {
return nxtSimpleType;
}
}
-
+
// look in element types
TopLevelElement[] tlElementTypes = schema.getElementArray();
- for( TopLevelElement nxtElement : tlElementTypes) {
- if( nxtElement.getName().equals(q.getLocalPart())) {
+ for(TopLevelElement nxtElement : tlElementTypes) {
+ if(nxtElement.getName().equals(q.getLocalPart())) {
return nxtElement;
}
}
-
+
return null; // it is not in comlex or simple types!
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Utilities.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Utilities.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Utilities.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/Utilities.java Wed Jun 1 13:53:19 2005
@@ -30,15 +30,15 @@
import org.apache.xmlbeans.XmlObject;
public class Utilities {
-
public static <T extends XmlObject> T[] selectChildren(XmlObject parent,
- Class<T> childClass) throws IllegalAccessException,
- NoSuchFieldException {
+ Class<T> childClass)
+ throws IllegalAccessException,
+ NoSuchFieldException {
// retrieve the SchemaType from the static type field
- SchemaType st = (SchemaType) childClass.getField("type").get(null);
+ SchemaType st = (SchemaType)childClass.getField("type").get(null);
XmlObject[] kids = parent.selectChildren(st.getDocumentElementName());
- T[] castKids = (T[]) Array.newInstance(childClass, kids.length);
- for (int j = 0; j < castKids.length; j++) {
+ T[] castKids = (T[])Array.newInstance(childClass, kids.length);
+ for(int j = 0; j < castKids.length; j++) {
castKids[j] = childClass.cast(kids[j]);
}
return castKids;
@@ -55,24 +55,26 @@
// Keep a cache of schemas that have been read.
static Map<String, Schema> schemaCache = new HashMap<String, Schema>();
+
public static Schema findtSchemaDocument(SchemaType docType)
- throws XmlException, IOException, IllegalAccessException,
- NoSuchFieldException {
+ throws XmlException, IOException, IllegalAccessException,
+ NoSuchFieldException {
Schema mySchema = null;
- if (null != (mySchema = schemaCache.get(docType.getName()
- .getNamespaceURI()))) {
+ if(null != (mySchema = schemaCache.get(docType.getName()
+ .getNamespaceURI()))) {
return mySchema;
}
String schemaSrc = docType.getSourceName();
InputStream stream = docType.getTypeSystem().getSourceAsStream(
- schemaSrc);
+ schemaSrc);
- if (null == stream) {
+ if(null == stream) {
throw new RuntimeException("WSDL file not found: " + schemaSrc);
}
- if (schemaSrc.endsWith(".wsdl") || schemaSrc.endsWith(".WSDL")) {
+ if(schemaSrc.endsWith(".wsdl") || schemaSrc.endsWith(".WSDL")) {
mySchema = new WSDLParser(stream).getSchema();
- } else {
+ }
+ else {
mySchema = new Schema(stream);
}
schemaCache.put(docType.getName().getNamespaceURI(), mySchema);
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLParser.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLParser.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLParser.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLParser.java Wed Jun 1 13:53:19 2005
@@ -1,10 +1,10 @@
package org.apache.beehive.wsm.wsdl;
/*
- *
+ *
* Copyright 2001-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
@@ -16,40 +16,27 @@
* 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.
- *
- *
+ *
+ *
*/
import java.io.IOException;
import java.io.InputStream;
-import java.lang.reflect.Array;
-
-import javax.xml.namespace.QName;
+import org.apache.xmlbeans.XmlException;
import org.xmlsoap.schemas.wsdl.DefinitionsDocument;
import org.xmlsoap.schemas.wsdl.TPort;
import org.xmlsoap.schemas.wsdl.TService;
import org.xmlsoap.schemas.wsdl.TTypes;
import org.xmlsoap.schemas.wsdl.soap.TAddress;
-import org.apache.xmlbeans.SchemaType;
-import org.apache.xmlbeans.XmlException;
-import org.apache.xmlbeans.XmlObject;
-
-import org.apache.xmlbeans.impl.xb.xsdschema.SchemaDocument;
-import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelComplexType;
-import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelElement;
-import org.apache.xmlbeans.impl.xb.xsdschema.TopLevelSimpleType;
-
public class WSDLParser {
-
-
InputStream stream;
DefinitionsDocument defDoc;
TTypes tt;
Schema schema;
- TService[] services;
-
+ TService[] services;
+
/**
* @param stream
* @throws IOException
@@ -57,7 +44,8 @@
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
- public WSDLParser(InputStream stream) throws XmlException, IOException, IllegalAccessException, NoSuchFieldException {
+ public WSDLParser(InputStream stream)
+ throws XmlException, IOException, IllegalAccessException, NoSuchFieldException {
super();
this.stream = stream;
@@ -65,34 +53,35 @@
tt = defDoc.getDefinitions().getTypesArray(0);
schema = new Schema(tt);
services = defDoc.getDefinitions().getServiceArray();
-
+
}
+
/**
* @return Returns the schema.
*/
public Schema getSchema() {
return schema;
}
-
- public String getSoapAddressLocation() throws IllegalAccessException {
+
+ public String getSoapAddressLocation()
+ throws IllegalAccessException {
String location = null;
- if (services.length > 0) {
+ if(services.length > 0) {
TPort port = services[0].getPortArray(0);
if(null != port) {
- try {
+ try {
TAddress[] soapAddress = Utilities.selectChildren(port, TAddress.class);
if(soapAddress.length > 0) {
location = soapAddress[0].getLocation();
}
- } catch (NoSuchFieldException e) {
- // just return null
+ }
+ catch(NoSuchFieldException e) {
+ // just return null
}
}
}
- return location;
+ return location;
}
-
-
}
Modified: incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLProcessor.java?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLProcessor.java (original)
+++ incubator/beehive/trunk/wsm/src/runtime/org/apache/beehive/wsm/wsdl/WSDLProcessor.java Wed Jun 1 13:53:19 2005
@@ -18,25 +18,25 @@
*/
package org.apache.beehive.wsm.wsdl;
-import org.apache.beehive.wsm.model.BeehiveWsTypeMetadata;
-
import java.io.InputStream;
-/*******************************************************************************
+import org.apache.beehive.wsm.model.BeehiveWsTypeMetadata;
+
+/**
+ * ****************************************************************************
* Creates a WebServiceTYPEMetadata Object from a WSDL.
*
* @author Jonathan Colwell
*/
public interface WSDLProcessor {
-
/**
- * Converts a WSDL document in the provided InputStream into the WSM
- * Model.
- *
+ * Converts a WSDL document in the provided InputStream into the WSM
+ * Model.
+ *
* @param wsdlStream an InputStream containing a WSDL document.
* @return a WSM Object model representing the service in the provided WSDL.
*/
public BeehiveWsTypeMetadata createObjectModel(InputStream wsdlStream)
throws Exception;
-
+
}
Modified: incubator/beehive/trunk/wsm/src/runtime/schema/beehive-role.xsd
URL: http://svn.apache.org/viewcvs/incubator/beehive/trunk/wsm/src/runtime/schema/beehive-role.xsd?rev=179419&r1=179418&r2=179419&view=diff
==============================================================================
--- incubator/beehive/trunk/wsm/src/runtime/schema/beehive-role.xsd (original)
+++ incubator/beehive/trunk/wsm/src/runtime/schema/beehive-role.xsd Wed Jun 1 13:53:19 2005
@@ -12,41 +12,41 @@
See the License for the specific language governing permissions and
limitations under the License. -->
<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:bh="http://www.apache.org/beehive/wsm/axis/security/xmlbeans"
- targetNamespace="http://www.apache.org/beehive/wsm/axis/security/xmlbeans"
- elementFormDefault="qualified">
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:bh="http://www.apache.org/beehive/wsm/axis/security/xmlbeans"
+ targetNamespace="http://www.apache.org/beehive/wsm/axis/security/xmlbeans"
+ elementFormDefault="qualified">
- <xs:element name="beehive-role">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="role" type="bh:role" minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="group" type="bh:group" minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="user" type="bh:user" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <xs:element name="beehive-role">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="role" type="bh:role" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="bh:group" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="user" type="bh:user" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
- <xs:complexType name="role">
- <xs:sequence>
- <xs:element name="user" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
- <xs:element name="group" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" />
- </xs:complexType>
+ <xs:complexType name="role">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="group" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
- <xs:complexType name="group">
- <xs:sequence>
- <xs:element name="user" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="name" type="xs:string" />
- </xs:complexType>
+ <xs:complexType name="group">
+ <xs:sequence>
+ <xs:element name="user" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:string"/>
+ </xs:complexType>
- <xs:complexType name="user">
- <xs:attribute name="name" type="xs:string" />
- <xs:attribute name="password" type="xs:string" />
- <xs:attribute name="md5" type="xs:boolean" default="false" />
- </xs:complexType>
+ <xs:complexType name="user">
+ <xs:attribute name="name" type="xs:string"/>
+ <xs:attribute name="password" type="xs:string"/>
+ <xs:attribute name="md5" type="xs:boolean" default="false"/>
+ </xs:complexType>
</xs:schema>