All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy