Save This Page
Home » struts-2.1.8.1-src » org.apache » struts2 » impl » [javadoc | source]
    1   /*
    2    * $Id: StrutsObjectFactory.java 667722 2008-06-14 02:38:06Z mrdon $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
   10    * with the License.  You may obtain a copy of the License at
   11    *
   12    *  http://www.apache.org/licenses/LICENSE-2.0
   13    *
   14    * Unless required by applicable law or agreed to in writing,
   15    * software distributed under the License is distributed on an
   16    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   17    * KIND, either express or implied.  See the License for the
   18    * specific language governing permissions and limitations
   19    * under the License.
   20    */
   21   
   22   // Copyright 2006 Google Inc. All Rights Reserved.
   23   
   24   package org.apache.struts2.impl;
   25   
   26   import com.opensymphony.xwork2.ObjectFactory;
   27   import com.opensymphony.xwork2.Result;
   28   import com.opensymphony.xwork2.config.ConfigurationException;
   29   import com.opensymphony.xwork2.config.entities.InterceptorConfig;
   30   import com.opensymphony.xwork2.config.entities.ResultConfig;
   31   import com.opensymphony.xwork2.interceptor.Interceptor;
   32   
   33   import java.util.HashMap;
   34   import java.util.Map;
   35   
   36   public class StrutsObjectFactory extends ObjectFactory {
   37   
   38       public Interceptor buildInterceptor(InterceptorConfig interceptorConfig, Map refParams)
   39               throws ConfigurationException {
   40           String className = interceptorConfig.getClassName();
   41   
   42           Map<String, String> params = new HashMap<String, String>();
   43           Map typeParams = interceptorConfig.getParams();
   44           if (typeParams != null && !typeParams.isEmpty())
   45               params.putAll(typeParams);
   46           if (refParams != null && !refParams.isEmpty())
   47               params.putAll(refParams);
   48   
   49           try {
   50               // interceptor instances are long-lived and used across user sessions, so don't try to pass in any extra
   51               // context
   52               Object o = buildBean(className, null);
   53               reflectionProvider.setProperties(params, o);
   54   
   55               if (o instanceof Interceptor) {
   56                   Interceptor interceptor = (Interceptor) o;
   57                   interceptor.init();
   58                   return interceptor;
   59               }
   60   
   61   // This is for the new API:
   62   //            if (o instanceof org.apache.struts2.spi.Interceptor)
   63   //                return new InterceptorAdapter((org.apache.struts2.spi.Interceptor) o);
   64   
   65               throw new ConfigurationException(
   66                       "Class [" + className + "] does not implement Interceptor", interceptorConfig);
   67           } catch (InstantiationException e) {
   68               throw new ConfigurationException(
   69                       "Unable to instantiate an instance of Interceptor class [" + className + "].",
   70                       e, interceptorConfig);
   71           } catch (IllegalAccessException e) {
   72               throw new ConfigurationException(
   73                       "IllegalAccessException while attempting to instantiate an instance of Interceptor class ["
   74                               + className + "].",
   75                       e, interceptorConfig);
   76           } catch (Exception e) {
   77               throw new ConfigurationException(
   78                       "Caught Exception while registering Interceptor class " + className,
   79                       e, interceptorConfig);
   80           } catch (NoClassDefFoundError e) {
   81               throw new ConfigurationException(
   82                       "Could not load class " + className
   83                               + ". Perhaps it exists but certain dependencies are not available?",
   84                       e, interceptorConfig);
   85           }
   86       }
   87   
   88   }

Save This Page
Home » struts-2.1.8.1-src » org.apache » struts2 » impl » [javadoc | source]