KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > jorm > MapperFactory


1 /**
2  * JORM: an implementation of a generic mapping system for persistent Java
3  * objects. Two mapping are supported: to RDBMS and to binary files.
4  * Copyright (C) 2001-2003 France Telecom R&D - INRIA
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  *
20  * Contact: jorm-team@objectweb.org
21  *
22  */

23
24 package org.objectweb.jorm;
25
26 import org.objectweb.jorm.api.PException;
27 import org.objectweb.jorm.api.PMapper;
28 import org.objectweb.util.monolog.api.Logger;
29 import org.objectweb.util.monolog.api.BasicLevel;
30
31 import java.util.Properties JavaDoc;
32
33 /**
34  * Allocates a new mapper by delegating its creation to the factory specified
35  * into the test configuration file.
36  */

37 public class MapperFactory implements JormTestMapperFactory {
38     public final static String JavaDoc FACTORY = "mapper.factory";
39     /**
40      * Creates a new mapper for executing a mapping. The specifications of this
41      * mapper are passed through the properies parameter.
42      * @param prop The properties specifying the mapper to create.
43      * @return The created mapper.
44      * @throws org.objectweb.jorm.api.PException
45      */

46     public PMapper createMapper(Properties JavaDoc prop) throws PException {
47         String JavaDoc mfn;
48         if ((mfn = prop.getProperty(FACTORY)) == null) {
49             throw new PException("TEST: mapper factory mandatory for configuring tests.");
50         }
51         try {
52             return ((JormTestMapperFactory) Class.forName(mfn).newInstance()).createMapper(prop);
53         } catch (InstantiationException JavaDoc e) {
54             throw new PException(e, "TEST: cannot create mapper factory.");
55         } catch (IllegalAccessException JavaDoc e) {
56             throw new PException(e, "TEST: cannot create mapper factory.");
57         } catch (ClassNotFoundException JavaDoc e) {
58             throw new PException(e, "TEST: cannot create mapper factory.");
59         }
60     }
61
62     public void traceException(Logger logger, Exception JavaDoc e) {
63         int i = 0;
64         while (e != null) {
65             logger.log(BasicLevel.ERROR, (i == 0) ? "" : "Nested level " + i, e);
66             i++;
67             if (e instanceof PException) {
68                 e = ((PException) e).getNestedException();
69             } else {
70                 e = null;
71             }
72         }
73     }
74 }
75
Popular Tags