You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by jo...@apache.org on 2016/06/09 02:00:48 UTC

deltaspike git commit: DELTASPIKE-1169 Create separate interfaces for the main concerns of EntityRepository.

Repository: deltaspike
Updated Branches:
  refs/heads/master ec5ce5dd8 -> 1e660a251


DELTASPIKE-1169 Create separate interfaces for the main concerns of EntityRepository.


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/1e660a25
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/1e660a25
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/1e660a25

Branch: refs/heads/master
Commit: 1e660a25131f249ab8e82b3c478a2953eceb670b
Parents: ec5ce5d
Author: John D. Ament <jo...@apache.org>
Authored: Wed Jun 8 22:00:21 2016 -0400
Committer: John D. Ament <jo...@apache.org>
Committed: Wed Jun 8 22:00:32 2016 -0400

----------------------------------------------------------------------
 .../data/api/EntityCountRepository.java         | 51 +++++++++++
 .../data/api/EntityPersistenceRepository.java   | 91 +++++++++++++++++++
 .../deltaspike/data/api/EntityRepository.java   | 95 +-------------------
 3 files changed, 144 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1e660a25/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityCountRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityCountRepository.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityCountRepository.java
new file mode 100644
index 0000000..b7d0870
--- /dev/null
+++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityCountRepository.java
@@ -0,0 +1,51 @@
+/*
+ * 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.deltaspike.data.api;
+
+import javax.persistence.metamodel.SingularAttribute;
+
+public interface EntityCountRepository<E>
+{
+    /**
+     * Count all existing entities of entity class {@code <E>}.
+     * @return                  Counter.
+     */
+    Long count();
+
+    /**
+     * Count existing entities of entity class {@code <E>}
+     * with for a given object and a specific set of properties..
+     * @param example           Sample entity. Query all like.
+     * @param attributes        Which attributes to consider for the query.
+     *
+     * @return                  Counter.
+     */
+    Long count(E example, SingularAttribute<E, ?>... attributes);
+
+    /**
+     * Count existing entities of entity class using the like operator for String attributes {@code <E>}
+     * with for a given object and a specific set of properties..
+     * @param example           Sample entity. Query all like.
+     * @param attributes        Which attributes to consider for the query.
+     *
+     * @return                  Counter.
+     */
+    Long countLike(E example, SingularAttribute<E, ?>... attributes);
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1e660a25/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityPersistenceRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityPersistenceRepository.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityPersistenceRepository.java
new file mode 100644
index 0000000..4e3af76
--- /dev/null
+++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityPersistenceRepository.java
@@ -0,0 +1,91 @@
+/*
+ * 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.deltaspike.data.api;
+
+import org.apache.deltaspike.core.spi.activation.Deactivatable;
+
+import java.io.Serializable;
+
+public interface EntityPersistenceRepository<E, PK extends Serializable> extends Deactivatable
+{
+    /**
+     * Persist (new entity) or merge the given entity. The distinction on calling either
+     * method is done based on the primary key field being null or not.
+     * If this results in wrong behavior for a specific case, consider using the
+     * {@link org.apache.deltaspike.data.api.EntityManagerDelegate} which offers both
+     * {@code persist} and {@code merge}.
+     * @param entity            Entity to save.
+     * @return                  Returns the modified entity.
+     */
+    E save(E entity);
+
+    /**
+     * {@link #save(Object)}s the given entity and flushes the persistence context afterwards.
+     * @param entity            Entity to save.
+     * @return                  Returns the modified entity.
+     */
+    E saveAndFlush(E entity);
+
+    /**
+     * {@link #save(Object)}s the given entity and flushes the persistence context afterwards,
+     * followed by a refresh (e.g. to load DB trigger modifications).
+     * @param entity            Entity to save.
+     * @return                  Returns the modified entity.
+     */
+    E saveAndFlushAndRefresh(E entity);
+
+    /**
+     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}.
+     * @param entity            Entity to remove.
+     */
+    void remove(E entity);
+
+    /**
+     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}
+     * with a following flush.
+     * @param entity            Entity to remove.
+     */
+    void removeAndFlush(E entity);
+
+    /**
+     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}
+     * with an detached entity.
+     * @param entity            Entity to remove.
+     */
+    void attachAndRemove(E entity);
+
+    /**
+     * Convenience access to {@link javax.persistence.EntityManager#refresh(Object)}.
+     * @param entity            Entity to refresh.
+     */
+    void refresh(E entity);
+
+    /**
+     * Convenience access to {@link javax.persistence.EntityManager#flush()}.
+     */
+    void flush();
+
+    /**
+     * Return the id of the entity. Returns null if the entity does not yet have an id.
+     * @param example           Sample entity.
+     * @return                  id of the entity
+     */
+    PK getPrimaryKey(E example);
+}

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/1e660a25/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
index 647a96e..33243a9 100755
--- a/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
+++ b/deltaspike/modules/data/api/src/main/java/org/apache/deltaspike/data/api/EntityRepository.java
@@ -23,75 +23,17 @@ import java.util.List;
 
 import javax.persistence.metamodel.SingularAttribute;
 
