/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev.javac; import com.google.gwt.dev.resource.Resource; import com.google.gwt.dev.util.Util; import java.io.IOException; import java.io.InputStream; /** * A grab bag of utility functions useful for dealing with java files. */ public class Shared { public static final int MOD_ABSTRACT = 0x00000001; public static final int MOD_FINAL = 0x00000002; public static final int MOD_NATIVE = 0x00000004; public static final int MOD_PRIVATE = 0x00000008; public static final int MOD_PROTECTED = 0x00000010; public static final int MOD_PUBLIC = 0x00000020; public static final int MOD_STATIC = 0x00000040; public static final int MOD_TRANSIENT = 0x00000080; public static final int MOD_VOLATILE = 0x00000100; public static String getPackageName(String qualifiedTypeName) { int pos = qualifiedTypeName.lastIndexOf('.'); return (pos < 0) ? "" : qualifiedTypeName.substring(0, pos); } public static String getPackageNameFromBinary(String binaryName) { int pos = binaryName.lastIndexOf('/'); return (pos < 0) ? "" : binaryName.substring(0, pos).replace('/', '.'); } public static String getShortName(String qualifiedTypeName) { int pos = qualifiedTypeName.lastIndexOf('.'); return (pos < 0) ? qualifiedTypeName : qualifiedTypeName.substring(pos + 1); } public static String getSlashedPackageFrom(String internalName) { int pos = internalName.lastIndexOf('/'); return (pos < 0) ? "" : internalName.substring(0, pos); } /** * Returns the source name of the Java type defined within the given source Resource. */ public static String getTypeName(Resource sourceFile) { String path = sourceFile.getPath(); assert (path.endsWith(".java")); path = path.substring(0, path.lastIndexOf('.')); return path.replace('/', '.'); } public static String makeTypeName(String packageName, String shortName) { if (packageName.length() == 0) { return shortName; } else { return packageName + '.' + shortName; } } public static String readSource(Resource sourceFile) throws IOException { InputStream contents = sourceFile.openContents(); return Util.readStreamAsString(contents); } public static String toPath(String qualifiedTypeName) { return qualifiedTypeName.replace('.', '/') + ".java"; } /** * Returns the source name of the type defined within the given path. */ public static String toTypeName(String path) { assert (path.endsWith(".java")); path = path.substring(0, path.lastIndexOf('.')); return path.replace('/', '.'); } }