PageRenderTime 41ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/eclipse-phpeclipse-1.2.3/plugins/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/corext/util/JdtFlags.java

#
Java | 313 lines | 136 code | 43 blank | 134 comment | 40 complexity | c712fbbcc033564c7aa0b830470f3798 MD5 | raw file
  1. /*******************************************************************************
  2. * Copyright (c) 2000, 2004 IBM Corporation and others.
  3. * All rights reserved. This program and the accompanying materials
  4. * are made available under the terms of the Common Public License v1.0
  5. * which accompanies this distribution, and is available at
  6. * http://www.eclipse.org/legal/cpl-v10.html
  7. *
  8. * Contributors:
  9. * IBM Corporation - initial API and implementation
  10. *******************************************************************************/
  11. package net.sourceforge.phpdt.internal.corext.util;
  12. import java.lang.reflect.Modifier;
  13. import net.sourceforge.phpdt.core.Flags;
  14. import net.sourceforge.phpdt.core.IJavaElement;
  15. import net.sourceforge.phpdt.core.IMember;
  16. import net.sourceforge.phpdt.core.IType;
  17. import net.sourceforge.phpdt.core.JavaModelException;
  18. import net.sourceforge.phpdt.internal.corext.Assert;
  19. public class JdtFlags {
  20. private JdtFlags() {
  21. }
  22. public static final String VISIBILITY_STRING_PRIVATE = "private"; //$NON-NLS-1$
  23. public static final String VISIBILITY_STRING_PACKAGE = ""; //$NON-NLS-1$
  24. public static final String VISIBILITY_STRING_PROTECTED = "protected"; //$NON-NLS-1$
  25. public static final String VISIBILITY_STRING_PUBLIC = "public"; //$NON-NLS-1$
  26. public static final int VISIBILITY_CODE_INVALID = -1;
  27. public static boolean isAbstract(IMember member) throws JavaModelException {
  28. if (isInterfaceMethod(member))
  29. return true;
  30. return Flags.isAbstract(member.getFlags());
  31. }
  32. // public static boolean isAbstract(IMethodBinding member) {
  33. // if (isInterfaceMember(member))
  34. // return true;
  35. // return Modifier.isAbstract(member.getModifiers());
  36. // }
  37. public static boolean isDeprecated(IMember member)
  38. throws JavaModelException {
  39. return Flags.isDeprecated(member.getFlags());
  40. }
  41. public static boolean isFinal(IMember member) throws JavaModelException {
  42. if (isInterfaceField(member))
  43. return true;
  44. if (isAnonymousType(member))
  45. return true;
  46. return Flags.isFinal(member.getFlags());
  47. }
  48. // public static boolean isNative(IMember member) throws JavaModelException{
  49. // return Flags.isNative(member.getFlags());
  50. // }
  51. public static boolean isPackageVisible(IMember member)
  52. throws JavaModelException {
  53. return (!isPrivate(member) && !isProtected(member) && !isPublic(member));
  54. }
  55. // public static boolean isPackageVisible(BodyDeclaration bodyDeclaration) {
  56. // return (! isPrivate(bodyDeclaration) && ! isProtected(bodyDeclaration) &&
  57. // ! isPublic(bodyDeclaration));
  58. // }
  59. //
  60. // public static boolean isPackageVisible(IBinding binding) {
  61. // return (! isPrivate(binding) && ! isProtected(binding) && !
  62. // isPublic(binding));
  63. // }
  64. public static boolean isPrivate(IMember member) throws JavaModelException {
  65. return Flags.isPrivate(member.getFlags());
  66. }
  67. // public static boolean isPrivate(BodyDeclaration bodyDeclaration) {
  68. // return Modifier.isPrivate(bodyDeclaration.getModifiers());
  69. // }
  70. //
  71. // public static boolean isPrivate(IBinding binding) {
  72. // return Modifier.isPrivate(binding.getModifiers());
  73. // }
  74. public static boolean isProtected(IMember member) throws JavaModelException {
  75. return Flags.isProtected(member.getFlags());
  76. }
  77. // public static boolean isProtected(BodyDeclaration bodyDeclaration) {
  78. // return Modifier.isProtected(bodyDeclaration.getModifiers());
  79. // }
  80. //
  81. // public static boolean isProtected(IBinding binding) {
  82. // return Modifier.isProtected(binding.getModifiers());
  83. // }
  84. public static boolean isPublic(IMember member) throws JavaModelException {
  85. if (isInterfaceMember(member))
  86. return true;
  87. return Flags.isPublic(member.getFlags());
  88. }
  89. // public static boolean isPublic(IBinding binding) {
  90. // if (isInterfaceMember(binding))
  91. // return true;
  92. // return Modifier.isPublic(binding.getModifiers());
  93. // }
  94. //
  95. //
  96. // public static boolean isPublic(BodyDeclaration bodyDeclaration) {
  97. // if (isInterfaceMember(bodyDeclaration))
  98. // return true;
  99. // return Modifier.isPublic(bodyDeclaration.getModifiers());
  100. // }
  101. public static boolean isStatic(IMember member) throws JavaModelException {
  102. if (isNestedInterface(member))
  103. return true;
  104. if (member.getElementType() != IJavaElement.METHOD
  105. && isInterfaceMember(member))
  106. return true;
  107. return Flags.isStatic(member.getFlags());
  108. }
  109. // public static boolean isStatic(IMethodBinding methodBinding){
  110. // return Modifier.isStatic(methodBinding.getModifiers());
  111. // }
  112. //
  113. // public static boolean isStatic(IVariableBinding variableBinding){
  114. // if (isInterfaceMember(variableBinding))
  115. // return true;
  116. // return Modifier.isStatic(variableBinding.getModifiers());
  117. // }
  118. // public static boolean isStrictfp(IMember member) throws
  119. // JavaModelException{
  120. // return Flags.isStrictfp(member.getFlags());
  121. // }
  122. //
  123. // public static boolean isSynchronized(IMember member) throws
  124. // JavaModelException{
  125. // return Flags.isSynchronized(member.getFlags());
  126. // }
  127. //
  128. // public static boolean isSynthetic(IMember member) throws
  129. // JavaModelException{
  130. // return Flags.isSynthetic(member.getFlags());
  131. // }
  132. //
  133. // public static boolean isTransient(IMember member) throws
  134. // JavaModelException{
  135. // return Flags.isTransient(member.getFlags());
  136. // }
  137. // public static boolean isVolatile(IMember member) throws
  138. // JavaModelException{
  139. // return Flags.isVolatile(member.getFlags());
  140. // }
  141. private static boolean isInterfaceMethod(IMember member)
  142. throws JavaModelException {
  143. return member.getElementType() == IJavaElement.METHOD
  144. && isInterfaceMember(member);
  145. }
  146. private static boolean isInterfaceField(IMember member)
  147. throws JavaModelException {
  148. return member.getElementType() == IJavaElement.FIELD
  149. && isInterfaceMember(member);
  150. }
  151. private static boolean isInterfaceMember(IMember member)
  152. throws JavaModelException {
  153. return member.getDeclaringType() != null
  154. && member.getDeclaringType().isInterface();
  155. }
  156. // private static boolean isInterfaceMember(IBinding binding) {
  157. // ITypeBinding declaringType= null;
  158. // if (binding instanceof IVariableBinding) {
  159. // declaringType= ((IVariableBinding) binding).getDeclaringClass();
  160. // } else if (binding instanceof IMethodBinding) {
  161. // declaringType= ((IMethodBinding) binding).getDeclaringClass();
  162. // } else if (binding instanceof ITypeBinding) {
  163. // declaringType= ((ITypeBinding) binding).getDeclaringClass();
  164. // }
  165. // return declaringType != null && declaringType.isInterface();
  166. // }
  167. // private static boolean isInterfaceMember(BodyDeclaration bodyDeclaration)
  168. // {
  169. // return (bodyDeclaration.getParent() instanceof TypeDeclaration) &&
  170. // ((TypeDeclaration)bodyDeclaration.getParent()).isInterface();
  171. // }
  172. private static boolean isNestedInterface(IMember member)
  173. throws JavaModelException {
  174. return member.getElementType() == IJavaElement.TYPE
  175. && member.getDeclaringType() != null
  176. && ((IType) member).isInterface();
  177. }
  178. private static boolean isAnonymousType(IMember member)
  179. throws JavaModelException {
  180. return member.getElementType() == IJavaElement.TYPE
  181. && ((IType) member).isAnonymous();
  182. }
  183. public static int getVisibilityCode(IMember member)
  184. throws JavaModelException {
  185. if (isPublic(member))
  186. return Modifier.PUBLIC;
  187. else if (isProtected(member))
  188. return Modifier.PROTECTED;
  189. // else if (isPackageVisible(member))
  190. // return Modifier.NONE;
  191. else if (isPrivate(member))
  192. return Modifier.PRIVATE;
  193. // Assert.isTrue(false);
  194. // return VISIBILITY_CODE_INVALID;
  195. return Modifier.PUBLIC;
  196. }
  197. // public static int getVisibilityCode(BodyDeclaration bodyDeclaration) {
  198. // if (isPublic(bodyDeclaration))
  199. // return Modifier.PUBLIC;
  200. // else if (isProtected(bodyDeclaration))
  201. // return Modifier.PROTECTED;
  202. // else if (isPackageVisible(bodyDeclaration))
  203. // return Modifier.NONE;
  204. // else if (isPrivate(bodyDeclaration))
  205. // return Modifier.PRIVATE;
  206. // Assert.isTrue(false);
  207. // return VISIBILITY_CODE_INVALID;
  208. // }
  209. // public static int getVisibilityCode(IBinding binding) {
  210. // if (isPublic(binding))
  211. // return Modifier.PUBLIC;
  212. // else if (isProtected(binding))
  213. // return Modifier.PROTECTED;
  214. // else if (isPackageVisible(binding))
  215. // return Modifier.NONE;
  216. // else if (isPrivate(binding))
  217. // return Modifier.PRIVATE;
  218. // Assert.isTrue(false);
  219. // return VISIBILITY_CODE_INVALID;
  220. // }
  221. public static String getVisibilityString(int visibilityCode) {
  222. if (Modifier.isPublic(visibilityCode))
  223. return VISIBILITY_STRING_PUBLIC;
  224. if (Modifier.isProtected(visibilityCode))
  225. return VISIBILITY_STRING_PROTECTED;
  226. if (Modifier.isPrivate(visibilityCode))
  227. return VISIBILITY_STRING_PRIVATE;
  228. return VISIBILITY_STRING_PACKAGE;
  229. }
  230. public static void assertVisibility(int visibility) {
  231. Assert.isTrue(visibility == Modifier.PUBLIC
  232. || visibility == Modifier.PROTECTED ||
  233. // visibility == Modifier.NONE ||
  234. visibility == Modifier.PRIVATE);
  235. }
  236. public static boolean isHigherVisibility(int newVisibility,
  237. int oldVisibility) {
  238. assertVisibility(oldVisibility);
  239. assertVisibility(newVisibility);
  240. switch (oldVisibility) {
  241. case Modifier.PRIVATE:
  242. return // newVisibility == Modifier.NONE ||
  243. newVisibility == Modifier.PUBLIC
  244. || newVisibility == Modifier.PROTECTED;
  245. // case Modifier.NONE :
  246. // return newVisibility == Modifier.PUBLIC
  247. // || newVisibility == Modifier.PROTECTED;
  248. case Modifier.PROTECTED:
  249. return newVisibility == Modifier.PUBLIC;
  250. case Modifier.PUBLIC:
  251. return false;
  252. default:
  253. // Assert.isTrue(false);
  254. return false;
  255. }
  256. }
  257. public static int getLowerVisibility(int visibility1, int visibility2) {
  258. if (isHigherVisibility(visibility1, visibility2))
  259. return visibility2;
  260. else
  261. return visibility1;
  262. }
  263. public static int clearAccessModifiers(int flags) {
  264. return clearFlag(Modifier.PROTECTED | Modifier.PUBLIC
  265. | Modifier.PRIVATE, flags);
  266. }
  267. public static int clearFlag(int flag, int flags) {
  268. return flags & ~flag;
  269. }
  270. }