-import org.apache.deltaspike.core.spi.activation.Deactivatable;
-
 /**
  * Base Repository interface. All methods are implemented by the CDI extension.
  *
  * @param <E>   Entity type.
  * @param <PK>  Primary key type.
  */
-public interface EntityRepository<E, PK extends Serializable> extends Deactivatable
+public interface EntityRepository<E, PK extends Serializable> extends EntityPersistenceRepository<E, PK>,
+        EntityCountRepository<E>
 {
 
     /**
-     * Persist (new entity) or merge the given entity. The distinction on calling either
-     * method is done based on the primary key field being null or not.
-     * If this results in wrong behavior for a specific case, consider using the
-     * {@link org.apache.deltaspike.data.api.EntityManagerDelegate} which offers both
-     * {@code persist} and {@code merge}.
-     * @param entity            Entity to save.
-     * @return                  Returns the modified entity.
-     */
-    E save(E entity);
-
-    /**
-     * {@link #save(Object)}s the given entity and flushes the persistence context afterwards.
-     * @param entity            Entity to save.
-     * @return                  Returns the modified entity.
-     */
-    E saveAndFlush(E entity);
-
-    /**
-     * {@link #save(Object)}s the given entity and flushes the persistence context afterwards,
-     * followed by a refresh (e.g. to load DB trigger modifications).
-     * @param entity            Entity to save.
-     * @return                  Returns the modified entity.
-     */
-    E saveAndFlushAndRefresh(E entity);
-
-    /**
-     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}.
-     * @param entity            Entity to remove.
-     */
-    void remove(E entity);
-
-    /**
-     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}
-     * with a following flush.
-     * @param entity            Entity to remove.
-     */
-    void removeAndFlush(E entity);
-
-    /**
-     * Convenience access to {@link javax.persistence.EntityManager#remove(Object)}
-     * with an detached entity.
-     * @param entity            Entity to remove.
-     */
-    void attachAndRemove(E entity);
-
-    /**
-     * Convenience access to {@link javax.persistence.EntityManager#refresh(Object)}.
-     * @param entity            Entity to refresh.
-     */
-    void refresh(E entity);
-
-    /**
-     * Convenience access to {@link javax.persistence.EntityManager#flush()}.
-     */
-    void flush();
-
-    /**
      * Entity lookup by primary key. Convenicence method around
      * {@link javax.persistence.EntityManager#find(Class, Object)}.
      * @param primaryKey        DB primary key.
@@ -149,37 +91,4 @@ public interface EntityRepository<E, PK extends Serializable> extends Deactivata
      * @return                  List of entities matching the example, or empty if none found.
      */
     List<E> findByLike(E example, int start, int max, SingularAttribute<E, ?>... attributes);
-
-    /**
-     * Count all existing entities of entity class {@code <E>}.
-     * @return                  Counter.
-     */
-    Long count();
-
-    /**
-     * Count existing entities of entity class {@code <E>}
-     * with for a given object and a specific set of properties..
-     * @param example           Sample entity. Query all like.
-     * @param attributes        Which attributes to consider for the query.
-     *
-     * @return                  Counter.
-     */
-    Long count(E example, SingularAttribute<E, ?>... attributes);
-
-    /**
-     * Count existing entities of entity class using the like operator for String attributes {@code <E>}
-     * with for a given object and a specific set of properties..
-     * @param example           Sample entity. Query all like.
-     * @param attributes        Which attributes to consider for the query.
-     *
-     * @return                  Counter.
-     */
-    Long countLike(E example, SingularAttribute<E, ?>... attributes);
-
-    /**
-     * Return the id of the entity. Returns null if the entity does not yet have an id.
-     * @param example           Sample entity.
-     * @return                  id of the entity
-     */
-    PK getPrimaryKey(E example);
 }