@Override public boolean isAssignableFrom(final MetaClass clazz) { Boolean assignable = ASSIGNABLE_CACHE.get(clazz); if (assignable != null) { return assignable; } // XXX not sure if this is uncached on purpose. // FIXME there are no tests or documentation for this case if (!isPrimitive() && NULL_TYPE.equals(clazz)) return true; if (isArray() && clazz.isArray()) { return getOuterComponentType().isAssignableFrom(clazz.getOuterComponentType()) && getArrayDimensions(this) == getArrayDimensions(clazz); } final MetaClass sup; if (getFullyQualifiedName().equals(Object.class.getName())) { assignable = true; } else if (this.getFullyQualifiedName().equals(clazz.getFullyQualifiedName())) { assignable = true; } else if (isInterface() && _hasInterface(clazz.getInterfaces(), this.getErased())) { assignable = true; } else assignable = (sup = clazz.getSuperClass()) != null && isAssignableFrom(sup); ASSIGNABLE_CACHE.put(clazz, assignable); return assignable; }
@Override public boolean isAssignableFrom(final MetaClass clazz) { Boolean assignable = ASSIGNABLE_CACHE.get(clazz); if (assignable != null) { return assignable; } // XXX not sure if this is uncached on purpose. // FIXME there are no tests or documentation for this case if (!isPrimitive() && NULL_TYPE.equals(clazz)) return true; if (isArray() && clazz.isArray()) { return getOuterComponentType().isAssignableFrom(clazz.getOuterComponentType()) && getArrayDimensions(this) == getArrayDimensions(clazz); } final MetaClass sup; if (getFullyQualifiedName().equals(Object.class.getName())) { assignable = true; } else if (this.getFullyQualifiedName().equals(clazz.getFullyQualifiedName())) { assignable = true; } else if (isInterface() && _hasInterface(clazz.getInterfaces(), this.getErased())) { assignable = true; } else assignable = (sup = clazz.getSuperClass()) != null && isAssignableFrom(sup); ASSIGNABLE_CACHE.put(clazz, assignable); return assignable; }
public static void assertAssignableTypes(final Context context, final MetaClass from, final MetaClass to) { if (!to.asBoxed().isAssignableFrom(from.asBoxed())) { if (to.isArray() && from.isArray() && GenUtil.getArrayDimensions(to) == GenUtil.getArrayDimensions(from) && to.getOuterComponentType().isAssignableFrom(from.getOuterComponentType())) { return; } if (!context.isPermissiveMode()) { if (classAliases.contains(from.getFullyQualifiedName()) && classAliases.contains(to.getFullyQualifiedName())) { // handle convertibility between MetaClass API and java Class reference. return; } throw new InvalidTypeException(to.getFullyQualifiedName() + " is not assignable from " + from.getFullyQualifiedName()); } } }
public static void assertAssignableTypes(final Context context, final MetaClass from, final MetaClass to) { if (!to.asBoxed().isAssignableFrom(from.asBoxed())) { if (to.isArray() && from.isArray() && GenUtil.getArrayDimensions(to) == GenUtil.getArrayDimensions(from) && to.getOuterComponentType().isAssignableFrom(from.getOuterComponentType())) { return; } if (!context.isPermissiveMode()) { if (classAliases.contains(from.getFullyQualifiedName()) && classAliases.contains(to.getFullyQualifiedName())) { // handle convertibility between MetaClass API and java Class reference. return; } throw new InvalidTypeException(to.getFullyQualifiedName() + " is not assignable from " + from.getFullyQualifiedName()); } } }
public static String getVarName(final MetaClass clazz) { return clazz.isArray() ? getArrayVarName(clazz.getOuterComponentType().getFullyQualifiedName()) + "_D" + GenUtil.getArrayDimensions(clazz) : getVarName(clazz.asBoxed().getFullyQualifiedName()); }
public static String getVarName(final MetaClass clazz) { return clazz.isArray() ? getArrayVarName(clazz.getOuterComponentType().getFullyQualifiedName()) + "_D" + GenUtil.getArrayDimensions(clazz) : getVarName(clazz.asBoxed().getFullyQualifiedName()); }
@Override public MetaClass getType() { final MetaClass ret; final int dims = GenUtil.getArrayDimensions(ref.getType()); if (ref.getType().isArray() && idx.length > 0) { final int newDims = dims - idx.length; if (newDims > 0) { ret = ref.getType().getOuterComponentType().asArrayOf(dims - idx.length); } else { ret = ref.getType().getOuterComponentType(); } } else { ret = ref.getType(); } return ret; } };
@Override public MetaClass getType() { final MetaClass ret; final int dims = GenUtil.getArrayDimensions(ref.getType()); if (ref.getType().isArray() && idx.length > 0) { final int newDims = dims - idx.length; if (newDims > 0) { ret = ref.getType().getOuterComponentType().asArrayOf(dims - idx.length); } else { ret = ref.getType().getOuterComponentType(); } } else { ret = ref.getType(); } return ret; } };
static BuildMetaClass generateArrayMarshaller(final MetaClass arrayType, final String marshallerClassName, final boolean gwtTarget) { final MetaClass toMap = arrayType.getOuterComponentType(); final int dimensions = GenUtil.getArrayDimensions(arrayType);
static BuildMetaClass generateArrayMarshaller(final MetaClass arrayType, final String marshallerClassName, final boolean gwtTarget) { final MetaClass toMap = arrayType.getOuterComponentType(); final int dimensions = GenUtil.getArrayDimensions(arrayType);