scriptbytecodeadapter.java
来自「Groovy动态语言 运行在JVM中的动态语言 可以方便的处理业务逻辑变化大的业」· Java 代码 · 共 834 行 · 第 1/3 页
JAVA
834 行
public static Object getFieldOnSuperSafe(Class senderClass, Object receiver, String messageName) throws Throwable{
return getFieldOnSuper(senderClass,receiver,messageName);
}
public static Object getFieldOnSuperSpreadSafe(Class senderClass, Object receiver, String messageName) throws Throwable{
if (! (receiver instanceof List)) return getFieldOnSuper(senderClass,receiver,messageName);
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
answer.add(getFieldOnSuper(senderClass, it.next(), messageName));
}
return answer;
}
// --------------------------------------------------------
// field handling super: set
// --------------------------------------------------------
public static void setFieldOnSuper(Object messageArgument,Class senderClass, Object receiver, String messageName) throws Throwable{
try {
if (receiver instanceof Class) {
InvokerHelper.setAttribute(receiver,messageName,messageArgument);
} else {
MetaClass mc = ((GroovyObject) receiver).getMetaClass();
mc.setAttribute(senderClass, receiver, messageName, messageArgument, true, true);
}
} catch (GroovyRuntimeException gre) {
unwrap(gre);
}
}
public static void setFieldOnSuperSafe(Object messageArgument,Class senderClass, Object receiver, String messageName) throws Throwable{
setFieldOnSuper(messageArgument,senderClass,receiver,messageName);
}
public static void setFieldOnSuperSpreadSafe(Object messageArgument,Class senderClass, Object receiver, String messageName) throws Throwable{
if (! (receiver instanceof List)) {
setFieldOnSuper(messageArgument,senderClass,receiver,messageName);
return;
}
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
setFieldOnSuper(messageArgument,senderClass, it.next(), messageName);
}
}
// --------------------------------------------------------
// normal field handling : get
// --------------------------------------------------------
public static Object getField(Class senderClass, Object receiver, String messageName) throws Throwable{
try {
return InvokerHelper.getAttribute(receiver, messageName);
} catch (GroovyRuntimeException gre) {
return unwrap(gre);
}
}
public static Object getFieldSafe(Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return null;
return getField(senderClass,receiver,messageName);
}
public static Object getFieldSpreadSafe(Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return null;
if (! (receiver instanceof List)) return getField(senderClass,receiver,messageName);
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
answer.add(getFieldSafe(senderClass, it.next(), messageName));
}
return answer;
}
// --------------------------------------------------------
// normal field handling : set
// --------------------------------------------------------
public static void setField(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
try {
InvokerHelper.setAttribute(receiver, messageName,messageArgument);
} catch (GroovyRuntimeException gre) {
unwrap(gre);
}
}
public static void setFieldSafe(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return;
setField(messageArgument,senderClass,receiver,messageName);
}
public static void setFieldSpreadSafe(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return;
if (! (receiver instanceof List)) {
setField(messageArgument,senderClass,receiver,messageName);
return;
}
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
setFieldSafe(messageArgument,senderClass, it.next(), messageName);
}
}
// --------------------------------------------------------
// normal GroovyObject field handling : get
// --------------------------------------------------------
public static Object getGroovyObjectField(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
return receiver.getMetaClass().getAttribute(receiver,messageName);
}
public static Object getGroovyObjectFieldSafe(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (receiver==null) return null;
return receiver.getMetaClass().getAttribute(receiver,messageName);
}
public static Object getGroovyObjectFieldSpreadSafe(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (receiver==null) return null;
if (! (receiver instanceof List)) return getGroovyObjectField(senderClass,receiver,messageName);
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
answer.add(getFieldSafe(senderClass, it.next(), messageName));
}
return answer;
}
// --------------------------------------------------------
// normal field handling : set
// --------------------------------------------------------
public static void setGroovyObjectField(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
receiver.getMetaClass().setAttribute(receiver,messageName,messageArgument);
}
public static void setGroovyObjectFieldSafe(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (receiver==null) return;
receiver.getMetaClass().setAttribute(receiver,messageName,messageArgument);
}
public static void setGroovyObjectFieldSpreadSafe(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (receiver==null) return;
if (! (receiver instanceof List)) {
setGroovyObjectField(messageArgument,senderClass,receiver,messageName);
return;
}
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
setFieldSafe(messageArgument,senderClass, it.next(), messageName);
}
}
// --------------------------------------------------------
// Property handling super: get
// --------------------------------------------------------
public static Object getPropertyOnSuper(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
return invokeMethodOnSuperN(senderClass, receiver, "getProperty", new Object[]{messageName});
}
public static Object getPropertyOnSuperSafe(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
return getPropertyOnSuper(senderClass,receiver,messageName);
}
public static Object getPropertyOnSuperSpreadSafe(Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (! (receiver instanceof List)) return getPropertyOnSuper(senderClass,receiver,messageName);
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
answer.add(getPropertySafe(senderClass, it.next(), messageName));
}
return answer;
}
// --------------------------------------------------------
// Property handling super: set
// --------------------------------------------------------
public static void setPropertyOnSuper(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
try {
InvokerHelper.setAttribute(receiver, messageName,messageArgument);
} catch (GroovyRuntimeException gre) {
unwrap(gre);
}
}
public static void setPropertyOnSuperSafe(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
setPropertyOnSuper(messageArgument, senderClass,receiver,messageName);
}
public static void setPropertyOnSuperSpreadSafe(Object messageArgument, Class senderClass, GroovyObject receiver, String messageName) throws Throwable{
if (! (receiver instanceof List)) {
setPropertyOnSuper(messageArgument, senderClass,receiver,messageName);
return;
}
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
setPropertySafe(messageArgument, senderClass, it.next(), messageName);
}
}
// --------------------------------------------------------
// normal Property handling : get
// --------------------------------------------------------
public static Object getProperty(Class senderClass, Object receiver, String messageName) throws Throwable{
try {
return InvokerHelper.getProperty(receiver, messageName);
} catch (GroovyRuntimeException gre) {
return unwrap(gre);
}
}
public static Object getPropertySafe(Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return null;
return getProperty(senderClass,receiver,messageName);
}
public static Object getPropertySpreadSafe(Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return null;
if (! (receiver instanceof List)) return getProperty(senderClass,receiver,messageName);
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
answer.add(getPropertySafe(senderClass, it.next(), messageName));
}
return answer;
}
// --------------------------------------------------------
// normal Property handling : set
// --------------------------------------------------------
public static void setProperty(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
try {
InvokerHelper.setProperty(receiver, messageName,messageArgument);
} catch (GroovyRuntimeException gre) {
unwrap(gre);
}
}
public static void setPropertySafe(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return;
setProperty(messageArgument,senderClass,receiver,messageName);
}
public static void setPropertySpreadSafe(Object messageArgument, Class senderClass, Object receiver, String messageName) throws Throwable{
if (receiver==null) return;
if (! (receiver instanceof List)) {
setProperty(messageArgument, senderClass, receiver, messageName);
return;
}
List list = (List) receiver;
List answer = new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
setPropertySafe(messageArgument, senderClass, it.next(), messageName);
}
}
// --------------------------------------------------------
// normal GroovyObject Property handling : get
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?