diff options
author | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-16 04:07:55 +0000 |
---|---|---|
committer | rfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68> | 2009-07-16 04:07:55 +0000 |
commit | a6a65ad2db2b466494a1526d2266931fc3c5fa76 (patch) | |
tree | 705677f6446508eed112b05095d0bcc6e3c3e325 /java/sca/modules/databinding/src/main | |
parent | 6d4696612dc9c701a40be66c446f99f5ff6bbacc (diff) |
Turn SimpleTypeMapper into a utility so that the implementation-bepl can use it
Fix the OSGi MF
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@794517 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/databinding/src/main')
6 files changed, 56 insertions, 10 deletions
diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/SimpleTypeMapper.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/SimpleTypeMapper.java index 4e6d130aa9..ece8027c29 100644 --- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/SimpleTypeMapper.java +++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/SimpleTypeMapper.java @@ -21,6 +21,8 @@ package org.apache.tuscany.sca.databinding; import javax.xml.namespace.QName; +import org.apache.tuscany.sca.interfacedef.util.TypeInfo; + /** * Type Mapper between XML schema simple data types and java objects * @@ -43,4 +45,25 @@ public interface SimpleTypeMapper { * @return The XML lexical representation */ String toXMLLiteral(QName simpleType, Object obj, TransformationContext context); + + /** + * Get the java type for a simple xml type + * @param xmlType + * @return + */ + Class<?> getJavaType(QName xmlType); + + /** + * Get the xml type for a java type + * @param javaType + * @return + */ + TypeInfo getXMLType(Class<?> javaType); + + /** + * Check if an xml type is a simple type + * @param xmlType + * @return + */ + boolean isSimpleXSDType(QName xmlType); } diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/SimpleTypeMapperImpl.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/SimpleTypeMapperImpl.java index 32a2313f59..9ffa950f1a 100644 --- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/SimpleTypeMapperImpl.java +++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/SimpleTypeMapperImpl.java @@ -229,7 +229,7 @@ public class SimpleTypeMapperImpl extends XSDDataTypeConverter implements Simple } } - public static Class getJavaType(QName xmlType) { + public Class<?> getJavaType(QName xmlType) { if (xmlType != null && URI_2001_SCHEMA_XSD.equals(xmlType.getNamespaceURI())) { return XML2JAVA.get(xmlType.getLocalPart()); } else { @@ -237,7 +237,7 @@ public class SimpleTypeMapperImpl extends XSDDataTypeConverter implements Simple } } - public static TypeInfo getXMLType(Class javaType) { + public TypeInfo getXMLType(Class javaType) { return XSD_SIMPLE_TYPES.get(JAVA2XML.get(javaType)); } @@ -390,7 +390,7 @@ public class SimpleTypeMapperImpl extends XSDDataTypeConverter implements Simple return obj.toString(); } - public static boolean isSimpleXSDType(QName typeName) { + public boolean isSimpleXSDType(QName typeName) { if (typeName == null) { return false; } diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/SimpleJavaDataBinding.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/SimpleJavaDataBinding.java index 61a2189c72..b8b97d4425 100644 --- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/SimpleJavaDataBinding.java +++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/SimpleJavaDataBinding.java @@ -22,6 +22,8 @@ package org.apache.tuscany.sca.databinding.javabeans; import javax.xml.namespace.QName; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.databinding.SimpleTypeMapper; import org.apache.tuscany.sca.databinding.impl.BaseDataBinding; import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl; import org.apache.tuscany.sca.databinding.xml.XMLStringDataBinding; @@ -37,9 +39,12 @@ import org.apache.tuscany.sca.interfacedef.util.XMLType; */ public class SimpleJavaDataBinding extends BaseDataBinding { public static final String NAME = "java:simpleType"; + private SimpleTypeMapper simpleTypeMapper = new SimpleTypeMapperImpl(); - public SimpleJavaDataBinding() { + public SimpleJavaDataBinding(ExtensionPointRegistry registry) { super(NAME, Object.class); +// UtilityExtensionPoint utilityExtensionPoint = registry.getExtensionPoint(UtilityExtensionPoint.class); +// this.simpleTypeMapper = utilityExtensionPoint.getUtility(SimpleTypeMapper.class); } @Override @@ -68,7 +73,7 @@ public class SimpleJavaDataBinding extends BaseDataBinding { if (logical instanceof XMLType) { elementName = ((XMLType)logical).getElementName(); } - TypeInfo typeInfo = SimpleTypeMapperImpl.getXMLType(cls); + TypeInfo typeInfo = simpleTypeMapper.getXMLType(cls); type.setLogical(new XMLType(elementName, typeInfo == null ? null : typeInfo.getQName())); return true; } else { diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/XML2JavaBeanTransformer.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/XML2JavaBeanTransformer.java index 01dd8fe963..b441340c38 100644 --- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/XML2JavaBeanTransformer.java +++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/javabeans/XML2JavaBeanTransformer.java @@ -70,7 +70,7 @@ public abstract class XML2JavaBeanTransformer<T> extends BaseTransformer<T, Obje }
public Object toJavaObject(QName xmlType, T xmlElement, TransformationContext context) {
- if (xmlType != null && SimpleTypeMapperImpl.isSimpleXSDType(xmlType)) {
+ if (xmlType != null && mapper.isSimpleXSDType(xmlType)) {
return mapper.toJavaObject(xmlType, getText(xmlElement), context);
} else {
Class<?> javaType = (Class<?>)context.getTargetDataType().getPhysical();
@@ -82,7 +82,7 @@ public abstract class XML2JavaBeanTransformer<T> extends BaseTransformer<T, Obje private <L> L createJavaObject(T element, Class<L> javaType, TransformationContext context)
throws XML2JavaMapperException {
if (isTextOnly(element)) {
- return (L) mapper.toJavaObject(SimpleTypeMapperImpl.getXMLType(javaType).getQName(),
+ return (L) mapper.toJavaObject(mapper.getXMLType(javaType).getQName(),
getText(element),
context);
} else {
diff --git a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java index 3423d3e3b0..7a130eb2af 100644 --- a/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java +++ b/java/sca/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/xml/BeanXMLStreamReaderImpl.java @@ -37,6 +37,7 @@ import java.util.Map; import javax.xml.namespace.QName; +import org.apache.tuscany.sca.databinding.SimpleTypeMapper; import org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl; import org.apache.tuscany.sca.interfacedef.util.TypeInfo; @@ -52,7 +53,7 @@ public class BeanXMLStreamReaderImpl extends XmlTreeStreamReaderImpl { public static class BeanXmlNodeImpl extends SimpleXmlNodeImpl implements XmlNode { private static final Object[] NULL = null; - private static final SimpleTypeMapperImpl MAPPER = new SimpleTypeMapperImpl(); + private static final SimpleTypeMapper MAPPER = new SimpleTypeMapperImpl(); public BeanXmlNodeImpl(Object bean) { super(getName(bean == null ? null : bean.getClass()), bean); @@ -63,14 +64,14 @@ public class BeanXMLStreamReaderImpl extends XmlTreeStreamReaderImpl { } private static boolean isSimpleType(Class<?> javaType) { - return SimpleTypeMapperImpl.getXMLType(javaType) != null; + return MAPPER.getXMLType(javaType) != null; } private static String getStringValue(Object o) { if (o == null) { return null; } - TypeInfo info = SimpleTypeMapperImpl.getXMLType(o.getClass()); + TypeInfo info = MAPPER.getXMLType(o.getClass()); if (info != null) { return MAPPER.toXMLLiteral(info.getQName(), o, null); } else { diff --git a/java/sca/modules/databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.SimpleTypeMapper b/java/sca/modules/databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.SimpleTypeMapper new file mode 100644 index 0000000000..e3580154b0 --- /dev/null +++ b/java/sca/modules/databinding/src/main/resources/META-INF/services/org.apache.tuscany.sca.databinding.SimpleTypeMapper @@ -0,0 +1,17 @@ +# 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.
+org.apache.tuscany.sca.databinding.impl.SimpleTypeMapperImpl
\ No newline at end of file |