X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/util/JavaModelUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/util/JavaModelUtil.java index a098975..d3b4949 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/util/JavaModelUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/util/JavaModelUtil.java @@ -1,10 +1,10 @@ /******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials + * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html - * + * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ @@ -36,13 +36,13 @@ import org.eclipse.core.runtime.IPath; * Utility methods for the Java Model. */ public class JavaModelUtil { - - /** + + /** * Finds a type by its qualified type name (dot separated). * @param jproject The java project to search in * @param str The fully qualified name (type name with enclosing type names and package (all separated by dots)) * @return The type found, or null if not existing - */ + */ // public static IType findType(IJavaProject jproject, String fullyQualifiedName) throws JavaModelException { // //workaround for bug 22883 // IType type= jproject.findType(fullyQualifiedName); @@ -54,10 +54,10 @@ public class JavaModelUtil { // type= findType(root, fullyQualifiedName); // if (type != null && type.exists()) // return type; -// } +// } // return null; // } - + /** * Returns true if the given package fragment root is * referenced. This means it is own by a different project but is referenced @@ -73,7 +73,7 @@ public class JavaModelUtil { // } return false; } - + // private static IType findType(IPackageFragmentRoot root, String fullyQualifiedName) throws JavaModelException{ // IJavaElement[] children= root.getChildren(); // for (int i= 0; i < children.length; i++) { @@ -86,10 +86,10 @@ public class JavaModelUtil { // if (type != null && type.exists()) // return type; // } -// } +// } // return null; // } - + // private static IType findType(IPackageFragment pack, String fullyQualifiedName) throws JavaModelException{ // ICompilationUnit[] cus= pack.getCompilationUnits(); // for (int i= 0; i < cus.length; i++) { @@ -101,7 +101,7 @@ public class JavaModelUtil { // } // return null; // } - + // private static IType findType(ICompilationUnit cu, String fullyQualifiedName) throws JavaModelException{ // IType[] types= cu.getAllTypes(); // for (int i= 0; i < types.length; i++) { @@ -111,15 +111,15 @@ public class JavaModelUtil { // } // return null; // } - - /** + + /** * Finds a type by package and type name. * @param jproject the java project to search in * @param pack The package name * @param typeQualifiedName the type qualified name (type name with enclosing type names (separated by dots)) * @return the type found, or null if not existing * @deprecated Use IJavaProject.findType(String, String) instead - */ + */ // public static IType findType(IJavaProject jproject, String pack, String typeQualifiedName) throws JavaModelException { // return jproject.findType(pack, typeQualifiedName); // } @@ -142,18 +142,18 @@ public class JavaModelUtil { // if (!(result instanceof IPackageFragment)) { // result= null; // } -// +// // } // return result; -// } - - /** +// } + + /** * Finds a type in a compilation unit. Typical usage is to find the corresponding * type in a working copy. * @param cu the compilation unit to search in * @param typeQualifiedName the type qualified name (type name with enclosing type names (separated by dots)) * @return the type found, or null if not existing - */ + */ public static IType findTypeInCompilationUnit(ICompilationUnit cu, String typeQualifiedName) throws JavaModelException { IType[] types= cu.getAllTypes(); for (int i= 0; i < types.length; i++) { @@ -164,14 +164,14 @@ public class JavaModelUtil { } return null; } - - /** + + /** * Finds a a member in a compilation unit. Typical usage is to find the corresponding * member in a working copy. * @param cu the compilation unit (eg. working copy) to search in * @param member the member (eg. from the original) * @return the member found, or null if not existing - */ + */ public static IMember findMemberInCompilationUnit(ICompilationUnit cu, IMember member) throws JavaModelException { IJavaElement[] elements= cu.findElements(member); if (elements != null && elements.length > 0) { @@ -179,17 +179,17 @@ public class JavaModelUtil { } return null; } - - - /** + + + /** * Returns the element of the given compilation unit which is "equal" to the * given element. Note that the given element usually has a parent different * from the given compilation unit. - * + * * @param cu the cu to search in * @param element the element to look for * @return an element of the given cu "equal" to the given element - */ + */ public static IJavaElement findInCompilationUnit(ICompilationUnit cu, IJavaElement element) throws JavaModelException { IJavaElement[] elements= cu.findElements(element); if (elements != null && elements.length > 0) { @@ -197,7 +197,7 @@ public class JavaModelUtil { } return null; } - + /** * Returns the qualified type name of the given type using '.' as separators. * This is a replace for IType.getTypeQualifiedName() @@ -207,7 +207,7 @@ public class JavaModelUtil { public static String getTypeQualifiedName(IType type) { return type.getTypeQualifiedName('.'); } - + private static void getTypeQualifiedName(IType type, StringBuffer buf) { IType outerType= type.getDeclaringType(); if (outerType != null) { @@ -215,7 +215,7 @@ public class JavaModelUtil { buf.append('.'); } buf.append(type.getElementName()); - } + } /** * Returns the fully qualified name of the given type using '.' as separators. @@ -226,7 +226,7 @@ public class JavaModelUtil { public static String getFullyQualifiedName(IType type) { return type.getFullyQualifiedName('.'); } - + /** * Returns the fully qualified name of a type's container. (package name or enclosing type name) */ @@ -238,8 +238,8 @@ public class JavaModelUtil { return type.getPackageFragment().getElementName(); } } - - + + /** * Concatenates two names. Uses a dot for separation. * Both strings can be empty or null. @@ -254,10 +254,10 @@ public class JavaModelUtil { buf.append('.'); } buf.append(name2); - } + } return buf.toString(); } - + /** * Concatenates two names. Uses a dot for separation. * Both strings can be empty or null. @@ -272,10 +272,10 @@ public class JavaModelUtil { buf.append('.'); } buf.append(name2); - } + } return buf.toString(); - } - + } + /** * Evaluates if a member (possible from another package) is visible from * elements in a package. @@ -284,17 +284,17 @@ public class JavaModelUtil { */ public static boolean isVisible(IMember member, IPackageFragment pack) throws JavaModelException { int otherflags= member.getFlags(); - + if (Flags.isPublic(otherflags)) { return true; } else if (Flags.isPrivate(otherflags)) { return false; - } - + } + IPackageFragment otherpack= (IPackageFragment) findParentOfKind(member, IJavaElement.PACKAGE_FRAGMENT); return (pack != null && pack.equals(otherpack)); } - + /** * Returns the package fragment root of IJavaElement. If the given * element is already a package fragment root, the element itself is returned. @@ -304,7 +304,7 @@ public class JavaModelUtil { } /** - * Returns the parent of the supplied java element that conforms to the given + * Returns the parent of the supplied java element that conforms to the given * parent type or null, if such a parent doesn't exit. * @deprecated Use element.getParent().getAncestor(kind); */ @@ -314,7 +314,7 @@ public class JavaModelUtil { } return null; } - + /** * Finds a method in a type. * This searches for a method with the same name and signature. Parameter types are only @@ -348,7 +348,7 @@ public class JavaModelUtil { } return null; } - + /** * Finds a method declararion in a type's hierarchy. The search is top down, so this @@ -377,7 +377,7 @@ public class JavaModelUtil { // } // return null; // } - + /** * Finds a method implementation in a type's classhierarchy. The search is bottom-up, so this * returns the nearest overridden method. Does not find methods in interfaces or abstract methods. @@ -402,8 +402,8 @@ public class JavaModelUtil { // } // } // return null; -// } - +// } + /** * Tests if a method equals to the given signature. * Parameter types are only compared by the simple name, no resolving for @@ -432,7 +432,7 @@ public class JavaModelUtil { } return false; } - + /** * Checks whether the given type has a valid main method or not. */ @@ -445,22 +445,22 @@ public class JavaModelUtil { } return false; } - + /** * Checks if the field is boolean. */ public static boolean isBoolean(IField field) throws JavaModelException{ return field.getTypeSignature().equals(Signature.SIG_BOOLEAN); } - + /** * Returns true if the element is on the build path of the given project * @deprecated Use jproject.isOnClasspath(element); - */ + */ // public static boolean isOnBuildPath(IJavaProject jproject, IJavaElement element) throws JavaModelException { // return jproject.isOnClasspath(element); // } - + /** * Tests if the given element is on the class path of its containing project. Handles the case * that the containing project isn't a Java project. @@ -477,7 +477,7 @@ public class JavaModelUtil { * @param refTypeSig the type name in signature notation (for example 'QVector') * this can also be an array type, but dimensions will be ignored. * @param declaringType the context for resolving (type where the reference was made in) - * @return returns the fully qualified type name or build-in-type name. + * @return returns the fully qualified type name or build-in-type name. * if a unresoved type couldn't be resolved null is returned */ public static String getResolvedTypeName(String refTypeSig, IType declaringType) throws JavaModelException { @@ -488,8 +488,8 @@ public class JavaModelUtil { if (semi == -1) { throw new IllegalArgumentException(); } - String name= refTypeSig.substring(arrayCount + 1, semi); - + String name= refTypeSig.substring(arrayCount + 1, semi); + // String[][] resolvedNames= declaringType.resolveType(name); // if (resolvedNames != null && resolvedNames.length > 0) { // return JavaModelUtil.concatenateName(resolvedNames[0][0], resolvedNames[0][1]); @@ -499,7 +499,7 @@ public class JavaModelUtil { return Signature.toString(refTypeSig.substring(arrayCount)); } } - + /** * Returns if a CU can be edited. */ @@ -508,12 +508,12 @@ public class JavaModelUtil { cu= (ICompilationUnit) cu.getOriginalElement(); } IResource resource= cu.getResource(); - return (resource.exists() && !resource.isReadOnly()); + return (resource.exists() && !resource.getResourceAttributes().isReadOnly()); } /** * Finds a qualified import for a type name. - */ + */ // public static IImportDeclaration findImport(ICompilationUnit cu, String simpleName) throws JavaModelException { // IImportDeclaration[] existing= cu.getImports(); // for (int i= 0; i < existing.length; i++) { @@ -524,10 +524,10 @@ public class JavaModelUtil { // return existing[i]; // } // } -// } +// } // return null; // } - + /** * Returns the original if the given member. If the member is already * an original the input is returned. The returned member must not exist @@ -540,7 +540,7 @@ public class JavaModelUtil { return (IMember)cu.getOriginal(member); return member; } - + /* * XXX workaround for bug 18568 * http://bugs.eclipse.org/bugs/show_bug.cgi?id=18568 @@ -551,21 +551,21 @@ public class JavaModelUtil { ICompilationUnit cu= method.getCompilationUnit(); if (cu == null || ! cu.isWorkingCopy()) return method; - //use the workaround only if needed + //use the workaround only if needed if (! method.getElementName().equals(method.getDeclaringType().getElementName())) return (IMethod)cu.getOriginal(method); - + IType originalType = (IType)toOriginal(method.getDeclaringType()); IMethod[] methods = originalType.findMethods(method); boolean isConstructor = method.isConstructor(); for (int i=0; i < methods.length; i++) { - if (methods[i].isConstructor() == isConstructor) + if (methods[i].isConstructor() == isConstructor) return methods[i]; } return null; } catch(JavaModelException e){ return null; - } + } } /** @@ -576,8 +576,8 @@ public class JavaModelUtil { if (cu != null && cu.isWorkingCopy()) return (ICompilationUnit) cu.getOriginal(cu); return cu; - } - + } + /** * Returns the working copy of the given member. If the member is already in a * working copy or the member does not exist in the working copy the input is returned. @@ -600,7 +600,7 @@ public class JavaModelUtil { /** * Returns the working copy CU of the given CU. If the CU is already a * working copy or the CU has no working copy the input CU is returned. - */ + */ public static ICompilationUnit toWorkingCopy(ICompilationUnit cu) { if (!cu.isWorkingCopy()) { ICompilationUnit workingCopy= EditorUtility.getWorkingCopy(cu); @@ -610,10 +610,10 @@ public class JavaModelUtil { } return cu; } - + /* * http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 - * + * * Reconciling happens in a separate thread. This can cause a situation where the * Java element gets disposed after an exists test has been done. So we should not * log not present exceptions when they happen in working copies. @@ -633,7 +633,7 @@ public class JavaModelUtil { if (!unit.isWorkingCopy()) return true; } - return false; + return false; } // public static IType[] getAllSuperTypes(IType type, IProgressMonitor pm) throws JavaModelException { @@ -641,7 +641,7 @@ public class JavaModelUtil { // try{ // pm.beginTask("", 3); //$NON-NLS-1$ // ITypeHierarchy hierarchy= type.newSupertypeHierarchy(new SubProgressMonitor(pm, 1)); -// +// // IProgressMonitor subPm= new SubProgressMonitor(pm, 2); // List typeList= Arrays.asList(hierarchy.getAllSupertypes(type)); // subPm.beginTask("", typeList.size()); //$NON-NLS-1$ @@ -656,10 +656,10 @@ public class JavaModelUtil { // return (IType[]) types.toArray(new IType[types.size()]); // } finally { // pm.done(); -// } +// } // } - - + + public static boolean isExcludedPath(IPath resourcePath, IPath[] exclusionPatterns) { char[] path = resourcePath.toString().toCharArray(); for (int i = 0, length = exclusionPatterns.length; i < length; i++) { @@ -668,14 +668,14 @@ public class JavaModelUtil { return true; } } - return false; + return false; } /* * Returns whether the given resource path matches one of the exclusion * patterns. - * + * * @see IClasspathEntry#getExclusionPatterns */ public final static boolean isExcluded(IPath resourcePath, char[][] exclusionPatterns) { @@ -685,12 +685,12 @@ public class JavaModelUtil { if (CharOperation.pathMatch(exclusionPatterns[i], path, true, '/')) return true; return false; - } - + } + private static final String ARGUMENTS_DELIMITER = "#"; //$NON-NLS-1$ private static final String EMPTY_ARGUMENT = " "; //$NON-NLS-1$ - + /** * Copied from net.sourceforge.phpdt.internal.core.ProjectPrefUtil; */ @@ -699,7 +699,7 @@ public class JavaModelUtil { int index = argumentsString.indexOf(':'); if(index == -1) return null; - + int length = argumentsString.length(); int numberOfArg; try{ @@ -708,10 +708,10 @@ public class JavaModelUtil { return null; } argumentsString = argumentsString.substring(index + 1, length); - + String[] args = new String[length]; int count = 0; - + StringTokenizer tokenizer = new StringTokenizer(argumentsString, ARGUMENTS_DELIMITER); while(tokenizer.hasMoreTokens()) { String argument = tokenizer.nextToken(); @@ -719,10 +719,10 @@ public class JavaModelUtil { argument = ""; //$NON-NLS-1$ args[count++] = argument; } - + if(count != numberOfArg) return null; - + System.arraycopy(args, 0, args = new String[count], 0, count); return args; }