Author: bimargulies
Date: Fri Dec 28 15:59:59 2007
New Revision: 607358

URL: http://svn.apache.org/viewvc?rev=607358&view=rev
Log:
Add some compatibility code, fix a name.

Added:
    
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/
    
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
   (with props)
Modified:
    
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
    
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
    
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/Messages.properties

Modified: 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java?rev=607358&r1=607357&r2=607358&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
 (original)
+++ 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/AegisContext.java
 Fri Dec 28 15:59:59 2007
@@ -49,10 +49,11 @@
  * 
  */
 public class AegisContext {
-    private static final String DUMMY_ENCODING_STYLE_URI = 
"urn:aegis.cxf.apache.org:defaultEncoding";
+    // perhaps this should be SoapConstants.XSD? Or perhaps the code that 
looks for that should look for this?
+    private static final String DEFAULT_ENCODING_STYLE_URI = 
"urn:aegis.cxf.apache.org:defaultEncoding";
     private boolean writeXsiTypes;
     private boolean readXsiTypes = true;
-    private String mappingNamespaceURI = DUMMY_ENCODING_STYLE_URI;
+    private String mappingNamespaceURI = DEFAULT_ENCODING_STYLE_URI;
 
     private TypeMappingRegistry typeMappingRegistry;
     private Set<String> overrideTypes;

Modified: 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java?rev=607358&r1=607357&r2=607358&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
 (original)
+++ 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/AegisDatabinding.java
 Fri Dec 28 15:59:59 2007
@@ -25,6 +25,7 @@
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
+import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
@@ -39,6 +40,9 @@
 import org.apache.cxf.aegis.type.Type;
 import org.apache.cxf.aegis.type.TypeCreator;
 import org.apache.cxf.aegis.type.TypeMapping;
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.common.i18n.Message;
+import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.SOAPConstants;
 import org.apache.cxf.common.xmlschema.SchemaCollection;
 import org.apache.cxf.databinding.DataBinding;
@@ -47,6 +51,7 @@
 import org.apache.cxf.databinding.source.AbstractDataBinding;
 import org.apache.cxf.frontend.MethodDispatcher;
 import org.apache.cxf.frontend.SimpleMethodDispatcher;
+import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.service.Service;
 import org.apache.cxf.service.factory.ServiceConstructionException;
 import org.apache.cxf.service.model.AbstractMessageContainer;
@@ -70,9 +75,25 @@
  */
 public class AegisDatabinding extends AbstractDataBinding implements 
DataBinding {
     
+    // these are here only for compatibility.
+    /**
+     * @deprecated 2.1
+     */
+    public static final String WRITE_XSI_TYPE_KEY = "writeXsiType";
+    /**
+     * @deprecated 2.1
+     */
+    public static final String OVERRIDE_TYPES_KEY = "overrideTypesList";
+    /**
+     * @deprecated 2.1
+     */
+    public static final String READ_XSI_TYPE_KEY = "readXsiType";
+    
     protected static final int IN_PARAM = 0;
     protected static final int OUT_PARAM = 1;
     protected static final int FAULT_PARAM = 2;
+    
+    private static final Logger LOG = 
LogUtils.getL7dLogger(AegisDatabinding.class);
 
     private AegisContext aegisContext;
     private Map<MessagePartInfo, Type> part2Type;
@@ -155,15 +176,62 @@
      */
     public void initialize(Service s) {
         
+        // We want to support some compatibility configuration properties
+        // definitionally, anyone doing the compatibility thing has not made 
their
+        // own AegisContext object.
         if (aegisContext == null) {
             aegisContext = new AegisContext();
+
+            Object val = s.get(READ_XSI_TYPE_KEY);
+            if ("false".equals(val) || Boolean.FALSE.equals(val)) {
+                aegisContext.setReadXsiTypes(false);
+            }
+            
+            val = s.get(WRITE_XSI_TYPE_KEY);
+            if ("true".equals(val) || Boolean.TRUE.equals(val)) {
+                aegisContext.setWriteXsiTypes(true);
+            }
+            
+            val = s.get(OVERRIDE_TYPES_KEY);
+            if (val != null) {
+                Collection nameCollection = (Collection) val;
+                Collection<String> typeNames = CastUtils.cast(nameCollection, 
String.class);
+                if (overrideTypes == null) {
+                    overrideTypes = new HashSet<String>();
+                }
+                overrideTypes.addAll(typeNames);
+            }
+            
+            Map<Class<?>, String> implMap = new HashMap<Class<?>, String>();
+            // now for a really annoying case, the .implementation objects.
+            for (String key : s.keySet()) {
+                if (key.endsWith(".implementation")) {
+                    String className = key.substring(0, key.length() - 
".implementation".length());
+                    Class<?> clazz = null;
+                    try {
+                        clazz = ClassLoaderUtils.loadClass(className, 
getClass());
+                    } catch (ClassNotFoundException e) {
+                        Message message = new 
Message("MAPPED_CLASS_NOT_FOUND", LOG, className, key);
+                        LOG.warning(message.toString());
+                        continue;
+                    }
+                    String implClassName = (String)s.get(key);
+                    implMap.put(clazz, implClassName);
+                }
+            }
+
             if (overrideTypes != null) {
                 aegisContext.setOverrideTypes(overrideTypes);
             }
             if (configuration != null) {
                 aegisContext.setConfiguration(configuration);
             }
+            
+            if (implMap.size() > 0) {
+                aegisContext.setBeanImplementationMap(implMap);
+            }
         }
+        
         
aegisContext.setMappingNamespaceURI(s.getServiceInfos().get(0).getName().getNamespaceURI());
         aegisContext.initialize();
         this.service = s;

Modified: 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/Messages.properties
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/Messages.properties?rev=607358&r1=607357&r2=607358&view=diff
==============================================================================
--- 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/Messages.properties
 (original)
+++ 
incubator/cxf/trunk/rt/databinding/aegis/src/main/java/org/apache/cxf/aegis/databinding/Messages.properties
 Fri Dec 28 15:59:59 2007
@@ -18,6 +18,7 @@
 #    under the License.
 #
 #
-STREAM_BAD_POSITION= The input stream is not positioned at START_DOCUMENT or 
START_ELEMENT.
-STREAM_READ_ERROR= Error reading XML input stream.
+STREAM_BAD_POSITION=The input stream is not positioned at START_DOCUMENT or 
START_ELEMENT.
+STREAM_READ_ERROR=Error reading XML input stream.
+MAPPED_CLASS_NOT_FOUND=Class {0} from service property {1} not found.
 

Added: 
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java?rev=607358&view=auto
==============================================================================
--- 
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
 (added)
+++ 
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
 Fri Dec 28 15:59:59 2007
@@ -0,0 +1,73 @@
+/**
+ * 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.aegis.oldconfig;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.cxf.aegis.AbstractAegisTest;
+import org.apache.cxf.aegis.AegisContext;
+import org.apache.cxf.aegis.databinding.AegisDatabinding;
+import org.apache.cxf.aegis.inheritance.ws1.WS1;
+import org.apache.cxf.aegis.proxy.Hello;
+import org.apache.cxf.aegis.proxy.MyHello;
+import org.apache.cxf.aegis.services.SimpleBean;
+import org.apache.cxf.frontend.ClientFactoryBean;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.junit.Test;
+
+/**
+ * 
+ */
+public class Pre21ConfigCompatTest extends AbstractAegisTest {
+
+    @SuppressWarnings("deprecation")
+    @Test
+    public void testCompat() throws Exception {
+
+        Map<String, Object> props = new HashMap<String, Object>();
+        props.put(AegisDatabinding.WRITE_XSI_TYPE_KEY, "true");
+        props.put(AegisDatabinding.READ_XSI_TYPE_KEY, "false");
+        List<String> l = new ArrayList<String>();
+        l.add(SimpleBean.class.getName());
+        props.put(AegisDatabinding.OVERRIDE_TYPES_KEY, l);
+        props.put(Hello.class.getName() + ".implementation", 
MyHello.class.getName());
+        
+        ClientProxyFactoryBean pf = new ClientProxyFactoryBean();
+        setupAegis(pf.getClientFactoryBean());
+        pf.setServiceClass(WS1.class);
+        pf.getServiceFactory().setProperties(props);
+        pf.setAddress("local://WS1");
+        pf.setProperties(props);
+        ClientFactoryBean cfb = pf.getClientFactoryBean();
+        cfb.create();
+
+        AegisDatabinding db = 
(AegisDatabinding)cfb.getServiceFactory().getDataBinding();
+        AegisContext context = db.getAegisContext();
+        assertTrue(context.isWriteXsiTypes());
+        assertFalse(context.isReadXsiTypes());
+        Set<String> classes = context.getOverrideTypes();
+        assertTrue(classes.contains(SimpleBean.class.getName()));
+        assertEquals(MyHello.class.getName(), 
context.getBeanImplementationMap().get(Hello.class)); 
+    }
+}

Propchange: 
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/oldconfig/Pre21ConfigCompatTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date


Reply via email to