List of usage examples for org.eclipse.jdt.core Signature C_DOT
char C_DOT
To view the source code for org.eclipse.jdt.core Signature C_DOT.
Click Source Link
From source file:com.codenvy.ide.ext.java.server.internal.compiler.parser.SourceTypeConverter.java
License:Open Source License
private SourceTypeConverter(int flags, ProblemReporter problemReporter) { super(problemReporter, Signature.C_DOT); this.flags = flags; }
From source file:com.codenvy.ide.ext.java.server.internal.core.SourceMapper.java
License:Open Source License
/** * NOT API, public only for access by Unit tests. * Converts these type names to unqualified signatures. This needs to be done in order to be consistent * with the way the source range is retrieved. * * @see org.eclipse.jdt.internal.core.SourceMapper#getUnqualifiedMethodHandle * @see org.eclipse.jdt.core.Signature/*from ww w .j a v a 2s .com*/ */ public String[] convertTypeNamesToSigs(char[][] typeNames) { if (typeNames == null) return CharOperation.NO_STRINGS; int n = typeNames.length; if (n == 0) return CharOperation.NO_STRINGS; String[] typeSigs = new String[n]; for (int i = 0; i < n; ++i) { char[] typeSig = Signature.createCharArrayTypeSignature(typeNames[i], false); // transforms signatures that contains a qualification into unqualified signatures // e.g. "QX<+QMap.Entry;>;" becomes "QX<+QEntry;>;" StringBuffer simpleTypeSig = null; int start = 0; int dot = -1; int length = typeSig.length; for (int j = 0; j < length; j++) { switch (typeSig[j]) { case Signature.C_UNRESOLVED: if (simpleTypeSig != null) simpleTypeSig.append(typeSig, start, j - start); start = j; break; case Signature.C_DOT: dot = j; break; case Signature.C_GENERIC_START: int matchingEnd = findMatchingGenericEnd(typeSig, j + 1); if (matchingEnd > 0 && matchingEnd + 1 < length && typeSig[matchingEnd + 1] == Signature.C_DOT) { // found Head<Param>.Tail -> discard everything except Tail if (simpleTypeSig == null) simpleTypeSig = new StringBuffer().append(typeSig, 0, start); simpleTypeSig.append(Signature.C_UNRESOLVED); start = j = matchingEnd + 2; break; } //$FALL-THROUGH$ case Signature.C_NAME_END: if (dot > start) { if (simpleTypeSig == null) simpleTypeSig = new StringBuffer().append(typeSig, 0, start); simpleTypeSig.append(Signature.C_UNRESOLVED); simpleTypeSig.append(typeSig, dot + 1, j - dot - 1); start = j; } break; } } if (simpleTypeSig == null) { typeSigs[i] = new String(typeSig); } else { simpleTypeSig.append(typeSig, start, length - start); typeSigs[i] = simpleTypeSig.toString(); } } return typeSigs; }
From source file:com.codenvy.ide.ext.java.server.internal.core.SourceMapper.java
License:Open Source License
private int getUnqualifiedTypeSignature(String qualifiedTypeSig, int start, int length, StringBuffer unqualifiedTypeSig, boolean noDollar) { char firstChar = qualifiedTypeSig.charAt(start); int end = start + 1; boolean sigStart = false; firstPass: for (int i = start; i < length; i++) { char current = qualifiedTypeSig.charAt(i); switch (current) { case Signature.C_ARRAY: case Signature.C_SUPER: case Signature.C_EXTENDS: unqualifiedTypeSig.append(current); start = i + 1;//from w w w .j a va2 s. com end = start + 1; firstChar = qualifiedTypeSig.charAt(start); break; case Signature.C_RESOLVED: case Signature.C_UNRESOLVED: case Signature.C_TYPE_VARIABLE: if (!sigStart) { start = ++i; sigStart = true; } break; case Signature.C_NAME_END: case Signature.C_GENERIC_START: end = i; break firstPass; case Signature.C_STAR: unqualifiedTypeSig.append(current); start = i + 1; end = start + 1; firstChar = qualifiedTypeSig.charAt(start); break; case Signature.C_GENERIC_END: return i; case Signature.C_DOT: start = ++i; break; case Signature.C_BOOLEAN: case Signature.C_BYTE: case Signature.C_CHAR: case Signature.C_DOUBLE: case Signature.C_FLOAT: case Signature.C_INT: case Signature.C_LONG: case Signature.C_SHORT: if (!sigStart) { unqualifiedTypeSig.append(current); return i + 1; } } } switch (firstChar) { case Signature.C_RESOLVED: case Signature.C_UNRESOLVED: case Signature.C_TYPE_VARIABLE: unqualifiedTypeSig.append(Signature.C_UNRESOLVED); if (noDollar) { int lastDollar = qualifiedTypeSig.lastIndexOf('$', end); if (lastDollar > start) start = lastDollar + 1; } for (int i = start; i < length; i++) { char current = qualifiedTypeSig.charAt(i); switch (current) { case Signature.C_GENERIC_START: unqualifiedTypeSig.append(current); i++; do { i = getUnqualifiedTypeSignature(qualifiedTypeSig, i, length, unqualifiedTypeSig, noDollar); } while (qualifiedTypeSig.charAt(i) != Signature.C_GENERIC_END); unqualifiedTypeSig.append(Signature.C_GENERIC_END); break; case Signature.C_NAME_END: unqualifiedTypeSig.append(current); return i + 1; default: unqualifiedTypeSig.append(current); break; } } return length; default: // primitive type or wildcard unqualifiedTypeSig.append(qualifiedTypeSig.substring(start, end)); return end; } }
From source file:com.codenvy.ide.ext.java.server.internal.core.util.Util.java
License:Open Source License
private static void appendClassTypeSignature(char[] string, int start, StringBuffer buffer, boolean compact) { char c = string[start]; if (c != Signature.C_RESOLVED) { return;// ww w . j a v a 2 s .c om } int p = start + 1; int checkpoint = buffer.length(); while (true) { c = string[p]; switch (c) { case Signature.C_SEMICOLON: // all done return; case Signature.C_DOT: case '/': // erase package prefix if (compact) { buffer.setLength(checkpoint); } else { buffer.append('.'); } break; case Signature.C_DOLLAR: /** * Convert '$' in resolved type signatures into '.'. NOTE: This assumes that the type signature is an inner type * signature. This is true in most cases, but someone can define a non-inner type name containing a '$'. */ buffer.append('.'); break; default: buffer.append(c); } p++; } }
From source file:com.codenvy.ide.ext.java.server.internal.core.util.Util.java
License:Open Source License
private static int appendClassTypeSignatureForAnchor(char[] string, int start, StringBuffer buffer) { // need a minimum 3 chars "Lx;" if (start >= string.length - 2) { throw new IllegalArgumentException(); }/* w w w. j a v a 2 s . co m*/ // must start in "L" or "Q" char c = string[start]; if (c != Signature.C_RESOLVED && c != Signature.C_UNRESOLVED) { throw new IllegalArgumentException(); } int p = start + 1; while (true) { if (p >= string.length) { throw new IllegalArgumentException(); } c = string[p]; switch (c) { case Signature.C_SEMICOLON: // all done return p; case Signature.C_GENERIC_START: int e = scanGenericEnd(string, p + 1); // once we hit type arguments there are no more package prefixes p = e; break; case Signature.C_DOT: buffer.append('.'); break; case '/': buffer.append('/'); break; case Signature.C_DOLLAR: // once we hit "$" there are no more package prefixes /** * Convert '$' in resolved type signatures into '.'. NOTE: This assumes that the type signature is an inner type * signature. This is true in most cases, but someone can define a non-inner type name containing a '$'. */ buffer.append('.'); break; default: buffer.append(c); } p++; } }
From source file:com.mountainminds.eclemma.internal.core.analysis.SignatureResolver.java
License:Open Source License
private static final boolean resolveType(final IType scope, final String identifier, final StringBuffer result) throws JavaModelException { final String[][] types = scope.resolveType(Signature.getTypeErasure(identifier)); if (types == null || types.length != 1) { return false; }//from w w w.j a va2s . c o m result.append(Signature.C_RESOLVED); final String qualifier = types[0][0]; if (qualifier.length() > 0) { replace(qualifier, Signature.C_DOT, SLASH, result); result.append(SLASH); } replace(types[0][1], Signature.C_DOT, Signature.C_DOLLAR, result); result.append(Signature.C_SEMICOLON); return true; }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * @param type// w w w . j a v a 2 s. com * @return full qualified, resolved type name in bytecode notation */ private static String getTypeSignature(IType type) { if (type == null) { return null; } /* * getFullyQualifiedName() returns name, where package separator is '.', * but we need '/' for bytecode. The hack with ',' is to use a character * which is not allowed as Java char to be sure not to replace too much */ String name = type.getFullyQualifiedName(','); // replace package separators name = name.replace(Signature.C_DOT, PACKAGE_SEPARATOR); // replace class separators name = name.replace(',', TYPE_SEPARATOR); return Signature.C_RESOLVED + name + Signature.C_SEMICOLON; }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * Concatenates package and class name. Both strings can be empty or <code>null</code>. *//*from w w w . ja v a2 s .c o m*/ private static String concatenateName(String packageName, String className) { StringBuffer buf = new StringBuffer(); if (packageName != null && packageName.length() > 0) { packageName = packageName.replace(Signature.C_DOT, PACKAGE_SEPARATOR); buf.append(packageName); } if (className != null && className.length() > 0) { if (buf.length() > 0) { buf.append(PACKAGE_SEPARATOR); } className = className.replace(Signature.C_DOT, TYPE_SEPARATOR); buf.append(className); } return buf.toString(); }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * @param javaElement// www . j a v a2s . c o m * @return absolute path of generated bytecode package for given element * @throws JavaModelException */ private static String getPackageOutputPath(IJavaElement javaElement) throws JavaModelException { String dir = ""; //$NON-NLS-1$ if (javaElement == null) { return dir; } IJavaProject project = javaElement.getJavaProject(); if (project == null) { return dir; } // default bytecode location IPath path = project.getOutputLocation(); IResource resource = javaElement.getUnderlyingResource(); if (resource == null) { return dir; } // resolve multiple output locations here if (project.exists() && project.getProject().isOpen()) { IClasspathEntry entries[] = project.getRawClasspath(); for (int i = 0; i < entries.length; i++) { IClasspathEntry classpathEntry = entries[i]; if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) { IPath outputPath = classpathEntry.getOutputLocation(); if (outputPath != null && classpathEntry.getPath().isPrefixOf(resource.getFullPath())) { path = outputPath; break; } } } } if (path == null) { // check the default location if not already included IPath def = project.getOutputLocation(); if (def != null && def.isPrefixOf(resource.getFullPath())) { path = def; } } if (path == null) { return dir; } IWorkspace workspace = ResourcesPlugin.getWorkspace(); if (!project.getPath().equals(path)) { IFolder outputFolder = workspace.getRoot().getFolder(path); if (outputFolder != null) { // linked resources will be resolved here! IPath rawPath = outputFolder.getRawLocation(); if (rawPath != null) { path = rawPath; } } } else { path = project.getProject().getLocation(); } // here we should resolve path variables, // probably existing at first place of path IPathVariableManager pathManager = workspace.getPathVariableManager(); path = pathManager.resolvePath(path); if (path == null) { return dir; } if (isPackageRoot(project, resource)) { dir = path.toOSString(); } else { String packPath = EclipseUtils.getJavaPackageName(javaElement).replace(Signature.C_DOT, PACKAGE_SEPARATOR); dir = path.append(packPath).toOSString(); } return dir; }
From source file:de.loskutov.bco.ui.JdtUtils.java
License:Open Source License
/** * @param classFile/* w w w . j av a 2 s.co m*/ * @return full qualified bytecode name of given class */ public static String getFullBytecodeName(IClassFile classFile) { IPackageFragment packageFr = (IPackageFragment) classFile.getAncestor(IJavaElement.PACKAGE_FRAGMENT); if (packageFr == null) { return null; } String packageName = packageFr.getElementName(); // switch to java bytecode naming conventions packageName = packageName.replace(Signature.C_DOT, PACKAGE_SEPARATOR); String className = classFile.getElementName(); if (packageName != null && packageName.length() > 0) { return packageName + PACKAGE_SEPARATOR + className; } return className; }