[prev in list] [next in list] [prev in thread] [next in thread]
List: openejb-development
Subject: Fwd: svn commit: r1588008 - in /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/op
From: Romain Manni-Bucau <rmannibucau () gmail ! com>
Date: 2014-04-16 18:18:39
Message-ID: CACLE=7OkyBHee_Qnh5u3JBfo__3sX7BEkk8fb9ZAAs4GPHENjA () mail ! gmail ! com
[Download RAW message or body]
hi
the change in usePool can surely break TCKs (don't recall values used)
but it is important for a user app to not wrap it in a pool otherwise
it just doesn't work as expected. If tcks are broken we can just
refine it.
Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau
---------- Forwarded message ----------
From: <rmannibucau@apache.org>
Date: 2014-04-16 20:11 GMT+02:00
Subject: svn commit: r1588008 - in
/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc:
DataSourceFactory.java SimpleDataSourceCreator.java
To: commits@tomee.apache.org
Author: rmannibucau
Date: Wed Apr 16 18:11:32 2014
New Revision: 1588008
URL: http://svn.apache.org/r1588008
Log:
TOMEE-1179 support custom datasource with properties without setters +
skipping wrapping when not needed - no pooling
Added:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
Modified:
tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/ja \
va/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1588008&r1=1588007&r2=1588008&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
(original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
Wed Apr 16 18:11:32 2014
@@ -59,6 +59,7 @@ public class DataSourceFactory {
private static final Map<CommonDataSource, DataSourceCreator>
creatorByDataSource = new HashMap<CommonDataSource,
DataSourceCreator>();
private static final Map<String, String> KNOWN_CREATORS = new
TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER) {{
+ put("simple",
"org.apache.openejb.resource.jdbc.SimpleDataSourceCreator"); // use
user provided DS, pooling not supported
put("dbcp",
"org.apache.openejb.resource.jdbc.pool.DefaultDataSourceCreator"); //
the original one
put("dbcp-alternative",
"org.apache.openejb.resource.jdbc.dbcp.DbcpDataSourceCreator"); //
dbcp for the ds pool only
put("tomcat", "org.apache.tomee.jdbc.TomEEDataSourceCreator"); // tomee
@@ -120,6 +121,7 @@ public class DataSourceFactory {
recipe.allow(Option.CASE_INSENSITIVE_PROPERTIES);
recipe.allow(Option.IGNORE_MISSING_PROPERTIES);
recipe.allow(Option.NAMED_PARAMETERS);
+ recipe.allow(Option.PRIVATE_PROPERTIES);
recipe.setAllProperties(properties);
if (!properties.containsKey("url") &&
properties.containsKey("JdbcUrl")) { // depend on the datasource class
so add all well known keys
recipe.setProperty("url",
properties.getProperty("JdbcUrl"));
@@ -252,7 +254,18 @@ public class DataSourceFactory {
}
private static boolean usePool(final Properties properties) {
- return
"true".equalsIgnoreCase(properties.getProperty(POOL_PROPERTY,
"true"));
+ String property = properties.getProperty(POOL_PROPERTY);
+ if (property != null) {
+ properties.remove(POOL_PROPERTY);
+ } else { // defined from @DataSourceDefinition and doesn't need pooling
+ final String initialPoolSize =
properties.getProperty("initialPoolSize");
+ final String maxPoolSize = properties.getProperty("maxPoolSize");
+ if ((null == initialPoolSize || "-1".equals(initialPoolSize))
+ && ("-1".equals(maxPoolSize) || maxPoolSize == null)) {
+ property = "false";
+ }
+ }
+ return "true".equalsIgnoreCase(property) || null == property;
}
private static Properties asProperties(final String definition)
throws IOException {
Added: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/ja \
va/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java?rev=1588008&view=auto
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
(added)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/SimpleDataSourceCreator.java
Wed Apr 16 18:11:32 2014
@@ -0,0 +1,77 @@
+/*
+ * 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.openejb.resource.jdbc;
+
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.resource.XAResourceWrapper;
+import org.apache.openejb.resource.jdbc.managed.local.ManagedDataSource;
+import org.apache.openejb.resource.jdbc.managed.xa.ManagedXADataSource;
+import org.apache.openejb.resource.jdbc.pool.DataSourceCreator;
+import org.apache.xbean.recipe.ObjectRecipe;
+
+import javax.sql.CommonDataSource;
+import javax.sql.DataSource;
+import javax.sql.XADataSource;
+import javax.transaction.TransactionManager;
+import java.util.Properties;
+
+public class SimpleDataSourceCreator implements DataSourceCreator {
+ @Override
+ public DataSource managed(final String name, final CommonDataSource ds) {
+ final TransactionManager transactionManager =
OpenEJB.getTransactionManager();
+ if (XADataSource.class.isInstance(ds)) {
+ return new
ManagedXADataSource(XADataSource.class.cast(ds), transactionManager);
+ }
+ return new ManagedDataSource(DataSource.class.cast(ds),
transactionManager);
+ }
+
+ @Override
+ public DataSource poolManaged(final String name, final DataSource
ds, final Properties properties) {
+ throw new UnsupportedOperationException("pooling not supported");
+ }
+
+ @Override
+ public DataSource pool(final String name, final DataSource ds,
final Properties properties) {
+ throw new UnsupportedOperationException("pooling not supported");
+ }
+
+ @Override
+ public DataSource poolManagedWithRecovery(final String name,
final XAResourceWrapper xaResourceWrapper,
+ final String driver,
final Properties properties) {
+ throw new UnsupportedOperationException("pooling not supported");
+ }
+
+ @Override
+ public DataSource poolManaged(final String name, final String
driver, final Properties properties) {
+ throw new UnsupportedOperationException("pooling not supported");
+ }
+
+ @Override
+ public CommonDataSource pool(final String name, final String
driver, final Properties properties) {
+ throw new UnsupportedOperationException("pooling not supported");
+ }
+
+ @Override
+ public void destroy(final Object object) throws Throwable {
+ // no-op
+ }
+
+ @Override
+ public ObjectRecipe clearRecipe(final Object object) {
+ return null;
+ }
+}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic