From 357f4dc185a27ff951cbea916437a73fc0d18c09 Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Thu, 15 May 2008 20:19:35 +0000 Subject: [PATCH] Property files are now being read by the property component so they can also be provided by another component (such as a database which is started). --- .../system/components/PropertyComponent.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 system/general/src/main/java/org/wamblee/system/components/PropertyComponent.java diff --git a/system/general/src/main/java/org/wamblee/system/components/PropertyComponent.java b/system/general/src/main/java/org/wamblee/system/components/PropertyComponent.java new file mode 100644 index 00000000..d3c7e070 --- /dev/null +++ b/system/general/src/main/java/org/wamblee/system/components/PropertyComponent.java @@ -0,0 +1,70 @@ +/* + * Copyright 2008 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.components; + +import java.io.IOException; +import java.util.Properties; + +import org.wamblee.io.InputResource; +import org.wamblee.system.core.AbstractComponent; +import org.wamblee.system.core.DefaultProvidedInterface; +import org.wamblee.system.core.ProvidedInterface; +import org.wamblee.system.core.Scope; + +/** + * Property component that reads a property file and provides + * it to other components through a provided interface. + * + * NOTE: when multiple property components are used, disambiguation + * of provided and required interfaces is needed. + * + * @author Erik Brakkee + */ +public class PropertyComponent extends AbstractComponent { + + private static ProvidedInterface PROPS = new DefaultProvidedInterface("props", Properties.class); + + private Properties _props; + + public PropertyComponent(String aName, InputResource aResource) throws IOException { + this(aName, readProps(aResource)); + } + + private static Properties readProps(InputResource aResource) throws IOException { + Properties props = new Properties(); + props.load(aResource.getInputStream()); + return props; + } + + public PropertyComponent(String aName, Properties aProps) { + super(aName); + _props = aProps; + + addProvidedInterface(PROPS); + } + + @Override + protected Properties doStart(Scope aScope) { + addInterface(PROPS, _props, aScope); + return _props; + } + + @Override + protected void doStop(Properties aRuntime) { + // Empty + } + +} -- 2.31.1