Author: remm Date: Thu Apr 6 07:13:54 2006 New Revision: 391991 URL: http://svn.apache.org/viewcvs?rev=391991&view=rev Log: - Add "support" (note: not in NamingContextListener yet) for service-ref (after all, there's support for all other elements, so ...). - Submitted by Fabien Carrion.
Added: tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/ContextService.java Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/NamingResources.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java Added: tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/ContextService.java URL: http://svn.apache.org/viewcvs/tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/ContextService.java?rev=391991&view=auto ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/ContextService.java (added) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/ContextService.java Thu Apr 6 07:13:54 2006 @@ -0,0 +1,235 @@ +/* + * Copyright 2006 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.catalina.deploy; + +import java.io.Serializable; + +/** + * Representation of a web service reference for a web application, as + * represented in a <code><service-ref></code> element in the + * deployment descriptor. + * + * @author Fabien Carrion + * @version $Revision: 303342 $ $Date: 2005-03-15 23:29:49 -0700 (Web, 15 Mar 2006) $ + */ + +public class ContextService extends ResourceBase implements Serializable { + + + // ------------------------------------------------------------- Properties + + + /** + * The WebService reference name. + */ + private String displayname = null; + + public String getDisplayname() { + return (this.displayname); + } + + public void setDisplayname(String displayname) { + this.displayname = displayname; + } + + /** + * An icon for this WebService. + */ + private String icon = null; + + public String getIcon() { + return (this.icon); + } + + public void setIcon(String icon) { + this.icon = icon; + } + + /** + * An icon for this WebService. + */ + private String serviceinterface = null; + + public String getServiceinterface() { + return (this.serviceinterface); + } + + public void setServiceinterface(String serviceinterface) { + this.serviceinterface = serviceinterface; + } + + /** + * Contains the location (relative to the root of + * the module) of the web service WSDL description. + */ + private String wsdlfile = null; + + public String getWsdlfile() { + return (this.wsdlfile); + } + + public void setWsdlfile(String wsdlfile) { + this.wsdlfile = wsdlfile; + } + + /** + * A file specifying the correlation of the WSDL definition + * to the interfaces (Service Endpoint Interface, Service Interface). + */ + private String jaxrpcmappingfile = null; + + public String getJaxrpcmappingfile() { + return (this.jaxrpcmappingfile); + } + + public void setJaxrpcmappingfile(String jaxrpcmappingfile) { + this.jaxrpcmappingfile = jaxrpcmappingfile; + } + + /** + * Declares the specific WSDL service element that is being referred to. + * It is not specified if no wsdl-file is declared or if WSDL contains only + * 1 service element. + * + * A service-qname is composed by a namespaceURI and a localpart. + * It must be defined if more than 1 service is declared in the WSDL. + * + * serviceqname[0] : namespaceURI + * serviceqname[1] : localpart + */ + private String[] serviceqname = new String[2]; + + public String[] getServiceqname() { + return (this.serviceqname); + } + + public void setServiceqname(String[] serviceqname) { + this.serviceqname = serviceqname; + } + + public void setServiceqname(String serviceqname, int i) { + this.serviceqname[i] = serviceqname; + } + + public void setNamespaceURI(String namespaceuri) { + this.serviceqname[0] = namespaceuri; + } + + public void setLocalpart(String localpart) { + this.serviceqname[1] = localpart; + } + + /** + * Declares a client dependency on the container to resolving a Service Endpoint Interface + * to a WSDL port. It optionally associates the Service Endpoint Interface with a + * particular port-component. + * + * portcomponent[0] : service-endpoint-interface + * portcomponent[1] : port-component-link + */ + private String[] portcomponent = new String[2]; + + public String[] getPortcomponent() { + return (this.portcomponent); + } + + public void setPortcomponent(String[] portcomponent) { + this.portcomponent = portcomponent; + } + + public void setPortcomponent(String portcomponent, int i) { + this.portcomponent[i] = portcomponent; + } + + public void setServiceendpoint(String serviceendpoint) { + this.portcomponent[0] = serviceendpoint; + } + + public void setPortlink(String portlink) { + this.portcomponent[1] = portlink; + } + + /** + * A list of Handler to use for this service-ref. + * + * The instanciation of the handler have to be done. + */ + private String handler = null; + + public String getHandler() { + return (this.handler); + } + + public void setHandler(String handler) { + this.handler = handler; + } + + + // --------------------------------------------------------- Public Methods + + + /** + * Return a String representation of this object. + */ + public String toString() { + + StringBuffer sb = new StringBuffer("ContextService["); + sb.append("name="); + sb.append(getName()); + if (getDescription() != null) { + sb.append(", description="); + sb.append(getDescription()); + } + if (getType() != null) { + sb.append(", type="); + sb.append(getType()); + } + if (displayname != null) { + sb.append(", displayname="); + sb.append(displayname); + } + if (icon != null) { + sb.append(", icon="); + sb.append(icon); + } + if (wsdlfile != null) { + sb.append(", wsdl-file="); + sb.append(wsdlfile); + } + if (jaxrpcmappingfile != null) { + sb.append(", jaxrpc-mapping-file="); + sb.append(jaxrpcmappingfile); + } + if (serviceqname != null) { + sb.append(", service-qname="); + sb.append(serviceqname); + } + if (portcomponent != null) { + sb.append(", port-component="); + sb.append(portcomponent); + } + if (handler != null) { + sb.append(", handler="); + sb.append(handler); + } + sb.append("]"); + return (sb.toString()); + + } + +} Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/NamingResources.java URL: http://svn.apache.org/viewcvs/tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/NamingResources.java?rev=391991&r1=391990&r2=391991&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/NamingResources.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/deploy/NamingResources.java Thu Apr 6 07:13:54 2006 @@ -108,10 +108,16 @@ /** + * The web service references for this web application, keyed by name. + */ + private HashMap services = new HashMap(); + + + /** * The transaction for this webapp. */ private ContextTransaction transaction = null; - + /** * The property change support for this component. @@ -325,6 +331,28 @@ /** + * Add a web service reference for this web application. + * + * @param service New web service reference + */ + public void addService(ContextService service) { + + if (entries.containsKey(service.getName())) { + return; + } else { + entries.put(service.getName(), service.getType()); + } + + synchronized (services) { + service.setNamingResources(this); + services.put(service.getName(), service); + } + support.firePropertyChange("service", null, service); + + } + + + /** * Return the EJB resource reference with the specified name, if any; * otherwise, return <code>null</code>. * @@ -533,6 +561,35 @@ /** + * Return the web service reference for the specified + * name, if any; otherwise return <code>null</code>. + * + * @param name Name of the desired web service + */ + public ContextService findService(String name) { + + synchronized (services) { + return ((ContextService) services.get(name)); + } + + } + + + /** + * Return the defined web service references for this application. If + * none have been defined, a zero-length array is returned. + */ + public ContextService[] findServices() { + + synchronized (services) { + ContextService results[] = new ContextService[services.size()]; + return ((ContextService[]) services.values().toArray(results)); + } + + } + + + /** * Return true if the name specified already exists. */ public boolean exists(String name) { @@ -699,6 +756,27 @@ resourceLink.setNamingResources(null); } + } + + + /** + * Remove any web service reference with the specified name. + * + * @param name Name of the web service reference to remove + */ + public void removeService(String name) { + + entries.remove(name); + + ContextService service = null; + synchronized (services) { + service = (ContextService) services.remove(name); + } + if (service != null) { + support.firePropertyChange("service", service, null); + service.setNamingResources(null); + } + } Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java URL: http://svn.apache.org/viewcvs/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java?rev=391991&r1=391990&r2=391991&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java Thu Apr 6 07:13:54 2006 @@ -369,6 +369,40 @@ digester.addCallMethod(prefix + "web-app/security-role/role-name", "addSecurityRole", 0); + digester.addObjectCreate(prefix + "web-app/service-ref", + "org.apache.catalina.deploy.ContextService"); + digester.addRule(prefix + "web-app/service-ref", + new SetNextNamingRule("addService", + "org.apache.catalina.deploy.ContextService")); + + digester.addCallMethod(prefix + "web-app/service-ref/description", + "setDescription", 0); + digester.addCallMethod(prefix + "web-app/service-ref/display-name", + "setDisplayname", 0); + digester.addCallMethod(prefix + "web-app/service-ref/icon", + "setIcon", 0); + digester.addCallMethod(prefix + "web-app/service-ref/service-ref-name", + "setName", 0); + digester.addCallMethod(prefix + "web-app/service-ref/service-interface", + "setServiceinterface", 0); + digester.addCallMethod(prefix + "web-app/service-ref/wsdl-file", + "setWsdlfile", 0); + digester.addCallMethod(prefix + "web-app/service-ref/jaxrpc-mapping-file", + "setJaxrpcmappingfile", 0); + digester.addCallMethod(prefix + "web-app/service-ref/service-qname/namespaceURI", + "setNamespaceURI", 0); + digester.addCallMethod(prefix + "web-app/service-ref/service-qname/localpart", + "setLocalpart", 0); + digester.addCallMethod(prefix + + "web-app/service-ref/port-component/service-endpoint-interface", + "setServiceendpoint", 0); + digester.addCallMethod(prefix + "web-app/service-ref/port-component/port-component-link", + "setPortlink", 0); + digester.addCallMethod(prefix + "web-app/service-ref/handler", + "setHandler", 0); + digester.addCallMethod(prefix + "web-app/service-ref/service-ref-type", + "setType", 0); + digester.addRule(prefix + "web-app/servlet", new WrapperCreateRule()); digester.addSetNext(prefix + "web-app/servlet", --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]