KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > ojb > broker > metadata > fieldaccess > PersistentFieldFactory


1 package org.apache.ojb.broker.metadata.fieldaccess;
2
3 /* Copyright 2002-2005 The Apache Software Foundation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17
18 import org.apache.ojb.broker.core.PersistenceBrokerConfiguration;
19 import org.apache.ojb.broker.metadata.MetadataException;
20 import org.apache.ojb.broker.util.ClassHelper;
21 import org.apache.ojb.broker.util.configuration.ConfigurationException;
22 import org.apache.ojb.broker.util.configuration.impl.OjbConfigurator;
23 import org.apache.ojb.broker.util.logging.Logger;
24 import org.apache.ojb.broker.util.logging.LoggerFactory;
25
26 /**
27  * @author <a HREF="mailto:thma@apache.org">Thomas Mahler<a>
28  * @version $Id: PersistentFieldFactory.java,v 1.11.2.2 2005/12/21 22:26:41 tomdz Exp $
29  */

30
31 public class PersistentFieldFactory
32 {
33     private static Logger log = LoggerFactory.getLogger(PersistentFieldFactory.class);
34     private static final Class JavaDoc DEFAULT_PERSISTENT_FIELD_IMPL = PersistentFieldDirectImpl.class;
35     private static final Class JavaDoc[] METHOD_PARAMETER_TYPES = {Class JavaDoc.class, String JavaDoc.class};
36
37 // private static boolean usesAccessorsAndMutators = false;
38
// private static boolean usesAccessorsAndMutatorsCheck = false;
39

40     /**
41      * @throws MetadataException if an erros occours when creating the PersistenteField
42      */

43     public static PersistentField createPersistentField(Class JavaDoc attributeType, String JavaDoc attributeName)
44     {
45         return createPersistentField(null,attributeType,attributeName);
46     }
47     
48     public static PersistentField createPersistentField(String JavaDoc persistentFieldClassName, Class JavaDoc attributeType, String JavaDoc attributeName)
49     {
50         try
51         {
52             if (persistentFieldClassName == null)
53             {
54                 synchronized (PersistentFieldFactory.class)
55                 {
56                     persistentFieldClassName = getDefaultPersistentFieldClassName();
57                 }
58             }
59             Object JavaDoc[] args = {attributeType, attributeName};
60             return (PersistentField) ClassHelper.newInstance(persistentFieldClassName, METHOD_PARAMETER_TYPES, args);
61             
62         }
63         catch (Exception JavaDoc ex)
64         {
65             throw new MetadataException("Error creating PersistentField: " +
66                     attributeType.getName() + ", " + attributeName, ex);
67         }
68     }
69
70 // public static boolean usesAccessorsAndMutators()
71
// {
72
// boolean retval = false;
73
// if (usesAccessorsAndMutatorsCheck)
74
// retval = usesAccessorsAndMutators;
75
// else
76
// {
77
// String className = getDefaultPersistentFieldClassName();
78
// PersistentField field = null;
79
// try
80
// {
81
// field = (PersistentField) ClassHelper.newInstance(className);
82
// usesAccessorsAndMutators = field.usesAccessorsAndMutators();
83
// retval = usesAccessorsAndMutators;
84
// }
85
// catch (Exception e)
86
// {
87
// log.error("Cannot verify 'usesAccessorsAndMutators' attribute for class " + className, e);
88
// }
89
// finally
90
// {
91
// usesAccessorsAndMutatorsCheck = true;
92
// }
93
// }
94
// return retval;
95
// }
96

97     private static String JavaDoc getDefaultPersistentFieldClassName()
98     {
99         try
100         {
101             PersistenceBrokerConfiguration config =
102                     (PersistenceBrokerConfiguration) OjbConfigurator.getInstance().getConfigurationFor(
103                             null);
104
105             Class JavaDoc clazz = config.getPersistentFieldClass();
106             return clazz.getName();
107         }
108         catch (ConfigurationException e)
109         {
110             log.error("Cannot look-up PersistentField class, use default implementation instead", e);
111             return DEFAULT_PERSISTENT_FIELD_IMPL.getName();
112         }
113     }
114
115 }
116
Popular Tags