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