Author: antelder
Date: Mon Jun  2 05:40:15 2008
New Revision: 662415

URL: http://svn.apache.org/viewvc?rev=662415&view=rev
Log:
TUSCANY-2357: some files left out from previous commit (r662395)

Added:
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaRequest.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaResponse.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/NodeType.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTree.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeCreator.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeNode.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ArrayTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/BooleanTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ByteTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/CharTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/DoubleTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/FloatTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/IntTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/LongTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ReferenceTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/SequenceTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ShortTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StringTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StructTypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelper.java
    
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelpersProxy.java

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaRequest.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaRequest.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaRequest.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaRequest.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,77 @@
+package org.apache.tuscany.sca.binding.corba.impl.reference;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTree;
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeCreator;
+import org.apache.tuscany.sca.binding.corba.types.util.TypeHelpersProxy;
+import org.omg.CORBA.Object;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.ObjectImpl;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * Represents single CORBA request
+ */
+public class DynaCorbaRequest {
+
+       private TypeTree returnTree;
+       private List<TypeTree> arguments = new ArrayList<TypeTree>();
+       private OutputStream outputStream;
+       private ObjectImpl remoteObject;
+
+       /**
+        * Creates request.
+        * 
+        * @param remoteObject
+        *            remote object reference
+        * @param operation
+        *            operation to invoke
+        */
+       public DynaCorbaRequest(Object remoteObject, String operation) {
+               outputStream = ((ObjectImpl) remoteObject)._request(operation, 
true);
+               this.remoteObject = (ObjectImpl) remoteObject;
+
+       }
+
+       /**
+        * Adds operation argument
+        * 
+        * @param argument
+        */
+       public void addArgument(java.lang.Object argument) {
+               TypeTree tree = 
TypeTreeCreator.createTypeTree(argument.getClass());
+               TypeHelpersProxy.write(tree.getRootNode(), outputStream, 
argument);
+       }
+
+       /**
+        * Sets return type for operation
+        * 
+        * @param forClass
+        */
+       public void setOutputType(Class<?> forClass) {
+               returnTree = TypeTreeCreator.createTypeTree(forClass);
+       }
+
+       /**
+        * Invokes previously configured request
+        * 
+        * @return
+        */
+       public DynaCorbaResponse invoke() {
+               DynaCorbaResponse response = new DynaCorbaResponse();
+               try {
+                       InputStream is = remoteObject._invoke(outputStream);
+                       if (is != null) {
+                               
response.setContent(TypeHelpersProxy.read(returnTree
+                                               .getRootNode(), is));
+                       }
+               } catch (Exception e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               return response;
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaResponse.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaResponse.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaResponse.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/impl/reference/DynaCorbaResponse.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,19 @@
+package org.apache.tuscany.sca.binding.corba.impl.reference;
+
+/**
+ * Holder for content returned from DynaCorbaRequest
+ *
+ */
+public class DynaCorbaResponse {
+
+       private Object content;
+
+       public Object getContent() {
+               return content;
+       }
+
+       public void setContent(Object content) {
+               this.content = content;
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/NodeType.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/NodeType.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/NodeType.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/NodeType.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,8 @@
+package org.apache.tuscany.sca.binding.corba.types;
+
+/**
+ * Types of CORBA objects.
+ */
+public enum NodeType {
+       primitive, struct, union, array, sequence, reference
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTree.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTree.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTree.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTree.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,56 @@
+package org.apache.tuscany.sca.binding.corba.types;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Helper tree for Java object hierarchy. It's closer to CORBA types structure
+ * than plain Java hierarchy - it helps reading and writing complex structures.
+ */
+public class TypeTree {
+
+       private Map<Class<?>, TypeTreeNode> typesUsed = new HashMap<Class<?>, 
TypeTreeNode>();
+       private TypeTreeNode rootNode;
+
+       /**
+        * Intent was to cache previously computed type trees. In practice it 
caused
+        * a bug, and it's not being used right now. TODO: enable type trees 
caching
+        * 
+        * @param forClass
+        * @param node
+        */
+       public void addUsedType(Class<?> forClass, TypeTreeNode node) {
+               typesUsed.put(forClass, node);
+       }
+
+       /**
+        * Returns node for previously created tree, it's getter for nodes 
added by
+        * addUsedType method. Not in use right now. TODO: enable type trees 
caching
+        * 
+        * @param forClass
+        * @return
+        */
+       public TypeTreeNode getNodeForType(Class<?> forClass) {
+               return typesUsed.get(forClass);
+       }
+
+       /**
+        * Returns root node.
+        * 
+        * @return root of type tree
+        */
+       public TypeTreeNode getRootNode() {
+               return rootNode;
+       }
+
+       /**
+        * Sets root of the type tree.
+        * 
+        * @param rootNode
+        *            root node.
+        */
+       public void setRootNode(TypeTreeNode rootNode) {
+               this.rootNode = rootNode;
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeCreator.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeCreator.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeCreator.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeCreator.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,200 @@
+package org.apache.tuscany.sca.binding.corba.types;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Creator of types tree.
+ * 
+ */
+public class TypeTreeCreator {
+
+       /**
+        * Helps to determine if type is a primitive.
+        */
+       private static List<Class<?>> primitives = new ArrayList<Class<?>>();
+
+       static {
+               primitives.add(boolean.class);
+               primitives.add(byte.class);
+               primitives.add(short.class);
+               primitives.add(int.class);
+               primitives.add(long.class);
+               primitives.add(double.class);
+               primitives.add(float.class);
+               primitives.add(char.class);
+               primitives.add(String.class);
+               primitives.add(Boolean.class);
+               primitives.add(Byte.class);
+               primitives.add(Short.class);
+               primitives.add(Integer.class);
+               primitives.add(Long.class);
+               primitives.add(Double.class);
+               primitives.add(Float.class);
+               primitives.add(Character.class);
+       }
+
+       /**
+        * Creates class for given string argument.
+        * 
+        * @param name
+        *            name of type
+        * @return type
+        */
+       private static Class<?> createClassFromString(String name) {
+               Class<?> result = null;
+               try {
+                       if (name.length() == 1) {
+                               // primitives
+                               switch (name.charAt(0)) {
+                               case 'Z':
+                                       result = boolean.class;
+                                       break;
+                               case 'C':
+                                       result = char.class;
+                                       break;
+                               case 'B':
+                                       result = byte.class;
+                                       break;
+                               case 'S':
+                                       result = short.class;
+                                       break;
+                               case 'I':
+                                       result = int.class;
+                                       break;
+                               case 'J':
+                                       result = long.class;
+                                       break;
+                               case 'F':
+                                       result = float.class;
+                                       break;
+                               case 'D':
+                                       result = double.class;
+                                       break;
+                               }
+                       } else {
+                               // class
+                               name = name.substring(1, name.length() - 1);
+                               result = Class.forName(name);
+                       }
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+               return result;
+       }
+
+       /**
+        * Reduces dimension of array.
+        * 
+        * @param forClass
+        *            array class
+        * @return reduced array
+        */
+       private static Class<?> reduceArrayDimension(Class<?> forClass) {
+               String name = forClass.getName();
+               try {
+                       String reduced = name.substring(1, name.length());
+                       if (reduced.startsWith("[")) {
+                               // reduced class is still an array
+                               return Class.forName(reduced);
+                       } else {
+                               // reduced class may be primitive or class
+                               return createClassFromString(reduced);
+                       }
+               } catch (ClassNotFoundException e) {
+                       e.printStackTrace();
+               }
+               return null;
+       }
+
+       /**
+        * Creates tree for given type.
+        * 
+        * @param forClass
+        * @return type tree
+        */
+       public static TypeTree createTypeTree(Class<?> forClass) {
+               TypeTree tree = new TypeTree();
+               TypeTreeNode rootNode = null;
+               rootNode = inspectClassHierarchy(forClass, tree);
+               tree.setRootNode(rootNode);
+               return tree;
+
+       }
+
+       /**
+        * Recurrent method which builds type tree.
+        * 
+        * @param forClass
+        * @param tree
+        * @return
+        */
+       private static TypeTreeNode inspectClassHierarchy(Class<?> forClass,
+                       TypeTree tree) {
+               // //remains of type tree caching
+               // TypeTreeNode existingNode = tree.getNodeForType(forClass);
+               // if (existingNode != null) {
+               // return existingNode;
+               // }
+
+               TypeTreeNode node = createTypeNode(forClass);
+               NodeType nodeType = node.getNodeType();
+               TypeTreeNode[] children = null;
+
+               // //remains of type tree caching
+               // tree.addUsedType(forClass, node);
+
+               if (nodeType.equals(NodeType.primitive)) {
+                       // stop condition for recurrent method
+               } else if (nodeType.equals(NodeType.array)) {
+                       // similar to sequence, but with fixed array length
+                       // TODO: determine how array length will be declared
+               } else if (nodeType.equals(NodeType.sequence)) {
+                       // reducing sequence dimension
+                       Class<?> reduced = 
reduceArrayDimension(node.getJavaClass());
+                       children = new TypeTreeNode[1];
+                       children[0] = inspectClassHierarchy(reduced, tree);
+               } else if (nodeType.equals(NodeType.struct)) {
+                       // inspect types for every structure member
+                       Field[] fields = node.getJavaClass().getFields();
+                       children = new TypeTreeNode[fields.length];
+                       for (int i = 0; i < fields.length; i++) {
+                               Class<?> field = fields[i].getType();
+                               TypeTreeNode child = 
inspectClassHierarchy(field, tree);
+                               child.setName(fields[i].getName());
+                               children[i] = child;
+                       }
+               } else if (nodeType.equals(NodeType.union)) {
+                       // TODO: unions
+               } else if (nodeType.equals(NodeType.reference)) {
+                       // TODO: CORBA references
+               }
+
+               node.setChildren(children);
+               return node;
+       }
+
+       /**
+        * Creating and configuring TypeTreeNode for given class.
+        * 
+        * @param forClass
+        *            class
+        * @return node
+        */
+       private static TypeTreeNode createTypeNode(Class<?> forClass) {
+               TypeTreeNode node = new TypeTreeNode();
+               if (forClass.isArray()) {
+                       node.setNodeType(NodeType.sequence);
+                       node.setJavaClass(forClass);
+               } else if (primitives.contains(forClass)) {
+                       node.setNodeType(NodeType.primitive);
+                       node.setJavaClass(forClass);
+                       node.setChildren(null);
+               } else {
+                       node.setNodeType(NodeType.struct);
+                       node.setJavaClass(forClass);
+               }
+               return node;
+       }
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeNode.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeNode.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeNode.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/TypeTreeNode.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,46 @@
+package org.apache.tuscany.sca.binding.corba.types;
+
+/**
+ * Represents single tree node.
+ * 
+ */
+public class TypeTreeNode {
+
+       private NodeType nodeType;
+       private TypeTreeNode[] children;
+       private Class<?> javaClass;
+       private String name;
+
+       public String getName() {
+               return name;
+       }
+
+       public void setName(String name) {
+               this.name = name;
+       }
+
+       public NodeType getNodeType() {
+               return nodeType;
+       }
+
+       public void setNodeType(NodeType nodeType) {
+               this.nodeType = nodeType;
+       }
+
+       public TypeTreeNode[] getChildren() {
+               return children;
+       }
+
+       public void setChildren(TypeTreeNode[] children) {
+               this.children = children;
+       }
+
+       public Class<?> getJavaClass() {
+               return javaClass;
+       }
+
+       public void setJavaClass(Class<?> javaClass) {
+               this.javaClass = javaClass;
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ArrayTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ArrayTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ArrayTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ArrayTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,25 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class ArrayTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               // TODO Auto-generated method stub
+
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/BooleanTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/BooleanTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/BooleanTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/BooleanTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class BooleanTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(8));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_boolean();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_boolean((Boolean) data);
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ByteTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ByteTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ByteTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ByteTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class ByteTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(10));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_octet();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_octet((Byte) data);
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/CharTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/CharTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/CharTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/CharTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class CharTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(9));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_char();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_char((Character) data);
+       }
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/DoubleTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/DoubleTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/DoubleTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/DoubleTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class DoubleTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(7));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_double();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_double((Double) data);
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/FloatTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/FloatTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/FloatTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/FloatTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class FloatTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(6));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_float();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_float((Float) data);
+       }
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/IntTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/IntTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/IntTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/IntTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,23 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class IntTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(3));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_long();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_long((Integer) data);
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/LongTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/LongTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/LongTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/LongTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,24 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class LongTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(23));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_longlong();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_longlong((Long) data);
+       }
+       
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ReferenceTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ReferenceTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ReferenceTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ReferenceTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,24 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.Object;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class ReferenceTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               // TODO Auto-generated method stub
+               return null;
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_Object();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, java.lang.Object 
data) {
+               os.write_Object((Object) data);
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/SequenceTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/SequenceTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/SequenceTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/SequenceTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,61 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class SequenceTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               TypeCode typeCode = 
+                       org.omg.CORBA.ORB.init().create_alias_tc(
+                               node.getJavaClass().getSimpleName(),
+                               node.getJavaClass().getSimpleName(),
+                               org.omg.CORBA.ORB.init().create_sequence_tc(0,
+                                               
TypeHelpersProxy.getType(node.getChildren()[0])));
+               return typeCode;
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               Object sequence = null;
+               try {
+                       int size = is.read_long();
+                       sequence = 
Array.newInstance(node.getChildren()[0].getJavaClass(),
+                                       size);
+                       for (int i = 0; i < size; i++) {
+                               Array.set(sequence, i, TypeHelpersProxy.read(
+                                               node.getChildren()[0], is));
+                       }
+               } catch (Exception e) {
+                       e.printStackTrace();
+               }
+               return sequence;
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               int sum = 0;
+               // determine length of array
+               List<Object> array = new ArrayList<Object>();
+               while (true) {
+                       try {
+                               array.add(Array.get(data, sum));
+                               sum++;
+                       } catch (ArrayIndexOutOfBoundsException e) {
+                               break;
+                       }
+               }
+               os.write_long(sum);
+               Iterator<Object> iter = array.iterator();
+               while (iter.hasNext()) {
+                       Object elem = iter.next();
+                       TypeHelpersProxy.write(node.getChildren()[0], os, elem);
+               }
+
+       }
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ShortTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ShortTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ShortTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/ShortTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,24 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class ShortTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return 
ORB.init().get_primitive_tc(org.omg.CORBA.TCKind.from_int(2));
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_short();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_short((Short) data);
+       }
+
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StringTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StringTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StringTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StringTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,24 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.ORB;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class StringTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               return ORB.init().create_string_tc(0);
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               return is.read_string();
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               os.write_string((String) data);
+       }
+
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StructTypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StructTypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StructTypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/StructTypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,68 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import java.lang.reflect.Field;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.StructMember;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public class StructTypeHelper implements TypeHelper {
+
+       public TypeCode getType(TypeTreeNode node) {
+               TypeTreeNode[] children = node.getChildren();
+               if (children != null) {
+                       StructMember[] members = new 
StructMember[children.length];
+                       for (int i = 0; i < children.length; i++) {
+                               members[i] = new 
StructMember(children[i].getJavaClass()
+                                               .getSimpleName(),
+                                               
TypeHelpersProxy.getType(children[i]), null);
+                       }
+                       TypeCode result = 
org.omg.CORBA.ORB.init().create_struct_tc(
+                                       node.getJavaClass().getSimpleName(),
+                                       node.getJavaClass().getSimpleName(), 
members);
+                       return result;
+               } else {
+                       return null;
+               }
+       }
+
+       public Object read(TypeTreeNode node, InputStream is) {
+               TypeTreeNode[] children = node.getChildren();
+               Object result = null;
+               if (children != null) {
+                       try {
+                               result = node.getJavaClass().newInstance();
+                               for (int i = 0; i < children.length; i++) {
+                                       Object childResult = 
TypeHelpersProxy.read(children[i], is);
+                                       Field childField = 
result.getClass().getField(
+                                                       children[i].getName());
+                                       childField.set(result, childResult);
+                               }
+                       } catch (Exception e) {
+                               // TODO: handle exception
+                               e.printStackTrace();
+                       }
+               }
+               return result;
+       }
+
+       public void write(TypeTreeNode node, OutputStream os, Object data) {
+               TypeTreeNode[] children = node.getChildren();
+               if (children != null) {
+                       try {
+                               for (int i = 0; i < children.length; i++) {
+                                       Field childField = 
node.getJavaClass().getField(
+                                                       children[i].getName());
+                                       TypeHelpersProxy.write(children[i], os, 
childField
+                                                       .get(data));
+                               }
+                       } catch (Exception e) {
+                               // TODO: handle exception
+                               e.printStackTrace();
+                       }
+               }
+       }
+
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelper.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelper.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelper.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,33 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+public interface TypeHelper {
+       
+       /**
+        * Gets type definition for CORBA API.
+        * @param node 
+        * @return
+        */
+       TypeCode getType(TypeTreeNode node);
+       
+       /**
+        * Reads CORBA object
+        * @param node
+        * @param is
+        * @return
+        */
+       Object read(TypeTreeNode node, InputStream is);
+       
+       /**
+        * Writes CORBA object
+        * @param node
+        * @param os
+        * @param data
+        */
+       void write(TypeTreeNode node, OutputStream os, Object data);
+       
+}

Added: 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelpersProxy.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelpersProxy.java?rev=662415&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelpersProxy.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/binding-corba/src/main/java/org/apache/tuscany/sca/binding/corba/types/util/TypeHelpersProxy.java
 Mon Jun  2 05:40:15 2008
@@ -0,0 +1,113 @@
+package org.apache.tuscany.sca.binding.corba.types.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.binding.corba.types.NodeType;
+import org.apache.tuscany.sca.binding.corba.types.TypeTreeNode;
+import org.omg.CORBA.TypeCode;
+import org.omg.CORBA.portable.InputStream;
+import org.omg.CORBA.portable.OutputStream;
+
+/**
+ * Proxies getType(), write(), read() methods to appropriate TypeHelper 
implementation.
+ * 
+ */
+public class TypeHelpersProxy {
+
+       /**
+        * Maps primitive types to its TypeHelper implementations
+        */
+       private static Map<Class<?>, TypeHelper> primitiveTypes = null;
+
+       /**
+        * Maps other types to its TypeHelper implementations
+        */
+       private static Map<NodeType, TypeHelper> complexTypes = null;
+
+       static {
+               // initiate type helpers
+               primitiveTypes = new HashMap<Class<?>, TypeHelper>();
+               complexTypes = new HashMap<NodeType, TypeHelper>();
+
+               primitiveTypes.put(boolean.class, new BooleanTypeHelper());
+               primitiveTypes.put(char.class, new CharTypeHelper());
+               primitiveTypes.put(byte.class, new ByteTypeHelper());
+               primitiveTypes.put(short.class, new ShortTypeHelper());
+               primitiveTypes.put(int.class, new IntTypeHelper());
+               primitiveTypes.put(long.class, new LongTypeHelper());
+               primitiveTypes.put(float.class, new FloatTypeHelper());
+               primitiveTypes.put(double.class, new DoubleTypeHelper());
+               primitiveTypes.put(String.class, new StringTypeHelper());
+               primitiveTypes.put(Boolean.class, 
primitiveTypes.get(boolean.class));
+               primitiveTypes.put(Character.class, 
primitiveTypes.get(char.class));
+               primitiveTypes.put(Byte.class, primitiveTypes.get(byte.class));
+               primitiveTypes.put(Short.class, 
primitiveTypes.get(short.class));
+               primitiveTypes.put(Integer.class, 
primitiveTypes.get(int.class));
+               primitiveTypes.put(Long.class, primitiveTypes.get(long.class));
+               primitiveTypes.put(Float.class, 
primitiveTypes.get(float.class));
+               primitiveTypes.put(Double.class, 
primitiveTypes.get(double.class));
+               primitiveTypes.put(String.class, 
primitiveTypes.get(String.class));
+               complexTypes.put(NodeType.array, new ArrayTypeHelper());
+               complexTypes.put(NodeType.struct, new StructTypeHelper());
+               complexTypes.put(NodeType.reference, new ReferenceTypeHelper());
+               complexTypes.put(NodeType.sequence, new SequenceTypeHelper());
+       }
+
+       /**
+        * Gets type helper basing on given type
+        * 
+        * @param node
+        * @return
+        */
+       private static TypeHelper getTypeHelper(TypeTreeNode node) {
+               TypeHelper typeHelper = null;
+               NodeType type = node.getNodeType();
+               if (type.equals(NodeType.primitive)) {
+                       typeHelper = primitiveTypes.get(node.getJavaClass());
+               } else {
+                       typeHelper = complexTypes.get(type);
+               }
+               return typeHelper;
+       }
+
+       /**
+        * Proxies getType method invocation to appropriate TypeHelper
+        * implementation. It's not being used since I've changed method for 
passing
+        * arguments. May be useful while implementing CORBA service bindings.
+        * 
+        * @param node
+        * @return
+        */
+       public static final TypeCode getType(TypeTreeNode node) {
+               TypeHelper typeHelper = getTypeHelper(node);
+               TypeCode typeCode = typeHelper.getType(node);
+               return typeCode;
+       }
+
+       /**
+        * Proxies read method invocation to appropriate TypeHelper 
implementation.
+        * 
+        * @param node
+        * @param is
+        * @return
+        */
+       public static final Object read(TypeTreeNode node, InputStream is) {
+               TypeHelper helper = getTypeHelper(node);
+               return helper.read(node, is);
+       }
+
+       /**
+        * Proxies write method invocation to appropriate TypeHelper 
implementation.
+        * 
+        * @param node
+        * @param os
+        * @param data
+        */
+       public static final void write(TypeTreeNode node, OutputStream os,
+                       Object data) {
+               TypeHelper helper = getTypeHelper(node);
+               helper.write(node, os, data);
+       }
+
+}


Reply via email to