public static Member getFieldOrWriteAccessor(Class clazz, String property, Class type) { for (Field f : clazz.getFields()) { if (property.equals(f.getName()) && (type == null || canConvert(f.getType(), type))) { return f; } } return getSetter(clazz, property, type); }
public static Method getSetter(Class clazz, String property, Class type) { String simple = "set" + property; property = ReflectionUtil.getSetter(property); for (Method meth : clazz.getMethods()) { if ((meth.getModifiers() & PUBLIC) != 0 && meth.getParameterTypes().length == 1 && (property.equals(meth.getName()) || simple.equals(meth.getName())) && (type == null || canConvert(meth.getParameterTypes()[0], type))) { return meth; } } return null; }
public static Member getFieldOrWriteAccessor(Class clazz, String property, Class type) { for (Field f : clazz.getFields()) { if (property.equals(f.getName()) && (type == null || canConvert(f.getType(), type))) { return f; } } return getSetter(clazz, property, type); }
public static Method getSetter(Class clazz, String property, Class type) { property = ReflectionUtil.getSetter(property); for (Method meth : clazz.getMethods()) { if ((meth.getModifiers() & PUBLIC) != 0 && meth.getParameterTypes().length == 1 && property.equals(meth.getName()) && (type == null || canConvert(meth.getParameterTypes()[0], type))) { return meth; } } return null; }
public static Method getSetter(Class clazz, String property, Class type) { String simple = "set" + property; property = ReflectionUtil.getSetter(property); for (Method meth : clazz.getMethods()) { if ((meth.getModifiers() & PUBLIC) != 0 && meth.getParameterTypes().length == 1 && (property.equals(meth.getName()) || simple.equals(meth.getName())) && (type == null || canConvert(meth.getParameterTypes()[0], type))) { return meth; } } return null; }
private boolean areCompatible(Class<?> leftClass, Class<?> rightClass) { return leftClass.equals(NullType.class) || rightClass.equals(NullType.class) || ( Number.class.isAssignableFrom(rightClass) && Number.class.isAssignableFrom(leftClass) ) || ( (rightClass.isPrimitive() || leftClass.isPrimitive()) && canConvert(boxPrimitive(leftClass), boxPrimitive(rightClass)) ); }
private boolean areCompatible(Class<?> leftClass, Class<?> rightClass) { return leftClass.equals(NullType.class) || rightClass.equals(NullType.class) || ( Number.class.isAssignableFrom(rightClass) && Number.class.isAssignableFrom(leftClass) ) || ( (rightClass.isPrimitive() || leftClass.isPrimitive()) && canConvert(boxPrimitive(leftClass), boxPrimitive(rightClass)) ); }
private void enforceTypeSafety(Class required, Class actual) { if (!required.isAssignableFrom(actual) && !DataConversion.canConvert(actual, required)) { throw new CompileException("type mismatch in foreach: expected: " + required.getName() + "; but found: " + getBaseComponentType(actual), expr, start); } } }
private void enforceTypeSafety(Class required, Class actual) { if (!required.isAssignableFrom(actual) && !DataConversion.canConvert(actual, required)) { throw new CompileException("type mismatch in foreach: expected: " + required.getName() + "; but found: " + getBaseComponentType(actual), expr, start); } } }
public Object getReducedValueAccelerated(Object ctx, Object thisValue, VariableResolverFactory factory) { Object o = stmt.getReducedValueAccelerated(ctx, thisValue, factory); return o != null && DataConversion.canConvert( (Class) clsStmt.getReducedValueAccelerated(ctx, thisValue, factory), o.getClass()); }
public static boolean canConvert(Class toType, Class convertFrom) { if (isAssignableFrom(toType, convertFrom)) return true; if (CONVERTERS.containsKey(toType)) { return CONVERTERS.get(toType).canConvertFrom(toNonPrimitiveType(convertFrom)); } else if (toType.isArray() && canConvert(toType.getComponentType(), convertFrom)) { return true; } return false; }
public static boolean canConvert(Class toType, Class convertFrom) { if (isAssignableFrom(toType, convertFrom)) return true; if (CONVERTERS.containsKey(toType)) { return CONVERTERS.get(toType).canConvertFrom(toNonPrimitiveType(convertFrom)); } else if (toType.isArray() && canConvert(toType.getComponentType(), convertFrom)) { return true; } return false; }
public Object getReducedValue(Object ctx, Object thisValue, VariableResolverFactory factory) { try { Object o = stmt.getReducedValue(ctx, thisValue, factory); if (o == null) return false; Class i = (Class) clsStmt.getReducedValue(ctx, thisValue, factory); if (i == null) throw new ClassCastException(); return DataConversion.canConvert(i, o.getClass()); } catch (ClassCastException e) { throw new RuntimeException("not a class reference: " + clsStmt.getName()); } }
public Object getReducedValueAccelerated(Object ctx, Object thisValue, VariableResolverFactory factory) { Object o = stmt.getReducedValueAccelerated(ctx, thisValue, factory); return o != null && DataConversion.canConvert( (Class) clsStmt.getReducedValueAccelerated(ctx, thisValue, factory), o.getClass()); }
public static boolean canConvert(final MetaClass to, final MetaClass from) { try { final Class<?> fromClazz = from.asClass(); final Class<?> toClass = to.asClass(); return DataConversion.canConvert(toClass, fromClazz); } catch (final Throwable t) { return false; } }
public static boolean canConvert(final MetaClass to, final MetaClass from) { try { final Class<?> fromClazz = from.asClass(); final Class<?> toClass = to.asClass(); return DataConversion.canConvert(toClass, fromClazz); } catch (final Throwable t) { return false; } }
private void subCompile(String ex) { if (colType == null) { subCompileExpression(ex.toCharArray(), pCtx); } else { Class r = ((ExecutableStatement) subCompileExpression(ex.toCharArray(), pCtx)).getKnownEgressType(); if (!colType.isAssignableFrom(r) && (isStrongType() || !DataConversion.canConvert(r, colType))) { throw new CompileException("expected type: " + colType.getName() + "; but found: " + r.getName()); } } }
public Object getReducedValue(Object ctx, Object thisValue, VariableResolverFactory factory) { try { Object o = stmt.getReducedValue(ctx, thisValue, factory); if (o == null) return false; Class i = (Class) clsStmt.getReducedValue(ctx, thisValue, factory); if (i == null) throw new ClassCastException(); return DataConversion.canConvert(i,o.getClass()); } catch (ClassCastException e) { throw new CompileException("not a class reference: " + clsStmt.getName()); } }
private void subCompile(int start, int offset) { if (colType == null) { subCompileExpression(property, start, offset, pCtx); } else { Class r = ((ExecutableStatement) subCompileExpression(property, start, offset, pCtx)).getKnownEgressType(); if (r != null && !isAssignableFrom(colType, r) && (isStrongType() || !DataConversion.canConvert(r, colType))) { throw new CompileException("expected type: " + colType.getName() + "; but found: " + r.getName(), property, cursor); } } }
private void subCompile(int start, int offset) { if (colType == null) { subCompileExpression(property, start, offset, pCtx); } else { Class r = ((ExecutableStatement) subCompileExpression(property, start, offset, pCtx)).getKnownEgressType(); if (r != null && !isAssignableFrom(colType, r) && (isStrongType() || !DataConversion.canConvert(r, colType))) { throw new CompileException("expected type: " + colType.getName() + "; but found: " + r.getName(), property, cursor); } } }