[jboss-svn-commits] JBL Code SVN: r20965 - in labs/jbossrules/trunk/drools-guvnor/src/main/java: com/google/gwt/core and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 8 15:11:35 EDT 2008


Author: arhan
Date: 2008-07-08 15:11:35 -0400 (Tue, 08 Jul 2008)
New Revision: 20965

Added:
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/Generator.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/GeneratorContext.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/PropertyOracle.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/TreeLogger.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/UnableToCompleteException.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/HasMetaData.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JClassType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JConstructor.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JField.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JMethod.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPackage.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPrimitiveType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JType.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/TypeOracle.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/SourceWriter.java
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/rebind/
   labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/rebind/EditorLauncherGenerator.java
Log:
GSOC2008: EditorLauncher generating utility with some stubs in order to prevent additional dependencies

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/Generator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/Generator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/Generator.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,7 @@
+package com.google.gwt.core.ext;
+
+/**
+ *
+ */
+public class Generator {
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/GeneratorContext.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/GeneratorContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/GeneratorContext.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,22 @@
+package com.google.gwt.core.ext;
+
+import com.google.gwt.core.ext.typeinfo.TypeOracle;
+
+import java.io.PrintWriter;
+import java.io.OutputStream;
+
+public interface GeneratorContext {
+    void commit(TreeLogger logger, PrintWriter pw);
+
+  void commitResource(TreeLogger logger, OutputStream os)
+      throws UnableToCompleteException;
+
+  PropertyOracle getPropertyOracle();
+
+  TypeOracle getTypeOracle();
+
+  PrintWriter tryCreate(TreeLogger logger, String packageName, String simpleName);
+
+  OutputStream tryCreateResource(TreeLogger logger, String partialPath)
+      throws UnableToCompleteException;
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/PropertyOracle.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/PropertyOracle.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/PropertyOracle.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,8 @@
+package com.google.gwt.core.ext;
+
+/**
+ *
+ */
+public interface PropertyOracle {
+    String getPropertyValue(TreeLogger logger, String propertyName);
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/TreeLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/TreeLogger.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/TreeLogger.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,12 @@
+package com.google.gwt.core.ext;
+
+public interface TreeLogger {
+    class Type {
+    }
+
+    public TreeLogger branch(Type type, String msg, Throwable caught);
+
+    public boolean isLoggable(Type type);
+
+    public void log(Type type, String msg, Throwable caught);
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/UnableToCompleteException.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/UnableToCompleteException.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/UnableToCompleteException.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,4 @@
+package com.google.gwt.core.ext;
+
+public class UnableToCompleteException extends Exception {
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/HasMetaData.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/HasMetaData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/HasMetaData.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,12 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public interface HasMetaData {
+    void addMetaData(String tagName, String[] values);
+
+    String[][] getMetaData(String tagName);
+
+    String[] getMetaDataTags();
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JClassType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JClassType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JClassType.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,233 @@
+
+package com.google.gwt.core.ext.typeinfo;
+
+import com.google.gwt.core.ext.UnableToCompleteException;
+
+/**
+ * Type representing a Java class or interface type.
+ */
+public class JClassType extends JType implements HasMetaData {                                                  
+
+    public void addImplementedInterface(JClassType intf) {
+    }
+
+    public void addMetaData(String tagName, String[] values) {
+    }
+
+    public void addModifierBits(int bits) {
+    }
+
+    public JConstructor findConstructor(JType[] paramTypes) {
+        return null;
+    }
+
+    public JField findField(String name) {
+        return null;
+    }
+
+    public JMethod findMethod(String name, JType[] paramTypes) {
+        return null;
+    }
+
+    public JClassType findNestedType(String typeName) {
+        return null;
+    }
+
+    public int getBodyEnd() {
+        return 0;
+    }
+
+    public int getBodyStart() {
+        return 0;
+    }
+
+    public JClassType getEnclosingType() {
+        return null;
+    }
+
+    public JField getField(String name) {
+        return null;
+    }
+
+    public JField[] getFields() {
+        return null;
+    }
+
+    public JClassType[] getImplementedInterfaces() {
+        return null;
+    }
+
+    public String getJNISignature() {
+        return null;
+    }
+
+    public String[][] getMetaData(String tagName) {
+        return null;
+    }
+
+    public String[] getMetaDataTags() {
+        return null;
+    }
+
+    public JMethod getMethod(String name, JType[] paramTypes)
+             {
+        return null;
+    }
+
+    public JMethod[] getMethods() {
+        return null;
+    }
+
+    public String getJavahSignatureName() {
+        return null;
+    }
+
+    public String getJsniSignatureName() {
+        return null;
+    }
+
+    public String getName() {
+        return null;
+    }
+
+    public JClassType getNestedType(String typeName)  {
+        return null;
+    }
+
+    public JClassType[] getNestedTypes() {
+        return null;
+    }
+
+    public TypeOracle getOracle() {
+        return null;
+    }
+
+    public JMethod[] getOverloads(String name) {
+        return null;
+    }
+
+    public JMethod[] getOverridableMethods() {
+        return null;
+    }
+
+    public JPackage getPackage() {
+        return null;
+    }
+
+    public String getQualifiedSourceName() {
+        return null;
+    }
+
+    public String getSimpleSourceName() {
+        return null;
+    }
+
+    public JClassType[] getSubtypes() {
+        return null;
+    }
+
+    public JClassType getSuperclass() {
+        return null;
+    }
+
+    public String getTypeHash() throws UnableToCompleteException {
+        return null;
+    }
+
+    public boolean isAbstract() {
+        return false;
+    }
+
+
+    public boolean isAssignableFrom(JClassType possibleSubtype) {
+        return false;
+    }
+
+    public boolean isAssignableTo(JClassType possibleSupertype) {
+        return false;
+    }
+
+    public JClassType isClass() {
+        return null;
+    }
+
+    public boolean isDefaultInstantiable() {
+        return false;
+    }
+
+    public JClassType isInterface() {
+        return null;
+    }
+
+    public boolean isLocalType() {
+        return false;
+    }
+
+    public boolean isMemberType() {
+        return false;
+    }
+
+    public JParameterizedType isParameterized() {
+        // intentional null
+        return null;
+    }
+
+    public JPrimitiveType isPrimitive() {
+        // intentional null
+        return null;
+    }
+
+    public boolean isPrivate() {
+        return false;
+    }
+
+    public boolean isProtected() {
+        return false;
+    }
+
+    public boolean isPublic() {
+        return false;
+    }
+
+    public boolean isStatic() {
+        return false;
+    }
+
+    public void setSuperclass(JClassType type) {
+    }
+
+    public String toString() {
+        return null;
+    }
+
+    protected int getModifierBits() {
+        return 0;
+    }
+
+    void addConstructor(JConstructor ctor) {
+    }
+
+    void addField(JField field) {
+    }
+
+    void addMethod(JMethod method) {
+    }
+
+    void addNestedType(JClassType type) {
+
+    }
+
+    JClassType findNestedTypeImpl(String[] typeName, int index) {
+        return null;
+    }
+
+    void notifySuperTypes() {
+    }
+
+    void removeFromSupertypes() {
+    }
+
+    public String getParameterizedQualifiedSourceName() {
+        return null;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JConstructor.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JConstructor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JConstructor.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,7 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public class JConstructor {
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JField.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JField.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JField.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,18 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public class JField implements HasMetaData{
+    public void addMetaData(String tagName, String[] values) {
+
+    }
+
+    public String[][] getMetaData(String tagName) {
+        return new String[0][];
+    }
+
+    public String[] getMetaDataTags() {
+        return new String[0];
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JMethod.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JMethod.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JMethod.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,64 @@
+
+package com.google.gwt.core.ext.typeinfo;
+
+public class JMethod {
+
+  private JType returnType;
+
+  public JMethod(JClassType enclosingType, String name, int declStart,
+      int declEnd, int bodyStart, int bodyEnd) {
+
+  }
+
+  public JClassType getEnclosingType() {
+    return null;
+  }
+
+  public String getReadableDeclaration() {
+    return null;
+  }
+
+  public String getReadableDeclaration(boolean noAccess, boolean noNative,
+      boolean noStatic, boolean noFinal, boolean noAbstract) {
+    return null;
+  }
+
+  public JType getReturnType() {
+    return null;
+  }
+
+  public boolean isAbstract() {
+    return false;
+  }
+
+  public JConstructor isConstructor() {
+    return null;
+  }
+
+  public boolean isFinal() {
+    return false;
+  }
+
+  public JMethod isMethod() {
+    return this;
+  }
+
+  public boolean isNative() {
+    return false;
+  }
+
+  public boolean isStatic() {
+    return false;
+  }
+
+  public void setReturnType(JType type) {
+  }
+
+  public String toString() {
+    return getReadableDeclaration();
+  }
+
+  String getReadableDeclaration(int modifierBits) {
+    return null;
+  }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPackage.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPackage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPackage.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,10 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public class JPackage {
+    public String getName(){
+        return null;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JParameterizedType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JParameterizedType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JParameterizedType.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,14 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public class JParameterizedType extends JType{
+    public String getJavahSignatureName() {
+        return null;
+    }
+
+    public String getJsniSignatureName() {
+        return null;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPrimitiveType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPrimitiveType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JPrimitiveType.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,14 @@
+package com.google.gwt.core.ext.typeinfo;
+
+/**
+ *
+ */
+public class JPrimitiveType extends JType{
+    public String getJavahSignatureName() {
+        return null;
+    }
+
+    public String getJsniSignatureName() {
+        return null;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JType.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/JType.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,13 @@
+package com.google.gwt.core.ext.typeinfo;
+
+
+public abstract class JType {
+    public JType() {
+    }
+
+
+    public abstract String getJavahSignatureName();
+
+    public abstract String getJsniSignatureName();
+
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/TypeOracle.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/TypeOracle.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/core/ext/typeinfo/TypeOracle.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2007 Google Inc.
+ *
+ * Licensed 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 com.google.gwt.core.ext.typeinfo;
+
+
+public class TypeOracle {
+
+  static String combine(String[] strings, int startIndex) {
+     return null;
+  }
+
+  static String[] modifierBitsToNames(int bits) {
+   return null;
+  }
+
+  public JClassType findType(String name) {
+    return null;
+  }
+
+  public JClassType findType(String pkgName, String typeName) {
+    return null;
+  }
+
+  public JClassType getJavaLangObject() {
+    return null;
+  }
+
+  public JType getParameterizedType(JClassType rawType, JType[] typeArgs) {
+    return null;
+  }
+
+  public long getReloadCount() {
+    return 0;
+  }
+
+  public JClassType getType(String name) {
+    return null;
+  }
+
+  public JClassType getType(String pkgName, String topLevelTypeSimpleName){
+    return null;
+  }
+
+  public JClassType[] getTypes() {
+    return null;
+  }
+
+  public void sort(JClassType[] types) {
+  }
+
+  public void sort(JField[] fields) {
+  }
+
+  public void sort(JMethod[] methods) {
+  }
+
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/ClassSourceFileComposerFactory.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,25 @@
+package com.google.gwt.user.rebind;
+
+import com.google.gwt.core.ext.GeneratorContext;
+
+import java.io.PrintWriter;
+
+/**
+ *
+ */
+public class ClassSourceFileComposerFactory {
+
+    public ClassSourceFileComposerFactory(String a, String b){
+        
+    }
+
+    public void addImplementedInterface(String name) {
+    }
+
+    public void addImport(String s) {
+    }
+
+    public SourceWriter createSourceWriter(GeneratorContext context, PrintWriter printWriter) {
+        return null;
+    }
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/SourceWriter.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/SourceWriter.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/com/google/gwt/user/rebind/SourceWriter.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,16 @@
+package com.google.gwt.user.rebind;
+
+import com.google.gwt.core.ext.TreeLogger;
+
+/**
+ *
+ */
+public interface SourceWriter {
+    public void println(String s);
+
+    public void commit(TreeLogger logger);
+
+    public void indent() ;
+
+    public void outdent() ;
+}

Added: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/rebind/EditorLauncherGenerator.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/rebind/EditorLauncherGenerator.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/rebind/EditorLauncherGenerator.java	2008-07-08 19:11:35 UTC (rev 20965)
@@ -0,0 +1,224 @@
+package org.drools.guvnor.rebind;
+/*
+ * Copyright 2008 JBoss Inc
+ *
+ * Licensed 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.
+ */
+
+
+import com.google.gwt.core.ext.TreeLogger;
+import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.core.ext.GeneratorContext;
+import com.google.gwt.core.ext.Generator;
+import com.google.gwt.core.ext.typeinfo.TypeOracle;
+import com.google.gwt.core.ext.typeinfo.JClassType;
+import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
+import com.google.gwt.user.rebind.SourceWriter;
+
+import java.io.PrintWriter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.*;
+
+/**
+ * EditorLauncherGenerator generates the EditorLauncher implementation in order to
+ * simplify implementation of new content editors
+ */
+public class EditorLauncherGenerator extends Generator {
+
+    private static final String CLASS_SUFFIX = "Impl";
+    public static final String EDITORS_LIST = "guvnor-editors.properties";
+
+    SourceWriter sourceWriter;
+    List<EditorConfiguration> contentEditors;
+
+    public String generate(TreeLogger logger, GeneratorContext context, String typeName)
+            throws UnableToCompleteException {
+        String generatedClassQualifiedName = createClass(logger, context, typeName);
+        if (generatedClassQualifiedName == null) {
+            throw new UnableToCompleteException();
+        }
+        return generatedClassQualifiedName;
+    }
+
+    private String createClass(TreeLogger logger, GeneratorContext context, String typeName) {
+        try {
+            TypeOracle typeOracle = context.getTypeOracle();
+            JClassType originalType = typeOracle.getType(typeName);
+            String packageName = originalType.getPackage().getName();
+            String originalClassName = originalType.getSimpleSourceName();
+            String generatedClassName = originalClassName + CLASS_SUFFIX;
+
+            contentEditors = loadContentEditorsConfig();
+
+            ClassSourceFileComposerFactory classFactory = new ClassSourceFileComposerFactory(packageName, generatedClassName);
+
+            addImports(contentEditors, classFactory);
+
+            if (sourceWriter == null) {
+                sourceWriter = getSourceWriter(logger, context, packageName, generatedClassName, classFactory);
+            }
+
+            if (sourceWriter != null) {
+                writeClass(logger, classFactory, originalType, sourceWriter);
+            }
+
+            return originalType.getParameterizedQualifiedSourceName() + CLASS_SUFFIX;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private void writeClass(TreeLogger logger, ClassSourceFileComposerFactory classFactory,
+                            JClassType originalType, SourceWriter sourceWriter) throws IOException {
+
+        classFactory.addImplementedInterface(originalType.getName());
+        initializeImagesMap(contentEditors, sourceWriter);
+        writeGetEditorMethod(contentEditors, sourceWriter);
+
+        sourceWriter.println(
+                "public String getAssetFormatIcon(String format) {\n" +
+                        "    String result = (String) TYPE_IMAGES.get( format );\n" +
+                        "    if (result == null) {\n" +
+                        "        return \"rule_asset.gif\";\n" +
+                        "    } else {\n" +
+                        "        return result;\n" +
+                        "    }\n" +
+                        "}"
+        );
+
+        sourceWriter.commit(logger);
+    }
+
+    private void addImports(List<EditorConfiguration> contentEditors, ClassSourceFileComposerFactory classFactory) {
+        //common imports
+        classFactory.addImport("java.util.HashMap");
+        classFactory.addImport("java.util.Map");
+        classFactory.addImport("com.google.gwt.user.client.ui.Widget");
+        classFactory.addImport("org.drools.guvnor.client.rpc.RuleAsset");
+        classFactory.addImport("org.drools.guvnor.client.rpc.RuleContentText");
+        classFactory.addImport("org.drools.guvnor.client.common.AssetFormats");
+
+        //collect the uniq class names from editors configuration
+        Set<String> classesToImport = new HashSet<String>();
+        for (EditorConfiguration editorConfiguration : contentEditors) {
+            classesToImport.add(editorConfiguration.wrapper);
+            classesToImport.add(editorConfiguration.widget);
+        }
+
+        for (String className : classesToImport) {
+            if (!"".equals(className)) {
+                classFactory.addImport(className);
+            }
+        }
+    }
+
+    private void writeGetEditorMethod(List<EditorConfiguration> contentEditors, SourceWriter sourceWriter) {
+        //TODO: public Widget getEditorViewer(RuleAsset asset, RuleViewer viewer)
+
+        sourceWriter.println("public Widget getEditorViewer(RuleAsset asset, RuleViewer viewer) {");
+        for (EditorConfiguration editorConfiguration : contentEditors) {
+            sourceWriter.println(" if ( asset.metaData.format.equals(\"" + editorConfiguration.format + "\") ){");
+
+            boolean hasWrapper = editorConfiguration.wrapper != null && !"".equals(editorConfiguration.wrapper);
+            String retWidget = "new " + editorConfiguration.widget + "(asset, viewer)";
+            String retWrapped = "new " + editorConfiguration.wrapper + "(" + retWidget + ", asset)";
+
+            sourceWriter.println("   return " + (hasWrapper ? retWrapped : retWidget) + ";");
+            sourceWriter.println(" }");
+        }
+
+        sourceWriter.println("  return new DefaultContentUploadEditor( asset, viewer );");
+        sourceWriter.println("}");
+
+        /*sourceWriter.println(
+                "public Widget getEditorViewer2(RuleAsset asset, RuleViewer viewer) {\n" +
+                        "        if ( asset.metaData.format.equals( AssetFormats.BUSINESS_RULE ) ) {\n" +
+                        "            return new RuleValidatorWrapper( new RuleModeller( asset  ), asset);\n" +
+                        "        } else if ( asset.metaData.format.equals( AssetFormats.DSL_TEMPLATE_RULE ) ) {\n" +
+                        "            return new RuleValidatorWrapper(new DSLRuleEditor( asset ), asset);\n" +
+                        "        } else if ( asset.metaData.format.equals( AssetFormats.MODEL ) ) {\n" +
+                        "            return new ModelAttachmentFileWidget( asset, viewer );\n" +
+                        "        } else if (asset.metaData.format.equals( AssetFormats.DECISION_SPREADSHEET_XLS )){\n" +
+                        "            return new RuleValidatorWrapper(new DecisionTableXLSWidget( asset, viewer ), asset);\n" +
+                        "        } else if (asset.metaData.format.equals( AssetFormats.RULE_FLOW_RF )) {\n" +
+                        "            return new RuleFlowUploadWidget(asset, viewer);\n" +
+                        "        } else if (asset.metaData.format.equals( AssetFormats.DRL )) {\n" +
+                        "            return new RuleValidatorWrapper(new DefaultRuleContentWidget( asset ), asset);\n" +
+                        "        } else if (asset.metaData.format.equals( AssetFormats.ENUMERATION )) {\n" +
+                        "            return new RuleValidatorWrapper(new DefaultRuleContentWidget( asset ), asset);\n" +
+                        "        } else if (asset.metaData.format.equals(AssetFormats.TEST_SCENARIO)) {\n" +
+                        "            return new ScenarioWidget(asset);\n" +
+                        "        } else if (asset.metaData.format.equals(AssetFormats.DECISION_TABLE_GUIDED)) {\n" +
+                        "            return new RuleValidatorWrapper(new GuidedDecisionTableWidget(asset), asset);\n" +
+                        "        } else if (asset.metaData.format.equals(AssetFormats.DRL_MODEL)) {\n" +
+                        "            return new RuleValidatorWrapper(new FactModelWidget(asset), asset);\n" +
+                        "        } else {\n" +
+                        "            return new DefaultContentUploadEditor( asset, viewer );\n" +
+                        "        }\n" +
+                        "}");*/
+    }
+
+    private void initializeImagesMap(List<EditorConfiguration> contentEditors, SourceWriter sourceWriter) {
+        sourceWriter.println("public final Map TYPE_IMAGES = new HashMap(){");
+        sourceWriter.indent();
+        sourceWriter.println("{");
+        sourceWriter.indent();
+        for (EditorConfiguration editorConfiguration : contentEditors) {
+            sourceWriter.println("put(\"" + editorConfiguration.format +
+                    "\",\"" + editorConfiguration.icon + "\");");
+        }
+        sourceWriter.outdent();
+        sourceWriter.println("}");
+        sourceWriter.outdent();
+        sourceWriter.println("};");
+    }
+
+    private List<EditorConfiguration> loadContentEditorsConfig() throws IOException {
+        Properties editors = new Properties();
+        editors.load(new FileInputStream(EDITORS_LIST));
+        List<EditorConfiguration> editorConfigs = new ArrayList<EditorConfiguration>();
+        for (Object o : editors.keySet()) {
+            String key = (String) o;
+            String value = editors.getProperty(key);
+            String[] values = value.split(";");
+            editorConfigs.add(new EditorConfiguration(key, values[0], values[1], values[2]));
+        }
+        return editorConfigs;
+    }
+
+    private SourceWriter getSourceWriter(TreeLogger logger,
+                                         GeneratorContext context,
+                                         String packageName,
+                                         String generatedClassName,
+                                         ClassSourceFileComposerFactory classFactory) {
+        PrintWriter printWriter = context.tryCreate(logger, packageName, generatedClassName);
+        return classFactory.createSourceWriter(context, printWriter);
+    }
+
+    class EditorConfiguration {
+        String format;
+        String widget;
+        String wrapper;
+        String icon;
+
+        EditorConfiguration(String format, String widget, String wrapper, String icon) {
+            this.format = format;
+            this.widget = widget;
+            this.wrapper = wrapper;
+            this.icon = icon;
+        }
+    }
+
+}
\ No newline at end of file




More information about the jboss-svn-commits mailing list