From: Thomas D. <tdi...@us...> - 2004-04-21 13:31:17
|
User: tdiesler Date: 04/04/21 06:30:48 Modified: src/main/org/jboss/metadata ClientMetaData.java ServiceRefMetaData.java Log: + provide access to the wsdl definition from ServiceRefMetaData Revision Changes Path 1.6 +13 -3 jboss/src/main/org/jboss/metadata/ClientMetaData.java Index: ClientMetaData.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/metadata/ClientMetaData.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- ClientMetaData.java 20 Apr 2004 16:57:30 -0000 1.5 +++ ClientMetaData.java 21 Apr 2004 13:30:43 -0000 1.6 @@ -6,7 +6,7 @@ */ package org.jboss.metadata; -// $Id: ClientMetaData.java,v 1.5 2004/04/20 16:57:30 tdiesler Exp $ +// $Id: ClientMetaData.java,v 1.6 2004/04/21 13:30:43 tdiesler Exp $ import org.jboss.deployment.DeploymentException; import org.w3c.dom.Element; @@ -19,10 +19,13 @@ * * @author Sco...@jb... * @author Tho...@jb... - * @version $Revision: 1.5 $ + * @version $Revision: 1.6 $ */ public class ClientMetaData { + /** The ClassLoader to load additional resources */ + private ClassLoader localCl; + /** The application-client/display-name */ private String displayName; /** The location for the server side client context ENC bindings */ @@ -40,6 +43,13 @@ /** The HashMap<ServiceRefMetaData> service-ref element(s) info */ private HashMap serviceReferences = new HashMap(); + /** Set the ClassLoader to load additional resources + */ + public void setResourceClassLoader(ClassLoader localCl) + { + this.localCl = localCl; + } + /** The application-client/display-name * @return application-client/display-name value */ @@ -171,7 +181,7 @@ while (iterator.hasNext()) { Element serviceRef = (Element) iterator.next(); - ServiceRefMetaData refMetaData = new ServiceRefMetaData(); + ServiceRefMetaData refMetaData = new ServiceRefMetaData(localCl); refMetaData.importClientXml(serviceRef); serviceReferences.put(refMetaData.getServiceRefName(), refMetaData); } 1.2 +74 -2 jboss/src/main/org/jboss/metadata/ServiceRefMetaData.java Index: ServiceRefMetaData.java =================================================================== RCS file: /cvsroot/jboss/jboss/src/main/org/jboss/metadata/ServiceRefMetaData.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ServiceRefMetaData.java 20 Apr 2004 16:57:33 -0000 1.1 +++ ServiceRefMetaData.java 21 Apr 2004 13:30:47 -0000 1.2 @@ -6,22 +6,36 @@ */ package org.jboss.metadata; -// $Id: ServiceRefMetaData.java,v 1.1 2004/04/20 16:57:33 tdiesler Exp $ +// $Id: ServiceRefMetaData.java,v 1.2 2004/04/21 13:30:47 tdiesler Exp $ import org.jboss.deployment.DeploymentException; +import org.jboss.logging.Logger; +import org.w3c.dom.Document; import org.w3c.dom.Element; +import javax.wsdl.Definition; +import javax.wsdl.WSDLException; +import javax.wsdl.factory.WSDLFactory; +import javax.wsdl.xml.WSDLReader; import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import java.util.HashMap; import java.util.Iterator; /** The metdata data from service-ref in application-client.xml descriptor * * @author Tho...@jb... - * @version $Revision: 1.1 $ + * @version $Revision: 1.2 $ */ public class ServiceRefMetaData { + // provide logging + private static final Logger log = Logger.getLogger(ServiceRefMetaData.class); + + /** The ClassLoader to load additional resources */ + private ClassLoader localCl; + /** The service-ref/service-ref-name element */ private String serviceRefName; /** The service-ref/service-interface element */ @@ -39,6 +53,22 @@ /** The HashMap<HandlerMetaData> service-ref/handler element(s) */ private HashMap handlers = new HashMap(); + // derived properties + private Document wsdlDocument; + private Definition wsdlDefinition; + + /** + * Construct the service-ref meta + * @param localCl A ClassLoader to load additional resources + */ + public ServiceRefMetaData(ClassLoader localCl) + { + if (localCl == null) + throw new IllegalArgumentException("ResourceClassLoader cannot be null"); + + this.localCl = localCl; + } + /** * @return HashMap<HandlerMetaData> */ @@ -82,6 +112,48 @@ return wsdlFile; } + public Document getWsdlDocument() + { + if (wsdlDocument != null) + return wsdlDocument; + + DocumentBuilder builder = null; + try + { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + builder = factory.newDocumentBuilder(); + wsdlDocument = builder.parse(localCl.getResourceAsStream(wsdlFile)); + } + catch (Exception e) + { + log.error("Cannot obtain WSDL document", e); + return null; + } + + return wsdlDocument; + } + + public Definition getWsdlDefinition() + { + if (wsdlDefinition != null) + return wsdlDefinition; + + try + { + WSDLFactory wsdlFactory = WSDLFactory.newInstance(); + WSDLReader wsdlReader = wsdlFactory.newWSDLReader(); + wsdlDefinition = wsdlReader.readWSDL(null, getWsdlDocument()); + } + catch (WSDLException e) + { + log.error("Cannot obtain WSDL definition", e); + return null; + } + + return wsdlDefinition; + } + public void importClientXml(Element element) throws DeploymentException { |