public boolean isParameterizedType(TypeMirror t) { if (t instanceof DeclaredType) { DeclaredType d = (DeclaredType) t; return !d.getActualTypeArguments().isEmpty(); } return false; }
public boolean isParameterizedType(TypeMirror t) { if (t instanceof DeclaredType) { DeclaredType d = (DeclaredType) t; return !d.getActualTypeArguments().isEmpty(); } return false; }
public TypeMirror getTypeArgument(TypeMirror typeMirror, int i) { if (typeMirror instanceof DeclaredType){ DeclaredType d = (DeclaredType)typeMirror; TypeMirror[] args = d.getActualTypeArguments().toArray(new TypeMirror[0]); return args[i]; } else throw new IllegalArgumentException(); }
public TypeMirror getTypeArgument(TypeMirror typeMirror, int i) { if (typeMirror instanceof DeclaredType){ DeclaredType d = (DeclaredType)typeMirror; TypeMirror[] args = d.getActualTypeArguments().toArray(new TypeMirror[0]); return args[i]; } else throw new IllegalArgumentException(); }
@Override protected String getCollectionTypeConversion(DeclaredType declaredType) throws TemplateModelException { Collection<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments(); if (actualTypeArguments.size() == 1) { return convert(actualTypeArguments.iterator().next()) + "[]"; } else { return "object[]"; } }
@Nonnull private static TypeMirror getFirstTypeParam( @Nonnull DeclaredType type ) throws NotFoundException { Collection<TypeMirror> typeArguments = type.getActualTypeArguments(); if ( typeArguments.isEmpty() ) { throw new NotFoundException( "No typeArguments found for <" + type + ">" ); } return typeArguments.iterator().next(); }
public Collection<TypeMirror> getActualTypeArguments() { return TypeMirrorDecorator.decorate(((DeclaredType) delegate).getActualTypeArguments()); }
public void visitDeclaredType(DeclaredType declaredType) { TypeDeclaration declaration = declaredType.getDeclaration(); if (declaration != null) { String qualifiedName = declaration.getQualifiedName(); if (!qualifiedName.startsWith("java.lang")) { importedTypes.put(qualifiedName, declaration); } } for (TypeMirror type : declaredType.getActualTypeArguments()) { type.accept(this); } }
private boolean isDataHandlers(DecoratedTypeMirror type) { if (type.isCollection()) { Collection<TypeMirror> typeArgs = ((DeclaredType) type).getActualTypeArguments(); if ((typeArgs != null) && (typeArgs.size() == 1)) { return isDataHandler((DecoratedTypeMirror) typeArgs.iterator().next()); } } else if (type.isArray()) { return isDataHandler((DecoratedTypeMirror) ((ArrayType) type).getComponentType()); } return false; }
private boolean isDataHandlers(DecoratedTypeMirror type) { if (type.isCollection()) { Collection<TypeMirror> typeArgs = ((DeclaredType) type).getActualTypeArguments(); if ((typeArgs != null) && (typeArgs.size() == 1)) { return isDataHandler((DecoratedTypeMirror) typeArgs.iterator().next()); } } else if (type.isArray()) { return isDataHandler((DecoratedTypeMirror) ((ArrayType) type).getComponentType()); } return false; }
private boolean isDataHandlers(DecoratedTypeMirror type) { if (type.isCollection()) { Collection<TypeMirror> typeArgs = ((DeclaredType) type).getActualTypeArguments(); if ((typeArgs != null) && (typeArgs.size() == 1)) { return isDataHandler((DecoratedTypeMirror) typeArgs.iterator().next()); } } else if (type.isArray()) { return isDataHandler((DecoratedTypeMirror) ((ArrayType) type).getComponentType()); } return false; }
public <T> TypeMirror erasure(TypeMirror t) { Types tu = env.getTypeUtils(); t = tu.getErasure(t); if(t instanceof DeclaredType) { DeclaredType dt = (DeclaredType)t; if(!dt.getActualTypeArguments().isEmpty()) return tu.getDeclaredType(dt.getDeclaration()); } return t; }
public <T> TypeMirror erasure(TypeMirror t) { Types tu = env.getTypeUtils(); t = tu.getErasure(t); if(t instanceof DeclaredType) { DeclaredType dt = (DeclaredType)t; if(!dt.getActualTypeArguments().isEmpty()) return tu.getDeclaredType(dt.getDeclaration()); } return t; }
/** * Add the component types of the given type mirror to the given set of imports. * * @param type The type. * @param imports The imports. */ protected void addComponentTypes(TypeMirror type, Set<String> imports) throws TemplateModelException { if (includeComponentTypes) { if (type instanceof MapType) { MapType mapType = ((MapType) type); imports.add(classnameFor.convert(mapType.getKeyType())); imports.add(classnameFor.convert(mapType.getValueType())); } else if (((DecoratedTypeMirror) type).isCollection()) { DeclaredType declaredType = (DeclaredType) type; Iterator<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments().iterator(); if (actualTypeArguments.hasNext()) { imports.add(classnameFor.convert(actualTypeArguments.next())); } } else if (((DecoratedTypeMirror) type).isArray()) { imports.add(classnameFor.convert(((ArrayType) type).getComponentType())); } } }
@Override public String convert(TypeMirror typeMirror) throws TemplateModelException { if (typeMirror instanceof ArrayType) { TypeMirror componentType = ((ArrayType) typeMirror).getComponentType(); if (!(componentType instanceof PrimitiveType) || (((PrimitiveType) componentType).getKind() != PrimitiveType.Kind.BYTE)) { return super.convert(componentType); } } else if (typeMirror instanceof DeclaredType) { DecoratedTypeMirror decoratedTypeMirror = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(typeMirror); if (decoratedTypeMirror.isCollection()) { DeclaredType declaredType = (DeclaredType) typeMirror; Iterator<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments().iterator(); if (actualTypeArguments.hasNext()) { return super.convert(actualTypeArguments.next()); } else { return Object.class.getName(); } } } return super.convert(typeMirror); }
@Override public String convert(TypeMirror typeMirror) throws TemplateModelException { if (typeMirror instanceof ArrayType) { TypeMirror componentType = ((ArrayType) typeMirror).getComponentType(); if (!(componentType instanceof PrimitiveType) || (((PrimitiveType) componentType).getKind() != PrimitiveType.Kind.BYTE)) { return super.convert(componentType); } } else if (typeMirror instanceof DeclaredType) { DecoratedTypeMirror decoratedTypeMirror = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(typeMirror); if (decoratedTypeMirror.isCollection()) { DeclaredType declaredType = (DeclaredType) typeMirror; Iterator<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments().iterator(); if (actualTypeArguments.hasNext()) { return super.convert(actualTypeArguments.next()); } else { return Object.class.getName(); } } } return super.convert(typeMirror); }
/** * If this is a collection type, return the type parameter of the collection, or null if this isn't a * parameterized collection type. * * @return the type parameter of the collection. */ public TypeMirror getCollectionItemType() { DecoratedTypeMirror accessorType = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(getAccessorType()); if (accessorType.isArray()) { return ((ArrayType) accessorType).getComponentType(); } else if (accessorType.isCollection()) { Iterator<TypeMirror> itemTypes = ((DeclaredType) accessorType).getActualTypeArguments().iterator(); if (!itemTypes.hasNext()) { AnnotationProcessorEnvironment env = Context.getCurrentEnvironment(); Types typeUtils = env.getTypeUtils(); return TypeMirrorDecorator.decorate(typeUtils.getDeclaredType(env.getTypeDeclaration(java.lang.Object.class.getName()))); } else { return itemTypes.next(); } } return null; }
/** * Gets the xml type for this web parameter. * * @return The xml type. */ public XmlType getXmlType() { try { XmlType xmlType = XmlTypeFactory.findSpecifiedType(this); if (xmlType == null) { TypeMirror type = getType(); if (isHolder()) { Collection<TypeMirror> typeArgs = ((DeclaredType) type).getActualTypeArguments(); if ((typeArgs == null) || (typeArgs.size() == 0)) { throw new ValidationException(getPosition(), "Unable to get the type of the holder."); } type = typeArgs.iterator().next(); } xmlType = XmlTypeFactory.getXmlType(type); } return xmlType; } catch (XmlTypeException e) { throw new ValidationException(getPosition(), e.getMessage()); } }
public static TypeMirror getNormalizedCollection(TypeMirror typeMirror) { TypeMirror base = findCollectionStrippedOfExtensions(typeMirror); if (base != null) { //now narrow the component type to what can be valid xml. Collection<TypeMirror> typeArgs = ((DeclaredType) base).getActualTypeArguments(); if (typeArgs.size() == 1) { TypeMirror candidateToNarrow = typeArgs.iterator().next(); NarrowingCollectionComponentVisitor visitor = new NarrowingCollectionComponentVisitor(); candidateToNarrow.accept(visitor); TypeMirror narrowing = visitor.getResult(); if (narrowing != null) { TypeDeclaration decl = ((DeclaredType) base).getDeclaration(); while (decl instanceof DecoratedTypeDeclaration) { decl = (TypeDeclaration) ((DecoratedTypeDeclaration) decl).getDelegate(); } while (narrowing instanceof DecoratedTypeMirror) { narrowing = ((DecoratedTypeMirror) narrowing).getDelegate(); } base = Context.getCurrentEnvironment().getTypeUtils().getDeclaredType(decl, narrowing); } } } return TypeMirrorDecorator.decorate(base); }
private JsonPropertyDeclaration(final PropertyDeclaration propertyDeclaration) { super(propertyDeclaration.getGetter(), propertyDeclaration.getSetter()); DecoratedTypeMirror decoratedPropertyType = (DecoratedTypeMirror) TypeMirrorDecorator.decorate(getPropertyType()); isList = decoratedPropertyType.isCollection() || decoratedPropertyType.isArray(); if (decoratedPropertyType.isCollection() && getPropertyType() instanceof DeclaredType) { final DeclaredType declaredType = (DeclaredType) getPropertyType(); final Collection<TypeMirror> actualTypeArguments = declaredType.getActualTypeArguments(); if(actualTypeArguments != null && actualTypeArguments.size() == 1) { targetType = TypeMirrorDecorator.decorate(actualTypeArguments.iterator().next()); } else { targetType = getPropertyType(); } } else if (decoratedPropertyType.isArray() && getPropertyType() instanceof ArrayType) { final ArrayType arrayType = (ArrayType) getPropertyType(); targetType = TypeMirrorDecorator.decorate(arrayType.getComponentType()); } else { targetType = getPropertyType(); } }