/* * Copyright 2010 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.typemodel; import com.google.gwt.core.ext.typeinfo.JType; import java.lang.annotation.Annotation; import java.util.Map; /** * Constructs a new {@link TypeOracle}. This class provides package-level access * to a TypeOracle that is under construction. Once the TypeOracle is built, new * classes can be added later, but should never be removed. * * This class's API is an implementation detail and should not be considered * stable. It is subject to change. */ public class TypeOracleBuilder { /** * The TypeOracle being built. */ protected final TypeOracle typeOracle = new TypeOracle(); protected void addAnnotations(JPackage pkg, Map<Class<? extends Annotation>, Annotation> declaredAnnotations) { pkg.addAnnotations(declaredAnnotations); } protected void addAnnotations(JRealClassType type, Map<Class<? extends Annotation>, Annotation> declaredAnnotations) { type.addAnnotations(declaredAnnotations); } protected void addImplementedInterface(JRealClassType type, JClassType intf) { type.addImplementedInterface(intf); } protected void addModifierBits(JAbstractMethod method, int modifierBits) { method.addModifierBits(modifierBits); } protected void addModifierBits(JField jfield, int modifierBits) { jfield.addModifierBits(modifierBits); } protected void addThrows(JAbstractMethod method, JClassType exception) { method.addThrows(exception); } protected void finish() { typeOracle.finish(); } protected JAnnotationMethod newAnnotationMethod(JRealClassType enclosingType, String name, Map<Class<? extends Annotation>, Annotation> declaredAnnotations, JTypeParameter[] jtypeParameters, Object defaultValue) { return new JAnnotationMethod(enclosingType, name, declaredAnnotations, jtypeParameters, defaultValue); } protected JAnnotationType newAnnotationType(JPackage pkg, String enclosingTypeName, String className) { return new JAnnotationType(typeOracle, pkg, enclosingTypeName, className); } protected JConstructor newConstructor(JRealClassType type, String name, Map<Class<? extends Annotation>, Annotation> declaredAnnotations, JTypeParameter[] typeParams) { return new JConstructor(type, name, declaredAnnotations, typeParams); } protected JEnumConstant newEnumConstant(JRealClassType type, String name, Map<Class<? extends Annotation>, Annotation> declaredAnnotations, int ordinal) { return new JEnumConstant(type, name, declaredAnnotations, ordinal); } protected JEnumType newEnumType(JPackage pkg, String enclosingTypeName, String className) { return new JEnumType(typeOracle, pkg, enclosingTypeName, className); } protected JField newField(JRealClassType type, String name, Map<Class<? extends Annotation>, Annotation> declaredAnnotations) { return new JField(type, name, declaredAnnotations); } protected JMethod newMethod(JClassType type, String name, Map<Class<? extends Annotation>, Annotation> declaredAnnotations, JTypeParameter[] typeParams) { return new JMethod(type, name, declaredAnnotations, typeParams); } protected void newParameter(JAbstractMethod method, JType argType, String argName, Map<Class<? extends Annotation>, Annotation> declaredAnnotations, boolean argNamesAreReal) { new JParameter(method, argType, argName, declaredAnnotations, argNamesAreReal); } protected JRealClassType newRealClassType(JPackage pkg, String enclosingTypeName, String className, boolean isIntf) { return new JRealClassType(typeOracle, pkg, enclosingTypeName, className, isIntf); } protected void setEnclosingType(JRealClassType type, JClassType enclosingType) { type.setEnclosingType(enclosingType); } protected void setFieldType(JField jfield, JType fieldType) { jfield.setType(fieldType); } protected void setReturnType(JAbstractMethod method, JType returnType) { ((JMethod) method).setReturnType(returnType); } protected void setSuperClass(JRealClassType type, JClassType superType) { type.setSuperclass(superType); } protected void setVarArgs(JAbstractMethod method) { method.setVarArgs(); } }