/** * Introspect the property * @param javaElement * @return */ private void introspect(Property property, JavaElementImpl javaElement) { // XMLType xmlType = new XMLType(property.getXSDElement(), property.getXSDType()); // property.getDataType().setLogical(xmlType); mediator.getDataBindings().introspectType(property.getDataType(), null); }
private <B> void validateTypes(ComponentProperty property, Class<B> type) { // JAXB seems to do some strange things with conversions, so // we can't rely on the databinding conversion from Node->Java to catch // incompatible types. DataType prop1 = property.getProperty().getDataType(); if ( (prop1 != null) && (type.isAssignableFrom(prop1.getPhysical())) ) { return; } else if ( simpleTypeMapper.getXMLType(type) != null ) { if ( simpleTypeMapper.getXMLType(type).getQName().equals(property.getXSDType())) return; } else if ( isSimpleType(property) ) { if ( type.isAssignableFrom(simpleTypeMapper.getJavaType(property.getXSDType()))) return; } throw new IllegalArgumentException("Property type " + prop1.getPhysical().getName() + " is not compatible with " + type.getName()); }
@Override public <T> void visitEnd(Class<T> clazz, JavaImplementation type) throws IntrospectionException { for (Property property : type.getProperties()) { String name = property.getName(); JavaElementImpl element = type.getPropertyMembers().get(name); introspect(property, element); DataType dt = property.getDataType(); Object logical = dt.getLogical(); if (logical instanceof XMLType && logical != XMLType.UNKNOWN) { XMLType xmlType = (XMLType)logical; property.setXSDType(xmlType.getTypeName()); property.setXSDElement(xmlType.getElementName()); } else { Class<?> baseType = JavaIntrospectionHelper.getBaseType(element.getType(), element.getGenericType()); QName typeName = JavaXMLMapper.getXMLType(baseType); property.setXSDType(typeName); } } super.visitEnd(clazz, type); }
new XMLType(null, this.property.getXSDType())); targetDataType = property.getDataType(); if (targetDataType == null) { TypeInfo typeInfo = null;