9d003c3f73d12ab23aecadf035a34b4795e0afc1
[utils] / system / general / src / main / java / org / wamblee / system / adapters / ClassAdapter.java
1 /*
2  * Copyright 2008 the original author or authors.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package org.wamblee.system.adapters;
17
18 import org.wamblee.system.core.AbstractComponent;
19 import org.wamblee.system.core.ProvidedInterface;
20 import org.wamblee.system.core.RequiredInterface;
21 import org.wamblee.system.core.Scope;
22
23
24 /**
25  * A Class Adapter adapts a given class to a Component.
26  *
27  * @author Erik Brakkee
28  */
29 public class ClassAdapter extends AbstractComponent<Object> {
30     /**
31      * DOCUMENT ME!
32      */
33     private ClassConfiguration _classConfig;
34
35     /**
36      * Creates a new ClassAdapter object.
37      *
38      * @param aName DOCUMENT ME!
39      * @param aClassConfig DOCUMENT ME!
40      */
41     public ClassAdapter(String aName, ClassConfiguration aClassConfig) {
42         super(aName,
43             aClassConfig.getProvidedInterfaces()
44             .toArray(new ProvidedInterface[0]),
45             aClassConfig.getRequiredInterfaces()
46             .toArray(new RequiredInterface[0]));
47         _classConfig = aClassConfig;
48     }
49
50     /**
51      * DOCUMENT ME!
52      *
53      * @param aScope DOCUMENT ME!
54      *
55      * @return DOCUMENT ME!
56      */
57     @Override
58     protected Object doStart(Scope aScope) {
59         Object obj = _classConfig.create(aScope);
60         _classConfig.inject(aScope, obj);
61
62         for (ProvidedInterface provided : getProvidedInterfaces()) {
63             addInterface(provided, obj, aScope);
64         }
65
66         return obj;
67     }
68
69     /**
70      * DOCUMENT ME!
71      *
72      * @param aRuntime DOCUMENT ME!
73      */
74     @Override
75     protected void doStop(Object aRuntime) {
76         // Empty. 
77     }
78 }