com.google.gwt.resources.ext.ClientBundleFields.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.resources.ext.ClientBundleFields.java

Source

/*
 * 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);
}