// Copyright (c) Corporation for National Research Initiatives package org.python.core; import java.lang.reflect.Field; import java.lang.reflect.Modifier; public class PyReflectedField extends PyObject { public Field field; public PyReflectedField() { } public PyReflectedField(Field field) { this.field = field; } public PyObject _doget(PyObject self) { Object iself = null; if (!Modifier.isStatic(field.getModifiers())) { if (self == null) return this; iself = Py.tojava(self, field.getDeclaringClass()); } Object value; try { value = field.get(iself); } catch (IllegalAccessException exc) { throw Py.JavaError(exc); } return Py.java2py(value); } public boolean _doset(PyObject self, PyObject value) { Object iself = null; if (!Modifier.isStatic(field.getModifiers())) { if (self == null) { throw Py.AttributeError("set instance variable as static: " + field.toString()); } iself = Py.tojava(self, field.getDeclaringClass()); } Object fvalue = Py.tojava(value, field.getType()); try { field.set(iself, fvalue); } catch (IllegalAccessException exc) { throw Py.JavaError(exc); } return true; } public String toString() { return "<reflected field " + field.toString() + " " + Py.idstr(this) + ">"; } }