01: /**********************************************************************
02: Copyright (c) 2005 Erik Bengtson and others. All rights reserved.
03: Licensed under the Apache License, Version 2.0 (the "License");
04: you may not use this file except in compliance with the License.
05: You may obtain a copy of the License at
06:
07: http://www.apache.org/licenses/LICENSE-2.0
08:
09: Unless required by applicable law or agreed to in writing, software
10: distributed under the License is distributed on an "AS IS" BASIS,
11: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12: See the License for the specific language governing permissions and
13: limitations under the License.
14:
15: Contributors:
16: ...
17: **********************************************************************/package org.jpox;
18:
19: import org.jpox.metadata.MetaDataManager;
20:
21: /**
22: * Create instances of PersistenceCapable objects. Instantiation of interfaces or
23: * abstract classes is impossible, and for this reason concrete classes are generated and
24: * and enhanced at runtime by the ImplementationCreator. The generated classes
25: * are loaded/defined by an internal ClassLoader to the ImplementationCreator. The internal
26: * ClassLoader delegates to the ClassLoaderResolver (loader) the load of user classes.
27: * @version $Revision: 1.7 $
28: */
29: public interface ImplementationCreator {
30: /**
31: * Constructs an implementation for an interface and instantiates it
32: * @param pc The class of the interface or abstract class, or concrete class defined in MetaData
33: * @param mmgr MetaData Manager
34: * @param loader The ClassLoaderResolver for the interface
35: * @return The instance implementing the interface
36: */
37: Object newInstance(Class pc, MetaDataManager mmgr,
38: ClassLoaderResolver loader);
39:
40: /**
41: * Accessor for the ClassLoader loading classes created at runtime
42: * @return The ClassLoader
43: */
44: ClassLoader getClassLoader();
45: }
|