Coverage report

  %line %branch
org.apache.turbine.services.naming.TurbineNamingService
0% 
0% 

 1  
 package org.apache.turbine.services.naming;
 2  
 
 3  
 /*
 4  
  * Copyright 2001-2005 The Apache Software Foundation.
 5  
  *
 6  
  * Licensed under the Apache License, Version 2.0 (the "License")
 7  
  * you may not use this file except in compliance with the License.
 8  
  * You may obtain a copy of the License at
 9  
  *
 10  
  *     http://www.apache.org/licenses/LICENSE-2.0
 11  
  *
 12  
  * Unless required by applicable law or agreed to in writing, software
 13  
  * distributed under the License is distributed on an "AS IS" BASIS,
 14  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15  
  * See the License for the specific language governing permissions and
 16  
  * limitations under the License.
 17  
  */
 18  
 
 19  
 import java.util.HashMap;
 20  
 import java.util.Iterator;
 21  
 import java.util.Map;
 22  
 import java.util.Properties;
 23  
 
 24  
 import javax.naming.Context;
 25  
 import javax.naming.InitialContext;
 26  
 
 27  
 import org.apache.commons.configuration.Configuration;
 28  
 
 29  
 import org.apache.commons.logging.Log;
 30  
 import org.apache.commons.logging.LogFactory;
 31  
 
 32  
 import org.apache.turbine.Turbine;
 33  
 import org.apache.turbine.services.InitializationException;
 34  
 import org.apache.turbine.services.TurbineBaseService;
 35  
 import org.apache.turbine.util.RunData;
 36  
 
 37  
 /**
 38  
  * This class is the default implementation of NamingService, which
 39  
  * provides JNDI naming contexts.
 40  
  *
 41  
  * @author <a href="mailto:greg@shwoop.com">Greg Ritter</a>
 42  
  * @author <a href="mailto:colin.chalmers@maxware.nl">Colin Chalmers</a>
 43  
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
 44  
  * @version $Id: TurbineNamingService.java 264148 2005-08-29 14:21:04Z henning $
 45  
  */
 46  0
 public class TurbineNamingService
 47  
         extends TurbineBaseService
 48  
         implements NamingService
 49  
 {
 50  
     /** Logging */
 51  0
     private static Log log = LogFactory.getLog(TurbineNamingService.class);
 52  
 
 53  
     /**
 54  
      * A global Map of Property objects which are initialised using
 55  
      * parameters from the ResourcesFile
 56  
      */
 57  0
     private Map contextPropsList = null;
 58  
 
 59  
     /** All initial contexts known to this service */
 60  0
     private Map initialContexts = new HashMap();
 61  
 
 62  
     /**
 63  
      * Called the first time the Service is used.<br>
 64  
      *
 65  
      */
 66  
     public void init()
 67  
             throws InitializationException
 68  
     {
 69  
         // Context properties are specified in lines in the properties
 70  
         // file that begin with "context.contextname.", allowing
 71  
         // multiple named contexts to be used.  Everything after the
 72  
         // "contextname."  is the name of the property that will be
 73  
         // used by the InitialContext class to create a new context
 74  
         // instance.
 75  
 
 76  0
         Configuration conf = Turbine.getConfiguration();
 77  
         try
 78  
         {
 79  0
             contextPropsList = new HashMap();
 80  
 
 81  0
             for (Iterator contextKeys = conf.subset("context").getKeys();
 82  0
                  contextKeys.hasNext();)
 83  
             {
 84  0
                 String key = (String) contextKeys.next();
 85  0
                 int end = key.indexOf(".");
 86  
 
 87  0
                 if (end == -1)
 88  
                 {
 89  0
                     continue;
 90  
                 }
 91  
 
 92  0
                 String contextName = key.substring(0, end);
 93  0
                 Properties contextProps = null;
 94  
 
 95  0
                 if (contextPropsList.containsKey(contextName))
 96  
                 {
 97  0
                     contextProps = (Properties)
 98  
                             contextPropsList.get(contextName);
 99  
                 }
 100  
                 else
 101  
                 {
 102  0
                     contextProps = new Properties();
 103  
                 }
 104  
 
 105  0
                 contextProps.put(key.substring(end + 1),
 106  
                         conf.getString(key));
 107  
 
 108  0
                 contextPropsList.put(contextName, contextProps);
 109  
             }
 110  
 
 111  0
             for (Iterator contextPropsKeys = contextPropsList.keySet().iterator();
 112  0
                  contextPropsKeys.hasNext();)
 113  
             {
 114  0
                 String key = (String) contextPropsKeys.next();
 115  0
                 Properties contextProps = (Properties) contextPropsList.get(key);
 116  0
                 InitialContext context = new InitialContext(contextProps);
 117  0
                 initialContexts.put(key, context);
 118  
             }
 119  
 
 120  0
             setInit(true);
 121  
         }
 122  0
         catch (Exception e)
 123  
         {
 124  0
             log.error("Failed to initialize JDNI contexts!", e);
 125  
 
 126  0
             throw new InitializationException(
 127  
                     "Failed to initialize JDNI contexts!");
 128  0
         }
 129  0
     }
 130  
 
 131  
     /**
 132  
      * Places the contexts defined in the TurbineResources instance
 133  
      * (if any) into the data.contexts Map.
 134  
      *
 135  
      * @param data The RunData object for the current request.
 136  
      * @exception InitializationException, if there was a problem
 137  
      * during initialization.
 138  
      * @deprecated This should never have been here. No replacement.
 139  
      */
 140  
     public void init(RunData data) throws InitializationException
 141  
     {
 142  
         try
 143  
         {
 144  0
             if (contextPropsList == null)
 145  
             {
 146  0
                 init();
 147  
             }
 148  
 
 149  0
             for (Iterator it = contextPropsList.keySet().iterator(); it.hasNext();)
 150  
             {
 151  0
                 String key = (String) it.next();
 152  0
                 Properties contextProps =
 153  
                         (Properties) contextPropsList.get(key);
 154  0
                 InitialContext context = new InitialContext(contextProps);
 155  0
                 data.getJNDIContexts().put(key, context);
 156  
             }
 157  
         }
 158  0
         catch (Exception e)
 159  
         {
 160  0
             log.error("Failed to initialize JDNI contexts!", e);
 161  
 
 162  0
             throw new InitializationException(
 163  
                     "Failed to initialize JDNI contexts!");
 164  0
         }
 165  0
     }
 166  
 
 167  
     /**
 168  
      * Return the Context with the specified name.  The Context is
 169  
      * constructed using the properties for the context with the
 170  
      * specified name; ie. those properties that start with
 171  
      * "services.servicename.properties.name.".
 172  
      *
 173  
      * @param contextName The name of the context.
 174  
      * @return The context with the specified name, or null if no
 175  
      * context exists with that name.
 176  
      */
 177  
     public Context getContext(String contextName)
 178  
     {
 179  
         // Get just the properties for the context with the specified
 180  
         // name.
 181  0
         Properties contextProps = null;
 182  
 
 183  0
         if (contextPropsList.containsKey(contextName))
 184  
         {
 185  0
             contextProps = (Properties) contextPropsList.get(contextName);
 186  
         }
 187  
         else
 188  
         {
 189  0
             contextProps = new Properties();
 190  
         }
 191  
 
 192  
         // Construct a new context with the properties.
 193  
         try
 194  
         {
 195  0
             return new InitialContext(contextProps);
 196  
         }
 197  0
         catch (Exception e)
 198  
         {
 199  0
             return null;
 200  
         }
 201  
     }
 202  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.