[jboss-svn-commits] JBossWS SVN: r737 - in branches/tdiesler/trunk/src: main/java/org/jboss/ws/deployment main/java/org/jboss/ws/integration/jboss main/java/org/jboss/ws/jaxrpc main/java/org/jboss/ws/jaxrpc/handler main/java/org/jboss/ws/jaxws/handler main/java/org/jboss/ws/metadata main/java/org/jboss/ws/metadata/config/jaxrpc main/java/org/jboss/ws/metadata/config/jaxws main/java/org/jboss/ws/metadata/j2ee main/java/org/jboss/ws/metadata/jsr109 main/java/org/jboss/ws/metadata/jsr181 test/java/org/jboss/test/ws/config test/java/org/jboss/test/ws/jaxws/handlerscope test/resources/jaxws/handlerscope/WEB-INF
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Aug 13 13:40:58 EDT 2006
Author: thomas.diesler at jboss.com
Date: 2006-08-13 13:40:21 -0400 (Sun, 13 Aug 2006)
New Revision: 737
Added:
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java
Removed:
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java
Modified:
branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java
branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java
branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java
branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml
Log:
handler scoping
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -39,6 +39,7 @@
import org.jboss.ws.metadata.UnifiedMetaData;
import org.jboss.ws.metadata.EndpointMetaData.Type;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMappingFactory;
@@ -219,7 +220,7 @@
// Setup the endpoint handlers
if (serviceRefMetaData != null)
{
- for (UnifiedHandlerMetaData handlerMetaData : serviceRefMetaData.getHandlers())
+ for (UnifiedHandlerMetaDataJAXRPC handlerMetaData : serviceRefMetaData.getHandlers())
{
List portNames = Arrays.asList(handlerMetaData.getPortNames());
if (portNames.size() == 0 || portNames.contains(portName.getLocalPart()))
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -46,6 +46,7 @@
import org.jboss.ws.metadata.j2ee.UnifiedBeanMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedEjbPortComponentMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedWebMetaData;
import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
import org.jboss.ws.metadata.jaxrpcmapping.ServiceEndpointInterfaceMapping;
@@ -224,7 +225,7 @@
setupOperationsFromWSDL(sepMetaData, wsdlEndpoint, seiMapping);
// Setup the endpoint handlers
- for (UnifiedHandlerMetaData handlerMetaData : pcMetaData.getHandlers())
+ for (UnifiedHandlerMetaDataJAXRPC handlerMetaData : pcMetaData.getHandlers())
{
List portNames = Arrays.asList(handlerMetaData.getPortNames());
if (portNames.size() == 0 || portNames.contains(portName.getLocalPart()))
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -56,7 +56,6 @@
import org.jboss.ws.WSException;
import org.jboss.ws.addressing.AddressingPropertiesImpl;
import org.jboss.ws.addressing.metadata.AddressingOpMetaExt;
-import org.jboss.ws.annotation.PortComponent;
import org.jboss.ws.jaxrpc.ParameterStyle;
import org.jboss.ws.jaxrpc.ParameterWrapping;
import org.jboss.ws.jaxrpc.Style;
@@ -74,9 +73,9 @@
import org.jboss.ws.metadata.UnifiedMetaData;
import org.jboss.ws.metadata.EndpointMetaData.Type;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.jsr181.HandlerChainFactory;
import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
import org.jboss.ws.metadata.jsr181.HandlerChainsMetaData;
-import org.jboss.ws.metadata.jsr181.HandlerConfigFactory;
import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
import org.jboss.ws.metadata.wsdl.WSDLUtils;
import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSModel;
@@ -509,7 +508,7 @@
Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
unmarshaller.setValidation(true);
unmarshaller.setSchemaValidation(true);
- ObjectModelFactory factory = new HandlerConfigFactory(fileURL);
+ ObjectModelFactory factory = new HandlerChainFactory();
handlerConfigMetaData = (HandlerChainsMetaData)unmarshaller.unmarshal(is, factory, null);
}
finally
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -24,6 +24,7 @@
// $Id$
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.LinkedHashMap;
import org.jboss.webservice.metadata.serviceref.HandlerMetaData;
@@ -31,6 +32,7 @@
import org.jboss.webservice.metadata.serviceref.PortComponentRefMetaData;
import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedPortComponentRefMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
@@ -63,12 +65,13 @@
}
usrmd.setPortComponentRefs(pcrefs);
- ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+ ArrayList<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
for (HandlerMetaData hmd : srmd.getHandlers())
{
- UnifiedHandlerMetaData uhmd = new UnifiedHandlerMetaData();
+ UnifiedHandlerMetaDataJAXRPC uhmd = new UnifiedHandlerMetaDataJAXRPC();
uhmd.setHandlerName(hmd.getHandlerName());
uhmd.setHandlerClass(hmd.getHandlerClass());
+ Arrays.asList(hmd.getSoapHeaders());
for (InitParamMetaData ipmd : hmd.getInitParams())
{
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -43,6 +43,7 @@
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
+import java.util.Set;
import javax.naming.Context;
import javax.naming.Name;
@@ -61,6 +62,7 @@
import org.jboss.ws.metadata.EndpointMetaData;
import org.jboss.ws.metadata.ServiceMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedPortComponentRefMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
@@ -301,23 +303,27 @@
HashSet handlerRoles = new HashSet();
ArrayList handlerInfos = new ArrayList();
- for (UnifiedHandlerMetaData hMetaData : epMetaData.getHandlers(HandlerType.ALL))
+ for (UnifiedHandlerMetaData uhmd : epMetaData.getHandlers(HandlerType.ALL))
{
- handlerRoles.addAll(Arrays.asList(hMetaData.getSoapRoles()));
+ UnifiedHandlerMetaDataJAXRPC handlerMetaData = (UnifiedHandlerMetaDataJAXRPC)uhmd;
+ handlerRoles.addAll(Arrays.asList(handlerMetaData.getSoapRoles()));
ClassLoader cl = epMetaData.getClassLoader();
- Class hClass = cl.loadClass(hMetaData.getHandlerClass());
+ Class hClass = cl.loadClass(handlerMetaData.getHandlerClass());
HashMap hConfig = new HashMap();
- UnifiedInitParamMetaData[] params = hMetaData.getInitParams();
+ UnifiedInitParamMetaData[] params = handlerMetaData.getInitParams();
for (int k = 0; k < params.length; k++)
{
UnifiedInitParamMetaData param = params[k];
hConfig.put(param.getParamName(), param.getParamValue());
}
- QName[] hHeaders = hMetaData.getSoapHeaders();
- HandlerInfo info = new HandlerInfo(hClass, hConfig, hHeaders);
+ Set<QName> headers = handlerMetaData.getSoapHeaders();
+ QName[] headerArr = new QName[headers.size()];
+ headers.toArray(headerArr);
+
+ HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
log.debug("Adding client side handler to endpoint '" + portName + "': " + info);
handlerInfos.add(info);
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -38,6 +38,7 @@
import org.jboss.ws.WSException;
import org.jboss.ws.metadata.ServerEndpointMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
import org.jboss.ws.server.HandlerDelegate;
@@ -142,9 +143,10 @@
List<HandlerInfo> hInfos = new ArrayList<HandlerInfo>();
ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
- for (UnifiedHandlerMetaData handlerMetaData : sepMetaData.getHandlers(type))
+ for (UnifiedHandlerMetaData uhmd : sepMetaData.getHandlers(type))
{
- handlerRoles.addAll(Arrays.asList(handlerMetaData.getSoapRoles()));
+ UnifiedHandlerMetaDataJAXRPC handlerMetaData = (UnifiedHandlerMetaDataJAXRPC)uhmd;
+ handlerRoles.addAll(handlerMetaData.getSoapRoles());
Class hClass;
String handlerClass = handlerMetaData.getHandlerClass();
@@ -166,8 +168,12 @@
UnifiedInitParamMetaData param = params[j];
hConfig.put(param.getParamName(), param.getParamValue());
}
- QName[] hHeaders = handlerMetaData.getSoapHeaders();
- HandlerInfo info = new HandlerInfo(hClass, hConfig, hHeaders);
+
+ Set<QName> headers = handlerMetaData.getSoapHeaders();
+ QName[] headerArr = new QName[headers.size()];
+ headers.toArray(headerArr);
+
+ HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
log.debug("Adding server side handler to service '" + sepMetaData.getQName() + "': " + info);
hInfos.add(info);
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -25,7 +25,6 @@
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.PortInfo;
/**
* A generic jaxws handler
@@ -36,7 +35,6 @@
public abstract class GenericHandler implements Handler
{
private String handlerName;
- private PortInfo portInfo;
public String getHandlerName()
{
@@ -48,16 +46,6 @@
this.handlerName = handlerName;
}
- public PortInfo getPortInfo()
- {
- return portInfo;
- }
-
- public void setPortInfo(PortInfo portInfo)
- {
- this.portInfo = portInfo;
- }
-
public boolean handleMessage(MessageContext msgContext)
{
Boolean outbound = (Boolean)msgContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
@@ -85,4 +73,9 @@
public void close(MessageContext messagecontext)
{
}
+
+ public String toString()
+ {
+ return "[" + handlerName + "]";
+ }
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -23,16 +23,16 @@
// $Id:HandlerDelegateJAXWS.java 710 2006-08-08 20:19:52Z thomas.diesler at jboss.com $
-import java.util.ArrayList;
import java.util.List;
+import javax.xml.namespace.QName;
import javax.xml.ws.Binding;
import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.PortInfo;
import org.jboss.logging.Logger;
-import org.jboss.ws.WSException;
+import org.jboss.ws.metadata.EndpointMetaData;
import org.jboss.ws.metadata.ServerEndpointMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
import org.jboss.ws.server.HandlerDelegate;
import org.jboss.ws.server.ServiceEndpointInfo;
@@ -48,39 +48,29 @@
// provide logging
private static Logger log = Logger.getLogger(HandlerDelegateJAXWS.class);
- private List<Handler> preHandlerChain;
- private List<Handler> jaxwsHandlerChain;
- private List<Handler> postHandlerChain;
-
+ private HandlerResolverImpl preHandlers = new HandlerResolverImpl();
+ private HandlerResolverImpl endpointHandlers = new HandlerResolverImpl();
+ private HandlerResolverImpl postHandlers = new HandlerResolverImpl();
+
public HandlerDelegateJAXWS(Binding binding)
{
- preHandlerChain = new ArrayList<Handler>();
- jaxwsHandlerChain = binding.getHandlerChain();
- postHandlerChain = new ArrayList<Handler>();
}
public boolean callRequestHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
{
SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
- ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+ EndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
// Initialize the handler chain
- if (sepMetaData.isHandlersInitialized() == false)
+ if (epMetaData.isHandlersInitialized() == false)
{
- initHandlerChain(seInfo, HandlerType.PRE);
- initHandlerChain(seInfo, HandlerType.ENDPOINT);
- initHandlerChain(seInfo, HandlerType.POST);
- sepMetaData.setHandlersInitialized(true);
+ initHandlerChain(epMetaData, HandlerType.PRE);
+ initHandlerChain(epMetaData, HandlerType.ENDPOINT);
+ initHandlerChain(epMetaData, HandlerType.POST);
+ epMetaData.setHandlersInitialized(true);
}
- List<Handler> handlerChain = null;
- if (type == HandlerType.PRE)
- handlerChain = preHandlerChain;
- else if (type == HandlerType.ENDPOINT)
- handlerChain = jaxwsHandlerChain;
- else if (type == HandlerType.POST)
- handlerChain = postHandlerChain;
-
+ List<Handler> handlerChain = getHandlerChain(epMetaData, type);
boolean status = new HandlerChainExecutor(handlerChain).handleRequest(msgContext);
return status;
}
@@ -88,15 +78,8 @@
public boolean callResponseHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
{
SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
-
- List<Handler> handlerChain = null;
- if (type == HandlerType.PRE)
- handlerChain = preHandlerChain;
- else if (type == HandlerType.ENDPOINT)
- handlerChain = jaxwsHandlerChain;
- else if (type == HandlerType.POST)
- handlerChain = postHandlerChain;
-
+ ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+ List<Handler> handlerChain = getHandlerChain(sepMetaData, type);
boolean status = new HandlerChainExecutor(handlerChain).handleResponse(msgContext);
return status;
}
@@ -104,49 +87,55 @@
public boolean callFaultHandlerChain(ServiceEndpointInfo seInfo, HandlerType type, Exception ex)
{
SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
+ ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+ List<Handler> handlerChain = getHandlerChain(sepMetaData, type);
+ boolean status = new HandlerChainExecutor(handlerChain).handleFault(msgContext);
+ return status;
+ }
+ private List<Handler> getHandlerChain(EndpointMetaData epMetaData, HandlerType type)
+ {
+ PortInfo info = getPortInfo(epMetaData);
+
List<Handler> handlerChain = null;
if (type == HandlerType.PRE)
- handlerChain = preHandlerChain;
+ {
+ handlerChain = preHandlers.getHandlerChain(info);
+ }
else if (type == HandlerType.ENDPOINT)
- handlerChain = jaxwsHandlerChain;
+ {
+ handlerChain = endpointHandlers.getHandlerChain(info);
+ }
else if (type == HandlerType.POST)
- handlerChain = postHandlerChain;
-
- boolean status = new HandlerChainExecutor(handlerChain).handleFault(msgContext);
- return status;
+ {
+ handlerChain = postHandlers.getHandlerChain(info);
+ }
+ return handlerChain;
}
- /**
- * Init the handler chain
- */
- private void initHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
+ private void initHandlerChain(EndpointMetaData epMetaData, HandlerType type)
{
- ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
- for (UnifiedHandlerMetaData handlerMetaData : sepMetaData.getHandlers(type))
+ if (type == HandlerType.PRE)
{
- Class hClass;
- String className = handlerMetaData.getHandlerClass();
- try
- {
- // Load the handler class using the deployments top level CL
- ClassLoader classLoader = sepMetaData.getClassLoader();
- hClass = classLoader.loadClass(className);
- Handler handler = (Handler)hClass.newInstance();
-
- if (type == HandlerType.PRE)
- preHandlerChain.add(handler);
- else if (type == HandlerType.ENDPOINT)
- jaxwsHandlerChain.add(handler);
- else if (type == HandlerType.POST)
- postHandlerChain.add(handler);
- }
- catch (Exception ex)
- {
- throw new WSException("Cannot load handler class: " + className);
- }
-
- log.debug("Adding server side handler to service '" + sepMetaData.getQName() + "': " + className);
+ preHandlers.initHandlerChain(epMetaData, type);
}
+ else if (type == HandlerType.ENDPOINT)
+ {
+ endpointHandlers.initHandlerChain(epMetaData, type);
+ }
+ else if (type == HandlerType.POST)
+ {
+ postHandlers.initHandlerChain(epMetaData, type);
+ }
+
}
+
+ private PortInfo getPortInfo(EndpointMetaData epMetaData)
+ {
+ QName serviceName = epMetaData.getServiceMetaData().getQName();
+ QName portName = epMetaData.getQName();
+ String bindingId = epMetaData.getBindingId();
+ PortInfo info = new PortInfoImpl(serviceName, portName, bindingId);
+ return info;
+ }
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -28,13 +28,23 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.PortInfo;
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.soap.SOAPBinding;
import org.jboss.logging.Logger;
+import org.jboss.ws.WSException;
+import org.jboss.ws.metadata.EndpointMetaData;
+import org.jboss.ws.metadata.ServiceMetaData;
+import org.jboss.ws.metadata.UnifiedMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
/**
* HandlerResolver is an interface implemented by an application to get control over
@@ -51,57 +61,210 @@
public class HandlerResolverImpl implements HandlerResolver
{
private static Logger log = Logger.getLogger(HandlerResolverImpl.class);
-
- private Map<QName, List<Handler>> serviceMap = new HashMap<QName, List<Handler>>();
- private Map<QName, List<Handler>> portMap = new HashMap<QName, List<Handler>>();
- private Map<String, List<Handler>> bindingMap = new HashMap<String, List<Handler>>();
+ private Map<PortInfo, List<Handler>> handlerMap = new HashMap<PortInfo, List<Handler>>();
+
public List<Handler> getHandlerChain(PortInfo info)
{
+ log.debug("getHandlerChain: " + info);
+
List<Handler> handlerChain = new ArrayList<Handler>();
-
+
+ String bindingID = info.getBindingID();
QName serviceName = info.getServiceName();
QName portName = info.getPortName();
- String bindingID = info.getBindingID();
-
- if (serviceMap.keySet().contains(serviceName))
- handlerChain.addAll(serviceMap.get(serviceName));
-
- if (serviceMap.keySet().contains(null))
- handlerChain.addAll(serviceMap.get(null));
-
- if (portMap.keySet().contains(portName))
- handlerChain.addAll(portMap.get(portName));
-
- if (portMap.keySet().contains(null))
- handlerChain.addAll(portMap.get(null));
-
- if (bindingMap.keySet().contains(bindingID))
- handlerChain.addAll(bindingMap.get(bindingID));
-
- if (bindingMap.keySet().contains(null))
- handlerChain.addAll(bindingMap.get(null));
-
-
+
+ if (bindingID != null)
+ {
+ List<Handler> list = handlerMap.get(new PortInfoImpl(null, null, bindingID));
+ if (list != null)
+ {
+ log.debug("add protocol handlers: " + list);
+ handlerChain.addAll(list);
+ }
+ }
+
+ if (serviceName != null)
+ {
+ List<Handler> list = handlerMap.get(new PortInfoImpl(serviceName, null, null));
+ if (list != null)
+ {
+ log.debug("add service handlers: " + list);
+ handlerChain.addAll(list);
+ }
+ }
+
+ if (portName != null)
+ {
+ List<Handler> list = handlerMap.get(new PortInfoImpl(null, portName, null));
+ if (list != null)
+ {
+ log.debug("add port handlers: " + list);
+ handlerChain.addAll(list);
+ }
+ }
+
+ List<Handler> list = handlerMap.get(new PortInfoImpl(null, null, null));
+ if (list != null)
+ {
+ log.debug("add general handlers: " + list);
+ handlerChain.addAll(list);
+ }
+
return Collections.unmodifiableList(handlerChain);
}
- public boolean addHandler(Handler handler)
+ public void initHandlerChain(EndpointMetaData epMetaData, HandlerType type)
{
- return addHandler(new PortInfoImpl(), handler);
+ for (UnifiedHandlerMetaData uhmd : epMetaData.getHandlers(type))
+ {
+ UnifiedHandlerMetaDataJAXWS handlerMetaData = (UnifiedHandlerMetaDataJAXWS)uhmd;
+ String handlerName = handlerMetaData.getHandlerName();
+ String className = handlerMetaData.getHandlerClass();
+ Set<QName> soapHeaders = handlerMetaData.getSoapHeaders();
+
+ try
+ {
+ // Load the handler class using the deployments top level CL
+ ClassLoader classLoader = epMetaData.getClassLoader();
+ Class hClass = classLoader.loadClass(className);
+ Handler handler = (Handler)hClass.newInstance();
+
+ if (handler instanceof GenericHandler)
+ ((GenericHandler)handler).setHandlerName(handlerName);
+
+ if (handler instanceof GenericSOAPHandler)
+ ((GenericSOAPHandler)handler).setHeaders(soapHeaders);
+
+ List<PortInfo> infos = getPortInfo(epMetaData, handlerMetaData);
+ for (PortInfo info : infos)
+ {
+ addHandler(info, handler);
+ }
+ }
+ catch (RuntimeException rte)
+ {
+ throw rte;
+ }
+ catch (Exception ex)
+ {
+ throw new WSException("Cannot load handler: " + className, ex);
+ }
+ }
}
-
- public boolean addHandler(PortInfo info, Handler handler)
+
+ private List<PortInfo> getPortInfo(EndpointMetaData epMetaData, UnifiedHandlerMetaDataJAXWS handlerMetaData)
{
- log.debug("addHandler: " + info + ":" + handler.getClass().getName());
-
- QName serviceName = info.getServiceName();
- QName portName = info.getPortName();
- String bindingID = info.getBindingID();
-
- serviceMap.get(serviceName).add(handler);
- portMap.get(portName).add(handler);
- bindingMap.get(bindingID).add(handler);
+ String protocols = handlerMetaData.getProtocolBindings();
+ QName services = handlerMetaData.getServiceNamePattern();
+ QName ports = handlerMetaData.getPortNamePattern();
+
+ List<PortInfo> infos = new ArrayList<PortInfo>();
+ if (protocols != null)
+ {
+ for (String protocol : protocols.split("\\s"))
+ {
+ Map<String, String> protocolMap = new HashMap<String, String>();
+ protocolMap.put("##SOAP11_HTTP", SOAPBinding.SOAP11HTTP_BINDING);
+ protocolMap.put("##SOAP12_HTTP", SOAPBinding.SOAP12HTTP_BINDING);
+ protocolMap.put("##XML_HTTP", HTTPBinding.HTTP_BINDING);
+
+ String bindingId = protocolMap.get(protocol);
+ if (bindingId != null)
+ {
+ if (bindingId.equals(epMetaData.getBindingId()))
+ infos.add(new PortInfoImpl(null, null, bindingId));
+ }
+ else
+ {
+ log.warn("Unsuported protocol binding: " + protocol);
+ }
+ }
+ }
+ else if (services != null)
+ {
+ String namespaceURI = services.getNamespaceURI();
+ String localPattern = services.getLocalPart();
+ if (localPattern.endsWith("*"))
+ {
+ localPattern = localPattern.substring(0, localPattern.length() - 1);
+ UnifiedMetaData wsMetaData = epMetaData.getServiceMetaData().getUnifiedMetaData();
+ for (ServiceMetaData smd : wsMetaData.getServices())
+ {
+ QName qname = smd.getQName();
+ String nsURI = qname.getNamespaceURI();
+ String localPart = qname.getLocalPart();
+ if (nsURI.equals(namespaceURI) && localPart.startsWith(localPattern))
+ {
+ infos.add(new PortInfoImpl(qname, null, null));
+ }
+ }
+ }
+ else
+ {
+ UnifiedMetaData wsMetaData = epMetaData.getServiceMetaData().getUnifiedMetaData();
+ for (ServiceMetaData smd : wsMetaData.getServices())
+ {
+ QName qname = smd.getQName();
+ if (services.equals(qname))
+ {
+ infos.add(new PortInfoImpl(qname, null, null));
+ }
+ }
+ }
+ }
+ else if (ports != null)
+ {
+ String namespaceURI = ports.getNamespaceURI();
+ String localPattern = ports.getLocalPart();
+ if (localPattern.endsWith("*"))
+ {
+ localPattern = localPattern.substring(0, localPattern.length() - 1);
+ ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+ for (EndpointMetaData epmd : serviceMetaData.getEndpoints())
+ {
+ QName qname = epmd.getQName();
+ String nsURI = qname.getNamespaceURI();
+ String localPart = qname.getLocalPart();
+ if (nsURI.equals(namespaceURI) && localPart.startsWith(localPattern))
+ {
+ infos.add(new PortInfoImpl(null, qname, null));
+ }
+ }
+ }
+ else
+ {
+ ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+ for (EndpointMetaData epmd : serviceMetaData.getEndpoints())
+ {
+ QName qname = epmd.getQName();
+ if (ports.equals(qname))
+ {
+ infos.add(new PortInfoImpl(null, qname, null));
+ }
+ }
+ }
+ }
+ else
+ {
+ // add a general handler that is not scoped
+ infos.add(new PortInfoImpl());
+ }
+
+ return infos;
+ }
+
+ private boolean addHandler(PortInfo info, Handler handler)
+ {
+ log.debug("addHandler: " + info + ":" + handler);
+
+ List<Handler> handlerList = handlerMap.get(info);
+ if (handlerList == null)
+ {
+ handlerMap.put(info, handlerList = new ArrayList<Handler>());
+ }
+ handlerList.add(handler);
+
return true;
}
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -38,10 +38,10 @@
import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
import org.jboss.ws.metadata.config.jaxws.WSClientConfigJAXWS;
import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
import org.jboss.ws.metadata.config.jaxws.WSHandlerChainsConfigJAXWS;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
/**
* Client side endpoint meta data.
@@ -121,7 +121,7 @@
WSHandlerChainsConfigJAXWS preHandlerChains = jaxwsConfig.getPreHandlerChains();
if (preHandlerChains != null)
{
- for (WSHandlerChainConfigJAXWS preHandlerChain : preHandlerChains.getHandlerChains())
+ for (HandlerChainMetaData preHandlerChain : preHandlerChains.getHandlerChains())
{
handlers.addAll(preHandlerChain.getHandlers());
}
@@ -140,7 +140,7 @@
WSHandlerChainsConfigJAXWS postHandlerChains = jaxwsConfig.getPostHandlerChains();
if (postHandlerChains != null)
{
- for (WSHandlerChainConfigJAXWS preHandlerChain : postHandlerChains.getHandlerChains())
+ for (HandlerChainMetaData preHandlerChain : postHandlerChains.getHandlerChains())
{
handlers.addAll(preHandlerChain.getHandlers());
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -39,10 +39,10 @@
import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
import org.jboss.ws.metadata.config.jaxws.WSEndpointConfigJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
import org.jboss.ws.metadata.config.jaxws.WSHandlerChainsConfigJAXWS;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
import org.jboss.ws.server.ServiceEndpoint;
/**
@@ -215,7 +215,7 @@
WSHandlerChainsConfigJAXWS preHandlerChains = jaxwsConfig.getPreHandlerChains();
if (preHandlerChains != null)
{
- for (WSHandlerChainConfigJAXWS preHandlerChain : preHandlerChains.getHandlerChains())
+ for (HandlerChainMetaData preHandlerChain : preHandlerChains.getHandlerChains())
{
handlers.addAll(preHandlerChain.getHandlers());
}
@@ -234,7 +234,7 @@
WSHandlerChainsConfigJAXWS postHandlerChains = jaxwsConfig.getPostHandlerChains();
if (postHandlerChains != null)
{
- for (WSHandlerChainConfigJAXWS preHandlerChain : postHandlerChains.getHandlerChains())
+ for (HandlerChainMetaData preHandlerChain : postHandlerChains.getHandlerChains())
{
handlers.addAll(preHandlerChain.getHandlers());
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -27,6 +27,7 @@
import org.jboss.logging.Logger;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
import org.jboss.xb.binding.ObjectModelFactory;
import org.jboss.xb.binding.UnmarshallingContext;
@@ -128,7 +129,7 @@
log.trace("WSHandlerChainConfig newChild: " + localName);
if ("handler".equals(localName))
{
- UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData();
+ UnifiedHandlerMetaData handler = new UnifiedHandlerMetaDataJAXRPC();
List<UnifiedHandlerMetaData> handlers = wsHandlerChainConfig.getHandlers();
handlers.add(handler);
return handler;
@@ -139,7 +140,7 @@
/**
* Called when a new simple child element with text value was read from the XML content.
*/
- public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+ public void setValue(UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -23,12 +23,9 @@
//$Id$
-import java.util.List;
-
import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
-import org.jboss.xb.binding.ObjectModelFactory;
+import org.jboss.ws.metadata.jsr181.HandlerChainFactory;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
import org.jboss.xb.binding.UnmarshallingContext;
import org.xml.sax.Attributes;
@@ -38,7 +35,7 @@
* @author Thomas.Diesler at jboss.org
* @since 18-Dec-2005
*/
-public class WSConfigFactoryJAXWS implements ObjectModelFactory
+public class WSConfigFactoryJAXWS extends HandlerChainFactory
{
// provide logging
private final Logger log = Logger.getLogger(WSConfigFactoryJAXWS.class);
@@ -117,72 +114,10 @@
if ("handler-chain".equals(localName))
{
- WSHandlerChainConfigJAXWS handlerChain = new WSHandlerChainConfigJAXWS();
+ HandlerChainMetaData handlerChain = new HandlerChainMetaData(null);
wsHandlerChains.getHandlerChains().add(handlerChain);
return handlerChain;
}
return null;
}
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(WSHandlerChainConfigJAXWS handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("WSHandlerChainConfigJAXWS setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("protocol-bindings"))
- handlerChain.setProtocolBindings(value);
- else if (localName.equals("service-name-pattern"))
- handlerChain.setServiceNamePattern(value);
- else if (localName.equals("port-name-pattern"))
- handlerChain.setPortNamePattern(value);
- }
-
- /**
- * Called when parsing of a new element started.
- */
- public Object newChild(WSHandlerChainConfigJAXWS wsHandlerChainConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
- {
- log.trace("WSHandlerChainConfig newChild: " + localName);
- if ("handler".equals(localName))
- {
- UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData();
- List<UnifiedHandlerMetaData> handlers = wsHandlerChainConfig.getHandlers();
- handlers.add(handler);
- return handler;
- }
- return null;
- }
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("handler-name"))
- handler.setHandlerName(value);
- else if (localName.equals("handler-class"))
- handler.setHandlerClass(value);
- else if (localName.equals("soap-role"))
- handler.addSoapRole(value);
- }
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("param-name"))
- param.setParamName(value);
- else if (localName.equals("param-value"))
- param.setParamValue(value);
- }
}
Deleted: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -1,82 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ws.metadata.config.jaxws;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-
-
-/**
- * A JBossWS handler chain configuration
- *
- * @author Thomas.Diesler at jboss.org
- * @since 18-Dec-2005
- */
-public class WSHandlerChainConfigJAXWS
-{
- private String protocolBindings;
- private String serviceNamePattern;
- private String portNamePattern;
- private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
-
- public String getProtocolBindings()
- {
- return protocolBindings;
- }
-
- public void setProtocolBindings(String handlerChainName)
- {
- this.protocolBindings = handlerChainName;
- }
-
- public String getPortNamePattern()
- {
- return portNamePattern;
- }
-
- public void setPortNamePattern(String portNamePattern)
- {
- this.portNamePattern = portNamePattern;
- }
-
- public String getServiceNamePattern()
- {
- return serviceNamePattern;
- }
-
- public void setServiceNamePattern(String serviceNamePattern)
- {
- this.serviceNamePattern = serviceNamePattern;
- }
-
- public List<UnifiedHandlerMetaData> getHandlers()
- {
- return handlers;
- }
-
- public void setHandlers(List<UnifiedHandlerMetaData> handlers)
- {
- this.handlers = handlers;
- }
-}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -24,7 +24,9 @@
import java.util.ArrayList;
import java.util.List;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
+
/**
* A JBossWS handler chains configuration
*
@@ -33,9 +35,9 @@
*/
public class WSHandlerChainsConfigJAXWS
{
- private List<WSHandlerChainConfigJAXWS> chains = new ArrayList<WSHandlerChainConfigJAXWS>();
+ private List<HandlerChainMetaData> chains = new ArrayList<HandlerChainMetaData>();
- public List<WSHandlerChainConfigJAXWS> getHandlerChains()
+ public List<HandlerChainMetaData> getHandlerChains()
{
return chains;
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -25,6 +25,9 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import javax.xml.namespace.QName;
@@ -34,10 +37,8 @@
* @author Thomas.Diesler at jboss.org
* @since 05-May-2006
*/
-public class UnifiedHandlerMetaData implements Serializable
+public abstract class UnifiedHandlerMetaData implements Serializable
{
- private static final long serialVersionUID = 8000854586742278995L;
-
public enum HandlerType {PRE, ENDPOINT, POST, ALL};
// The required <handler-name> element
@@ -47,16 +48,10 @@
// The optional <init-param> elements
private ArrayList<UnifiedInitParamMetaData> initParams = new ArrayList<UnifiedInitParamMetaData>();
// The optional <soap-header> elements
- private ArrayList<QName> soapHeaders = new ArrayList<QName>();
+ private Set<QName> soapHeaders = new HashSet<QName>();
// The optional <soap-role> elements
- private ArrayList<String> soapRoles = new ArrayList<String>();
- // The optional <port-name> elements, these only apply to webserve clients
- private ArrayList<String> portNames = new ArrayList<String>();
+ private Set<String> soapRoles = new HashSet<String>();
- public UnifiedHandlerMetaData()
- {
- }
-
public void setHandlerName(String value)
{
this.handlerName = value;
@@ -89,46 +84,23 @@
return array;
}
- public void addSoapHeader(QName qName)
- {
- soapHeaders.add(qName);
- }
-
- public QName[] getSoapHeaders()
- {
- QName[] array = new QName[soapHeaders.size()];
- soapHeaders.toArray(array);
- return array;
- }
-
public void addSoapRole(String value)
{
soapRoles.add(value);
}
- public String[] getSoapRoles()
+ public Set<String> getSoapRoles()
{
- String[] array = new String[soapRoles.size()];
- soapRoles.toArray(array);
- return array;
+ return Collections.unmodifiableSet(soapRoles);
}
- public String[] getPortNames()
+ public void addSoapHeader(QName qName)
{
- String[] array = new String[portNames.size()];
- portNames.toArray(array);
- return array;
+ soapHeaders.add(qName);
}
- public String toString()
+ public Set<QName> getSoapHeaders()
{
- StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
- buffer.append("\n name=" + handlerName);
- buffer.append("\n class=" + handlerClass);
- buffer.append("\n params=" + initParams);
- buffer.append("\n headers=" + soapHeaders);
- buffer.append("\n roles=" + soapRoles);
- buffer.append("\n ports=" + portNames);
- return buffer.toString();
+ return Collections.unmodifiableSet(soapHeaders);
}
}
Added: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.metadata.j2ee;
+
+//$Id: UnifiedHandlerMetaData.java 697 2006-08-07 08:44:39Z thomas.diesler at jboss.com $
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The container independent metdata data for a handler element
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 05-May-2006
+ */
+public class UnifiedHandlerMetaDataJAXRPC extends UnifiedHandlerMetaData
+{
+ private static final long serialVersionUID = 8704185647582526122L;
+
+ // The optional <port-name> elements, these only apply to webserve clients
+ private Set<String> portNames = new HashSet<String>();
+
+ public Set<String> getPortNames()
+ {
+ return Collections.unmodifiableSet(portNames);
+ }
+
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
+ buffer.append("\n name=" + getHandlerName());
+ buffer.append("\n class=" + getHandlerClass());
+ buffer.append("\n params=" + getInitParams());
+ buffer.append("\n headers=" + getSoapHeaders());
+ buffer.append("\n roles=" + getSoapRoles());
+ buffer.append("\n ports=" + getPortNames());
+ return buffer.toString();
+ }
+}
Added: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ws.metadata.j2ee;
+
+import javax.xml.namespace.QName;
+
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
+
+//$Id: UnifiedHandlerMetaData.java 697 2006-08-07 08:44:39Z thomas.diesler at jboss.com $
+
+
+/**
+ * The container independent metdata data for a handler element
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 05-May-2006
+ */
+public class UnifiedHandlerMetaDataJAXWS extends UnifiedHandlerMetaData
+{
+ private HandlerChainMetaData chainConfig;
+
+ public UnifiedHandlerMetaDataJAXWS(HandlerChainMetaData handlerChainMetaData)
+ {
+ this.chainConfig = handlerChainMetaData;
+ }
+
+ public String getProtocolBindings()
+ {
+ return chainConfig.getProtocolBindings();
+ }
+
+ public QName getServiceNamePattern()
+ {
+ return chainConfig.getServiceNamePattern();
+ }
+
+ public QName getPortNamePattern()
+ {
+ return chainConfig.getPortNamePattern();
+ }
+
+ public String toString()
+ {
+ StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
+ buffer.append("\n name=" + getHandlerName());
+ buffer.append("\n class=" + getHandlerClass());
+ buffer.append("\n params=" + getInitParams());
+ buffer.append("\n headers=" + getSoapHeaders());
+ buffer.append("\n roles=" + getSoapRoles());
+ buffer.append("\n protocols=" + getProtocolBindings());
+ buffer.append("\n services=" + getServiceNamePattern());
+ buffer.append("\n ports=" + getPortNamePattern());
+ return buffer.toString();
+ }
+}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -59,7 +59,7 @@
// The LinkedHashMap<String, UnifiedPortComponentRefMetaData> for <port-component-ref> elements
private Map<String, UnifiedPortComponentRefMetaData> portComponentRefs = new LinkedHashMap<String, UnifiedPortComponentRefMetaData>();
// The optional <handler> elements
- private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+ private List<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
// The optional JBossWS config-name
private String configName;
@@ -141,14 +141,14 @@
this.portComponentRefs = portComponentRefs;
}
- public UnifiedHandlerMetaData[] getHandlers()
+ public UnifiedHandlerMetaDataJAXRPC[] getHandlers()
{
- UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
+ UnifiedHandlerMetaDataJAXRPC[] array = new UnifiedHandlerMetaDataJAXRPC[handlers.size()];
handlers.toArray(array);
return array;
}
- public void setHandlers(ArrayList<UnifiedHandlerMetaData> handlers)
+ public void setHandlers(ArrayList<UnifiedHandlerMetaDataJAXRPC> handlers)
{
this.handlers = handlers;
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -30,7 +30,7 @@
import javax.xml.namespace.QName;
import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
/**
* XML Binding and ws4ee meta-data element for
@@ -69,7 +69,7 @@
private String ejbLink;
private String servletLink;
// The optional <handler> elements
- private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+ private List<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
// The HTTP context root
private String contextRoot;
@@ -139,14 +139,14 @@
this.serviceEndpointInterface = serviceEndpointInterface;
}
- public void addHandler(UnifiedHandlerMetaData handler)
+ public void addHandler(UnifiedHandlerMetaDataJAXRPC handler)
{
handlers.add(handler);
}
- public UnifiedHandlerMetaData[] getHandlers()
+ public UnifiedHandlerMetaDataJAXRPC[] getHandlers()
{
- UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
+ UnifiedHandlerMetaDataJAXRPC[] array = new UnifiedHandlerMetaDataJAXRPC[handlers.size()];
handlers.toArray(array);
return array;
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -27,6 +27,7 @@
import org.jboss.logging.Logger;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
import org.jboss.xb.binding.ObjectModelFactory;
import org.jboss.xb.binding.UnmarshallingContext;
@@ -123,7 +124,7 @@
Attributes attrs)
{
if ("handler".equals(localName))
- return new UnifiedHandlerMetaData();
+ return new UnifiedHandlerMetaDataJAXRPC();
else
return null;
}
@@ -131,7 +132,7 @@
/**
* Called when parsing character is complete.
*/
- public void addChild(PortComponentMetaData portComponent, UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+ public void addChild(PortComponentMetaData portComponent, UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName)
{
portComponent.addHandler(handler);
}
@@ -195,7 +196,7 @@
/**
* Called when a new simple child element with text value was read from the XML content.
*/
- public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+ public void setValue(UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
{
if (log.isTraceEnabled())
log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
Copied: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java (from rev 736, branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java)
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,164 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.ws.metadata.jsr181;
+
+// $Id$
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
+import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
+import org.jboss.xb.binding.ObjectModelFactory;
+import org.jboss.xb.binding.UnmarshallingContext;
+import org.xml.sax.Attributes;
+
+/**
+ * A JBossXB factory for jsr181 the HandlerChain annotation
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 15-Oct-2005
+ */
+public class HandlerChainFactory implements ObjectModelFactory
+{
+ // provide logging
+ private static final Logger log = Logger.getLogger(HandlerChainFactory.class);
+
+ public HandlerChainFactory()
+ {
+ }
+
+ /**
+ * This method is called on the factory by the object model builder when the parsing starts.
+ *
+ * @return the root of the object model.
+ */
+ public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+ {
+ HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData();
+ return handlerConfigMetaData;
+ }
+
+ public Object completeRoot(Object root, UnmarshallingContext ctx, String uri, String name)
+ {
+ return root;
+ }
+
+ /**
+ * Called when parsing of a new element started.
+ */
+ public Object newChild(HandlerChainsMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+ {
+ if ("handler-chain".equals(localName))
+ return new HandlerChainMetaData(handlerConfig);
+ else
+ return null;
+ }
+
+ /**
+ * Called when parsing character is complete.
+ */
+ public void addChild(HandlerChainsMetaData handlerConfig, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
+ {
+ handlerConfig.addHandlerChain(handlerChain);
+ }
+
+ /**
+ * Called when parsing of a new element started.
+ */
+ public Object newChild(HandlerChainMetaData chainConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+ {
+ if ("handler".equals(localName))
+ return new UnifiedHandlerMetaDataJAXWS(chainConfig);
+ else
+ return null;
+ }
+
+ /**
+ * Called when parsing character is complete.
+ */
+ public void addChild(HandlerChainMetaData handlerConfig, UnifiedHandlerMetaDataJAXWS handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+ {
+ handlerConfig.addHandler(handler);
+ }
+
+ /**
+ * Called when parsing of a new element started.
+ */
+ public Object newChild(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+ {
+ if ("init-param".equals(localName))
+ return new UnifiedInitParamMetaData();
+ else return null;
+ }
+
+ /**
+ * Called when parsing character is complete.
+ */
+ public void addChild(UnifiedHandlerMetaData handler, UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
+ {
+ handler.addInitParam(param);
+ }
+
+ /**
+ * Called when a new simple child element with text value was read from the XML content.
+ */
+ public void setValue(HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+ {
+ if (log.isTraceEnabled())
+ log.trace("HandlerChainMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+ if (localName.equals("protocol-bindings"))
+ handlerChain.setProtocolBindings(value);
+ else if (localName.equals("service-name-pattern"))
+ handlerChain.setServiceNamePattern(navigator.resolveQName(value));
+ else if (localName.equals("port-name-pattern"))
+ handlerChain.setPortNamePattern(navigator.resolveQName(value));
+ }
+
+ /**
+ * Called when a new simple child element with text value was read from the XML content.
+ */
+ public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+ {
+ if (log.isTraceEnabled())
+ log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+ if (localName.equals("handler-name"))
+ handler.setHandlerName(value);
+ else if (localName.equals("handler-class"))
+ handler.setHandlerClass(value);
+ }
+
+ /**
+ * Called when a new simple child element with text value was read from the XML content.
+ */
+ public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+ {
+ if (log.isTraceEnabled())
+ log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+ if (localName.equals("param-name"))
+ param.setParamName(value);
+ else if (localName.equals("param-value"))
+ param.setParamValue(value);
+ }
+}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -24,9 +24,13 @@
// $Id$
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.namespace.QName;
+
import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
/**
* XML Binding element for handler-config/handler-chain elements
@@ -43,9 +47,9 @@
private HandlerChainsMetaData handlerConfig;
private String protocolBindings;
- private String serviceNamePattern;
- private String portNamePattern;
- private ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+ private QName serviceNamePattern;
+ private QName portNamePattern;
+ private ArrayList<UnifiedHandlerMetaDataJAXWS> handlers = new ArrayList<UnifiedHandlerMetaDataJAXWS>();
public HandlerChainMetaData(HandlerChainsMetaData handlerConfig)
{
@@ -57,24 +61,22 @@
return handlerConfig;
}
- public void addHandler(UnifiedHandlerMetaData handlerMetaData)
+ public void addHandler(UnifiedHandlerMetaDataJAXWS handlerMetaData)
{
handlers.add(handlerMetaData);
}
- public UnifiedHandlerMetaData[] getHandlers()
+ public List<UnifiedHandlerMetaDataJAXWS> getHandlers()
{
- UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
- handlers.toArray(array);
- return array;
+ return Collections.unmodifiableList(handlers);
}
- public String getPortNamePattern()
+ public QName getPortNamePattern()
{
return portNamePattern;
}
- public void setPortNamePattern(String portNamePattern)
+ public void setPortNamePattern(QName portNamePattern)
{
this.portNamePattern = portNamePattern;
}
@@ -89,12 +91,12 @@
this.protocolBindings = protocolBindings;
}
- public String getServiceNamePattern()
+ public QName getServiceNamePattern()
{
return serviceNamePattern;
}
- public void setServiceNamePattern(String serviceNamePattern)
+ public void setServiceNamePattern(QName serviceNamePattern)
{
this.serviceNamePattern = serviceNamePattern;
}
Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -38,19 +38,6 @@
// The required <handler-chain> elements
private ArrayList<HandlerChainMetaData> handlerChains = new ArrayList<HandlerChainMetaData>();
- // The URL to the webservices.xml descriptor
- private URL fileURL;
-
- public HandlerChainsMetaData(URL fileURL)
- {
- this.fileURL = fileURL;
- }
-
- public URL getDescriptorURL()
- {
- return fileURL;
- }
-
public void addHandlerChain(HandlerChainMetaData handlerChain)
{
handlerChains.add(handlerChain);
Deleted: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -1,171 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt in the distribution for a
-* full listing of individual contributors.
-*
-* This is free software; you can redistribute it and/or modify it
-* under the terms of the GNU Lesser General Public License as
-* published by the Free Software Foundation; either version 2.1 of
-* the License, or (at your option) any later version.
-*
-* This software is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this software; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-*/
-package org.jboss.ws.metadata.jsr181;
-
-// $Id$
-
-import java.net.URL;
-
-import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
-import org.jboss.xb.binding.ObjectModelFactory;
-import org.jboss.xb.binding.UnmarshallingContext;
-import org.xml.sax.Attributes;
-
-/**
- * A JBossXB factory for {@link HandlerChainsMetaData}
- *
- * @author Thomas.Diesler at jboss.org
- * @since 15-Oct-2005
- */
-public class HandlerConfigFactory implements ObjectModelFactory
-{
- // provide logging
- private static final Logger log = Logger.getLogger(HandlerConfigFactory.class);
-
- // The URL to the handler-config.xml descriptor
- private URL fileURL;
-
- public HandlerConfigFactory(URL fileURL)
- {
- this.fileURL = fileURL;
- }
-
- /**
- * This method is called on the factory by the object model builder when the parsing starts.
- *
- * @return the root of the object model.
- */
- public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
- {
- HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData(fileURL);
- return handlerConfigMetaData;
- }
-
- public Object completeRoot(Object root, UnmarshallingContext ctx, String uri, String name)
- {
- return root;
- }
-
- /**
- * Called when parsing of a new element started.
- */
- public Object newChild(HandlerChainsMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
- {
- if ("handler-chain".equals(localName))
- return new HandlerChainMetaData(handlerConfig);
- else
- return null;
- }
-
- /**
- * Called when parsing character is complete.
- */
- public void addChild(HandlerChainsMetaData handlerConfig, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
- {
- handlerConfig.addHandlerChain(handlerChain);
- }
-
- /**
- * Called when parsing of a new element started.
- */
- public Object newChild(HandlerChainMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
- {
- if ("handler".equals(localName))
- return new UnifiedHandlerMetaData();
- else
- return null;
- }
-
- /**
- * Called when parsing character is complete.
- */
- public void addChild(HandlerChainMetaData handlerConfig, UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
- {
- handlerConfig.addHandler(handler);
- }
-
- /**
- * Called when parsing of a new element started.
- */
- public Object newChild(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
- {
- if ("init-param".equals(localName))
- return new UnifiedInitParamMetaData();
- else return null;
- }
-
- /**
- * Called when parsing character is complete.
- */
- public void addChild(UnifiedHandlerMetaData handler, UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
- {
- handler.addInitParam(param);
- }
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("HandlerChainMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("protocol-bindings"))
- handlerChain.setProtocolBindings(value);
- else if (localName.equals("service-name-pattern"))
- handlerChain.setServiceNamePattern(value);
- else if (localName.equals("port-name-pattern"))
- handlerChain.setPortNamePattern(value);
- }
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("handler-name"))
- handler.setHandlerName(value);
- else if (localName.equals("handler-class"))
- handler.setHandlerClass(value);
- else if (localName.equals("soap-role"))
- handler.addSoapRole(value);
- }
-
- /**
- * Called when a new simple child element with text value was read from the XML content.
- */
- public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
- {
- if (log.isTraceEnabled())
- log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
- if (localName.equals("param-name"))
- param.setParamName(value);
- else if (localName.equals("param-value"))
- param.setParamValue(value);
- }
-}
Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -30,8 +30,8 @@
import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
import org.jboss.ws.metadata.config.jaxws.WSEndpointConfigJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
/**
* Test parsing of the JBossWS config
@@ -97,7 +97,7 @@
assertNull(epc1.getPostHandlerChains());
assertEquals("Standard Secure Endpoint", epc2.getConfigName());
- WSHandlerChainConfigJAXWS preChain = epc2.getPreHandlerChains().getHandlerChains().get(0);
+ HandlerChainMetaData preChain = epc2.getPreHandlerChains().getHandlerChains().get(0);
assertEquals("##SOAP11_HTTP", preChain.getProtocolBindings());
assertEquals(1, preChain.getHandlers().size());
UnifiedHandlerMetaData h1 = (UnifiedHandlerMetaData)preChain.getHandlers().get(0);
Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -53,24 +53,24 @@
Service service = Service.create(wsdlURL, serviceName);
SOAPEndpoint port = (SOAPEndpoint)service.getPort(SOAPEndpoint.class);
- /*
- HandlerResolver handlerResolver = new HandlerResolver()
- {
- public List<Handler> getHandlerChain(PortInfo info)
- {
- List<Handler> handlerChain = new ArrayList<Handler>();
-
- QName sname = info.getServiceName();
- QName pname = info.getPortName();
- String bid = info.getBindingID();
-
- return handlerChain;
- }
- };
- service.setHandlerResolver(handlerResolver);
- */
-
String retStr = port.echo("hello");
- assertEquals("hello:endpoint", retStr);
+
+ StringBuffer expStr = new StringBuffer("hello");
+ expStr.append(":SOAP12Handler");
+ expStr.append(":SOAPHandler");
+ expStr.append(":ServiceHandler");
+ expStr.append(":ServiceWildcardHandler");
+ expStr.append(":PortHandler");
+ expStr.append(":PortWildcardHandler");
+ expStr.append(":GeneralHandler");
+ expStr.append(":endpoint");
+ expStr.append(":GeneralHandler");
+ expStr.append(":PortWildcardHandler");
+ expStr.append(":PortHandler");
+ expStr.append(":ServiceWildcardHandler");
+ expStr.append(":ServiceHandler");
+ expStr.append(":SOAPHandler");
+ expStr.append(":SOAP12Handler");
+ assertEquals(expStr.toString(), retStr);
}
}
Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java 2006-08-13 17:40:21 UTC (rev 737)
@@ -38,12 +38,13 @@
*/
public class ServerHandler extends GenericSOAPHandler
{
- public boolean handleOutbound(MessageContext msgContext)
+ public boolean handleInbound(MessageContext msgContext)
{
try
{
SOAPMessage soapMessage = ((SOAPMessageContext)msgContext).getMessage();
SOAPElement soapElement = (SOAPElement)soapMessage.getSOAPBody().getChildElements().next();
+ soapElement = (SOAPElement)soapElement.getChildElements().next();
String value = soapElement.getValue();
String handlerName = getHandlerName();
@@ -57,7 +58,7 @@
}
}
- public boolean handleInbound(MessageContext msgContext)
+ public boolean handleOutbound(MessageContext msgContext)
{
try
{
Modified: branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml 2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml 2006-08-13 17:40:21 UTC (rev 737)
@@ -77,4 +77,11 @@
</handler>
</handler-chain>
+ <handler-chain>
+ <handler>
+ <handler-name> GeneralHandler </handler-name>
+ <handler-class> org.jboss.test.ws.jaxws.handlerscope.ServerHandler </handler-class>
+ </handler>
+ </handler-chain>
+
</handler-chains>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list