You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/03/31 00:09:35 UTC

svn commit: r524295 - /incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java

Author: jsdelfino
Date: Fri Mar 30 15:09:34 2007
New Revision: 524295

URL: http://svn.apache.org/viewvc?view=rev&rev=524295
Log:
Minor clean up of print utility class

Modified:
    incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java

Modified: incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java?view=diff&rev=524295&r1=524294&r2=524295
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java (original)
+++ incubator/tuscany/java/sca/scdl4j/assembly/src/main/java/org/apache/tuscany/assembly/util/PrintUtil.java Fri Mar 30 15:09:34 2007
@@ -31,87 +31,111 @@
 import java.util.Set;
 
 /**
- * A simple print utility class to help print the assembly model.
+ * A simple print utility class to help print assembly model instances.
  *
  *  @version $Rev$ $Date$
  */
 public class PrintUtil {
 	
 	PrintWriter out;
-	Set<Object> objs = new HashSet<Object>();
-	int level;
+	Set<Object> objects = new HashSet<Object>();
+	int indent;
 	
 	public PrintUtil(OutputStream out) {
 		this.out = new PrintWriter(new OutputStreamWriter(out), true);
 	}
 	
-	void indent(int level) {
-		for (int i=0; i<level; i++) {
+	void indent() {
+		for (int i=0; i<indent; i++) {
 			out.print("  ");
 		}
 	}
 	
-	public void print(Object obj) {
-		if (objs.contains(obj)) {
-			indent(level);
-			out.println(obj.getClass().getName()+"@"+System.identityHashCode(obj));
+	/**
+	 * Print a model object.
+	 * @param object
+	 */
+	public void print(Object object) {
+		if (objects.contains(object)) {
+			
+			// If we've already printed an object, print just it's hashcode
+			indent();
+			out.println(object.getClass().getName()+"@"+System.identityHashCode(object));
 		}
 		else {
-			objs.add(obj);
+			objects.add(object);
 			try {
-				indent(level);
-				out.println(obj.getClass().getSimpleName() + " {");
-				BeanInfo bi = Introspector.getBeanInfo(obj.getClass());
-				for (PropertyDescriptor pd: bi.getPropertyDescriptors()) {
+				
+				// Print the object class name
+				indent();
+				out.println(object.getClass().getSimpleName() + " {");
+				
+				// Get the object's properties
+				BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
+				for (PropertyDescriptor propertyDescriptor: beanInfo.getPropertyDescriptors()) {
 					try {
-						Object pv = pd.getReadMethod().invoke(obj);
-						if (pv != null) {
-							if (pv.getClass().isArray()) {
-								pv = Arrays.asList((Object[])pv);
+						
+						// Get the value of each property 
+						Object value = propertyDescriptor.getReadMethod().invoke(object);
+						if (value != null) {
+							
+							// Convert array value into a list
+							if (value.getClass().isArray()) {
+								value = Arrays.asList((Object[])value);
 							}
-							if (pv instanceof List) {
-								if (!((List)pv).isEmpty()) {
-									level++;
-									indent(level);
-									out.println(pd.getName() + "= [");
-									for (Object e: (List)pv) {
-										level++;
-										print(e);
-										level--;
+							
+							// Print elements in a list
+							if (value instanceof List) {
+								if (!((List)value).isEmpty()) {
+									indent++;
+									indent();
+									out.println(propertyDescriptor.getName() + "= [");
+									
+									// Print each element, recursively
+									for (Object element: (List)value) {
+										indent++;
+										print(element);
+										indent--;
 									}
-									indent(level);
+									indent();
 									out.println( " ]");
-									level--;
+									indent--;
 								}
 							}
 							else {
-								Class<?> pvc = pv.getClass();
-								if (pvc.isPrimitive() || pvc.getName().startsWith("java.") || pvc.getName().startsWith("javax.") || pvc.isEnum()) {
-									if (!pd.getName().equals("class")) {
-										if (!(Boolean.FALSE.equals(pv))) {
-											indent(level+1);
-											out.println(pd.getName() + "=" + pv.toString());
+								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 (!propertyDescriptor.getName().equals("class")) {
+										if (!(Boolean.FALSE.equals(value))) {
+											indent++;
+											indent();
+											out.println(propertyDescriptor.getName() + "=" + value.toString());
+											indent--;
 										}
 									}
 								} else {
-									level++;
-									indent(level);
-									out.println(pd.getName() + "= {" );
-									level++;
-									print(pv);
-									level--;
-									indent(level);
+									
+									// Print an object, recursively
+									indent++;
+									indent();
+									out.println(propertyDescriptor.getName() + "= {" );
+									indent++;
+									print(value);
+									indent--;
+									indent();
 									out.println("}");
-									level--;
+									indent--;
 								}
 							}
 						}
 					} catch (Exception e) {}
 				}
-				indent(level);
+				indent();
 				out.println("}");
 			} catch (IntrospectionException e) {
-				indent(level);
+				indent();
 				out.println(e);
 			}
 		}



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