Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.pentaho.ui.xul.gwt.generators;
  
  
 
 public class EventHandlerGenerator extends Generator {
 
   private String typeName;
 
   private String packageName;
 
   private String className;
   
   private TypeOracle typeOracle;
   
   private TreeLogger logger;
   
   private String handlerClassName;
 
   @Override
   public String generate(TreeLogger loggerGeneratorContext contextString typeNamethrows UnableToCompleteException {
     this. = typeName;
     this. = logger;
      = context.getTypeOracle();
 
     try {
       // get classType and save instance variables 
       JClassType classType = .getType(typeName);
        = classType.getPackage().getName();
        = classType.getQualifiedSourceName();
        = classType.getSimpleSourceName() + "Wrapper";
       // Generate class source code 
       generateClass(loggercontext);
 
     } catch (Exception e) {
 
       // record to logger that Map generation threw an exception 
       logger.log(."PropertyMap ERROR!!!"e);
 
     }
 
     // return the fully qualifed name of the class generated 
     return  + "." + ;
   }
 
   private void generateClass(TreeLogger loggerGeneratorContext context) { 
 
     // get print writer that receives the source code 
     PrintWriter printWriter = null
     printWriter = context.tryCreate(logger); 
     // print writer if null, source code has ALREADY been generated, return
         if (printWriter == nullreturn
 
         // init composer, set class properties, create source writer 
     ClassSourceFileComposerFactory composer = null
     composer = new ClassSourceFileComposerFactory(); 
     composer.addImplementedInterface("org.pentaho.ui.xul.gwt.util.EventHandlerWrapper");
     composer.addImport("org.pentaho.ui.xul.impl.XulEventHandler");
     
     SourceWriter sourceWriter = null
     sourceWriter = composer.createSourceWriter(contextprintWriter); 
 
     // generator constructor source code 
     generateConstructor(sourceWriter); 
     
     generateMethods(sourceWriter);
     
     // close generated class 
     sourceWriter.outdent(); 
     sourceWriter.println("}"); 
 
     // commit generated class 
     context.commit(loggerprintWriter); 
 
   }
 
   private void generateMethods(SourceWriter sourceWriter) {
 
     sourceWriter.println("public void execute(String method, Object[] args) { ");
     sourceWriter.indent();
 
     try{
       JClassType classType = .getType();
       
       do{
         for(JMethod m : classType.getMethods()){
          String methodName = m.getName();
          if(!m.isPublic()){
            continue;
          }
          
          sourceWriter.println("if(method.equals(\""+methodName+"\")){");
          sourceWriter.indent();
          
          boolean firstParam = true;
          //method call
          sourceWriter.print("handler."+methodName+"(");
          int argPos = 0;
          for(JParameter param : m.getParameters()){
            if(!firstParam){
              sourceWriter.print(", ");
            } else {
              firstParam = false;
            }
            sourceWriter.print("("+boxPrimative(param.getType())+") args["+argPos+"]");
            argPos++;
          }
          sourceWriter.print(");");
          //end method call
          
          sourceWriter.println("return;");
          sourceWriter.outdent();
          sourceWriter.println("}");
        }
      } while( (classType = classType.getSuperclass()).getSimpleSourceName().equals("Object") == false);
      
       
    } catch (Exception e) {
      // record to logger that Map generation threw an exception 
      .log(."PropertyMap ERROR!!!"e);
    }
    sourceWriter.println("System.err.println(\"ERROR: method '\" + method + \"' not annotated with EventMethod.\");");
    sourceWriter.outdent(); 
    sourceWriter.println("}");
   
    sourceWriter.println(+" handler;");
    sourceWriter.println("public void setHandler(XulEventHandler handler) { "); 
    sourceWriter.indent();
    sourceWriter.println("this.handler = ("++") handler;");
    sourceWriter.outdent(); 
    sourceWriter.println("}");
    sourceWriter.println("public XulEventHandler getHandler() { "); 
    sourceWriter.indent();
    sourceWriter.println("return this.handler;");
    sourceWriter.outdent(); 
    sourceWriter.println("}");
    
    sourceWriter.println("public String getName() { "); 
    sourceWriter.indent();
    sourceWriter.println("return this.handler.getName();");
    sourceWriter.outdent(); 
    sourceWriter.println("}");
    sourceWriter.println("public Object getData() { "); 
    sourceWriter.indent();
    sourceWriter.println("return null;");
    sourceWriter.outdent(); 
    sourceWriter.println("}");
    
    sourceWriter.println("public void setData(Object o) { "); 
    sourceWriter.println("}");
    
  }
  
  private void generateConstructor(SourceWriter sourceWriter) { 
    // start constructor source generation 
    sourceWriter.println("public " +  + "() { "); 
    sourceWriter.indent(); 
    sourceWriter.println("super();"); 
    sourceWriter.outdent(); 
    sourceWriter.println("}"); 
  }
  
  private String boxPrimative(JType type){
    if(type.isPrimitive() != null){
      JPrimitiveType primative = type.isPrimitive();
      return primative.getQualifiedBoxedSourceName();
    } else {
      return type.getQualifiedSourceName();
    }
  }
New to GrepCode? Check out our FAQ X