Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2000, 2010 IBM Corporation and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: IBM Corporation - initial API and implementation /
 
 package org.eclipse.jdt.internal.core;
 
 
 
 
 public abstract class Member extends SourceRefElement implements IMember {
 
 protected Member(JavaElement parent) {
 	super(parent);
 }
 protected static boolean areSimilarMethods(
 	String name1String[] params1,
 	String name2String[] params2,
 	String[] simpleNames1) {
 
 	if (name1.equals(name2)) {
 		int params1Length = params1.length;
 		if (params1Length == params2.length) {
 			for (int i = 0; i < params1Lengthi++) {
 				String simpleName1 =
 					simpleNames1 == null ?
 						Signature.getSimpleName(Signature.toString(Signature.getTypeErasure(params1[i]))) :
 						simpleNames1[i];
 				String simpleName2 = Signature.getSimpleName(Signature.toString(Signature.getTypeErasure(params2[i])));
 				if (!simpleName1.equals(simpleName2)) {
 					return false;
 				}
 			}
 			return true;
 		}
 	}
 	return false;
 }
Converts a field constant from the compiler's representation to the Java Model constant representation (Number or String).
 
 protected static Object convertConstant(Constant constant) {
 	if (constant == null)
 		return null;
 	if (constant == .) {
 		return null;
 	}
 	switch (constant.typeID()) {
 		case . :
 			return constant.booleanValue() ? . : .;
 		case . :
 			return new Byte(constant.byteValue());
 		case . :
 			return new Character(constant.charValue());
 		case . :
 			return new Double(constant.doubleValue());
 		case . :
 			return new Float(constant.floatValue());
 		case . :
 			return new Integer(constant.intValue());
 		case . :
 			return new Long(constant.longValue());
 		case . :
 			return new Short(constant.shortValue());
 			return constant.stringValue();
 		default :
 			return null;
 	}
 }
 /*
  * Helper method for SourceType.findMethods and BinaryType.findMethods
  */
 public static IMethod[] findMethods(IMethod methodIMethod[] methods) {
 	String elementName = method.getElementName();
 	String[] parameters = method.getParameterTypes();
 	int paramLength = parameters.length;
 	String[] simpleNames = new String[paramLength];
 	for (int i = 0; i < paramLengthi++) {
 		String erasure = Signature.getTypeErasure(parameters[i]);
		simpleNames[i] = Signature.getSimpleName(Signature.toString(erasure));
	}
	ArrayList list = new ArrayList();
	for (int i = 0, length = methods.lengthi < lengthi++) {
		IMethod existingMethod = methods[i];
				elementName,
				parameters,
				existingMethod.getElementName(),
				existingMethod.getParameterTypes(),
				simpleNames)) {
			list.add(existingMethod);
		}
	}
	int size = list.size();
	if (size == 0) {
		return null;
else {
		IMethod[] result = new IMethod[size];
		list.toArray(result);
		return result;
	}
public String[] getCategories() throws JavaModelException {
	if (type == nullreturn .;
	if (type.isBinary()) {
else {
		HashMap map = info.getCategories();
		if (map == nullreturn .;
		String[] categories = (String[]) map.get(this);
		if (categories == nullreturn .;
		return categories;
	}
	IJavaElement element = getParent();
	while (element instanceof IMember) {
		elementelement.getParent();
	}
	if (element instanceof IClassFile) {
		return (IClassFileelement;
	}
	return null;
	JavaElement parentElement = (JavaElement)getParent();
	if (parentElement.getElementType() == ) {
		return (ITypeparentElement;
	}
	return null;
public int getFlags() throws JavaModelException {
	return info.getModifiers();
/*
 * @see JavaElement
 */
public IJavaElement getHandleFromMemento(String tokenMementoTokenizer mementoWorkingCopyOwner workingCopyOwner) {
	switch (token.charAt(0)) {
		case :
			return getHandleUpdatingCountFromMemento(mementoworkingCopyOwner);
		case :
			String typeName;
			if (memento.hasMoreTokens()) {
				typeName = memento.nextToken();
				char firstChar = typeName.charAt(0);
				if (firstChar ==  || firstChar ==  || firstChar ==  || firstChar ==  || firstChar == ) {
					token = typeName;
					typeName = ""//$NON-NLS-1$
else {
					token = null;
				}
else {
				typeName = ""//$NON-NLS-1$
				token = null;
			}
			JavaElement type = (JavaElement)getType(typeName, 1);
			if (token == null) {
				return type.getHandleFromMemento(mementoworkingCopyOwner);
else {
				return type.getHandleFromMemento(tokenmementoworkingCopyOwner);
			}
			if (!memento.hasMoreTokens()) return this;
			String varName = memento.nextToken();
			if (!memento.hasMoreTokens()) return this;
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			int declarationStart = Integer.parseInt(memento.nextToken());
			if (!memento.hasMoreTokens()) return this;
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			int declarationEnd = Integer.parseInt(memento.nextToken());
			if (!memento.hasMoreTokens()) return this;
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			int nameStart = Integer.parseInt(memento.nextToken());
			if (!memento.hasMoreTokens()) return this;
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			int nameEnd = Integer.parseInt(memento.nextToken());
			if (!memento.hasMoreTokens()) return this;
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			String typeSignature = memento.nextToken();
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			int flags = Integer.parseInt(memento.nextToken());
			memento.nextToken(); // JEM_COUNT
			if (!memento.hasMoreTokens()) return this;
			boolean isParameter = Boolean.valueOf(memento.nextToken()).booleanValue();
			return new LocalVariable(thisvarNamedeclarationStartdeclarationEndnameStartnameEndtypeSignaturenullflagsisParameter);
			if (!memento.hasMoreTokens()) return this;
			String typeParameterName = memento.nextToken();
			JavaElement typeParameter = new TypeParameter(thistypeParameterName);
			return typeParameter.getHandleFromMemento(mementoworkingCopyOwner);
			if (!memento.hasMoreTokens()) return this;
			String annotationName = memento.nextToken();
			JavaElement annotation = new Annotation(thisannotationName);
			return annotation.getHandleFromMemento(mementoworkingCopyOwner);
	}
	return null;
protected char getHandleMementoDelimiter() {
/*
 * Returns the outermost context defining a local element. Per construction, it can only be a
 * method/field/initializarer member; thus, returns null if this member is already a top-level type or member type.
 * e.g for X.java/X/Y/foo()/Z/bar()/T, it will return X.java/X/Y/foo()
 */
	IJavaElement current = this;
	Member lastLocalContext = null;
	parentLoop: while (true) {
		switch (current.getElementType()) {
				break parentLoop; // done recursing
			case :
				// cannot be a local context
				break;
			case :
			case :
				 // these elements can define local members
				lastLocalContext = (Membercurrent;
				break;
		}
		current = current.getParent();
	}
	return lastLocalContext;
	if (range == nullreturn null;
	IBuffer bufnull;
	if (isBinary()) {
else {
		ICompilationUnit compilationUnit = getCompilationUnit();
		if (!compilationUnit.isConsistent()) {
			return null;
		}
		buf = compilationUnit.getBuffer();
	}
	final int startrange.getOffset();
	final int lengthrange.getLength();
	if (length > 0 && buf.getChar(start) == '/') {
		IScanner scanner= ToolFactory.createScanner(truefalsefalsefalse);
		try {
			scanner.setSource(buf.getText(startlength).toCharArray());
			int docOffset= -1;
			int docEnd= -1;
			int terminalscanner.getNextToken();
			loop: while (true) {
				switch(terminal) {
						docOffsetscanner.getCurrentTokenStartPosition();
						docEndscanner.getCurrentTokenEndPosition() + 1;
						terminalscanner.getNextToken();
						break;
						terminalscanner.getNextToken();
						continue loop;
					default :
						break loop;
				}
			}
			if (docOffset != -1) {
				return new SourceRange(docOffset + startdocEnd - docOffset);
			}
catch (InvalidInputException ex) {
			// try if there is inherited Javadoc
catch (IndexOutOfBoundsException e) {
			// https://bugs.eclipse.org/bugs/show_bug.cgi?id=305001
		}
	}
	return null;
	return new SourceRange(info.getNameSourceStart(), info.getNameSourceEnd() - info.getNameSourceStart() + 1);
public IType getType(String typeNameint count) {
	if (isBinary()) {
		throw new IllegalArgumentException("Not a source member " + toStringWithAncestors()); //$NON-NLS-1$
else {
		SourceType type = new SourceType(thistypeName);
		type.occurrenceCount = count;
		return type;
	}
	IJavaElement element = getParent();
	while (element instanceof IMember) {
		elementelement.getParent();
	}
	return (ITypeRootelement;
public boolean isBinary() {
	return false;
protected boolean isMainMethod(IMethod methodthrows JavaModelException {
	if ("main".equals(method.getElementName()) && ..equals(method.getReturnType())) { //$NON-NLS-1$
		int flagsmethod.getFlags();
		if (Flags.isStatic(flags) && Flags.isPublic(flags)) {
			String[] paramTypesmethod.getParameterTypes();
			if (paramTypes.length == 1) {
				String typeSignature=  Signature.toString(paramTypes[0]);
				return "String[]".equals(Signature.getSimpleName(typeSignature)); //$NON-NLS-1$
			}
		}
	}
	return false;
public boolean isReadOnly() {
	return getClassFile() != null;
public String readableName() {
	IJavaElement declaringType = getDeclaringType();
	if (declaringType != null) {
		String declaringName = ((JavaElementgetDeclaringType()).readableName();
		StringBuffer buffer = new StringBuffer(declaringName);
		buffer.append('.');
		return buffer.toString();
else {
		return super.readableName();
	}
New to GrepCode? Check out our FAQ X