Package org.timepedia.exporter.rebind

Source Code of org.timepedia.exporter.rebind.JStructuralTypeField

package org.timepedia.exporter.rebind;

import com.google.gwt.core.ext.typeinfo.JMethod;
import com.google.gwt.core.ext.typeinfo.JPrimitiveType;

import org.timepedia.exporter.client.SType;

/**
* Represents a bean property or method which is a structural type field.
*/
public class JStructuralTypeField {

  private JExportableClassType exportableClassType;

  private JMethod setterMethod;

  public JStructuralTypeField(JExportableClassType exportableClassType,
      JMethod setterMethod) {

    this.exportableClassType = exportableClassType;
    this.setterMethod = setterMethod;
  }

  public String JavaDeclaration() {
    return setterMethod.getReturnType().getQualifiedSourceName() + " "
        + setterMethod.getName() + "("
        + setterMethod.getParameters()[0].getType().getQualifiedSourceName()
        + " arg)";
  }

  public boolean isVoidReturn() {
    return setterMethod.getReturnType().equals(JPrimitiveType.VOID);
  }

  public String getMethodName() {
    return setterMethod.getName();
  }

  public String getReturnType() {
    return setterMethod.getReturnType().getQualifiedSourceName();
  }

  public String getFieldValueCast() {
    return setterMethod.getParameters()[0].getType().isPrimitive() != null ?
    "(double)": "(Object)";
  }
  public String getFieldJSNIType() {
    return setterMethod.getParameters()[0].getType().isPrimitive() != null ?
        "D" : "Ljava/lang/Object;";
  }

  public String getName() {
    SType st = setterMethod.getAnnotation(SType.class);
    if(st != null) {
      return st.value();
    }
    return beanize(setterMethod.getName());
  }

  private String beanize(String name) {
    String prop = name.startsWith("set") ? name.substring(3) : name;
    return Character.toLowerCase(prop.charAt(0))+prop.substring(1);
  }

  public String getFieldLowestType() {
    JPrimitiveType type = setterMethod.getParameters()[0].getType()
        .isPrimitive();
    return type != null ? type.getQualifiedSourceName() : "Object";
  }

  public String getFieldType() {
    return setterMethod.getParameters()[0].getType().getQualifiedSourceName();
  }

  public JExportableType getExportableType() {
    return exportableClassType.getExportableTypeOracle().findExportableType(getFieldType());
  }
}
TOP

Related Classes of org.timepedia.exporter.rebind.JStructuralTypeField

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.