/* * 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.resources.ext; import com.google.gwt.core.ext.typeinfo.JType; /** * Allows ResourceGenerators to define fields within the implementation class * for a bundle type. An instance of this interface will be provided via the * {@link ResourceGenerator#createFields} method. * <p> * Because multiple, unrelated ResourceGenerators may be generating method * implementations within a single bundle implementation, it is necessary to * ensure that they do not attempt to declare multiple fields with the same * name. The methods in this interface will provide a guaranteed-unique * identifier to use when generating method implementations. * <p> * Multiple invocations of the {@link #define} method with the same inputs will * result in different identifiers being produced. */ public interface ClientBundleFields { /** * Adds a field to the bundle. Equivalent to * <code>defineField(type, name, null, true, false)</code>. * * @param type the declared type of the field * @param name a Java identifier to be used as the basis for the name of the * field * @return the identifier that must be used to access the field */ String define(JType type, String name); /** * Adds a field to the bundle. * * @param type the declared type of the field * @param name a Java identifier to be used as the basis for the name of the * field * @param initializer a Java expression that will be used as the field's * initializer, or <code>null</code> if no initialization expression * is desired * @param isStatic if <code>true</code> the field will be declared to be * static * @param isFinal if <code>true</code> the fields will be declared as final * @return the identifier that must be used to access the field */ String define(JType type, String name, String initializer, boolean isStatic, boolean isFinal); }