public JavaGenericType(JavaTypeInfo info) { super(info.getRawType()); this.info = info; }
private void write(JavaTypeInfo typeInfo, StringBuilder builder) { Class<?> rawType = typeInfo.getRawType(); builder.append(rawType.getName()); List<JavaTypeInfo> infos = typeInfo.getParameterTypesInfos(); if (!infos.isEmpty()) { builder.append("<"); for (int i = 0; i < infos.size(); i++) { JavaTypeInfo info = infos.get(i); if (i != 0) { builder.append(", "); } builder.append(info); } builder.append(">"); } } }
boolean allObject = true; for (JavaTypeInfo info : that.parameterTypeInfos) { if (!Object.class.equals(info.getRawType())) { allObject = false; break; boolean allObject = true; for (JavaTypeInfo info : parameterTypeInfos) { if (!Object.class.equals(info.getRawType())) { allObject = false; break;
@SuppressWarnings({"unchecked"}) public <T> Supplier<Collection<T>> createSupplier(Collection<T> collection, String name, JavaGenericType dataType, Document value, ClassLoader classLoader) { List<JavaTypeInfo> typeInfos = dataType.getTypeInfo().getParameterTypesInfos(); if (typeInfos.size() < 1) { // programming error throw new Fabric3Exception("Collection properties must have a value type"); } Class<?> type = typeInfos.get(0).getRawType(); List<Class<?>> types = new ArrayList<>(); types.add(type); Transformer<Node, ?> transformer = getTransformer(name, PROPERTY_TYPE, new JavaType(type), types); Element root = value.getDocumentElement(); NodeList nodes = root.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i).getFirstChild(); T val = (T) transformer.transform(node, classLoader); collection.add(val); } return () -> collection; }
@SuppressWarnings({"unchecked"}) public <T> Supplier<Collection<T>> createSupplier(Collection<T> collection, String name, JavaGenericType dataType, Document value, ClassLoader classLoader) { List<JavaTypeInfo> typeInfos = dataType.getTypeInfo().getParameterTypesInfos(); if (typeInfos.size() < 1) { // programming error throw new Fabric3Exception("Collection properties must have a value type"); } Class<?> type = typeInfos.get(0).getRawType(); List<Class<?>> types = new ArrayList<>(); types.add(type); Transformer<Node, ?> transformer = getTransformer(name, PROPERTY_TYPE, new JavaType(type), types); Element root = value.getDocumentElement(); NodeList nodes = root.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i).getFirstChild(); T val = (T) transformer.transform(node, classLoader); collection.add(val); } return () -> collection; }
@SuppressWarnings({"unchecked"}) public <T> ObjectFactory<Collection<T>> createFactory(Collection<T> collection, String name, JavaGenericType dataType, Document value, ClassLoader classLoader) throws PropertyTransformException { try { List<JavaTypeInfo> typeInfos = dataType.getLogical().getParameterTypesInfos(); if (typeInfos.size() < 1) { // programming error throw new PropertyTransformException("Collection properties must have a value type"); } Class<?> type = typeInfos.get(0).getRawType(); List<Class<?>> types = new ArrayList<Class<?>>(); types.add(type); Transformer<Node, ?> transformer = getTransformer(name, PROPERTY_TYPE, new JavaClass(type), types); Element root = value.getDocumentElement(); NodeList nodes = root.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { Node node = nodes.item(i).getFirstChild(); T val = (T) transformer.transform(node, classLoader); collection.add(val); } return new SingletonObjectFactory<Collection<T>>(collection); } catch (TransformationException e) { throw new PropertyTransformException("Unable to transform property value: " + name, e); } }
public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof DataType)) { return false; } DataType other = (DataType) o; if (!getType().equals(other.getType())) { return false; } if (other instanceof JavaGenericType) { boolean bound = false; // unbound parameters are equivalent to non-generic JavaGenericType otherType = (JavaGenericType) other; for (JavaTypeInfo info : otherType.getTypeInfo().getParameterTypesInfos()) { if (!Object.class.equals(info.getRawType())) { bound = true; break; } } return !bound && otherType.getTypeInfo().getRawType().equals(getType()); } return getType().equals(other.getType()); }
Class<?> keyType = typeInfos.get(0).getRawType(); List<Class<?>> keyTypes = new ArrayList<>(); keyTypes.add(keyType); Class<?> valueType = type.getTypeInfo().getParameterTypesInfos().get(1).getRawType(); List<Class<?>> valueTypes = new ArrayList<>(); valueTypes.add(valueType);
Class<?> keyType = typeInfos.get(0).getRawType(); List<Class<?>> keyTypes = new ArrayList<>(); keyTypes.add(keyType); Class<?> valueType = type.getTypeInfo().getParameterTypesInfos().get(1).getRawType(); List<Class<?>> valueTypes = new ArrayList<>(); valueTypes.add(valueType);
Class<?> keyType = typeInfos.get(0).getRawType(); List<Class<?>> keyTypes = new ArrayList<Class<?>>(); keyTypes.add(keyType); Class<?> valueType = type.getLogical().getParameterTypesInfos().get(1).getRawType(); List<Class<?>> valueTypes = new ArrayList<Class<?>>(); valueTypes.add(valueType);
boolean bound = false; // unbound parameters are equivalent to non-generic types for (JavaTypeInfo info : getTypeInfo().getParameterTypesInfos()) { if (!Object.class.equals(info.getRawType())) { bound = true; break; return getTypeInfo().getRawType().equals(otherClazz.getType()); } else { return other instanceof JavaGenericType && getTypeInfo().equals(((JavaGenericType) other).getTypeInfo()); return getTypeInfo().getRawType().equals(other.getType());