/* * Copyright (c) 2008, Rickard Öberg. All Rights Reserved. * Copyright (c) 2008, Niclas Hedhman. * * 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 org.qi4j.api.structure; import org.qi4j.api.activation.Activation; import org.qi4j.api.activation.ActivationEventListenerRegistration; /** * The Application represents a whole Qi4j application. */ public interface Application extends ActivationEventListenerRegistration, Activation, MetaInfoHolder { /** * Application modes. */ public enum Mode { /** * Should be used for unit test runs. Created files etc. should be cleaned up between runs. */ test, /** * Should be used during development. Typically create in-memory databases etc. */ development, /** * Should be used in QA environments, and other production-like settings where different set of external * resources are utilized. */ staging, /** * Should be used in production. All databases are persistent on disk etc. */ production } String name(); /** * The version of the application. This can be in any format, but * most likely will follow the Dewey format, i.e. x.y.z. * * @return the version of the application */ String version(); Mode mode(); Layer findLayer( String layerName ) throws IllegalArgumentException; Module findModule( String layerName, String moduleName ) throws IllegalArgumentException; ApplicationDescriptor descriptor(); }