KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ojb > jdori > sql > Helper


1 package org.apache.ojb.jdori.sql;
2
3 import java.lang.reflect.Field JavaDoc;
4
5 import javax.jdo.JDOFatalInternalException;
6
7 import com.sun.jdori.StateManagerInternal;
8 import com.sun.jdori.common.model.jdo.JDOModelFactoryImpl;
9 import com.sun.jdori.common.model.runtime.RuntimeJavaModelFactory;
10 import com.sun.jdori.model.java.JavaModel;
11 import com.sun.jdori.model.java.JavaModelFactory;
12 import com.sun.jdori.model.jdo.JDOClass;
13 import com.sun.jdori.model.jdo.JDOModel;
14
15 /* Copyright 2003-2005 The Apache Software Foundation
16  *
17  * Licensed under the Apache License, Version 2.0 (the "License");
18  * you may not use this file except in compliance with the License.
19  * You may obtain a copy of the License at
20  *
21  * http://www.apache.org/licenses/LICENSE-2.0
22  *
23  * Unless required by applicable law or agreed to in writing, software
24  * distributed under the License is distributed on an "AS IS" BASIS,
25  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26  * See the License for the specific language governing permissions and
27  * limitations under the License.
28  */

29
30 /**
31  * @author Thomas Mahler
32  *
33  * this is a helper class providing static convenience methods.
34  */

35 class Helper
36 {
37     /**
38      * this method looks up the appropriate JDOClass for a given persistent Class.
39      * It uses the JDOModel to perfom this lookup.
40      * @param c the persistent Class
41      * @return the JDOCLass object
42      */

43     static JDOClass getJDOClass(Class JavaDoc c)
44     {
45         JDOClass rc = null;
46         try
47         {
48             JavaModelFactory javaModelFactory = RuntimeJavaModelFactory.getInstance();
49             JavaModel javaModel = javaModelFactory.getJavaModel(c.getClassLoader());
50             JDOModel m = JDOModelFactoryImpl.getInstance().getJDOModel(javaModel);
51             rc = m.getJDOClass(c.getName());
52         }
53         catch (RuntimeException JavaDoc ex)
54         {
55             throw new JDOFatalInternalException("Not a JDO class: " + c.getName());
56         }
57         return rc;
58     }
59
60     /**
61      * obtains the internal JDO lifecycle state of the input StatemanagerInternal.
62      * This Method is helpful to display persistent objects internal state.
63      * @param sm the StateManager to be inspected
64      * @return the LifeCycleState of a StateManager instance
65      */

66     static Object JavaDoc getLCState(StateManagerInternal sm)
67     {
68         // unfortunately the LifeCycleState classes are package private.
69
// so we have to do some dirty reflection hack to access them
70
try
71         {
72             Field JavaDoc myLC = sm.getClass().getDeclaredField("myLC");
73             myLC.setAccessible(true);
74             return myLC.get(sm);
75         }
76         catch (NoSuchFieldException JavaDoc e)
77         {
78             return e;
79         }
80         catch (IllegalAccessException JavaDoc e)
81         {
82             return e;
83         }
84     }
85
86 }
87
Popular Tags