org.snapscript.core.function.AccessorProperty Maven / Gradle / Ivy
package org.snapscript.core.function;
import static java.util.Collections.EMPTY_LIST;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.snapscript.core.annotation.Annotation;
import org.snapscript.core.constraint.Constraint;
import org.snapscript.core.property.Property;
import org.snapscript.core.type.Type;
public class AccessorProperty implements Property {
private final List annotations;
private final Accessor accessor;
private final Constraint constraint;
private final Type source;
private final String name;
private final int modifiers;
public AccessorProperty(String name, Type source, Constraint constraint, Accessor accessor, int modifiers){
this.annotations = new ArrayList();
this.constraint = constraint;
this.modifiers = modifiers;
this.accessor = accessor;
this.source = source;
this.name = name;
}
@Override
public List getGenerics() {
return EMPTY_LIST;
}
@Override
public List getAnnotations(){
return annotations;
}
@Override
public Constraint getConstraint() {
return constraint;
}
@Override
public Type getHandle() {
return null;
}
@Override
public Type getSource(){
return source;
}
@Override
public String getName(){
return name;
}
@Override
public int getModifiers() {
return modifiers;
}
@Override
public Object getValue(T source) {
return accessor.getValue(source);
}
@Override
public void setValue(T source, Object value) {
accessor.setValue(source, value);;
}
@Override
public String toString(){
return name;
}
}