001    // Copyright 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.examples.setters;
016    
017    import java.io.IOException;
018    import java.util.Collection;
019    import java.util.List;
020    import java.util.Properties;
021    
022    import org.apache.examples.Adder;
023    import org.apache.hivemind.Resource;
024    
025    /**
026     * Demonstrates the use of setter based dependency injection using the BuilderFactory.
027     * 
028     * @author Achim Huegen
029     */
030    public class SetterService implements Runnable
031    {
032        private String _stringValue;
033    
034        private int _intValue;
035    
036        private double _doubleValue;
037    
038        private Adder _adderService;
039    
040        private List _configuration;
041    
042        private Collection _container;
043    
044        private Resource _textResource;
045    
046        public void setAdderService(Adder adderService)
047        {
048            _adderService = adderService;
049        }
050    
051        public void setConfiguration(List configuration)
052        {
053            _configuration = configuration;
054        }
055    
056        public void setContainer(Collection container)
057        {
058            _container = container;
059        }
060    
061        public void setDoubleValue(double doubleValue)
062        {
063            _doubleValue = doubleValue;
064        }
065    
066        public void setIntValue(int intValue)
067        {
068            _intValue = intValue;
069        }
070    
071        public void setStringValue(String stringValue)
072        {
073            _stringValue = stringValue;
074        }
075    
076        public void setTextResource(Resource textResource)
077        {
078            _textResource = textResource;
079        }
080    
081        public void run()
082        {
083            System.out.println("StringValue: " + _stringValue);
084            System.out.println("IntValue: " + _intValue);
085            System.out.println("DoubleValue: " + _doubleValue);
086            System.out.println("AdderService result: " + _adderService.add(10, 20));
087            System.out.println("Configuration size: " + _configuration.size());
088            System.out.println("Container type: " + _container.getClass().getName());
089            Properties properties = loadResource();
090            System.out.println("Text resource content: " + properties.toString());
091        }
092    
093        /**
094         * Loads the properties file reference by property textResource
095         */
096        private Properties loadResource()
097        {
098            Properties properties = new Properties();
099            try
100            {
101                properties.load(_textResource.getResourceURL().openStream());
102            }
103            catch (IOException ignore)
104            {
105            }
106            return properties;
107        }
108    }