You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/17 06:56:54 UTC

svn commit: r519244 [1/5] - in /incubator/tuscany/java/sca/services/databinding/databinding-framework: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/tuscany/ src/main/java/org/apache/tuscany/data...

Author: rfeng
Date: Fri Mar 16 22:56:48 2007
New Revision: 519244

URL: http://svn.apache.org/viewvc?view=rev&rev=519244
Log:
Create the "databinding-framework" module to hold the databinding SPIs and default implementations

Added:
    incubator/tuscany/java/sca/services/databinding/databinding-framework/   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/.checkstyle
    incubator/tuscany/java/sca/services/databinding/databinding-framework/.pmd
    incubator/tuscany/java/sca/services/databinding/databinding-framework/.ruleset
    incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/
      - copied from r519083, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImpl.java
      - copied, changed from r519243, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingRegistryImpl.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/BeanUtil.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DelegatingNamespaceContext.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/NameValueArrayStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/NameValuePairStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/NamedProperty.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/NilElementStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXDataBinding.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/WrappingXMLStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLDocumentStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLFragmentStreamReader.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLFragmentStreamReaderImpl.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLGroupDataBinding.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamSerializer.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamable.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/
      - copied from r519083, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/databinding/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/ExceptionHandler.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/resources/org/apache/tuscany/core/databinding.scdl
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/
      - copied from r519083, incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/databinding/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/JavaBean2XMLStreamReaderTestCase.java   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/
      - copied from r519083, incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/databinding/extension/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/ipo.xsd   (with props)
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/impl/order.wsdl
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/resources/org/apache/tuscany/databinding/xml/foo.xml   (with props)
Removed:
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingInteceptor.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingJavaInterfaceProcessor.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingWirePostProcessor.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataTypeLoader.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Input2InputTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PassByValueInterceptor.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PassByValueWirePostProcessor.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/SimpleDataBinding.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingInterceptorTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingJavaInterfaceProcessorTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingLoaderTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingWirePostProcessorOptimizationTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingWirePostProcessorTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/IDLTransformerTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/PassByValueInterceptorTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/PassByValueWirePostProcessorTestCase.java
Modified:
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DirectedGraph.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/MediatorImpl.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PipedTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformationContextImpl.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformerRegistryImpl.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/Java2XMLMapperException.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaMapperException.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMDataBinding.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMWrapperHandler.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/DOMXMLStreamReader.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputSource2Node.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputSource2SAX.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStream2Node.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/InputStream2SAX.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2OutputStream.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2String.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2Writer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Node2XMLStreamReader.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Reader2Node.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Reader2SAX.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOM.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/SAX2DOMPipe.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Source2ResultTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAX2SAXAdapter.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StAXHelper.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/StreamDataPipe.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2Node.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2SAX.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/String2XMLStreamReader.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/Writer2ReaderDataPipe.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2Node.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2SAX.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStreamReader2String.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/xml/XMLStringDataBinding.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/DataBinding.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/DataBindingRegistry.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/DataPipe.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/Mediator.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/SimpleTypeMapper.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformationContext.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformationException.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/TransformerRegistry.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/WrapperHandler.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtension.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/Java2SimpleTypeTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleType2JavaTransformer.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtension.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/spi/databinding/extension/TransformerExtension.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImplTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DataBindingTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/DirectedGraphTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/MediatorImplTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/impl/TransformerRegistryImplTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformerTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformerTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DOM2StAXTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/DataPipeTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/Node2StringTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/PushTransformationTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/StAXHelperTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/databinding/xml/TraxTransformerTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/DataBindingExtensionTestCase.java
    incubator/tuscany/java/sca/services/databinding/databinding-framework/src/test/java/org/apache/tuscany/spi/databinding/extension/SimpleTypeMapperExtensionTestCase.java

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Mar 16 22:56:48 2007
@@ -0,0 +1,14 @@
+target
+*.iws
+*.ipr
+*.iml
+.project
+.classpath
+maven.log
+velocity.log*
+junit*.properties
+surefire*.properties
+.settings
+.deployables
+.wtpmodules
+

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/.checkstyle
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/.checkstyle?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/.checkstyle (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/.checkstyle Fri Mar 16 22:56:48 2007
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<fileset-config file-format-version="1.2.0" simple-config="true">
+    <fileset name="all" enabled="true" check-config-name="Tuscany Checks" local="false">
+        <file-match-pattern match-pattern="." include-pattern="true"/>
+    </fileset>
+</fileset-config>

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/.pmd
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/.pmd?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/.pmd (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/.pmd Fri Mar 16 22:56:48 2007
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<pmd><useProjectRuleSet>true</useProjectRuleSet><rules/><includeDerivedFiles>false</includeDerivedFiles></pmd>
\ No newline at end of file

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/.ruleset
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/.ruleset?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/.ruleset (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/.ruleset Fri Mar 16 22:56:48 2007
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<ruleset name="pmd-eclipse">
+  <description>PMD Plugin preferences rule set</description>
+  
+  
+  <rule ref="rulesets/basic.xml/BooleanInstantiation"/>
+  <rule ref="rulesets/basic.xml/CollapsibleIfStatements"/>
+  <rule ref="rulesets/basic.xml/DoubleCheckedLocking"/>
+<!--<rule ref="rulesets/basic.xml/EmptyCatchBlock"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptyFinallyBlock"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptyIfStmt"/>-->
+  <rule ref="rulesets/basic.xml/EmptyStatementNotInLoop"/>
+<!--<rule ref="rulesets/basic.xml/EmptyStaticInitializer"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptySwitchStatements"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptySynchronizedBlock"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptyTryBlock"/>-->
+<!--<rule ref="rulesets/basic.xml/EmptyWhileStmt"/>-->
+  <rule ref="rulesets/basic.xml/ForLoopShouldBeWhileLoop"/>
+  <rule ref="rulesets/basic.xml/JumbledIncrementer"/>
+<!--<rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode"/>-->
+  <rule ref="rulesets/basic.xml/ReturnFromFinallyBlock"/>
+  <rule ref="rulesets/basic.xml/UnconditionalIfStatement"/>
+  <rule ref="rulesets/basic.xml/UnnecessaryConversionTemporary"/>
+  <rule ref="rulesets/basic.xml/UnnecessaryFinalModifier"/>
+  <rule ref="rulesets/basic.xml/UnnecessaryReturn"/>
+<!--<rule ref="rulesets/basic.xml/UselessOverridingMethod"/>-->
+  
+<!--<rule ref="rulesets/braces.xml/ForLoopsMustUseBraces"/>-->
+<!--<rule ref="rulesets/braces.xml/IfElseStmtsMustUseBraces"/>-->
+<!--<rule ref="rulesets/braces.xml/IfStmtsMustUseBraces"/>-->
+<!--<rule ref="rulesets/braces.xml/WhileLoopsMustUseBraces"/>-->
+
+<!--<rule ref="rulesets/clone.xml/CloneMethodMustImplementCloneable"/>-->
+<!--<rule ref="rulesets/clone.xml/CloneThrowsCloneNotSupportedException"/>-->
+<!--<rule ref="rulesets/clone.xml/ProperCloneImplementation"/>-->
+  
+<!--<rule ref="rulesets/codesize.xml/CyclomaticComplexity"/>-->
+<!--<rule ref="rulesets/codesize.xml/ExcessiveClassLength"/>-->
+<!--<rule ref="rulesets/codesize.xml/ExcessiveMethodLength"/>-->
+<!--<rule ref="rulesets/codesize.xml/ExcessiveParameterList"/>-->
+<!--<rule ref="rulesets/codesize.xml/ExcessivePublicCount"/>-->
+<!--<rule ref="rulesets/codesize.xml/TooManyFields"/>-->
+
+<rule ref="rulesets/controversial.xml/AssignmentInOperand"/>
+<!--<rule ref="rulesets/controversial.xml/AtLeastOneConstructor"/>-->
+<!--<rule ref="rulesets/controversial.xml/CallSuperInConstructor"/>-->
+<!--<rule ref="rulesets/controversial.xml/DontImportSun"/>-->
+<!--<rule ref="rulesets/controversial.xml/NullAssignment"/>-->
+<!--<rule ref="rulesets/controversial.xml/OnlyOneReturn"/>-->
+<!--<rule ref="rulesets/controversial.xml/SingularField"/>-->
+<!--<rule ref="rulesets/controversial.xml/SuspiciousOctalEscape"/>-->
+<!--<rule ref="rulesets/controversial.xml/UnnecessaryConstructor"/>-->
+<rule ref="rulesets/controversial.xml/UnnecessaryParentheses"/>
+<!--<rule ref="rulesets/controversial.xml/UnusedModifier"/>-->
+
+<!--<rule ref="rulesets/coupling.xml/CouplingBetweenObjects"/>-->
+<!--<rule ref="rulesets/coupling.xml/ExcessiveImports"/>-->
+<!--<rule ref="rulesets/coupling.xml/LooseCoupling"/>-->
+
+<!--<rule ref="rulesets/design.xml/AbstractClassWithoutAbstractMethod"/>-->
+<!--<rule ref="rulesets/design.xml/AccessorClassGeneration"/>-->
+<!--<rule ref="rulesets/design.xml/AssignmentToNonFinalStatic"/>-->
+<!--<rule ref="rulesets/design.xml/AvoidDeeplyNestedIfStmts"/>-->
+<!--<rule ref="rulesets/design.xml/AvoidInstanceofChecksInCatchClause"/>-->
+<rule ref="rulesets/design.xml/AvoidProtectedFieldInFinalClass"/>
+<!--<rule ref="rulesets/design.xml/AvoidReassigningParameters"/>-->
+<!--<rule ref="rulesets/design.xml/AvoidSynchronizedAtMethodLevel"/>-->
+<!--<rule ref="rulesets/design.xml/BadComparison"/>-->
+<!--<rule ref="rulesets/design.xml/CloseConnection"/>-->
+<!--<rule ref="rulesets/design.xml/CompareObjectsWithEquals"/>-->
+<!--<rule ref="rulesets/design.xml/ConfusingTernary"/>-->
+<rule ref="rulesets/design.xml/ConstructorCallsOverridableMethod"/>
+<!--<rule ref="rulesets/design.xml/DefaultLabelNotLastInSwitchStmt"/>-->
+<!--<rule ref="rulesets/design.xml/FinalFieldCouldBeStatic"/>-->
+<rule ref="rulesets/design.xml/IdempotentOperations"/>
+<!--<rule ref="rulesets/design.xml/ImmutableField"/>-->
+<!--<rule ref="rulesets/design.xml/InstantiationToGetClass"/>-->
+<!--<rule ref="rulesets/design.xml/MissingBreakInSwitch"/>-->
+<!--<rule ref="rulesets/design.xml/MissingStaticMethodInNonInstantiatableClass"/>-->
+<!--<rule ref="rulesets/design.xml/NonCaseLabelInSwitchStatement"/>-->
+<!--<rule ref="rulesets/design.xml/NonStaticInitializer"/>-->
+<rule ref="rulesets/design.xml/OptimizableToArrayCall"/>
+<rule ref="rulesets/design.xml/PositionLiteralsFirstInComparisons"/>
+<rule ref="rulesets/design.xml/SimplifyBooleanExpressions"/>
+<rule ref="rulesets/design.xml/SimplifyBooleanReturns"/>
+<rule ref="rulesets/design.xml/SimplifyConditional"/>
+<!--<rule ref="rulesets/design.xml/SwitchDensity"/>-->
+<!--<rule ref="rulesets/design.xml/SwitchStmtsShouldHaveDefault"/>-->
+<!--<rule ref="rulesets/design.xml/UnnecessaryLocalBeforeReturn"/>-->
+<!--<rule ref="rulesets/design.xml/UseLocaleWithCaseConversions"/>-->
+<!--<rule ref="rulesets/design.xml/UseNotifyAllInsteadOfNotify"/>-->
+<!--<rule ref="rulesets/design.xml/UseSingleton"/>-->
+
+<!--<rule ref="rulesets/finalizers.xml/EmptyFinalizer"/>-->
+<!--<rule ref="rulesets/finalizers.xml/FinalizeOnlyCallsSuperFinalize"/>-->
+<!--<rule ref="rulesets/finalizers.xml/FinalizeOverloaded"/>-->
+<!--<rule ref="rulesets/finalizers.xml/FinalizeDoesNotCallSuperFinalize"/>-->
+<!--<rule ref="rulesets/finalizers.xml/FinalizeShouldBeProtected"/>-->
+<!--<rule ref="rulesets/finalizers.xml/AvoidCallingFinalize"/>-->
+
+<!--<rule ref="rulesets/imports.xml/DuplicateImports"/>-->
+<!--<rule ref="rulesets/imports.xml/DontImportJavaLang"/>-->
+<!--<rule ref="rulesets/imports.xml/UnusedImports"/>-->
+<!--<rule ref="rulesets/imports.xml/ImportFromSamePackage"/>-->
+
+<!--<rule ref="rulesets/javabeans.xml/BeanMembersShouldSerialize"/>-->
+<!--<rule ref="rulesets/javabeans.xml/MissingSerialVersionUID"/>-->
+
+<!--<rule ref="rulesets/junit.xml/JUnitStaticSuite"/>-->
+<!--<rule ref="rulesets/junit.xml/JUnitSpelling"/>-->
+<!--<rule ref="rulesets/junit.xml/JUnitAssertionsShouldIncludeMessage"/>-->
+<!--<rule ref="rulesets/junit.xml/JUnitTestsShouldIncludeAssert"/>-->
+<!--<rule ref="rulesets/junit.xml/TestClassWithoutTestCases"/>-->
+<!--<rule ref="rulesets/junit.xml/UnnecessaryBooleanAssertion"/>-->
+<!--<rule ref="rulesets/junit.xml/UseAssertEqualsInsteadOfAssertTrue"/>-->
+<!--<rule ref="rulesets/junit.xml/UseAssertSameInsteadOfAssertTrue"/>-->
+
+  <!--<rule ref="rulesets/logging-java.xml/AvoidPrintStackTrace"/>-->
+  <!--<rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>-->
+  <!--<rule ref="rulesets/logging-java.xml/MoreThanOneLogger"/>-->
+  <!--<rule ref="rulesets/logging-java.xml/LoggerIsNotStaticFinal"/>-->
+  <!--<rule ref="rulesets/logging-java.xml/LogBlockWithoutIf"/>-->
+  <!--<rule ref="rulesets/logging-java.xml/SystemPrintln"/>-->
+  <!--<rule ref="rulesets/logging-jakarta-commons.xml/UseCorrectExceptionLogging"/>-->
+  <!--<rule ref="rulesets/logging-jakarta-commons.xml/ProperLogger"/>-->
+  
+  <!--<rule ref="rulesets/naming.xml/ShortVariable"/>-->
+  <!--<rule ref="rulesets/naming.xml/LongVariable"/>-->
+  <!--<rule ref="rulesets/naming.xml/ShortMethodName"/>-->
+  <!--<rule ref="rulesets/naming.xml/VariableNamingConventions"/>-->
+  <!--<rule ref="rulesets/naming.xml/MethodNamingConventions"/>-->
+  <!--<rule ref="rulesets/naming.xml/ClassNamingConventions"/>-->
+  <!--<rule ref="rulesets/naming.xml/AbstractNaming"/>-->
+  <!--<rule ref="rulesets/naming.xml/AvoidDollarSigns"/>-->
+  <!--<rule ref="rulesets/naming.xml/MethodWithSameNameAsEnclosingClass"/>-->
+  <!--<rule ref="rulesets/naming.xml/SuspiciousHashcodeMethodName"/>-->
+  <!--<rule ref="rulesets/naming.xml/SuspiciousConstantFieldName"/>-->
+  <!--<rule ref="rulesets/naming.xml/AvoidFieldNameMatchingTypeName"/>-->
+  <!--<rule ref="rulesets/naming.xml/AvoidFieldNameMatchingMethodName"/>-->
+  <!--<rule ref="rulesets/naming.xml/AvoidNonConstructorMethodsWithClassName"/>-->
+  <!--<rule ref="rulesets/naming.xml/NoPackage"/>-->
+  <!--<rule ref="rulesets/naming.xml/PackageCase"/>-->
+
+  <!--<rule ref="rulesets/optimizations.xml/LocalVariableCouldBeFinal"/>-->
+  <!--<rule ref="rulesets/optimizations.xml/MethodArgumentCouldBeFinal"/>-->
+  <!--<rule ref="rulesets/optimizations.xml/AvoidInstantiatingObjectsInLoops"/>-->
+  <!--<rule ref="rulesets/optimizations.xml/UseArrayListInsteadOfVector"/>-->
+  <!--<rule ref="rulesets/optimizations.xml/SimplifyStartsWith"/>-->
+  <!--<rule ref="rulesets/optimizations.xml/UseStringBufferForStringAppends"/>-->
+
+  <!--<rule ref="rulesets/strictexception.xml/AvoidCatchingThrowable"/>-->
+  <!--<rule ref="rulesets/strictexception.xml/SignatureDeclareThrowsException"/>-->
+  <!--<rule ref="rulesets/strictexception.xml/ExceptionAsFlowControl"/>-->
+  <!--<rule ref="rulesets/strictexception.xml/AvoidCatchingNPE"/>-->
+  <!--<rule ref="rulesets/strictexception.xml/AvoidThrowingRawExceptionTypes"/>-->
+  <!--<rule ref="rulesets/strictexception.xml/AvoidThrowingNullPointerException"/>-->
+ 
+  <!--<rule ref="rulesets/strings.xml/AvoidDuplicateLiterals"/>-->
+  <!--<rule ref="rulesets/strings.xml/StringInstantiation"/>-->
+  <!--<rule ref="rulesets/strings.xml/StringToString"/>-->
+  <!--<rule ref="rulesets/strings.xml/AvoidConcatenatingNonLiteralsInStringBuffer"/>-->
+  <!--<rule ref="rulesets/strings.xml/UnnecessaryCaseChange"/>-->
+  
+  <!--<rule ref="rulesets/sunsecure.xml/MethodReturnsInternalArray"/>-->
+  <!--<rule ref="rulesets/sunsecure.xml/ArrayIsStoredDirectly"/>-->
+  
+  <rule ref="rulesets/unusedcode.xml/UnusedLocalVariable"/>
+  <rule ref="rulesets/unusedcode.xml/UnusedPrivateField"/>
+  <rule ref="rulesets/unusedcode.xml/UnusedPrivateMethod"/>
+  <!--<rule ref="rulesets/unusedcode.xml/UnusedFormalParameter"/>-->
+  
+</ruleset>

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml Fri Mar 16 22:56:48 2007
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * 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.    
+-->
+<project>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>kernel</artifactId>
+        <version>2.0-alpha2-incubating-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.tuscany.sca.kernel</groupId>
+    <artifactId>tuscany-databinding</artifactId>
+    <packaging>jar</packaging>
+    <name>Apache Tuscany DataBinding Framework</name>
+    <description>Apache Tuscany DataBinding Framework</description>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca.kernel</groupId>
+            <artifactId>tuscany-spi</artifactId>
+            <version>${project.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.codehaus.woodstox</groupId>
+            <artifactId>wstx-asl</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>stax</groupId>
+            <artifactId>stax-api</artifactId>
+            <version>1.0.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.2</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+</project>

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImpl.java (from r519243, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingRegistryImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImpl.java?view=diff&rev=519244&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingRegistryImpl.java&r1=519243&p2=incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImpl.java&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/databinding/impl/DataBindingRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DataBindingRegistryImpl.java Fri Mar 16 22:56:48 2007
@@ -17,21 +17,23 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
+import java.lang.annotation.Annotation;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
-import org.osoa.sca.annotations.EagerInit;
-
-import org.apache.tuscany.core.databinding.javabeans.JavaBeansDataBinding;
+import org.apache.tuscany.databinding.javabeans.JavaBeansDataBinding;
 import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.model.DataType;
+import org.osoa.sca.annotations.EagerInit;
 
 /**
  * The default implementation of a data binding registry
- *
+ * 
  * @version $Rev$ $Date$
  */
 @EagerInit
@@ -47,36 +49,65 @@
 
     public void register(DataBinding dataBinding) {
         bindings.put(dataBinding.getName().toLowerCase(), dataBinding);
+        String[] aliases = dataBinding.getAliases();
+        if (aliases != null) {
+            for (String alias : aliases) {
+                bindings.put(alias.toLowerCase(), dataBinding);
+            }
+        }
     }
 
     public DataBinding unregister(String id) {
         if (id == null) {
             return null;
         }
-        return bindings.remove(id.toLowerCase());
+        DataBinding dataBinding = bindings.remove(id.toLowerCase());
+        if (dataBinding != null) {
+            String[] aliases = dataBinding.getAliases();
+            if (aliases != null) {
+                for (String alias : aliases) {
+                    bindings.remove(alias.toLowerCase());
+                }
+            }
+        }
+        return dataBinding;
     }
 
-    public DataType introspectType(Class<?> javaType) {
-        DataType dataType = null;
-        for (DataBinding binding : bindings.values()) {
-            //don't introspect for JavaBeansDatabinding as all javatypes will anyways match to its basetype 
-            //which is java.lang.Object.  Default to this only if no databinding results
+    private Set<DataBinding> getDataBindings() {
+        return new HashSet<DataBinding>(bindings.values());
+    }
+
+    public boolean introspectType(DataType dataType, Annotation[] annotations) {
+        for (DataBinding binding : getDataBindings()) {
+            // don't introspect for JavaBeansDatabinding as all javatypes will
+            // anyways match to its basetype
+            // which is java.lang.Object. Default to this only if no databinding
+            // results
             if (!binding.getName().equals(JavaBeansDataBinding.NAME)) {
-                dataType = binding.introspect(javaType);
+                if (binding.introspect(dataType, annotations)) {
+                    return true;
+                }
             }
-            
-            if (dataType != null) {
-                return dataType;
+        }
+        // FIXME: Should we honor the databinding from operation/interface
+        // level?
+        Object physical = dataType.getPhysical();
+        if (physical instanceof Class) {
+            if (physical == Object.class || Throwable.class.isAssignableFrom((Class)physical)) {
+                return false;
             }
         }
-        return new DataType<Class>(JavaBeansDataBinding.NAME, Object.class, javaType);
+        dataType.setDataBinding(JavaBeansDataBinding.NAME);
+        return false;
     }
 
     public DataType introspectType(Object value) {
         DataType dataType = null;
-        for (DataBinding binding : bindings.values()) {
-            //don't introspect for JavaBeansDatabinding as all javatypes will anyways match to its basetype 
-            //which is java.lang.Object.  Default to this only if no databinding results
+        for (DataBinding binding : getDataBindings()) {
+            // don't introspect for JavaBeansDatabinding as all javatypes will
+            // anyways match to its basetype
+            // which is java.lang.Object. Default to this only if no databinding
+            // results
             if (!binding.getName().equals(JavaBeansDataBinding.NAME)) {
                 dataType = binding.introspect(value);
             }
@@ -84,7 +115,7 @@
                 return dataType;
             }
         }
-        return new DataType<Class>(JavaBeansDataBinding.NAME, Object.class, value.getClass());
+        return new DataType<Class>(JavaBeansDataBinding.NAME, value.getClass(), value.getClass());
     }
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DirectedGraph.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DirectedGraph.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DirectedGraph.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/DirectedGraph.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.util.Collections;
 import java.util.HashMap;

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java Fri Mar 16 22:56:48 2007
@@ -0,0 +1,97 @@
+/*
+ * 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.tuscany.databinding.impl;
+
+import org.apache.tuscany.spi.databinding.Mediator;
+import org.apache.tuscany.spi.databinding.PullTransformer;
+import org.apache.tuscany.spi.databinding.TransformationContext;
+import org.apache.tuscany.spi.databinding.Transformer;
+import org.apache.tuscany.spi.databinding.extension.TransformerExtension;
+import org.apache.tuscany.spi.model.DataType;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This is a special transformer to transform the output from one IDL to the
+ * other one
+ */
+@Service(Transformer.class)
+public class Group2GroupTransformer extends TransformerExtension<Object, Object> implements
+    PullTransformer<Object, Object> {
+
+    protected Mediator mediator;
+
+    /**
+     * @param wrapperHandler
+     */
+    public Group2GroupTransformer() {
+        super();
+    }
+
+    /**
+     * @param mediator the mediator to set
+     */
+    @Reference
+    public void setMediator(Mediator mediator) {
+        this.mediator = mediator;
+    }
+
+    @Override
+    public String getSourceDataBinding() {
+        return GroupDataBinding.NAME;
+    }
+
+    @Override
+    public String getTargetDataBinding() {
+        return GroupDataBinding.NAME;
+    }
+
+    /**
+     * @see org.apache.tuscany.spi.databinding.extension.TransformerExtension#getSourceType()
+     */
+    @Override
+    protected Class getSourceType() {
+        return Object.class;
+    }
+
+    /**
+     * @see org.apache.tuscany.spi.databinding.extension.TransformerExtension#getTargetType()
+     */
+    @Override
+    protected Class getTargetType() {
+        return Object.class;
+    }
+
+    /**
+     * @see org.apache.tuscany.spi.databinding.Transformer#getWeight()
+     */
+    public int getWeight() {
+        return 10;
+    }
+
+    @SuppressWarnings("unchecked")
+    public Object transform(Object source, TransformationContext context) {
+        DataType<DataType> sourceType = context.getSourceDataType();
+        DataType<DataType> targetType = context.getTargetDataType();
+
+        return mediator.mediate(source, sourceType.getLogical(), targetType.getLogical(), context.getMetadata());
+    }
+
+}

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/Group2GroupTransformer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java Fri Mar 16 22:56:48 2007
@@ -0,0 +1,97 @@
+/*
+ * 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.tuscany.databinding.impl;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+import org.apache.tuscany.spi.databinding.extension.DataBindingExtension;
+import org.apache.tuscany.spi.model.DataType;
+
+/**
+ * The base class for a special databinding which represents a group of other databindings
+ * 
+ * @version $Rev$ $Date$
+ */
+public abstract class GroupDataBinding extends DataBindingExtension {
+    public static final String NAME = "databinding:group";
+
+    /**
+     * Marker type is a java class or interface representing the data format. 
+     */
+    protected Class[] markerTypes;
+
+    public GroupDataBinding(Class[] types) {
+        super(NAME, null, GroupDataBinding.class);
+        this.markerTypes = types;
+    }
+
+    @SuppressWarnings("unchecked")
+    public boolean introspect(DataType type, Annotation[] annotations) {
+        if (markerTypes == null) {
+            return false;
+        }
+        Type physical = type.getPhysical();
+        if (physical instanceof ParameterizedType) {
+            physical = ((ParameterizedType)physical).getRawType();
+        }
+        if (!(physical instanceof Class)) {
+            return false;
+        }
+        Class cls = (Class)physical;
+        for (Class<?> c : markerTypes) {
+            if (isTypeOf(c, cls)) {
+                type.setDataBinding(getDataBinding(c));
+                type.setLogical(getLogical(cls, annotations));
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    /**
+     * Test if the given type is a subtype of the base type
+     * @param markerType
+     * @param type
+     * @return
+     */
+    protected boolean isTypeOf(Class<?> markerType, Class<?> type) {
+        return markerType.isAssignableFrom(type);
+    }
+    
+    /**
+     * Derive the databinding name from a base class
+     * @param baseType
+     * @return
+     */
+    protected String getDataBinding(Class<?> baseType) {
+        return baseType.getName();
+    }
+    
+    /**
+     * Get the logical type
+     * @param type The java type
+     * @param annotations
+     * @return
+     */
+    protected abstract Object getLogical(Class<?> type, Annotation[] annotations);
+
+}

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/GroupDataBinding.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/MediatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/MediatorImpl.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/MediatorImpl.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/MediatorImpl.java Fri Mar 16 22:56:48 2007
@@ -16,14 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.util.List;
 import java.util.Map;
 
 import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Scope;
-
 import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.databinding.DataPipe;
 import org.apache.tuscany.spi.databinding.Mediator;
@@ -34,6 +32,7 @@
 import org.apache.tuscany.spi.databinding.Transformer;
 import org.apache.tuscany.spi.databinding.TransformerRegistry;
 import org.apache.tuscany.spi.model.DataType;
+import org.osoa.sca.annotations.Scope;
 
 /**
  * Default Mediator implementation
@@ -59,8 +58,9 @@
     }
 
     /**
-     * @see org.apache.tuscany.spi.databinding.Mediator#mediate(java.lang.Object,org.apache.tuscany.spi.model.DataType,
-     *org.apache.tuscany.spi.model.DataType,Map)
+     * @see org.apache.tuscany.spi.databinding.Mediator#mediate(java.lang.Object,
+     *      org.apache.tuscany.spi.model.DataType,
+     *      org.apache.tuscany.spi.model.DataType, Map)
      */
     @SuppressWarnings("unchecked")
     public Object mediate(Object source,
@@ -88,10 +88,10 @@
             // the source and target type
             if (transformer instanceof PullTransformer) {
                 // For intermediate node, set data type to null
-                result = ((PullTransformer) transformer).transform(result, context);
+                result = ((PullTransformer)transformer).transform(result, context);
             } else if (transformer instanceof PushTransformer) {
-                DataPipe dataPipe = (i < size - 1) ? (DataPipe) path.get(++i) : null;
-                ((PushTransformer) transformer).transform(result, dataPipe.getSink(), context);
+                DataPipe dataPipe = (i < size - 1) ? (DataPipe)path.get(++i) : null;
+                ((PushTransformer)transformer).transform(result, dataPipe.getSink(), context);
                 result = dataPipe.getResult();
             }
             i++;
@@ -108,10 +108,10 @@
                                                               Map<Class<?>, Object> metadata) {
         DataType sourceType =
             (index == 0) ? sourceDataType : new DataType<Object>(transformer.getSourceDataBinding(),
-                Object.class, null);
+                                                                 Object.class, null);
         DataType targetType =
             (index == size - 1) ? targetDataType : new DataType<Object>(transformer.getTargetDataBinding(),
-                Object.class, null);
+                                                                        Object.class, null);
         ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
         TransformationContext context =
             new TransformationContextImpl(sourceType, targetType, classLoader, metadata);
@@ -146,11 +146,11 @@
                 createTransformationContext(sourceDataType, targetDataType, size, i, transformer, metadata);
 
             if (transformer instanceof PullTransformer) {
-                result = ((PullTransformer) transformer).transform(result, context);
+                result = ((PullTransformer)transformer).transform(result, context);
             } else if (transformer instanceof PushTransformer) {
-                DataPipe dataPipe = (i < size - 1) ? (DataPipe) path.get(++i) : null;
+                DataPipe dataPipe = (i < size - 1) ? (DataPipe)path.get(++i) : null;
                 Object sink = dataPipe != null ? dataPipe.getSink() : target;
-                ((PushTransformer) transformer).transform(result, sink, context);
+                ((PushTransformer)transformer).transform(result, sink, context);
                 result = (dataPipe != null) ? dataPipe.getResult() : null;
             }
         }
@@ -161,8 +161,25 @@
         String targetId = targetDataType.getDataBinding();
         List<Transformer> path = transformerRegistry.getTransformerChain(sourceId, targetId);
         if (path == null) {
-            throw new TransformationException("No path found for the transformation");
+            TransformationException ex = new TransformationException("No path found for the transformation");
+            ex.setSourceDataBinding(sourceId);
+            ex.setTargetDataBinding(targetId);
+            throw ex;
         }
         return path;
+    }
+
+    /**
+     * @return the dataBindingRegistry
+     */
+    public DataBindingRegistry getDataBindingRegistry() {
+        return dataBindingRegistry;
+    }
+
+    /**
+     * @return the transformerRegistry
+     */
+    public TransformerRegistry getTransformerRegistry() {
+        return transformerRegistry;
     }
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PipedTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PipedTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PipedTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/PipedTransformer.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import org.apache.tuscany.spi.databinding.DataPipe;
 import org.apache.tuscany.spi.databinding.PullTransformer;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformationContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformationContextImpl.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformationContextImpl.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformationContextImpl.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.lang.ref.WeakReference;
 import java.util.HashMap;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformerRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformerRegistryImpl.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformerRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/impl/TransformerRegistryImpl.java Fri Mar 16 22:56:48 2007
@@ -16,13 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.impl;
+package org.apache.tuscany.databinding.impl;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import org.osoa.sca.annotations.EagerInit;
 
+import org.osoa.sca.annotations.Reference;
+import org.apache.tuscany.spi.databinding.DataBinding;
+import org.apache.tuscany.spi.databinding.DataBindingRegistry;
 import org.apache.tuscany.spi.databinding.Transformer;
 import org.apache.tuscany.spi.databinding.TransformerRegistry;
 
@@ -31,7 +34,8 @@
  */
 @EagerInit
 public class TransformerRegistryImpl implements TransformerRegistry {
-
+    private DataBindingRegistry dataBindingRegistry;
+    
     private final DirectedGraph<Object, Transformer> graph = new DirectedGraph<Object, Transformer>();
 
     public void registerTransformer(String sourceType, String resultType, int weight, Transformer transformer) {
@@ -55,8 +59,10 @@
     }
 
     public List<Transformer> getTransformerChain(String sourceType, String resultType) {
+        String source = normalize(sourceType);
+        String result = normalize(resultType);
         List<Transformer> transformers = new ArrayList<Transformer>();
-        DirectedGraph<Object, Transformer>.Path path = graph.getShortestPath(sourceType, resultType);
+        DirectedGraph<Object, Transformer>.Path path = graph.getShortestPath(source, result);
         if (path == null) {
             return null;
         }
@@ -68,6 +74,28 @@
 
     public String toString() {
         return graph.toString();
+    }
+
+    /**
+     * @param dataBindingRegistry the dataBindingRegistry to set
+     */
+    @Reference
+    public void setDataBindingRegistry(DataBindingRegistry dataBindingRegistry) {
+        this.dataBindingRegistry = dataBindingRegistry;
+    }
+    
+    /**
+     * Normalize the id to a name of a data binding as databindings may have aliases
+     * @param id
+     * @return
+     */
+    private String normalize(String id) {
+        if (dataBindingRegistry != null) {
+            DataBinding dataBinding = dataBindingRegistry.getDataBinding(id);
+            return dataBinding == null ? id : dataBinding.getName();
+        } else {
+            return id;
+        }
     }
 
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/DOMNode2JavaBeanTransformer.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -32,7 +32,17 @@
  */
 @Service(Transformer.class)
 public class DOMNode2JavaBeanTransformer extends XML2JavaBeanTransformer<Node> {
-    
+
+    @Override
+    public Node getRootElement(Node element) throws XML2JavaMapperException {
+        if (element instanceof Document) {
+            return ((Document)element).getDocumentElement();
+        } else {
+            return element;
+        }
+
+    }
+
     @Override
     public List<Node> getChildElements(Node parent) throws XML2JavaMapperException {
         NodeList nodeList = parent.getChildNodes();
@@ -46,13 +56,13 @@
 
     @Override
     public String getElementName(Node element) throws XML2JavaMapperException {
-        return element.getNodeName();
+        return element.getLocalName();
     }
 
     @Override
     public String getText(Node element) throws XML2JavaMapperException {
         if (element instanceof Document) {
-            element = ((Document) element).getDocumentElement();
+            element = ((Document)element).getDocumentElement();
         }
         return element.getTextContent();
     }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/Java2XMLMapperException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/Java2XMLMapperException.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/Java2XMLMapperException.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/Java2XMLMapperException.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,7 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import javax.xml.namespace.QName;
 

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2DOMNodeTransformer.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import javax.xml.namespace.QName;
 import javax.xml.parsers.ParserConfigurationException;

Added: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java?view=auto&rev=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java (added)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java Fri Mar 16 22:56:48 2007
@@ -0,0 +1,56 @@
+/*
+ * 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.tuscany.databinding.javabeans;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.databinding.xml.BeanUtil;
+import org.apache.tuscany.databinding.xml.XMLDocumentStreamReader;
+import org.apache.tuscany.spi.databinding.PullTransformer;
+import org.apache.tuscany.spi.databinding.TransformationContext;
+import org.apache.tuscany.spi.databinding.TransformationException;
+import org.apache.tuscany.spi.databinding.Transformer;
+import org.apache.tuscany.spi.databinding.extension.TransformerExtension;
+import org.osoa.sca.annotations.Service;
+
+@Service(Transformer.class)
+public class JavaBean2XMLStreamReader extends TransformerExtension<Object, XMLStreamReader> implements
+    PullTransformer<Object, XMLStreamReader> {
+
+    public XMLStreamReader transform(Object source, TransformationContext context) {
+        try {
+            return new XMLDocumentStreamReader(BeanUtil.getXMLStreamReader(source));
+        } catch (Exception e) {
+            throw new TransformationException(e);
+        }
+    }
+
+    public Class getSourceType() {
+        return Object.class;
+    }
+
+    public Class getTargetType() {
+        return XMLStreamReader.class;
+    }
+
+    public int getWeight() {
+        return 50;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLStreamReader.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBean2XMLTransformer.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
@@ -214,6 +214,11 @@
     public String getNexPrefix() {
         return PREFIX + prefixCount++;
     }
+    
+    @Override
+    public int getWeight() {
+        return JavaBeansDataBinding.HEAVY_WEIGHT;
+    }    
     
     public abstract T createElement(QName qName) throws Java2XMLMapperException;
     public abstract T createText(String textData) throws Java2XMLMapperException;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/JavaBeansDataBinding.java Fri Mar 16 22:56:48 2007
@@ -17,7 +17,17 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.ObjectStreamClass;
+import java.io.OutputStream;
+import java.io.Serializable;
 
 import org.apache.tuscany.spi.databinding.DataBinding;
 import org.apache.tuscany.spi.databinding.extension.DataBindingExtension;
@@ -28,10 +38,70 @@
  */
 @Service(DataBinding.class)
 public class JavaBeansDataBinding extends DataBindingExtension {
-    
+    /**
+     * Defining a weight to a very high number so that the transformer won't be picked
+     * up by other paths unless it's the only available path
+     */
+    public static final int HEAVY_WEIGHT = 10000;
     public static final String NAME = Object.class.getName();
 
     public JavaBeansDataBinding() {
-        super(Object.class);
+        super(NAME, Object.class);
+    }
+    
+    public Object copy(Object arg) {
+        if (arg == null) {
+            return null;
+        }
+        final Class clazz = arg.getClass();
+        if (String.class == clazz || clazz.isPrimitive()
+            || Number.class.isAssignableFrom(clazz)
+            || Boolean.class.isAssignableFrom(clazz)
+            || Character.class.isAssignableFrom(clazz)
+            || Byte.class.isAssignableFrom(clazz)) {
+            // Immutable classes
+            return arg;
+        }
+        try {
+            if (arg instanceof Serializable) {
+                ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                ObjectOutputStream oos = getObjectOutputStream(bos);
+                oos.writeObject(arg);
+                oos.close();
+                bos.close();
+
+                ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+                ObjectInputStream ois = getObjectInputStream(bis, clazz.getClassLoader());
+                Object objectCopy = ois.readObject();
+                ois.close();
+                bis.close();
+                return objectCopy;
+            } else {
+                // return arg;
+                throw new IllegalArgumentException("Pass-by-value is not supported for the given object");
+            }
+        } catch (Exception e) {
+            throw new IllegalArgumentException("Pass-by-value is not supported for the given object", e);
+        }
     }
+
+    protected ObjectOutputStream getObjectOutputStream(OutputStream os) throws IOException {
+        return new ObjectOutputStream(os);
+    }
+
+    protected ObjectInputStream getObjectInputStream(InputStream is, final ClassLoader cl) throws IOException {
+        ObjectInputStream ois = new ObjectInputStream(is) {
+            @Override
+            protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException {
+                try {
+                    return Class.forName(desc.getName(), false, cl);
+                } catch (ClassNotFoundException e) {
+                    return super.resolveClass(desc);
+                }
+            }
+
+        };
+        return ois;
+    }
+    
 }

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaBeanTransformer.java Fri Mar 16 22:56:48 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
@@ -27,14 +27,14 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.xml.namespace.QName;
+
 import org.apache.tuscany.spi.databinding.PullTransformer;
 import org.apache.tuscany.spi.databinding.TransformationContext;
 import org.apache.tuscany.spi.databinding.Transformer;
 import org.apache.tuscany.spi.databinding.extension.SimpleTypeMapperExtension;
 import org.apache.tuscany.spi.databinding.extension.TransformerExtension;
-import org.apache.tuscany.spi.model.ElementInfo;
-import org.apache.tuscany.spi.model.TypeInfo;
-
+import org.apache.tuscany.spi.model.XMLType;
 import org.osoa.sca.annotations.Service;
 
 /**
@@ -52,24 +52,21 @@
         this.mapper = new SimpleTypeMapperExtension();
     }
 
+    @Override
+    public int getWeight() {
+        return JavaBeansDataBinding.HEAVY_WEIGHT;
+    }
+    
     public Object transform(T source, TransformationContext context) {
-        TypeInfo xmlType =
-                (TypeInfo) context.getSourceDataType().getMetadata(TypeInfo.class.getName());
-        if (xmlType == null) {
-            ElementInfo element =
-                    (ElementInfo) context.getSourceDataType()
-                                         .getMetadata(ElementInfo.class.getName());
-            xmlType = (TypeInfo) element.getType();
-        }
-
-        return toJavaObject(xmlType, source, context);
+        XMLType xmlType = (XMLType) context.getSourceDataType().getLogical();
+        return toJavaObject(xmlType.getTypeName(), getRootElement(source), context);
     }
 
-    public Object toJavaObject(TypeInfo xmlType, T xmlElement, TransformationContext context) {
-        if (xmlType.isSimpleType()) {
+    public Object toJavaObject(QName xmlType, T xmlElement, TransformationContext context) {
+        if (SimpleTypeMapperExtension.isSimpleXSDType(xmlType)) {
             return mapper.toJavaObject(xmlType, getText(xmlElement), context);
         } else {
-            Class<?> javaType = (Class<?>) context.getTargetDataType().getLogical();
+            Class<?> javaType = (Class<?>)context.getTargetDataType().getPhysical();
             return createJavaObject(xmlElement, javaType, context);
         }
     }
@@ -79,7 +76,7 @@
         throws XML2JavaMapperException {
         List<T> childElements = getChildElements(element);
         if (childElements.size() == 1 && isTextElement(childElements.get(0))) {
-            return (L) mapper.toJavaObject(mapper.getXMLType(javaType),
+            return (L) mapper.toJavaObject(mapper.getXMLType(javaType).getQName(),
                                                  getText(childElements.get(0)),
                                                  context);
         } else {
@@ -292,6 +289,8 @@
     public abstract String getElementName(T element) throws XML2JavaMapperException;
 
     public abstract boolean isTextElement(T element) throws XML2JavaMapperException;
+    
+    public abstract T getRootElement(T element) throws XML2JavaMapperException;
 
     public Class getTargetType() {
         return Object.class;

Modified: incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaMapperException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaMapperException.java?view=diff&rev=519244&r1=519083&r2=519244
==============================================================================
--- incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaMapperException.java (original)
+++ incubator/tuscany/java/sca/services/databinding/databinding-framework/src/main/java/org/apache/tuscany/databinding/javabeans/XML2JavaMapperException.java Fri Mar 16 22:56:48 2007
@@ -17,20 +17,19 @@
  * under the License.    
  */
 
-package org.apache.tuscany.core.databinding.javabeans;
+package org.apache.tuscany.databinding.javabeans;
 
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.api.TuscanyRuntimeException;
 
 /**
- * This exception is used to encapsulate and rethrow exceptions that arise out of converting XML Data to Java Objects.
- *
- * @version $Rev$ $Date$
+ * This exception is used to encapsulate and rethrow exceptions that arise out
+ * of converting XML Data to Java Objects.
  */
 public class XML2JavaMapperException extends TuscanyRuntimeException {
     private static final long serialVersionUID = 6596530102591630642L;
-
+    
     private QName xmlElementName;
     private String javaFieldName;
     private Class javaType;
@@ -66,5 +65,12 @@
     public void setJavaType(Class javaType) {
         this.javaType = javaType;
     }
+
+    @Override
+    public String getMessage() {
+        return super.getMessage() + " <" + getJavaFieldName() + "> " + " in <" + getJavaType() + ">";
+    }
+    
+    
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org