You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by cs...@apache.org on 2013/09/10 15:37:33 UTC

svn commit: r1521479 - in /cxf/trunk: services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/ services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/ services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/ syste...

Author: cschneider
Date: Tue Sep 10 13:37:32 2013
New Revision: 1521479

URL: http://svn.apache.org/r1521479
Log:
CXF-5259 Allow to create crypto provider without fallback. Separate factory for client from XKMSInvoker

Added:
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSClientFactory.java
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XKMSInvoker.java
      - copied, changed from r1521368, cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSInvoker.java
Removed:
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSInvoker.java
Modified:
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/CryptoProviderUtils.java
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProvider.java
    cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProviderFactory.java
    cxf/trunk/services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/CryptoProviderFactory.java
    cxf/trunk/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/xkms/client.xml

Added: cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSClientFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSClientFactory.java?rev=1521479&view=auto
==============================================================================
--- cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSClientFactory.java (added)
+++ cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSClientFactory.java Tue Sep 10 13:37:32 2013
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.xkms.client;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.xkms.model.extensions.ResultDetails;
+import org.w3._2002._03.xkms_wsdl.XKMSPortType;
+
+public final class XKMSClientFactory {
+    private XKMSClientFactory() {
+        // Util class
+    }
+    
+    public static XKMSPortType create(String endpointAddress, Bus bus) {
+        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
+        factory.setBus(bus);
+        factory.setServiceClass(XKMSPortType.class);
+        factory.setAddress(endpointAddress);
+        
+        Map<String, Object> properties = new HashMap<String, Object>();
+        properties.put("jaxb.additionalContextClasses", 
+                       new Class[] {ResultDetails.class});
+        factory.setProperties(properties);
+        
+        return (XKMSPortType)factory.create();
+    }
+}

Modified: cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/CryptoProviderUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/CryptoProviderUtils.java?rev=1521479&r1=1521478&r2=1521479&view=diff
==============================================================================
--- cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/CryptoProviderUtils.java (original)
+++ cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/CryptoProviderUtils.java Tue Sep 10 13:37:32 2013
@@ -36,7 +36,7 @@ import org.apache.wss4j.common.crypto.Me
 import org.apache.wss4j.common.ext.WSPasswordCallback;
 import org.apache.wss4j.common.ext.WSPasswordCallback.Usage;
 
