private void getImportStatements(String signature, IType declaringType) throws JavaModelException{ String erasure = Signature.getTypeErasure(signature); String resolvedTypeName = JavaModelUtil.getResolvedTypeName(erasure, declaringType); if (resolvedTypeName != null && !importStatements.contains(resolvedTypeName) && !resolvedTypeName.startsWith("java.lang")) { //$NON-NLS-1$ importStatements.add(resolvedTypeName); } String [] params = Signature.getTypeArguments(signature); for(int i=0;i<params.length; i++){ getImportStatements(params[i], declaringType); } }
/** * This method is intended for internal use only. This will add import statements for the specified * type if it is determined to be necessary. This does accept null parameters. It will not return null. * @see NewJavaClassOperation#getMethodStub(IMethod, String, String) * * @param refTypeSig * @param declaringType * @return String type signature * @throws JavaModelException */ private String resolveAndAdd(String refTypeSig, IType declaringType) throws JavaModelException { if(refTypeSig.indexOf(Signature.C_GENERIC_START, 0) != -1){ getImportStatements(refTypeSig, declaringType); } else { String resolvedTypeName = JavaModelUtil.getResolvedTypeName(refTypeSig, declaringType); // Could type not be resolved and is import statement missing? if (resolvedTypeName != null && !importStatements.contains(resolvedTypeName) && !resolvedTypeName.startsWith("java.lang")) { //$NON-NLS-1$ importStatements.add(resolvedTypeName); } } return Signature.toString(refTypeSig); }
private boolean hasGenericParams(IMethod method) { try { IType parentType = method.getDeclaringType(); String[] paramTypes = method.getParameterTypes(); int nP = paramTypes.length; for (int i = 0; i < nP; i++) { String type = paramTypes[i]; if (!isPrimitiveType(type)) { type = JavaModelUtil.getResolvedTypeName(type, parentType); if(type.indexOf(Signature.C_GENERIC_START, 0) != -1){ return true; } } } } catch (JavaModelException e) { Logger.getLogger().log(e); } return false; }