summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2010-06-01 16:29:14 -0700
committerShawn O. Pearce <sop@google.com>2010-06-04 12:44:50 -0700
commit68d560f77c5271bf3cd2fbf8c0c01e6df37fff94 (patch)
treef061ce29bbd26cd18f9e2ba3e4d0265e1983cdf5
parentcfb26cea00485376e6beab49d970c8f8fc53828e (diff)
downloadgwtorm-68d560f77c5271bf3cd2fbf8c0c01e6df37fff94.tar.gz
Hoist atomicUpdate, deleteKeys up to AbstractAccess
These can be useful in other backends, as they are quite simple implementations that are built on top of other primitives. Change-Id: I847ce3b27c18ff4de65d7d5a69cd6690f99ff7bd Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gwtorm/client/impl/AbstractAccess.java31
-rw-r--r--src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java31
2 files changed, 31 insertions, 31 deletions
diff --git a/src/main/java/com/google/gwtorm/client/impl/AbstractAccess.java b/src/main/java/com/google/gwtorm/client/impl/AbstractAccess.java
index 77e150e..17ff862 100644
--- a/src/main/java/com/google/gwtorm/client/impl/AbstractAccess.java
+++ b/src/main/java/com/google/gwtorm/client/impl/AbstractAccess.java
@@ -15,16 +15,21 @@
package com.google.gwtorm.client.impl;
import com.google.gwtorm.client.Access;
+import com.google.gwtorm.client.AtomicUpdate;
import com.google.gwtorm.client.Key;
+import com.google.gwtorm.client.OrmConcurrencyException;
import com.google.gwtorm.client.OrmException;
import com.google.gwtorm.client.ResultSet;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public abstract class AbstractAccess<E, K extends Key<?>>
implements Access<E, K> {
+ private static final int MAX_TRIES = 10;
+
public ResultSet<E> get(final Iterable<K> keys) throws OrmException {
final ArrayList<E> r = new ArrayList<E>();
for (final K key : keys) {
@@ -49,4 +54,30 @@ public abstract class AbstractAccess<E, K extends Key<?>>
}
}
}
+
+ @Override
+ public E atomicUpdate(final K key, final AtomicUpdate<E> update)
+ throws OrmException {
+ for (int attempts = 1;; attempts++) {
+ try {
+ final E obj = get(key);
+ if (obj == null) {
+ return null;
+ }
+ final E res = update.update(obj);
+ update(Collections.singleton(obj));
+ return res;
+ } catch (OrmConcurrencyException err) {
+ if (attempts < MAX_TRIES) {
+ continue;
+ }
+ throw err;
+ }
+ }
+ }
+
+ @Override
+ public void deleteKeys(Iterable<K> keys) throws OrmException {
+ delete(get(keys));
+ }
}
diff --git a/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java b/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
index 08f18e2..4105d75 100644
--- a/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
+++ b/src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java
@@ -15,7 +15,6 @@
package com.google.gwtorm.jdbc;
import com.google.gwtorm.client.Access;
-import com.google.gwtorm.client.AtomicUpdate;
import com.google.gwtorm.client.Key;
import com.google.gwtorm.client.OrmConcurrencyException;
import com.google.gwtorm.client.OrmException;
@@ -32,8 +31,6 @@ import java.util.Collections;
/** Internal base class for implementations of {@link Access}. */
public abstract class JdbcAccess<T, K extends Key<?>> extends
AbstractAccess<T, K> {
- private static final int MAX_TRIES = 10;
-
private final JdbcSchema schema;
protected JdbcAccess(final JdbcSchema s) {
@@ -297,34 +294,6 @@ public abstract class JdbcAccess<T, K extends Key<?>> extends
}
}
- @Override
- public T atomicUpdate(final K key, final AtomicUpdate<T> update)
- throws OrmException {
-
- for (int attempts = 1;; attempts++) {
- try {
- final T obj = get(key);
- if (obj == null) {
- return null;
- }
- final T res = update.update(obj);
- update(Collections.singleton(obj));
- return res;
- } catch (OrmConcurrencyException err) {
- if (attempts < MAX_TRIES) {
- continue;
- }
- throw err;
- }
- }
-
- }
-
- @Override
- public void deleteKeys(Iterable<K> keys) throws OrmException {
- delete(get(keys));
- }
-
private OrmException convertError(final String op, final SQLException err) {
if (err.getCause() == null && err.getNextException() != null) {
err.initCause(err.getNextException());