You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2008/04/21 15:56:56 UTC

svn commit: r650147 - in /incubator/tuscany/java/sca/tools/registry-inspector/src: main/java/org/apache/tuscany/sca/tools/inspector/ test/java/org/apache/tuscany/sca/tools/inspector/

Author: slaws
Date: Mon Apr 21 06:56:51 2008
New Revision: 650147

URL: http://svn.apache.org/viewvc?rev=650147&view=rev
Log:
Added the code to print out composites using the composite processor

Added:
    incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java   (with props)
Modified:
    incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/AssemblyInspector.java
    incubator/tuscany/java/sca/tools/registry-inspector/src/test/java/org/apache/tuscany/sca/tools/inspector/RegistryInspectorTestCase.java

Modified: incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/AssemblyInspector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/AssemblyInspector.java?rev=650147&r1=650146&r2=650147&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/AssemblyInspector.java (original)
+++ incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/AssemblyInspector.java Mon Apr 21 06:56:51 2008
@@ -34,252 +34,50 @@
 import java.util.List;
 import java.util.Set;
 
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.node.SCANode2;
 import org.apache.tuscany.sca.node.impl.NodeImpl;
 import org.w3c.dom.Node;
 
 
 /**
- * An implementation of the ExtensionPointRegistryInspector service.
+ * Prints out the composite XML.
  */
 public class AssemblyInspector {
     
-    private boolean useGetters = false;
-    private PrintWriter out;
-    private int indent;
-
-
-    void indent() {
-        for (int i = 0; i < indent; i++) {
-            out.print("  ");
-        }
-    }    
 
     public String assemblyAsString(SCANode2 node) {
         StringBuffer assemblyString = new StringBuffer();
-        this.out = new PrintWriter(new OutputStreamWriter(System.out), true);
         
-        // Get the interesting extension points out of the registry and print them out
+        // get at the node internals
+        Composite composite = ((NodeImpl)node).getComposite();
+        ExtensionPointRegistry registry = ((NodeImpl)node).getExtensionPointRegistry();
+        
+        // Get the output factory 
+        ModelFactoryExtensionPoint modelFactories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
+        XMLOutputFactory outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
+        StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        StAXArtifactProcessor<Composite> compositeProcessor = (StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
         
+        // Write the composite
         try {
-            Composite composite = ((NodeImpl)node).getComposite();
-            
-            print(composite);
-
-            
-        } catch (Exception ex) {
-            System.out.println(ex.toString());
+            XMLStreamWriter writer = outputFactory.createXMLStreamWriter(System.out);
+            compositeProcessor.write(composite, writer);
+        } catch (Exception e) {
+            assemblyString.append(e.toString());
         }
 
         return assemblyString.toString();
     }
     
-    /**
-     * Print an object.
-     * 
-     * @param object
-     */
-    public void print(Object object) {
-        Set<Integer> objects = new HashSet<Integer>();
-        print(object, objects);
-    }
-
-    /**
-     * Print an object.
-     * 
-     * @param object
-     */
-    private void print(Object object, Set<Integer> printed) {
-        if (object == null) {
-            return;
-        }
-        int id = System.identityHashCode(object);
-        if (printed.contains(id)) {
-
-            // If we've already printed an object, print just it's HashCode
-            indent();
-            out.println("<" + object.getClass().getName() + " IDREF=\"" + id + "\"/>");
-        } else {
-            printed.add(id);
-            try {
-
-                // Print the object class name
-                indent();
-                out.println("<" + object.getClass().getName() + " ID=\"" + id + "\">");
-                
-                // Get the object's properties
-                ValueAccessor accessor = useGetters ? new PropertyAccessor(object) : new FieldAccessor(object);
-                for (int i = 0; i < accessor.size(); i++) {
-                    try {
-
-                        // Get the value of each property
-                        Object value = accessor.getValue(i);
-                        if (value != null) {
-
-                            // Convert array value into a list
-                            if (value.getClass().isArray()) {
-                                value = Arrays.asList((Object[])value);
-                            }
-
-                            // Print elements in a list
-                            if (value instanceof List) {
-                                if (!((List)value).isEmpty()) {
-                                    indent++;
-                                    indent();
-                                    out.println("<" + accessor.getName(i) + ">");
-                                    // Print each element, recursively
-                                    for (Object element : (List)value) {
-                                        indent++;
-                                        print(element, printed);
-                                        indent--;
-                                    }
-                                    indent();
-                                    out.println("</" + accessor.getName(i) + ">");
-                                    indent--;
-                                }
-                            } else {
-                                Class<?> valueClass = value.getClass();
-
-                                // Print a primitive, java built in type or
-                                // enum, using toString()
-                                if (valueClass.isPrimitive() || valueClass.getName().startsWith("java.")
-                                    || valueClass.getName().startsWith("javax.")
-                                    || valueClass.isEnum()) {
-                                    if (!accessor.getName(i).equals("class")) {
-                                        if (!(Boolean.FALSE.equals(value))) {
-                                            indent++;
-                                            indent();
-                                            out.println("<" + accessor.getName(i) + ">" + value.toString() + "</" + accessor.getName(i) + ">" );
-                                            indent--;
-                                        }
-                                    }
-                                } else if (value instanceof Node) {
-                                    indent++;
-                                    indent();
-                                    out.println("<" + accessor.getName(i) + ">" + value.toString() + "</" + accessor.getName(i) + ">");
-                                    indent--;
-                                } else {
-
-                                    // Print an object, recursively
-                                    indent++;
-                                    indent();
-                                    out.println("<" + accessor.getName(i) + ">");
-                                    indent++;
-                                    print(value, printed);
-                                    indent--;
-                                    indent();
-                                    out.println("</" + accessor.getName(i) + ">");
-                                    indent--;
-                                }
-                            }
-                        }
-                    } catch (Exception e) {
-                    }
-                }
-                indent();
-                out.println("</" + object.getClass().getName() + ">");
-            } catch (Exception e) {
-                indent();
-                out.println(e);
-            }
-        }
-    }
-
-    public static interface ValueAccessor {
-        int size();
-
-        String getName(int i);
-
-        Object getValue(int i) throws Exception;
-    }
-
-    /**
-     * Java field reflection based value accessor
-     */
-    private static class FieldAccessor implements ValueAccessor {
-
-        private Object object;
-        private List<Field> fields;
-
-        public FieldAccessor(Object object) {
-            this.fields = getAllFields(object.getClass());
-            this.object = object;
-        }
-
-        public String getName(int i) {
-            return fields.get(i).getName();
-        }
-
-        public Object getValue(int i) throws Exception {
-            return fields.get(i).get(object);
-        }
 
-        public int size() {
-            return fields.size();
-        }
-
-    }
-
-    /**
-     * JavaBean-based value accessor
-     */
-    private static class PropertyAccessor implements ValueAccessor {
-
-        private Object object;
-        private PropertyDescriptor[] fields;
-
-        public PropertyAccessor(Object object) throws IntrospectionException {
-            BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
-            this.fields = beanInfo.getPropertyDescriptors();
-            this.object = object;
-        }
-
-        public String getName(int i) {
-            return fields[i].getName();
-        }
-
-        public Object getValue(int i) throws Exception {
-            Method getter = fields[i].getReadMethod();
-            if (getter != null) {
-                return getter.invoke(object);
-            }
-            return null;
-        }
-
-        public int size() {
-            return fields.length;
-        }
-
-    }
-
-    /**
-     * Returns a collection of fields declared by a class
-     * or one of its supertypes
-     */
-    private static List<Field> getAllFields(Class<?> clazz) {
-        return getAllFields(clazz, new ArrayList<Field>());
-    }
-
-    /**
-     * Recursively evaluates the type hierarchy to return all fields 
-     */
-    private static List<Field> getAllFields(Class<?> clazz, List<Field> fields) {
-        if (clazz == null || clazz.isArray() || Object.class.equals(clazz)) {
-            return fields;
-        }
-        fields = getAllFields(clazz.getSuperclass(), fields);
-        Field[] declaredFields = clazz.getDeclaredFields();
-        for (final Field field : declaredFields) {
-            AccessController.doPrivileged(new PrivilegedAction<Object>() {
-                public Object run() {
-                    field.setAccessible(true); // ignore Java accessibility
-                    return null;
-                }
-            });
-            fields.add(field);
-        }
-        return fields;
-    }
-    
 }

Added: incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java?rev=650147&view=auto
==============================================================================
--- incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java (added)
+++ incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java Mon Apr 21 06:56:51 2008
@@ -0,0 +1,285 @@
+/*
+ * 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.sca.tools.inspector;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.tuscany.sca.assembly.Composite;
+import org.apache.tuscany.sca.node.SCANode2;
+import org.apache.tuscany.sca.node.impl.NodeImpl;
+import org.w3c.dom.Node;
+
+
+/**
+ * Prints out the assembly and the runtime hierarchy as XML
+ */
+public class RuntimeInspector {
+    
+    private boolean useGetters = false;
+    private PrintWriter out;
+    private int indent;
+
+
+    void indent() {
+        for (int i = 0; i < indent; i++) {
+            out.print("  ");
+        }
+    }    
+
+    public String runtimeAsString(SCANode2 node) {
+        StringBuffer assemblyString = new StringBuffer();
+        this.out = new PrintWriter(new OutputStreamWriter(System.out), true);
+        
+        // Get the interesting extension points out of the registry and print them out
+        
+        try {
+            Composite composite = ((NodeImpl)node).getComposite();
+            
+            print(composite);
+
+            
+        } catch (Exception ex) {
+            System.out.println(ex.toString());
+        }
+
+        return assemblyString.toString();
+    }
+    
+    /**
+     * Print an object.
+     * 
+     * @param object
+     */
+    public void print(Object object) {
+        Set<Integer> objects = new HashSet<Integer>();
+        print(object, objects);
+    }
+
+    /**
+     * Print an object.
+     * 
+     * @param object
+     */
+    private void print(Object object, Set<Integer> printed) {
+        if (object == null) {
+            return;
+        }
+        int id = System.identityHashCode(object);
+        if (printed.contains(id)) {
+
+            // If we've already printed an object, print just it's HashCode
+            indent();
+            out.println("<" + object.getClass().getName() + " IDREF=\"" + id + "\"/>");
+        } else {
+            printed.add(id);
+            try {
+
+                // Print the object class name
+                indent();
+                out.println("<" + object.getClass().getName() + " ID=\"" + id + "\">");
+                
+                // Get the object's properties
+                ValueAccessor accessor = useGetters ? new PropertyAccessor(object) : new FieldAccessor(object);
+                for (int i = 0; i < accessor.size(); i++) {
+                    try {
+
+                        // Get the value of each property
+                        Object value = accessor.getValue(i);
+                        if (value != null) {
+
+                            // Convert array value into a list
+                            if (value.getClass().isArray()) {
+                                value = Arrays.asList((Object[])value);
+                            }
+
+                            // Print elements in a list
+                            if (value instanceof List) {
+                                if (!((List)value).isEmpty()) {
+                                    indent++;
+                                    indent();
+                                    out.println("<" + accessor.getName(i) + ">");
+                                    // Print each element, recursively
+                                    for (Object element : (List)value) {
+                                        indent++;
+                                        print(element, printed);
+                                        indent--;
+                                    }
+                                    indent();
+                                    out.println("</" + accessor.getName(i) + ">");
+                                    indent--;
+                                }
+                            } else {
+                                Class<?> valueClass = value.getClass();
+
+                                // Print a primitive, java built in type or
+                                // enum, using toString()
+                                if (valueClass.isPrimitive() || valueClass.getName().startsWith("java.")
+                                    || valueClass.getName().startsWith("javax.")
+                                    || valueClass.isEnum()) {
+                                    if (!accessor.getName(i).equals("class")) {
+                                        if (!(Boolean.FALSE.equals(value))) {
+                                            indent++;
+                                            indent();
+                                            out.println("<" + accessor.getName(i) + ">" + value.toString() + "</" + accessor.getName(i) + ">" );
+                                            indent--;
+                                        }
+                                    }
+                                } else if (value instanceof Node) {
+                                    indent++;
+                                    indent();
+                                    out.println("<" + accessor.getName(i) + ">" + value.toString() + "</" + accessor.getName(i) + ">");
+                                    indent--;
+                                } else {
+
+                                    // Print an object, recursively
+                                    indent++;
+                                    indent();
+                                    out.println("<" + accessor.getName(i) + ">");
+                                    indent++;
+                                    print(value, printed);
+                                    indent--;
+                                    indent();
+                                    out.println("</" + accessor.getName(i) + ">");
+                                    indent--;
+                                }
+                            }
+                        }
+                    } catch (Exception e) {
+                    }
+                }
+                indent();
+                out.println("</" + object.getClass().getName() + ">");
+            } catch (Exception e) {
+                indent();
+                out.println(e);
+            }
+        }
+    }
+
+    public static interface ValueAccessor {
+        int size();
+
+        String getName(int i);
+
+        Object getValue(int i) throws Exception;
+    }
+
+    /**
+     * Java field reflection based value accessor
+     */
+    private static class FieldAccessor implements ValueAccessor {
+
+        private Object object;
+        private List<Field> fields;
+
+        public FieldAccessor(Object object) {
+            this.fields = getAllFields(object.getClass());
+            this.object = object;
+        }
+
+        public String getName(int i) {
+            return fields.get(i).getName();
+        }
+
+        public Object getValue(int i) throws Exception {
+            return fields.get(i).get(object);
+        }
+
+        public int size() {
+            return fields.size();
+        }
+
+    }
+
+    /**
+     * JavaBean-based value accessor
+     */
+    private static class PropertyAccessor implements ValueAccessor {
+
+        private Object object;
+        private PropertyDescriptor[] fields;
+
+        public PropertyAccessor(Object object) throws IntrospectionException {
+            BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
+            this.fields = beanInfo.getPropertyDescriptors();
+            this.object = object;
+        }
+
+        public String getName(int i) {
+            return fields[i].getName();
+        }
+
+        public Object getValue(int i) throws Exception {
+            Method getter = fields[i].getReadMethod();
+            if (getter != null) {
+                return getter.invoke(object);
+            }
+            return null;
+        }
+
+        public int size() {
+            return fields.length;
+        }
+
+    }
+
+    /**
+     * Returns a collection of fields declared by a class
+     * or one of its supertypes
+     */
+    private static List<Field> getAllFields(Class<?> clazz) {
+        return getAllFields(clazz, new ArrayList<Field>());
+    }
+
+    /**
+     * Recursively evaluates the type hierarchy to return all fields 
+     */
+    private static List<Field> getAllFields(Class<?> clazz, List<Field> fields) {
+        if (clazz == null || clazz.isArray() || Object.class.equals(clazz)) {
+            return fields;
+        }
+        fields = getAllFields(clazz.getSuperclass(), fields);
+        Field[] declaredFields = clazz.getDeclaredFields();
+        for (final Field field : declaredFields) {
+            AccessController.doPrivileged(new PrivilegedAction<Object>() {
+                public Object run() {
+                    field.setAccessible(true); // ignore Java accessibility
+                    return null;
+                }
+            });
+            fields.add(field);
+        }
+        return fields;
+    }
+    
+}

Propchange: incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/tools/registry-inspector/src/main/java/org/apache/tuscany/sca/tools/inspector/RuntimeInspector.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/tools/registry-inspector/src/test/java/org/apache/tuscany/sca/tools/inspector/RegistryInspectorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/tools/registry-inspector/src/test/java/org/apache/tuscany/sca/tools/inspector/RegistryInspectorTestCase.java?rev=650147&r1=650146&r2=650147&view=diff
==============================================================================
--- incubator/tuscany/java/sca/tools/registry-inspector/src/test/java/org/apache/tuscany/sca/tools/inspector/RegistryInspectorTestCase.java (original)
+++ incubator/tuscany/java/sca/tools/registry-inspector/src/test/java/org/apache/tuscany/sca/tools/inspector/RegistryInspectorTestCase.java Mon Apr 21 06:56:51 2008
@@ -68,6 +68,10 @@
         
         System.out.println(registryInspector.registryAsString(node)); 
         
+        RuntimeInspector runtimeInspector = new RuntimeInspector();
+        
+        System.out.println(runtimeInspector.runtimeAsString(node)); 
+        
         AssemblyInspector assemblyInspector = new AssemblyInspector();
         
         System.out.println(assemblyInspector.assemblyAsString(node)); 



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