Package org.ajax4jsf.builder.render

Source Code of org.ajax4jsf.builder.render.JavaClassRenderer

/**
* License Agreement.
*
* Rich Faces - Natural Ajax for Java Server Faces (JSF)
*
* Copyright (C) 2007 Exadel, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
*/

package org.ajax4jsf.builder.render;

import java.io.PrintWriter;
import java.util.List;
import java.util.Set;

import javax.faces.component.UIComponentBase;

import org.ajax4jsf.builder.model.Argument;
import org.ajax4jsf.builder.model.JavaClass;
import org.ajax4jsf.builder.model.JavaField;
import org.ajax4jsf.builder.model.JavaImport;
import org.ajax4jsf.builder.model.JavaMethod;
import org.ajax4jsf.builder.model.JavaModifier;
import org.ajax4jsf.builder.model.JavaPackage;
import org.ajax4jsf.builder.model.MethodBody;

/**
* @author Maksim Kaszynski
*
*/
public class JavaClassRenderer extends JavaLanguageElementRenderer<JavaClass> {
 
  private JavaMethodRenderer methodRenderer = new JavaMethodRenderer();
 
  private JavaFieldRenderer fieldRenderer = new JavaFieldRenderer();
 
  public void render(JavaClass javaClass, PrintWriter out){
    out.println("package " + javaClass.getPackage().getName() + ";");
    out.println();
    Set<JavaImport> imports = javaClass.getImports();
   
    for (JavaImport impord : imports) {
      out.println("import " + impord.getName() + ";");
    }
   
    out.println();

    renderAnnotations(javaClass, out);
   
    renderModifiers(javaClass, out);
    out.print("class " + javaClass.getName() );
   
    Class<?> superClass =
      javaClass.getSuperClass();
   
    if (!Object.class.getName().equals(superClass.getName())) {
      out.print(" extends " + superClass.getSimpleName());
    }
   
    out.println("{");

    out.println();

    List<JavaField> fields = javaClass.getFields();
    for (JavaField javaField : fields) {
      fieldRenderer.render(javaField, out);
      out.println();

    }

    out.println();

   
    List<JavaMethod> methods = javaClass.getMethods();
    for (JavaMethod javaMethod : methods) {
      methodRenderer.render(javaMethod, out);
      out.println();

    }
   
   
    out.println("}");
    out.flush();
    out.close();
  }
 
  @interface Tezt {
   
  }
 
  public static void main(String[] args) {
    JavaClass javaClass = new JavaClass("MyClass", new JavaPackage("mypackage"));
   
    JavaField javaField = new JavaField(int.class, "count");
    javaField.setValue(0);
    javaField.getModifiers().add(JavaModifier.PRIVATE);
    javaClass.addField(javaField);
   
    JavaField field =
      new JavaField(UIComponentBase.class, "component", "null");
    field.addModifier(JavaModifier.PUBLIC);
    field.addAnnotation(Deprecated.class);
    javaClass.addField(field);
   
    javaClass.addAnnotation(Deprecated.class);
   
    JavaMethod accessor = new JavaMethod("getCount", int.class);
    accessor.setMethodBody(
        new MethodBody(accessor) {
          @Override
          public String toCode() {
            return "return count;";
          }
        }
      );
    accessor.getModifiers().add(JavaModifier.PUBLIC);
    accessor.getModifiers().add(JavaModifier.FINAL);
    javaClass.addMethod(accessor);
   
    JavaMethod mutator = new JavaMethod("setCount",
        new Argument("i", int.class));
    mutator.setMethodBody(
        new MethodBody(mutator) {
          @Override
          public String toCode() {
            return "count = i;";
          }
        }
      );
    mutator.addAnnotation(Tezt.class);
    mutator.addModifier(JavaModifier.PUBLIC);
    mutator.addModifier(JavaModifier.FINAL);
    javaClass.addMethod(mutator);
   
    PrintWriter printWriter = new PrintWriter(System.out);
    new JavaClassRenderer().render(javaClass, printWriter);
    printWriter.flush();
  }
}
TOP

Related Classes of org.ajax4jsf.builder.render.JavaClassRenderer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.