2 * Copyright 2008 the original author or authors.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 package org.wamblee.system.components;
18 import java.io.IOException;
19 import java.util.Properties;
21 import org.wamblee.io.InputResource;
22 import org.wamblee.system.core.AbstractComponent;
23 import org.wamblee.system.core.DefaultProvidedInterface;
24 import org.wamblee.system.core.ProvidedInterface;
25 import org.wamblee.system.core.Scope;
28 * Property component that reads a property file and provides
29 * it to other components through a provided interface.
31 * NOTE: when multiple property components are used, disambiguation
32 * of provided and required interfaces is needed.
34 * @author Erik Brakkee
36 public class PropertyComponent extends AbstractComponent<Properties> {
38 private static ProvidedInterface PROPS = new DefaultProvidedInterface("props", Properties.class);
40 private Properties _props;
42 public PropertyComponent(String aName, InputResource aResource) throws IOException {
43 this(aName, readProps(aResource));
46 private static Properties readProps(InputResource aResource) throws IOException {
47 Properties props = new Properties();
48 props.load(aResource.getInputStream());
52 public PropertyComponent(String aName, Properties aProps) {
56 addProvidedInterface(PROPS);
60 protected Properties doStart(Scope aScope) {
61 addInterface(PROPS, _props, aScope);
66 protected void doStop(Properties aRuntime) {