X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fcore%2FComponent.java;h=e70baa23d2f9b0a5b5da13bc1adeaed30bb35211;hb=ddd261f331280640c5b53c7128230b629ebcd268;hp=9409e44f6b0cb9a1c2eef2d95cc6ce9ebd3c5e3b;hpb=98dc838908507748b413ad0d93e9050cbb6ecdeb;p=utils diff --git a/system/general/src/main/java/org/wamblee/system/core/Component.java b/system/general/src/main/java/org/wamblee/system/core/Component.java index 9409e44f..e70baa23 100644 --- a/system/general/src/main/java/org/wamblee/system/core/Component.java +++ b/system/general/src/main/java/org/wamblee/system/core/Component.java @@ -1,87 +1,116 @@ /* * Copyright 2007 the original author or authors. - * + * * 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.wamblee.system.core; +import java.util.List; + + /** * A component represents a part of a system that requires a - * number of interfaces and provides a number of interfaces. + * number of interfaces and provides a number of interfaces. + * + * The component interface provides the meta-data for a component. + * After calling {@link #start(Scope)}, an actual runtime representation of the + * component can be created which is independent of this component. + * As a special case, the runtime representation may be identical to the + * component instance but in general it is not. This allows a component to be + * used as a factory for creating objects. + * * * @author Erik Brakkee */ -public interface Component { - - enum Status { - NOT_STARTED, RUNNING, STOPPED - } - - /** - * Gets the status of the component. - * @return Status. - */ - Status getStatus(); - - /** - * Gets the name of the subsystem. - * @return Subsystem name. - */ - String getName(); - - /** - * Prepends the context with a super context. - */ - void addContext(String aContext); - - /** - * Gets the fully qualified name of the component which includes - * the context of the component. - * This method can only be used after the component has started. - * @return Qualified name. - */ - String getQualifiedName(); +public interface Component { + /** + * Gets the name of the subsystem. + * + * @return Subsystem name. + */ + String getName(); + + /** + * Prepends the context with a super context. + * + * @param aContext DOCUMENT ME! + */ + void addContext(String aContext); + + /** + * Getst the context. + * + * @return Context or null if not set. + */ + String getContext(); + + /** + * Gets the fully qualified name of the component which includes + * the context of the component. This method can only be used after the + * component has started. + * + * @return Qualified name. + */ + String getQualifiedName(); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ +/** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ +/** + * Gets a description of the provided interfaces. + * @return Provided interfaces. + */ + List getProvidedInterfaces(); + + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ +/** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ +/** + * Gets a description of the required interfaces. + * @return Required interfaces. + */ + List getRequiredInterfaces(); - /** - * Gets a description of the provided interfaces. - * @return Provided interfaces. - */ - ProvidedInterface[] getProvidedInterfaces(); - - /** - * Gets a description of the required interfaces. - * @return Required interfaces. - */ - RequiredInterface[] getRequiredInterfaces(); + /** + * Initialises the subsystem by starting all the services that it + * described as provided. + * + * @param aScope Scope with external interface implementations that are + * available. The component must publish its runtime and its + * provided interfaces in this scope. + * + * @return Gets an object representing the runtime of the component. + */ + Type start(Scope aScope); - - /** - * Initialises the subsytem by starting all the services that - * it described as provided. - */ - void start(); - - /** - * Gets the list of running services in the subsystem. - * - * This method may only be called after the - * {@link #initialize(String, Service[])} has been called. - * @return - */ - ProvidedInterface[] getRunningServices(); - - /** - * Stops a subsystem. - */ - void stop(); + /** + * Stops a component. + * + * @param aRuntime THe runtime part of the component. + */ + void stop(Type aRuntime); }