Package com.ajjpj.amapper.javabean.propbased.accessors

Source Code of com.ajjpj.amapper.javabean.propbased.accessors.AMethodBasedPropertyAccessor

package com.ajjpj.amapper.javabean.propbased.accessors;

import com.ajjpj.amapper.core.compile.ACodeSnippet;
import com.ajjpj.amapper.core.tpe.AQualifier;
import com.ajjpj.amapper.javabean.JavaBeanType;
import com.ajjpj.amapper.util.AMapperReflectionHelper;

import java.lang.reflect.Method;

/**
* @author arno
*/
public class AMethodBasedPropertyAccessor implements APropertyAccessor {
    private final String name;
    private final Method getter;
    private final Method setter;
    private final boolean isDeferred;
    private final JavaBeanType tpe;
    private final AQualifier sourceQualifier;
    private final AQualifier targetQualifier;

    public AMethodBasedPropertyAccessor(String name, Method getter, Method setter, boolean deferred, JavaBeanType tpe, AQualifier sourceQualifier, AQualifier targetQualifier) {
        this.name = name;
        this.getter = getter;
        this.setter = setter;
        isDeferred = deferred;
        this.tpe = tpe;
        this.sourceQualifier = sourceQualifier;
        this.targetQualifier = targetQualifier;
    }

    @Override public String getName() {
        return name;
    }

    @Override public JavaBeanType<?> getType() {
        return tpe;
    }

    @Override public AQualifier getSourceQualifier() {
        return sourceQualifier;
    }

    @Override public AQualifier getTargetQualifier() {
        return targetQualifier;
    }

    @Override public boolean isDeferred() {
        return isDeferred;
    }

    @Override public boolean isWritable() {
        return setter != null;
    }

    @Override public Object get(Object o) throws Exception {
        return AMapperReflectionHelper.invoke (getter, o);
    }

    @Override public void set(Object o, Object newValue) throws Exception {
        AMapperReflectionHelper.invoke (setter, o, newValue);
    }

    @Override public ACodeSnippet javaCodeForGet(ACodeSnippet parent) throws Exception {
        return new ACodeSnippet(parent.getCode() + "." + getter.getName() + "()");
    }

    @Override public ACodeSnippet javaCodeForSet(ACodeSnippet parent, ACodeSnippet newValue) throws Exception {
        return new ACodeSnippet(parent.getCode() + "." + setter.getName() + "(" + newValue.getCode() + ")");
    }

    @Override
    public String toString() {
        return "MtdProp{" + name + ": " + isWritable() + "}";
    }
}
TOP

Related Classes of com.ajjpj.amapper.javabean.propbased.accessors.AMethodBasedPropertyAccessor

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.