org.python.core.PyReflectedField Maven / Gradle / Ivy
Go to download
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
// 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 "";
}
}