diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-13 20:02:36 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2008-11-13 20:02:36 +0000 |
commit | 4ed0ed906e82c9484b384419fa4ef4c980768731 (patch) | |
tree | e0250b6d10349e29522a2b1667d2e1db4d9dab84 /branches/sca-java-1.x/modules/implementation-openjpa/src/main/java/org/apache/tuscany/sca/implementation/openjpa/TuscanyBrokerFactory.java | |
parent | ba73f8abcef884936f965c3085b80485bf2b5e1a (diff) |
Creating Java SCA 1.x branch
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@713805 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r-- | branches/sca-java-1.x/modules/implementation-openjpa/src/main/java/org/apache/tuscany/sca/implementation/openjpa/TuscanyBrokerFactory.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/branches/sca-java-1.x/modules/implementation-openjpa/src/main/java/org/apache/tuscany/sca/implementation/openjpa/TuscanyBrokerFactory.java b/branches/sca-java-1.x/modules/implementation-openjpa/src/main/java/org/apache/tuscany/sca/implementation/openjpa/TuscanyBrokerFactory.java new file mode 100644 index 0000000000..c4b14a1a90 --- /dev/null +++ b/branches/sca-java-1.x/modules/implementation-openjpa/src/main/java/org/apache/tuscany/sca/implementation/openjpa/TuscanyBrokerFactory.java @@ -0,0 +1,100 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tuscany.sca.implementation.openjpa; + +import javax.sql.XAConnection; +import javax.transaction.TransactionManager; + +import org.apache.derby.jdbc.*; +import org.apache.openjpa.conf.OpenJPAConfiguration; +import org.apache.openjpa.kernel.AbstractBrokerFactory; +import org.apache.openjpa.kernel.StoreManager; +import org.apache.openjpa.lib.conf.ConfigurationProvider; +import java.util.*; +import org.apache.commons.logging.*; +import org.apache.openjpa.jdbc.meta.MappingTool; +import org.apache.openjpa.jdbc.conf.*; +import org.apache.openjpa.meta.*; + +public class TuscanyBrokerFactory extends AbstractBrokerFactory { + private Log log = LogFactory.getLog(this.getClass()); + protected TuscanyBrokerFactory(OpenJPAConfiguration conf) { + super(conf); + if (buildSchema != null && buildSchema.equals("buildSchema")) { + MappingTool tool = new MappingTool((JDBCConfiguration) conf, + (String) buildSchema, false); + Collection classes = meta.loadPersistentTypes(false, this + .getClass().getClassLoader()); + for (Iterator itr = classes.iterator(); itr.hasNext();) { + tool.run((Class) itr.next()); + } + log + .info("creating database and tables accroding to class mappings..."); + tool.record(); + } + } + + private XAConnection xaconn; + + @Override + protected StoreManager newStoreManager() { + try { + if (xaconn == null) { + if (cp.getProperties().get("dbtype").equals("Derby")) { + EmbeddedXADataSource xads = new EmbeddedXADataSource(); + xads.setDatabaseName((String)cp.getProperties().get("dbname")); + + xaconn = xads.getXAConnection(); + } + + System.out.println("------------TuscanyBrokerFactory.newStoreManager...."); + + } + return new TuscanyStoreManager(xaconn); + + } catch (Exception ex) { + ex.printStackTrace(); + throw new RuntimeException(ex); + } + } + + private static TransactionManager tm; + private static ConfigurationProvider cp; + private static Object buildSchema; + private static MetaDataRepository meta; + + public static TuscanyBrokerFactory newInstance(ConfigurationProvider _cp) { + tm = (TransactionManager)_cp.getProperties().get("TransactionManager"); + EmbeddedDataSource ds2 = null; + if (_cp.getProperties().get("dbtype").equals("Derby")) { + ds2 = new EmbeddedDataSource(); + ds2.setDatabaseName((String) _cp.getProperties().get("dbname")); + ds2.setCreateDatabase((String) _cp.getProperties().get("dbcreate")); + } + TuscanyJDBCConfigurationImpl conf = new TuscanyJDBCConfigurationImpl(tm, ds2); + _cp.setInto(conf); + buildSchema = _cp.getProperties().get( + "openjpa.jdbc.SynchronizeMappings"); + + meta = conf.getMetaDataRepositoryInstance(); + cp = _cp; + return new TuscanyBrokerFactory(conf); + } +} |