| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * 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.android.jill.api; |
| |
| import java.util.Collection; |
| |
| import javax.annotation.CheckForNull; |
| import javax.annotation.Nonnegative; |
| import javax.annotation.Nonnull; |
| |
| /** |
| * Provides instances of {@link JillConfig}. |
| */ |
| public interface JillProvider { |
| /** |
| * Creates a {@link JillConfig} instance for an interface representing a {@link JillConfig} API |
| * version. |
| * @param cls the {@link JillConfig} API interface |
| * @return the {@link JillConfig} instance |
| * @throws ConfigNotSupportedException If no implementation is found for the given interface. |
| */ |
| @Nonnull |
| <T extends JillConfig> T createConfig(@Nonnull Class<T> cls) throws ConfigNotSupportedException; |
| |
| /** |
| * Returns whether an interface representing a {@link JillConfig} API version is supported. |
| * |
| * @param cls the {@link JillConfig} API interface |
| * @return <code>true</true> if the config is supported |
| */ |
| @Nonnull |
| <T extends JillConfig> boolean isConfigSupported(@Nonnull Class<T> cls); |
| |
| /** |
| * Gives a {@link Collection} containing supported {@link JillConfig} API versions. |
| * @return the supported {@link JillConfig} API versions |
| */ |
| @Nonnull |
| Collection<Class<? extends JillConfig>> getSupportedConfigs(); |
| |
| /** |
| * Gives the version of this Jill, summarized in one string (e.g. "1.1-rc1", "2.0-a2", |
| * ...). |
| * |
| * @return the version |
| */ |
| @Nonnull |
| String getTranslatorVersion(); |
| |
| /** |
| * Gives the release name of this Jill (e.g. Arzon, Brest, ...). |
| * |
| * @return the release name |
| */ |
| @Nonnull |
| String getTranslatorReleaseName(); |
| |
| /** |
| * Gives an integer value that represents the release of this Jill, relative to other |
| * releases. |
| * |
| * @return the release code |
| */ |
| @Nonnegative |
| int getTranslatorReleaseCode(); |
| |
| /** |
| * Gives an integer value that represents the sub-release of this Jill, relative to other |
| * sub-releases of the same release. |
| * |
| * @return the sub-release code |
| */ |
| @Nonnegative |
| int getTranslatorSubReleaseCode(); |
| |
| /** |
| * Gives the kind of sub-release of this Jill. |
| * |
| * @return the sub-release kind |
| */ |
| @Nonnull |
| SubReleaseKind getTranslatorSubReleaseKind(); |
| |
| /** |
| * The kind of sub-release. |
| */ |
| public enum SubReleaseKind { |
| /** |
| * A sub-release from an engineering development, not tested, not in the code base repository. |
| */ |
| ENGINEERING, |
| /** |
| * A sub-release that is not feature complete, not tested. |
| */ |
| PRE_ALPHA, |
| /** |
| * A sub-release that is not feature complete, tested. |
| */ |
| ALPHA, |
| /** |
| * A sub-release that is feature complete, tested, but likely contains known or unknown bugs. |
| */ |
| BETA, |
| /** |
| * A pre-production sub-release, tested. |
| */ |
| CANDIDATE, |
| /** |
| * A production and stable sub-release. |
| */ |
| RELEASE; |
| } |
| |
| /** |
| * The build ID of this Jill. |
| * @return the build ID, or null if not available |
| */ |
| @CheckForNull |
| String getTranslatorBuildId(); |
| |
| /** |
| * Identify the source code base of this Jill. |
| * @return the source code base, or null if not available |
| */ |
| @CheckForNull |
| String getTranslatorSourceCodeBase(); |
| } |