From 04965892f0827fb44d5f56876caf05b80657bb95 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Tue, 29 Mar 2016 15:46:10 +1300 Subject: [PATCH] #625 - Rename @DocStoreEmbedded to @DocEmbedded (with deprecation) --- .../avaje/ebean/annotation/DocEmbedded.java | 37 +++++++++++++++++++ .../ebean/annotation/DocStoreEmbedded.java | 20 +--------- .../deploy/meta/DeployBeanPropertyAssoc.java | 5 +-- .../server/deploy/parse/AnnotationFields.java | 6 ++- .../com/avaje/tests/model/basic/Contact.java | 19 +++++----- .../com/avaje/tests/model/basic/Customer.java | 6 +-- .../com/avaje/tests/model/basic/Order.java | 3 +- .../avaje/tests/model/basic/OrderDetail.java | 9 ++--- 8 files changed, 64 insertions(+), 41 deletions(-) create mode 100644 src/main/java/com/avaje/ebean/annotation/DocEmbedded.java diff --git a/src/main/java/com/avaje/ebean/annotation/DocEmbedded.java b/src/main/java/com/avaje/ebean/annotation/DocEmbedded.java new file mode 100644 index 000000000..f0e258287 --- /dev/null +++ b/src/main/java/com/avaje/ebean/annotation/DocEmbedded.java @@ -0,0 +1,37 @@ +package com.avaje.ebean.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * Specify the property is included in the parent document store index. + * + *
{@code
+ *
+ *
+ * @DocStore
+ * @Entity @Table(name = "o_order")
+ * public class Order {
+ *
+ *   ...
+ *   // include some customer details including
+ *   // nested billingAddress
+ *   @DocEmbedded(doc = "id,status,name,billingAddress(*,country(*)")
+ *   @ManyToOne
+ *   Customer customer;
+ *
+ *
+ * }
+ */ +@Target({ ElementType.FIELD }) +@Retention(RetentionPolicy.RUNTIME) +public @interface DocEmbedded { + + /** + * The properties on the embedded bean to include in the index. + */ + String doc() default ""; + +} diff --git a/src/main/java/com/avaje/ebean/annotation/DocStoreEmbedded.java b/src/main/java/com/avaje/ebean/annotation/DocStoreEmbedded.java index 66adc5e78..09fefda06 100644 --- a/src/main/java/com/avaje/ebean/annotation/DocStoreEmbedded.java +++ b/src/main/java/com/avaje/ebean/annotation/DocStoreEmbedded.java @@ -6,27 +6,11 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** - * Specify the property is included in the parent document store index. - * - *
{@code
- *
- *
- * @DocStore
- * @Entity @Table(name = "o_order")
- * public class Order {
- *
- *   ...
- *   // include some customer details including
- *   // nested billingAddress
- *   @DocStoreEmbedded(doc = "id,status,name,billingAddress(*,country(*)")
- *   @ManyToOne
- *   Customer customer;
- *
- *
- * }
+ * Deprecated in favor of @DocEmbedded (i.e. renamed to @DocEmbedded) */ @Target({ ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) +@Deprecated public @interface DocStoreEmbedded { /** diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyAssoc.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyAssoc.java index 9f823098a..fc4ab947c 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyAssoc.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/meta/DeployBeanPropertyAssoc.java @@ -1,6 +1,5 @@ package com.avaje.ebeaninternal.server.deploy.meta; -import com.avaje.ebean.annotation.DocStoreEmbedded; import com.avaje.ebeaninternal.server.deploy.BeanCascadeInfo; import com.avaje.ebeaninternal.server.deploy.BeanTable; @@ -140,8 +139,8 @@ public abstract class DeployBeanPropertyAssoc extends DeployBeanProperty { /** * Set DocStoreEmbedded deployment information. */ - public void setDocStoreEmbedded(DocStoreEmbedded embedded) { - docStoreDoc = embedded.doc(); + public void setDocStoreEmbedded(String embeddedDoc) { + this.docStoreDoc = embeddedDoc; } public String getDocStoreDoc() { diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java index 8cee48328..4a5810bea 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/parse/AnnotationFields.java @@ -91,9 +91,13 @@ public class AnnotationFields extends AnnotationParser { prop.setEmbedded(); } + DocEmbedded docEmbedded = get(prop, DocEmbedded.class); + if (docEmbedded != null) { + prop.setDocStoreEmbedded(docEmbedded.doc()); + } DocStoreEmbedded docStoreEmbedded = get(prop, DocStoreEmbedded.class); if (docStoreEmbedded != null) { - prop.setDocStoreEmbedded(docStoreEmbedded); + prop.setDocStoreEmbedded(docStoreEmbedded.doc()); } if (prop instanceof DeployBeanPropertyAssocOne) { diff --git a/src/test/java/com/avaje/tests/model/basic/Contact.java b/src/test/java/com/avaje/tests/model/basic/Contact.java index fe4907438..de11eab88 100644 --- a/src/test/java/com/avaje/tests/model/basic/Contact.java +++ b/src/test/java/com/avaje/tests/model/basic/Contact.java @@ -1,20 +1,19 @@ package com.avaje.tests.model.basic; -import java.sql.Timestamp; -import java.util.List; +import com.avaje.ebean.annotation.CacheStrategy; +import com.avaje.ebean.annotation.ChangeLog; +import com.avaje.ebean.annotation.CreatedTimestamp; +import com.avaje.ebean.annotation.DocEmbedded; +import com.avaje.ebean.annotation.DocStore; +import com.avaje.ebean.annotation.Index; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Version; - -import com.avaje.ebean.annotation.CacheStrategy; -import com.avaje.ebean.annotation.ChangeLog; -import com.avaje.ebean.annotation.CreatedTimestamp; -import com.avaje.ebean.annotation.DocStoreEmbedded; -import com.avaje.ebean.annotation.DocStore; -import com.avaje.ebean.annotation.Index; +import java.sql.Timestamp; +import java.util.List; @DocStore @Index(columnNames = {"last_name","first_name"}) @@ -35,7 +34,7 @@ public class Contact { String mobile; String email; - @DocStoreEmbedded(doc="id,name") + @DocEmbedded(doc="id,name") @ManyToOne(optional=false) Customer customer; diff --git a/src/test/java/com/avaje/tests/model/basic/Customer.java b/src/test/java/com/avaje/tests/model/basic/Customer.java index 738f3e89a..5b57b03b6 100644 --- a/src/test/java/com/avaje/tests/model/basic/Customer.java +++ b/src/test/java/com/avaje/tests/model/basic/Customer.java @@ -4,7 +4,7 @@ import com.avaje.ebean.annotation.ChangeLog; import com.avaje.ebean.annotation.ChangeLogInsertMode; import com.avaje.ebean.annotation.DbComment; import com.avaje.ebean.annotation.DbEnumValue; -import com.avaje.ebean.annotation.DocStoreEmbedded; +import com.avaje.ebean.annotation.DocEmbedded; import com.avaje.ebean.annotation.DocStore; import com.avaje.ebean.annotation.JsonIgnore; import com.avaje.ebean.annotation.Where; @@ -80,11 +80,11 @@ public class Customer extends BasicDomain { @NotNull(groups = { ValidationGroupSomething.class }) Date anniversary; - @DocStoreEmbedded(doc="*,country(*)") + @DocEmbedded(doc="*,country(*)") @ManyToOne(cascade = CascadeType.ALL) Address billingAddress; - @DocStoreEmbedded(doc="*,country(*)") + @DocEmbedded(doc="*,country(*)") @ManyToOne(cascade = CascadeType.ALL) Address shippingAddress; diff --git a/src/test/java/com/avaje/tests/model/basic/Order.java b/src/test/java/com/avaje/tests/model/basic/Order.java index b316a96d0..4e63d9780 100644 --- a/src/test/java/com/avaje/tests/model/basic/Order.java +++ b/src/test/java/com/avaje/tests/model/basic/Order.java @@ -1,6 +1,7 @@ package com.avaje.tests.model.basic; import com.avaje.ebean.annotation.ChangeLog; +import com.avaje.ebean.annotation.DocEmbedded; import com.avaje.ebean.annotation.DocStore; import com.avaje.ebean.annotation.DocStoreEmbedded; import com.avaje.ebean.annotation.Formula; @@ -86,7 +87,7 @@ public class Order implements Serializable { @NotNull @ManyToOne @JoinColumn(name = "kcustomer_id") - @DocStoreEmbedded(doc = "id,name") + @DocEmbedded(doc = "id,name") Customer customer; @Column(name = "name", table = "o_customer") diff --git a/src/test/java/com/avaje/tests/model/basic/OrderDetail.java b/src/test/java/com/avaje/tests/model/basic/OrderDetail.java index 962a884a0..72c4fabc9 100644 --- a/src/test/java/com/avaje/tests/model/basic/OrderDetail.java +++ b/src/test/java/com/avaje/tests/model/basic/OrderDetail.java @@ -1,15 +1,14 @@ package com.avaje.tests.model.basic; -import com.avaje.ebean.annotation.DocStoreEmbedded; - -import java.io.Serializable; -import java.sql.Timestamp; +import com.avaje.ebean.annotation.DocEmbedded; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Version; +import java.io.Serializable; +import java.sql.Timestamp; /** * Order Detail entity bean. @@ -33,7 +32,7 @@ public class OrderDetail implements Serializable { Double unitPrice; @ManyToOne - @DocStoreEmbedded(doc = "id,name,sku") + @DocEmbedded(doc = "id,name,sku") Product product; Timestamp cretime;