-public final class CryptoProviderUtils {
+final class CryptoProviderUtils {
 
     private CryptoProviderUtils() {
     }

Copied: cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XKMSInvoker.java (from r1521368, cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSInvoker.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XKMSInvoker.java?p2=cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XKMSInvoker.java&p1=cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSInvoker.java&r1=1521368&r2=1521479&rev=1521479&view=diff
==============================================================================
--- cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/client/XKMSInvoker.java (original)
+++ cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XKMSInvoker.java Tue Sep 10 13:37:32 2013
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.cxf.xkms.client;
+package org.apache.cxf.xkms.crypto.impl;
 
 import java.io.ByteArrayInputStream;
 import java.math.BigInteger;
@@ -26,17 +26,13 @@ import java.security.cert.CertificateFac
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.UUID;
 
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
 
-import org.apache.cxf.Bus;
-import org.apache.cxf.bus.spring.SpringBusFactory;
-import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.xkms.client.X509AppId;
 import org.apache.cxf.xkms.exception.ExceptionMapper;
 import org.apache.cxf.xkms.exception.XKMSException;
 import org.apache.cxf.xkms.exception.XKMSLocateException;
@@ -44,7 +40,6 @@ import org.apache.cxf.xkms.exception.XKM
 import org.apache.cxf.xkms.exception.XKMSValidateException;
 import org.apache.cxf.xkms.handlers.Applications;
 import org.apache.cxf.xkms.handlers.XKMSConstants;
-import org.apache.cxf.xkms.model.extensions.ResultDetails;
 import org.apache.cxf.xkms.model.xkms.KeyBindingEnum;
 import org.apache.cxf.xkms.model.xkms.LocateRequestType;
 import org.apache.cxf.xkms.model.xkms.LocateResultType;
@@ -60,7 +55,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3._2002._03.xkms_wsdl.XKMSPortType;
 
-public class XKMSInvoker {
+class XKMSInvoker {
     private static final Logger LOG = LoggerFactory.getLogger(XKMSInvoker.class);
 
     private static final org.apache.cxf.xkms.model.xmldsig.ObjectFactory DSIG_OF =
@@ -78,29 +73,6 @@ public class XKMSInvoker {
         this.xkmsConsumer = xkmsConsumer;
     }
     
-    public XKMSInvoker(String endpointAddress) {
-        this(endpointAddress, null);
-    }
-    
-    public XKMSInvoker(String endpointAddress, Bus bus) {
-
-        if (bus != null) {
-            SpringBusFactory.setDefaultBus(bus);
-            SpringBusFactory.setThreadDefaultBus(bus);
-        }
-        
-        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
-        factory.setServiceClass(XKMSPortType.class);
-        factory.setAddress(endpointAddress);
-        
-        Map<String, Object> properties = new HashMap<String, Object>();
-        properties.put("jaxb.additionalContextClasses", 
-                       new Class[] {ResultDetails.class});
-        factory.setProperties(properties);
-        
-        xkmsConsumer = (XKMSPortType)factory.create();
-    }
-    
     public X509Certificate getServiceCertificate(QName serviceName) {
         return getCertificateForId(Applications.SERVICE_SOAP, serviceName.toString());
     }

Modified: cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProvider.java?rev=1521479&r1=1521478&r2=1521479&view=diff
==============================================================================
--- cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProvider.java (original)
+++ cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProvider.java Tue Sep 10 13:37:32 2013
@@ -32,7 +32,6 @@ import org.apache.cxf.common.logging.Log
 import org.apache.cxf.xkms.cache.EHCacheXKMSClientCache;
 import org.apache.cxf.xkms.cache.XKMSCacheToken;
 import org.apache.cxf.xkms.cache.XKMSClientCache;
-import org.apache.cxf.xkms.client.XKMSInvoker;
 import org.apache.cxf.xkms.crypto.CryptoProviderException;
 import org.apache.cxf.xkms.handlers.Applications;
 import org.apache.wss4j.common.crypto.Crypto;
@@ -42,7 +41,7 @@ import org.apache.wss4j.common.crypto.Cr
 import org.apache.wss4j.common.ext.WSSecurityException;
 import org.w3._2002._03.xkms_wsdl.XKMSPortType;
 
-public class XkmsCryptoProvider extends CryptoBase {
+class XkmsCryptoProvider extends CryptoBase {
 
     private static final Logger LOG = LogUtils.getL7dLogger(XkmsCryptoProvider.class);
 
@@ -67,23 +66,6 @@ public class XkmsCryptoProvider extends 
         this.xkmsClientCache = xkmsClientCache;
     }
     
-    public XkmsCryptoProvider(XKMSInvoker xkmsInvoker) {
-        this(xkmsInvoker, null);
-    }
-    
-    public XkmsCryptoProvider(XKMSInvoker xkmsInvoker, Crypto defaultCrypto) {
-        this(xkmsInvoker, defaultCrypto, new EHCacheXKMSClientCache());
-    }
-    
-    public XkmsCryptoProvider(XKMSInvoker xkmsInvoker, Crypto defaultCrypto, XKMSClientCache xkmsClientCache) {
-        if (xkmsInvoker == null) {
-            throw new IllegalArgumentException("xkmsInvoker may not be null");
-        }
-        this.xkmsInvoker = xkmsInvoker;
-        this.defaultCrypto = defaultCrypto;
-        this.xkmsClientCache = xkmsClientCache;
-    }
-    
     @Override
     public X509Certificate[] getX509Certificates(CryptoType cryptoType) throws WSSecurityException {
         if (LOG.isLoggable(Level.INFO)) {

Modified: cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProviderFactory.java?rev=1521479&r1=1521478&r2=1521479&view=diff
==============================================================================
--- cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProviderFactory.java (original)
+++ cxf/trunk/services/xkms/xkms-client/src/main/java/org/apache/cxf/xkms/crypto/impl/XkmsCryptoProviderFactory.java Tue Sep 10 13:37:32 2013
@@ -30,6 +30,10 @@ import org.apache.wss4j.common.crypto.Cr
 import org.apache.wss4j.common.ext.WSSecurityException;
 import org.w3._2002._03.xkms_wsdl.XKMSPortType;
 
+/**
+ * For usage in OSGi this factory will be published as a service.
+ * Outside OSGi it can be used directly 
+ */
 public class XkmsCryptoProviderFactory implements CryptoProviderFactory {
     
     private final XKMSPortType xkmsConsumer;
@@ -50,4 +54,8 @@ public class XkmsCryptoProviderFactory i
                                               + e.getMessage(), e);
         }
     }
+
+    public Crypto create() {
+        return new XkmsCryptoProvider(xkmsConsumer);
+    }
 }

Modified: cxf/trunk/services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/CryptoProviderFactory.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/CryptoProviderFactory.java?rev=1521479&r1=1521478&r2=1521479&view=diff
==============================================================================
--- cxf/trunk/services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/CryptoProviderFactory.java (original)
+++ cxf/trunk/services/xkms/xkms-common/src/main/java/org/apache/cxf/xkms/crypto/CryptoProviderFactory.java Tue Sep 10 13:37:32 2013
@@ -24,6 +24,18 @@ import org.apache.wss4j.common.crypto.Cr
 
 public interface CryptoProviderFactory {
 
+    /**
+     * Create with merlin fallback settings retrieved from cxf message
+     * @param message
+     * @return
+     */
     Crypto create(Message message);
 
+    /**
+     * Create without fallback crypto 
+     * 
+     * @param cryptoProperties
+     * @return xkms crypto
+     */
+    Crypto create();
 }

Modified: cxf/trunk/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/xkms/client.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/xkms/client.xml?rev=1521479&r1=1521478&r2=1521479&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/xkms/client.xml (original)
+++ cxf/trunk/systests/ws-security/src/test/resources/org/apache/cxf/systest/ws/xkms/client.xml Tue Sep 10 13:37:32 2013
@@ -60,7 +60,7 @@
     </jaxws:client>
     -->
     
-    <bean id="xkmsInvoker" class="org.apache.cxf.xkms.client.XKMSInvoker">
+    <bean id="xkmsClient" class="org.apache.cxf.xkms.client.XKMSClientFactory" factory-method="create">
         <constructor-arg>
             <value>https://localhost:${testutil.ports.XKMSServer}/XKMS</value>
         </constructor-arg>
@@ -69,8 +69,7 @@
     
     <bean id="xkmsCrypto" class="org.apache.cxf.xkms.crypto.impl.XkmsCryptoProvider">
         <constructor-arg>
-            <!-- <ref bean="xkmsClient" /> -->
-            <ref bean="xkmsInvoker" />
+            <ref bean="xkmsClient" />
         </constructor-arg>
     </bean>
     
@@ -94,8 +93,7 @@
     
     <bean id="xkmsAsymmetricCrypto" class="org.apache.cxf.xkms.crypto.impl.XkmsCryptoProvider">
         <constructor-arg>
-            <!-- <ref bean="xkmsClient" /> -->
-            <ref bean="xkmsInvoker" />
+            <ref bean="xkmsClient" />
         </constructor-arg>
         <constructor-arg>
              <ref bean="crypto" />