Package railo.runtime.component

Source Code of railo.runtime.component.PropertyImpl

package railo.runtime.component;

import org.objectweb.asm.Type;

import railo.commons.lang.StringUtil;
import railo.runtime.Component;
import railo.runtime.converter.ConverterException;
import railo.runtime.converter.ScriptConverter;
import railo.runtime.exp.PageException;
import railo.runtime.op.Caster;
import railo.runtime.op.Duplicator;
import railo.runtime.type.Struct;
import railo.runtime.type.StructImpl;
import railo.runtime.type.util.KeyConstants;
import railo.runtime.type.util.StructUtil;
import railo.transformer.bytecode.util.ASMProperty;
import railo.transformer.bytecode.util.ASMUtil;

/**
*/
public final class PropertyImpl extends MemberSupport implements Property,ASMProperty {
   

  private static final long serialVersionUID = 3206074213415946902L;

 
  private String type="any";
  private String name;
  private boolean required;
  private boolean setter=true;
  private boolean getter=true;
 

  private String _default;
  private String displayname="";
  private String hint="";
  private Struct dynAttrs=new StructImpl();
  private Struct metadata;

  private String ownerName;
 
  public PropertyImpl() {
    super(Component.ACCESS_REMOTE);
  }

  /**
   * @return the _default
   */
  public String getDefault() {
    return _default;
  }

  /**
   * @param _default the _default to set
   */
  public void setDefault(String _default) {
    this._default = _default;
  }

  /**
   * @return the displayname
   */
  public String getDisplayname() {
    return displayname;
  }

  /**
   * @param displayname the displayname to set
   */
  public void setDisplayname(String displayname) {
    this.displayname = displayname;
  }

  /**
   * @return the hint
   */
  public String getHint() {
    return hint;
  }

  /**
   * @param hint the hint to set
   */
  public void setHint(String hint) {
    this.hint = hint;
  }

  /**
   * @return the name
   */
  public String getName() {
    return name;
  }

  /**
   * @param name the name to set
   */
  public void setName(String name) {
    this.name = name;
  }

  /**
   * @return the required
   */
  public boolean isRequired() {
    return required;
  }

  /**
   * @param required the required to set
   */
  public void setRequired(boolean required) {
    this.required = required;
  }

  /**
   * @return the type
   */
  public String getType() {
    return type;
  }

  /**
   * @param type the type to set
   */
  public void setType(String type) {
    this.type = type;
  }

  @Override
  public Object getValue() {
    return _default;
  }

  @Override
  public Type getASMType() throws PageException {
    return ASMUtil.toType(getType(), true);
  }
 
  /**
   * @return the setter
   */
  public boolean getSetter() {
    return setter;
  }

  /**
   * @param setter the setter to set
   */
  public void setSetter(boolean setter) {
    this.setter = setter;
  }

  /**
   * @return the getter
   */
  public boolean getGetter() {
    return getter;
  }

  /**
   * @param getter the getter to set
   */
  public void setGetter(boolean getter) {
    this.getter = getter;
  }
 
 

  public Object getMetaData() {
    Struct sct=new StructImpl();
   
    // meta
    if(metadata!=null)
      StructUtil.copy(metadata, sct, true);
   
    sct.setEL(KeyConstants._name,name);
    if(!StringUtil.isEmpty(hint,true))sct.setEL(KeyConstants._hint,hint);
    if(!StringUtil.isEmpty(displayname,true))sct.setEL(KeyConstants._displayname,displayname);
    if(!StringUtil.isEmpty(type,true))sct.setEL(KeyConstants._type,type);
   
    // dyn attributes

    StructUtil.copy(dynAttrs, sct, true);
   
    return sct;
  }

  public Struct getDynamicAttributes() {
    return dynAttrs;
  }
  public Struct getMeta() {
    if(metadata==null) metadata=new StructImpl();
    return metadata;
  }

  @Override
  public Class getClazz() {
    return null;
  }

  public boolean isPeristent() {
    return Caster.toBooleanValue(dynAttrs.get(KeyConstants._persistent,Boolean.TRUE),true);
  }

  public void setOwnerName(String ownerName) {
    this.ownerName=ownerName;
  }
  public String getOwnerName() {
    return ownerName;
  }

 
 
  @Override
  public String toString() {
    String strDynAttrs="";
    try{
    strDynAttrs=new ScriptConverter().serialize(dynAttrs);
    }
    catch(ConverterException ce){}
   
    return "default:"+this._default+";displayname:"+this.displayname+";hint:"+this.hint+
    ";name:"+this.name+";type:"+this.type+";ownerName:"+ownerName+";attrs:"+strDynAttrs+";";
  }
 
  public boolean equals(Object obj) {
    if(this == obj) return true;
    if(!(obj instanceof Property)) return false;
    Property other=(Property)obj;
   
    return toString().equals(other.toString());
  }

  public Object duplicate(boolean deepCopy) {
    PropertyImpl other = new PropertyImpl();
    other._default=_default;
    other.displayname=displayname;
    other.getter=getter;
    other.hint=hint;
    other.dynAttrs=deepCopy?(Struct) Duplicator.duplicate(dynAttrs,deepCopy):dynAttrs;
    other.name=name;
    other.ownerName=ownerName;
    other.required=required;
    other.setter=setter;
    other.type=type;
   
    return other;
  }
}
TOP

Related Classes of railo.runtime.component.PropertyImpl

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.