diff options
author | Shawn O. Pearce <sop@google.com> | 2010-06-01 16:29:14 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2010-06-04 12:44:50 -0700 |
commit | 68d560f77c5271bf3cd2fbf8c0c01e6df37fff94 (patch) | |
tree | f061ce29bbd26cd18f9e2ba3e4d0265e1983cdf5 | |
parent | cfb26cea00485376e6beab49d970c8f8fc53828e (diff) | |
download | gwtorm-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.java | 31 | ||||
-rw-r--r-- | src/main/java/com/google/gwtorm/jdbc/JdbcAccess.java | 31 |
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()); |