Save This Page
Home » geronimo-2.2-source-release » org.apache.geronimo.j2ee.annotation » [javadoc | source]
    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one
    3    * or more contributor license agreements.  See the NOTICE file
    4    * distributed with this work for additional information
    5    * regarding copyright ownership.  The ASF licenses this file
    6    * to you under the Apache License, Version 2.0 (the
    7    * "License"); you may not use this file except in compliance
    8    * with the License.  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,
   13    * software distributed under the License is distributed on an
   14    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   15    * KIND, either express or implied.  See the License for the
   16    * specific language governing permissions and limitations
   17    * under the License.
   18    */
   19   
   20   
   21   package org.apache.geronimo.j2ee.annotation;
   22   
   23   import java.io.Serializable;
   24   import java.lang.reflect.InvocationTargetException;
   25   import java.lang.reflect.Method;
   26   
   27   /**
   28    * @version $Rev: 516141 $ $Date: 2007-03-08 10:45:05 -0800 (Thu, 08 Mar 2007) $
   29    */
   30   public class LifecycleMethod implements Serializable {
   31   
   32       private final String targetClassName;
   33       private final String methodName;
   34   
   35   
   36       public LifecycleMethod(String targetClassName, String methodName) {
   37           this.targetClassName = targetClassName;
   38           this.methodName = methodName;
   39       }
   40   
   41       public String getTargetClassName() {
   42           return targetClassName;
   43       }
   44   
   45       public String getMethodName() {
   46           return methodName;
   47       }
   48   
   49       public void call(Object o, Class clazz) throws IllegalAccessException, InvocationTargetException {
   50           if (clazz == null) {
   51               clazz = o.getClass();
   52           }
   53           Method m = null;
   54           while (m == null && clazz != null && clazz != Object.class) {
   55               try {
   56                   m = clazz.getDeclaredMethod(methodName);
   57               } catch (NoSuchMethodException e) {
   58                   clazz = clazz.getSuperclass();
   59               }
   60   
   61           }
   62           if (m == null) {
   63               throw new AssertionError("We checked that the class had this method at deploy time. expected class: " + targetClassName + ", actual class: " + clazz.getName() + ", method: " + methodName);
   64           }
   65           if (!m.isAccessible()) {
   66               try {
   67                   m.setAccessible(true);
   68                   m.invoke(o);
   69               } finally {
   70                   m.setAccessible(false);
   71               }
   72           } else {
   73               m.invoke(o);
   74           }
   75       }
   76   }

Save This Page
Home » geronimo-2.2-source-release » org.apache.geronimo.j2ee.annotation » [javadoc | source]