Пример #1
0
  public Type createTypeForClass(TypeClassInfo info) {
    Class javaType = info.getTypeClass();
    Type result = null;
    boolean newType = true;

    if (info.getType() != null) {
      result = createUserType(info);
    } else if (isHolder(javaType)) {
      result = createHolderType(info);
    } else if (isArray(javaType)) {
      result = createArrayType(info);
    } else if (isMap(javaType)) {
      result = createMapType(info);
    } else if (isCollection(javaType)) {
      result = createCollectionType(info);
    } else if (isEnum(javaType)) {
      result = createEnumType(info);
    } else {
      Type type = getTypeMapping().getType(javaType);
      if (type == null) {
        type = createDefaultType(info);
      } else {
        newType = false;
      }

      result = type;
    }

    if (newType && !getConfiguration().isDefaultNillable()) result.setNillable(false);

    return result;
  }
Пример #2
0
  protected Type createMapType(TypeClassInfo info, Type keyType, Type valueType) {
    QName schemaType = createMapQName(info, keyType, valueType);
    MapType type = new MapType(schemaType, keyType, valueType);
    type.setTypeMapping(getTypeMapping());
    type.setTypeClass(info.getTypeClass());

    return type;
  }
Пример #3
0
  protected Type createUserType(TypeClassInfo info) {
    try {
      Type type = (Type) info.getType().newInstance();

      QName name = info.getTypeName();
      if (name == null) name = createQName(info.getTypeClass());

      type.setSchemaType(name);
      type.setTypeClass(info.getTypeClass());
      type.setTypeMapping(getTypeMapping());

      return type;
    } catch (InstantiationException e) {
      throw new XFireRuntimeException(
          "Couldn't instantiate type classs " + info.getType().getName(), e);
    } catch (IllegalAccessException e) {
      throw new XFireRuntimeException("Couldn't access type classs " + info.getType().getName(), e);
    }
  }
Пример #4
0
  protected Type createArrayType(TypeClassInfo info) {
    ArrayType type = new ArrayType();
    type.setTypeMapping(getTypeMapping());
    type.setTypeClass(info.getTypeClass());
    type.setSchemaType(createCollectionQName(info, type.getComponentType()));

    if (info.getMinOccurs() != -1) type.setMinOccurs(info.getMinOccurs());
    if (info.getMaxOccurs() != -1) type.setMaxOccurs(info.getMaxOccurs());

    type.setFlat(info.isFlat());

    return type;
  }
Пример #5
0
  protected Type createCollectionTypeFromGeneric(TypeClassInfo info) {
    Type component = getOrCreateGenericType(info);

    CollectionType type = new CollectionType(component);
    type.setTypeMapping(getTypeMapping());

    QName name = info.getTypeName();
    if (name == null) name = createCollectionQName(info, component);

    type.setSchemaType(name);

    type.setTypeClass(info.getTypeClass());

    if (info.getMinOccurs() != -1) type.setMinOccurs(info.getMinOccurs());
    if (info.getMaxOccurs() != -1) type.setMaxOccurs(info.getMaxOccurs());

    type.setFlat(info.isFlat());

    return type;
  }