Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 08894200BF2 for ; Mon, 2 Jan 2017 14:55:03 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 070E3160B30; Mon, 2 Jan 2017 13:55:03 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 4F6EA160B22 for ; Mon, 2 Jan 2017 14:55:02 +0100 (CET) Received: (qmail 40881 invoked by uid 500); 2 Jan 2017 13:55:01 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 40866 invoked by uid 99); 2 Jan 2017 13:55:01 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 Jan 2017 13:55:01 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 2FBEDDFC12; Mon, 2 Jan 2017 13:55:01 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: aadamchik@apache.org To: commits@cayenne.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: cayenne git commit: CAY-2165 Explicit "contribution" API for easier expansion of DI collections and map Date: Mon, 2 Jan 2017 13:55:01 +0000 (UTC) archived-at: Mon, 02 Jan 2017 13:55:03 -0000 Repository: cayenne Updated Branches: refs/heads/master 36e70f4e7 -> 50d4fbf50 CAY-2165 Explicit "contribution" API for easier expansion of DI collections and map * adding a method to flip external TX property Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/50d4fbf5 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/50d4fbf5 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/50d4fbf5 Branch: refs/heads/master Commit: 50d4fbf50047e87a99b67a3ac4d9e577e9522a87 Parents: 36e70f4 Author: Andrus Adamchik Authored: Mon Jan 2 16:54:43 2017 +0300 Committer: Andrus Adamchik Committed: Mon Jan 2 16:54:43 2017 +0300 ---------------------------------------------------------------------- .../cayenne/configuration/server/ServerModule.java | 13 ++++++++++++- .../java/org/apache/cayenne/tx/BaseTransaction.java | 1 + .../org/apache/cayenne/tx/ExternalTransaction.java | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/50d4fbf5/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java index 1e32efc..e8314c0 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java @@ -97,6 +97,17 @@ public class ServerModule implements Module { protected String[] configurationLocations; /** + * Sets transaction management to either external or internal transactions. Default is internally-managed transactions. + * + * @param binder DI binder passed to the module during injector startup. + * @param useExternal whether external (true) or internal (false) transaction management should be used. + * @since 4.0 + */ + public static void useExternalTransactions(Binder binder, boolean useExternal) { + contributeProperties(binder).put(Constants.SERVER_EXTERNAL_TX_PROPERTY, String.valueOf(useExternal)); + } + + /** * Provides access to a DI collection builder for String locations that allows downstream modules to * "contribute" their own Cayenne project locations. * @@ -207,7 +218,7 @@ public class ServerModule implements Module { this.configurationLocations = new String[configurationLocations.length + 1]; this.configurationLocations[0] = firstConfigLocation; - if(configurationLocations.length > 0) { + if (configurationLocations.length > 0) { System.arraycopy(configurationLocations, 0, this.configurationLocations, 1, configurationLocations.length); } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/50d4fbf5/cayenne-server/src/main/java/org/apache/cayenne/tx/BaseTransaction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/tx/BaseTransaction.java b/cayenne-server/src/main/java/org/apache/cayenne/tx/BaseTransaction.java index 6281b01..9b7ac0f 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/tx/BaseTransaction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/tx/BaseTransaction.java @@ -223,6 +223,7 @@ public abstract class BaseTransaction implements Transaction { } if (connections == null) { + // transaction is single-threaded, so using a non-concurrent map... connections = new HashMap<>(); } http://git-wip-us.apache.org/repos/asf/cayenne/blob/50d4fbf5/cayenne-server/src/main/java/org/apache/cayenne/tx/ExternalTransaction.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/tx/ExternalTransaction.java b/cayenne-server/src/main/java/org/apache/cayenne/tx/ExternalTransaction.java index 168a2bc..8fd4316 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/tx/ExternalTransaction.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/tx/ExternalTransaction.java @@ -39,6 +39,7 @@ public class ExternalTransaction extends BaseTransaction { logger.logCommitTransaction("no commit - transaction controlled externally."); } + @Override protected void processRollback() { logger.logRollbackTransaction("no rollback - transaction controlled externally."); }