diff options
Diffstat (limited to 'jill-api/src/com/android/jill/api/JillProvider.java')
-rw-r--r-- | jill-api/src/com/android/jill/api/JillProvider.java | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/jill-api/src/com/android/jill/api/JillProvider.java b/jill-api/src/com/android/jill/api/JillProvider.java new file mode 100644 index 0000000..30fd4e3 --- /dev/null +++ b/jill-api/src/com/android/jill/api/JillProvider.java @@ -0,0 +1,141 @@ +/* + * 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(); +} |