[jboss-cvs] JBossAS SVN: r105474 - in projects/metadata/common/trunk: src/main/java/org/jboss/metadata/annotation/creator/ws and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jun 1 09:08:00 EDT 2010


Author: richard.opalka at jboss.com
Date: 2010-06-01 09:07:59 -0400 (Tue, 01 Jun 2010)
New Revision: 105474

Modified:
   projects/metadata/common/trunk/pom.xml
   projects/metadata/common/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
Log:
[JBMETA-286] use HandlerChainsObjectFactory and JBossWS SPI meta data to properly handle incorrect namespace prefixes

Modified: projects/metadata/common/trunk/pom.xml
===================================================================
--- projects/metadata/common/trunk/pom.xml	2010-06-01 13:07:36 UTC (rev 105473)
+++ projects/metadata/common/trunk/pom.xml	2010-06-01 13:07:59 UTC (rev 105474)
@@ -153,7 +153,7 @@
     <dependency>
       <groupId>org.jboss.ws</groupId>
       <artifactId>jbossws-spi</artifactId>
-      <version>1.3.0.Beta4</version>
+      <version>1.3.0.GA</version>
     </dependency>
 
     <dependency>

Modified: projects/metadata/common/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java
===================================================================
--- projects/metadata/common/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java	2010-06-01 13:07:36 UTC (rev 105473)
+++ projects/metadata/common/trunk/src/main/java/org/jboss/metadata/annotation/creator/ws/WebServiceHandlerChainProcessor.java	2010-06-01 13:07:59 UTC (rev 105474)
@@ -30,6 +30,11 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
 
 import javax.jws.HandlerChain;
 
@@ -38,8 +43,16 @@
 import org.jboss.metadata.annotation.creator.Processor;
 import org.jboss.metadata.annotation.creator.ProcessorUtils;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerChainsMetaData;
+import org.jboss.metadata.javaee.spec.ServiceReferenceHandlerMetaData;
 import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.HandlerChainsObjectFactory;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainsMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedInitParamMetaData;
 import org.jboss.xb.binding.JBossXBException;
 import org.jboss.xb.binding.Unmarshaller;
 import org.jboss.xb.binding.UnmarshallerFactory;
@@ -133,9 +146,130 @@
          throw new IllegalArgumentException("InputStream may not be null.");
       
       Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
-      return (ServiceReferenceHandlerChainsMetaData) unmarshaller.unmarshal(in, resolver);
+      UnifiedHandlerChainsMetaData handlerChainsUMDM = (UnifiedHandlerChainsMetaData)unmarshaller.unmarshal(in, new HandlerChainsObjectFactory(), null);
+      return this.transform(handlerChainsUMDM);
    }
    
+   private ServiceReferenceHandlerChainsMetaData transform(final UnifiedHandlerChainsMetaData handlerChainsUMDM)
+   {
+      if (handlerChainsUMDM == null)
+      {
+         return null;
+      }
+      
+      final List<ServiceReferenceHandlerChainMetaData> handlerChains = new LinkedList<ServiceReferenceHandlerChainMetaData>();
+      
+      for (final UnifiedHandlerChainMetaData handlerChainUMDM : handlerChainsUMDM.getHandlerChains())
+      {
+         final ServiceReferenceHandlerChainMetaData newChainMD = transform(handlerChainUMDM);
+         
+         if (newChainMD != null)
+         {
+            handlerChains.add(newChainMD);
+         }
+      }
+      
+      if (handlerChains.size() == 0)
+      {
+         return null;
+      }
+
+      final ServiceReferenceHandlerChainsMetaData retVal = new ServiceReferenceHandlerChainsMetaData();
+      retVal.setHandlers(handlerChains);
+      
+      return retVal;
+   }
+   
+   private ServiceReferenceHandlerChainMetaData transform(final UnifiedHandlerChainMetaData handlerChainUMDM)
+   {
+      if (handlerChainUMDM == null || handlerChainUMDM.isExcluded())
+      {
+         return null;
+      }
+
+      final List<ServiceReferenceHandlerMetaData> handlers = new LinkedList<ServiceReferenceHandlerMetaData>();
+      
+      for (final UnifiedHandlerMetaData handlerUMDM : handlerChainUMDM.getHandlers())
+      {
+         final ServiceReferenceHandlerMetaData newHandlerMD = this.transform(handlerUMDM);
+
+         if (newHandlerMD != null)
+         {
+            handlers.add(newHandlerMD);
+         }
+      }
+      
+      if (handlers.size() == 0)
+      {
+         return null;
+      }
+      
+      final ServiceReferenceHandlerChainMetaData retVal = new ServiceReferenceHandlerChainMetaData();
+      retVal.setPortNamePattern(handlerChainUMDM.getPortNamePattern());
+      retVal.setProtocolBindings(handlerChainUMDM.getProtocolBindings());
+      retVal.setServiceNamePattern(handlerChainUMDM.getServiceNamePattern());
+      retVal.setHandler(handlers);
+      
+      return retVal;
+   }
+   
+   @SuppressWarnings("unchecked")
+   private ServiceReferenceHandlerMetaData transform(final UnifiedHandlerMetaData handlerUMDM)
+   {
+      if (handlerUMDM == null)
+      {
+         return null;
+      }
+      
+      final ServiceReferenceHandlerMetaData retVal = new ServiceReferenceHandlerMetaData();
+      retVal.setHandlerClass(handlerUMDM.getHandlerClass());
+      retVal.setHandlerName(handlerUMDM.getHandlerName());
+      retVal.setPortName(this.toList(handlerUMDM.getPortNames()));
+      retVal.setSoapHeader(this.toList(handlerUMDM.getSoapHeaders()));
+      retVal.setSoapRole(this.toList(handlerUMDM.getSoapRoles()));
+      retVal.setInitParam(this.transform(handlerUMDM.getInitParams()));
+      
+      return retVal;
+   }
+   
+   private List<ParamValueMetaData> transform(final List<UnifiedInitParamMetaData> initParams)
+   {
+      if (initParams == null || initParams.size() == 0)
+      {
+         return null;
+      }
+      
+      final List<ParamValueMetaData> retVal = new LinkedList<ParamValueMetaData>();
+      
+      for (final UnifiedInitParamMetaData initParamUMDM : initParams)
+      {
+         final ParamValueMetaData paramValueMD = new ParamValueMetaData();
+         paramValueMD.setParamName(initParamUMDM.getParamName());
+         paramValueMD.setParamValue(initParamUMDM.getParamValue());
+         
+         retVal.add(paramValueMD);
+      }
+      
+      return retVal;
+   }
+   
+   @SuppressWarnings("unchecked")
+   private List toList(final Set set)
+   {
+      if (set == null)
+      {
+         return null;
+      }
+      
+      List retVal = new LinkedList();
+      for (Iterator<E> i = set.iterator(); i.hasNext(); )
+      {
+         retVal.add(i.next());
+      }
+      
+      return retVal;
+   }
+   
    /**
     * Returns the InputStream of a specified file.
     * 




More information about the jboss-cvs-commits mailing list