    001    package org.apache.turbine.services;
    002
    003
    004    /*
    005     * Licensed to the Apache Software Foundation (ASF) under one
    006     * or more contributor license agreements.  See the NOTICE file
    007     * distributed with this work for additional information
    008     * regarding copyright ownership.  The ASF licenses this file
    009     * to you under the Apache License, Version 2.0 (the
    010     * "License"); you may not use this file except in compliance
    011     * with the License.  You may obtain a copy of the License at
    012     *
    013     *   http://www.apache.org/licenses/LICENSE-2.0
    014     *
    015     * Unless required by applicable law or agreed to in writing,
    016     * software distributed under the License is distributed on an
    017     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    018     * KIND, either express or implied.  See the License for the
    019     * specific language governing permissions and limitations
    020     * under the License.
    021     */
    022
    023
    024    import java.util.Properties;
    025
    026    import org.apache.commons.configuration.Configuration;
    027    import org.apache.commons.configuration.ConfigurationConverter;
    028
    029    /**
    030     * This class is a generic implementation of <code>Service</code>.
    031     *
    032     * @author <a href="mailto:burton@apache.org">Kevin Burton</a>
    033     * @author <a href="mailto:krzewski@e-point.pl">Rafal Krzewski</a>
    034     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
    035     * @version $Id: BaseService.java 615328 2008-01-25 20:25:05Z tv $
    036     */
    037    public class BaseService
    038            extends BaseInitable
    039            implements Service
    040    {
    041        /** A reference to the ServiceBroker that instantiated this object. */
    042        protected ServiceBroker serviceBroker;
    043
    044        /** The configuration for this service */
    045        protected Configuration configuration;
    046
    047        /** The name of this Service. */
    048        protected String name;
    049
    050        /**
    051         * Saves a reference to the ServiceBroker that instantiated this
    052         * object, so that it can ask for its properties and access other
    053         * Services.
    054         *
    055         * @param broker The ServiceBroker that instantiated this object.
    056         */
    057        public void setServiceBroker(ServiceBroker broker)
    058        {
    059            this.serviceBroker = broker;
    060        }
    061
    062        /**
    063         * ServiceBroker uses this method to pass a Service its name.
    064         *
    065         * @param name The name of this Service.
    066         */
    067        public void setName(String name)
    068        {
    069            this.name = name;
    070        }
    071
    072        /**
    073         * Returns the name of this service.
    074         *
    075         * @return The name of this Service.
    076         */
    077        public String getName()
    078        {
    079            return name;
    080        }
    081
    082        /**
    083         * Returns a ServiceBroker reference.
    084         *
    085         * @return The ServiceBroker that instantiated this object.
    086         */
    087        public ServiceBroker getServiceBroker()
    088        {
    089            return serviceBroker;
    090        }
    091
    092        /**
    093         * Returns the properties of this Service.
    094         *
    095         * @return The Properties of this Service.
    096         */
    097        public Properties getProperties()
    098        {
    099            return ConfigurationConverter.getProperties(getConfiguration());
    100        }
    101
    102        /**
    103         * Returns the configuration of this Service.
    104         *
    105         * @return The Configuration of this Service.
    106         */
    107        public Configuration getConfiguration()
    108        {
    109            if (name == null)
    110            {
    111                return null;
    112            }
    113
    114            if (configuration == null)
    115            {
    116                configuration = getServiceBroker().getConfiguration(name);
    117            }
    118            return configuration;
    119        }
    120    }