cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dk...@apache.org
Subject svn commit: r724782 - in /cxf/trunk: common/common/src/main/java/org/apache/cxf/configuration/spring/ rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/
Date Tue, 09 Dec 2008 17:09:40 GMT
Author: dkulp
Date: Tue Dec  9 09:09:40 2008
New Revision: 724782

URL: http://svn.apache.org/viewvc?rev=724782&view=rev
Log:
Do the node -> string -> jaxb parse thing for the tlsClientParameters to get the properties
substituted

Modified:
    cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/TLSClientParametersConfig.java
    cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java

Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java?rev=724782&r1=724781&r2=724782&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
(original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/configuration/spring/AbstractBeanDefinitionParser.java
Tue Dec  9 09:09:40 2008
@@ -220,7 +220,6 @@
         mapElementToJaxbProperty(parent, bean, name, propertyName, null);
     }
    
-    @SuppressWarnings("deprecation")
     protected void mapElementToJaxbProperty(Element parent, 
                                             BeanDefinitionBuilder bean, 
                                             QName name,
@@ -241,7 +240,14 @@
         if (data == null) {
             return;
         }
-
+        mapElementToJaxbProperty(data, bean, propertyName, c);
+    }
+    
+    @SuppressWarnings("deprecation")
+    protected void mapElementToJaxbProperty(Element data, 
+                                            BeanDefinitionBuilder bean, 
+                                            String propertyName, 
+                                            Class<?> c) {
         JAXBContext context = null;
         try {
             String pkg = getJaxbPackage();

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/TLSClientParametersConfig.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/TLSClientParametersConfig.java?rev=724782&r1=724781&r2=724782&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/TLSClientParametersConfig.java
(original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/configuration/jsse/spring/TLSClientParametersConfig.java
Tue Dec  9 09:09:40 2008
@@ -19,11 +19,20 @@
 package org.apache.cxf.configuration.jsse.spring;
 
 import java.io.IOException;
+import java.io.StringReader;
 import java.security.GeneralSecurityException;
 
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLStreamReader;
 
+
+import org.apache.cxf.common.util.PackageUtils;
 import org.apache.cxf.configuration.jsse.TLSClientParameters;
 import org.apache.cxf.configuration.security.TLSClientParametersType;
+import org.apache.cxf.staxutils.StaxUtils;
 
 /**
  * This class provides the TLSClientParameters that programmatically
@@ -31,39 +40,74 @@
  * type TLSClientParametersType that was used in the Spring configuration
  * of the http-conduit bean.
  */
-public class TLSClientParametersConfig 
-    extends TLSClientParameters {
+public class TLSClientParametersConfig {
+    static JAXBContext context = null;
     
-    public TLSClientParametersConfig(TLSClientParametersType params) 
+    private static synchronized JAXBContext getContext() throws JAXBException {
+        if (context == null) {
+            context = JAXBContext.newInstance(PackageUtils.getPackageName(TLSClientParametersType.class),

+                                              TLSClientParametersConfig.class.getClassLoader());
           
+        }
+        return context;
+    }
+
+    static TLSClientParameters createTLSClientParametersFromType(TLSClientParametersType
params) 
         throws GeneralSecurityException,
                IOException {
 
+        TLSClientParameters ret = new TLSClientParameters();
         if (params.isDisableCNCheck()) {
-            this.setDisableCNCheck(true);
+            ret.setDisableCNCheck(true);
         }
         if (params.isSetCipherSuitesFilter()) {
-            this.setCipherSuitesFilter(params.getCipherSuitesFilter());
+            ret.setCipherSuitesFilter(params.getCipherSuitesFilter());
         }
         if (params.isSetCipherSuites()) {
-            this.setCipherSuites(params.getCipherSuites().getCipherSuite());
+            ret.setCipherSuites(params.getCipherSuites().getCipherSuite());
         }
         if (params.isSetJsseProvider()) {
-            this.setJsseProvider(params.getJsseProvider());
+            ret.setJsseProvider(params.getJsseProvider());
         }
         if (params.isSetSecureRandomParameters()) {
-            this.setSecureRandom(
+            ret.setSecureRandom(
                 TLSParameterJaxBUtils.getSecureRandom(
                         params.getSecureRandomParameters()));
         }
         if (params.isSetKeyManagers()) {
-            this.setKeyManagers(
+            ret.setKeyManagers(
                 TLSParameterJaxBUtils.getKeyManagers(params.getKeyManagers()));
         }
         if (params.isSetTrustManagers()) {
-            this.setTrustManagers(
+            ret.setTrustManagers(
                 TLSParameterJaxBUtils.getTrustManagers(
                         params.getTrustManagers()));
         }
+        return ret;
+    }
+    
+
+
+    public static Object createTLSClientParameters(String s) {
+        
+        StringReader reader = new StringReader(s);
+        XMLStreamReader data = StaxUtils.createXMLStreamReader(reader);
+        Unmarshaller u;
+        try {
+            u = getContext().createUnmarshaller();
+            Object obj = u.unmarshal(data, TLSClientParametersType.class);
+            if (obj instanceof JAXBElement<?>) {
+                JAXBElement<?> el = (JAXBElement<?>)obj;
+                obj = el.getValue();
+
+            }
+            
+            TLSClientParametersType cpt = (TLSClientParametersType)obj;
+            return createTLSClientParametersFromType(cpt);
+        } catch (RuntimeException e) {
+            throw e;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
 }

Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java?rev=724782&r1=724781&r2=724782&view=diff
==============================================================================
--- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
(original)
+++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/spring/HttpConduitBeanDefinitionParser.java
Tue Dec  9 09:09:40 2008
@@ -18,10 +18,14 @@
  */
 package org.apache.cxf.transport.http.spring;
 
+import java.io.StringWriter;
+
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
 
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -35,6 +39,7 @@
 import org.apache.cxf.configuration.security.ProxyAuthorizationPolicy;
 import org.apache.cxf.configuration.security.TLSClientParametersType;
 import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
+import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.cxf.transport.http.HTTPConduit;
 import org.apache.cxf.transport.http.HttpBasicAuthSupplier;
 import org.apache.cxf.transport.http.MessageTrustDecider;
@@ -90,7 +95,7 @@
             } else if ("basicAuthSupplier".equals(elementName)) {
                 mapBeanOrClassElement((Element)n, bean, HttpBasicAuthSupplier.class);
             } else if ("tlsClientParameters".equals(elementName)) {
-                mapTLSClientParameters(n, bean);
+                mapTLSClientParameters((Element)n, bean);
             }
         }
 
@@ -101,23 +106,22 @@
      * a TLSClientParametersConfig object initialized with the JAXB
      * generated type unmarshalled from the selected node.
      */
-    public void mapTLSClientParameters(Node n, BeanDefinitionBuilder bean) {
-
-        // Unmarshal the JAXB Generated Type from Config and inject
-        // the configured TLSClientParameters into the HTTPConduit.
-        JAXBContext context = null;
+    @SuppressWarnings("deprecation")
+    public void mapTLSClientParameters(Element n, BeanDefinitionBuilder bean) {
+        StringWriter writer = new StringWriter();
+        XMLStreamWriter xmlWriter = StaxUtils.createXMLStreamWriter(writer);
         try {
-            context = JAXBContext.newInstance(PackageUtils.getPackageName(TLSClientParametersType.class),

-                    getClass().getClassLoader());
-            Unmarshaller u = context.createUnmarshaller();
-            JAXBElement<TLSClientParametersType> jaxb = 
-                u.unmarshal(n, TLSClientParametersType.class);
-            TLSClientParameters params = 
-                new TLSClientParametersConfig(jaxb.getValue());
-            bean.addPropertyValue("tlsClientParameters", params);
-        } catch (Exception e) {
-            throw new RuntimeException("Could not process configuration.", e);
+            StaxUtils.copy(n, xmlWriter);
+            xmlWriter.flush();
+        } catch (XMLStreamException e) {
+            throw new RuntimeException(e);
         }
+
+        BeanDefinitionBuilder jaxbbean 
+            = BeanDefinitionBuilder.rootBeanDefinition(TLSClientParametersConfig.class);
+        jaxbbean.getRawBeanDefinition().setFactoryMethodName("createTLSClientParameters");
+        jaxbbean.addConstructorArg(writer.toString());
+        bean.addPropertyValue("tlsClientParameters", jaxbbean.getBeanDefinition());
     }
     
     /**



Mime
View raw message