diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterChildSave.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterLinkSave.java similarity index 91% rename from spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterChildSave.java rename to spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterLinkSave.java index 70f674249..f5104d4a3 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterChildSave.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleAfterLinkSave.java @@ -12,7 +12,7 @@ import java.lang.annotation.Target; @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited -public @interface HandleAfterChildSave { +public @interface HandleAfterLinkSave { Class[] value() default {}; diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeChildSave.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeLinkSave.java similarity index 91% rename from spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeChildSave.java rename to spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeLinkSave.java index d274c3b65..dad8b9f9a 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeChildSave.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/annotation/HandleBeforeLinkSave.java @@ -12,7 +12,7 @@ import java.lang.annotation.Target; @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Inherited -public @interface HandleBeforeChildSave { +public @interface HandleBeforeLinkSave { Class[] value() default {}; diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AbstractRepositoryEventListener.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AbstractRepositoryEventListener.java index 28390f2d9..fe6fbd6f3 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AbstractRepositoryEventListener.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AbstractRepositoryEventListener.java @@ -45,10 +45,10 @@ public abstract class AbstractRepositoryEventListener */ -public class AfterChildSaveEvent extends ChildSaveEvent { - public AfterChildSaveEvent(Object source, Object child) { +public class AfterLinkSaveEvent extends LinkSaveEvent { + public AfterLinkSaveEvent(Object source, Object child) { super(source, child); } } diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AnnotatedHandlerRepositoryEventListener.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AnnotatedHandlerRepositoryEventListener.java index ab2518d88..b0d3e6eaf 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AnnotatedHandlerRepositoryEventListener.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/AnnotatedHandlerRepositoryEventListener.java @@ -17,10 +17,10 @@ import org.springframework.context.ApplicationListener; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.type.filter.AnnotationTypeFilter; -import org.springframework.data.rest.repository.annotation.HandleAfterChildSave; +import org.springframework.data.rest.repository.annotation.HandleAfterLinkSave; import org.springframework.data.rest.repository.annotation.HandleAfterDelete; import org.springframework.data.rest.repository.annotation.HandleAfterSave; -import org.springframework.data.rest.repository.annotation.HandleBeforeChildSave; +import org.springframework.data.rest.repository.annotation.HandleBeforeLinkSave; import org.springframework.data.rest.repository.annotation.HandleBeforeDelete; import org.springframework.data.rest.repository.annotation.HandleBeforeSave; import org.springframework.data.rest.repository.annotation.RepositoryEventHandler; @@ -80,8 +80,8 @@ public class AnnotatedHandlerRepositoryEventListener @Override public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException { inspect(targetType, handler, method, HandleBeforeSave.class, BeforeSaveEvent.class); inspect(targetType, handler, method, HandleAfterSave.class, AfterSaveEvent.class); - inspect(targetType, handler, method, HandleBeforeChildSave.class, BeforeChildSaveEvent.class); - inspect(targetType, handler, method, HandleAfterChildSave.class, AfterChildSaveEvent.class); + inspect(targetType, handler, method, HandleBeforeLinkSave.class, BeforeLinkSaveEvent.class); + inspect(targetType, handler, method, HandleAfterLinkSave.class, AfterLinkSaveEvent.class); inspect(targetType, handler, method, HandleBeforeDelete.class, BeforeDeleteEvent.class); inspect(targetType, handler, method, HandleAfterDelete.class, AfterDeleteEvent.class); } @@ -109,10 +109,10 @@ public class AnnotatedHandlerRepositoryEventListener if (ClassUtils.isAssignable(handlerMethod.targetType, src.getClass())) { List params = new ArrayList(); params.add(src); - if (event instanceof BeforeChildSaveEvent) { - params.add(((BeforeChildSaveEvent) event).getChild()); - } else if (event instanceof AfterChildSaveEvent) { - params.add(((AfterChildSaveEvent) event).getChild()); + if (event instanceof BeforeLinkSaveEvent) { + params.add(((BeforeLinkSaveEvent) event).getLinked()); + } else if (event instanceof AfterLinkSaveEvent) { + params.add(((AfterLinkSaveEvent) event).getLinked()); } handlerMethod.method.invoke(handlerMethod.handler, params.toArray()); } diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeChildSaveEvent.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeChildSaveEvent.java deleted file mode 100644 index f165107bf..000000000 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeChildSaveEvent.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.springframework.data.rest.repository.context; - -/** - * @author Jon Brisbin - */ -public class BeforeChildSaveEvent extends ChildSaveEvent { - public BeforeChildSaveEvent(Object source, Object child) { - super(source, child); - } -} diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeLinkSaveEvent.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeLinkSaveEvent.java new file mode 100644 index 000000000..f6288fff3 --- /dev/null +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/BeforeLinkSaveEvent.java @@ -0,0 +1,10 @@ +package org.springframework.data.rest.repository.context; + +/** + * @author Jon Brisbin + */ +public class BeforeLinkSaveEvent extends LinkSaveEvent { + public BeforeLinkSaveEvent(Object source, Object linked) { + super(source, linked); + } +} diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ChildSaveEvent.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ChildSaveEvent.java deleted file mode 100644 index 3a765655f..000000000 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ChildSaveEvent.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.springframework.data.rest.repository.context; - -/** - * @author Jon Brisbin - */ -public class ChildSaveEvent extends RepositoryEvent{ - - private final Object child; - - public ChildSaveEvent(Object source, Object child) { - super(source); - this.child = child; - } - - public Object getChild() { - return child; - } - -} diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/LinkSaveEvent.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/LinkSaveEvent.java new file mode 100644 index 000000000..6edf2a801 --- /dev/null +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/LinkSaveEvent.java @@ -0,0 +1,19 @@ +package org.springframework.data.rest.repository.context; + +/** + * @author Jon Brisbin + */ +public class LinkSaveEvent extends RepositoryEvent { + + private final Object linked; + + public LinkSaveEvent(Object source, Object linked) { + super(source); + this.linked = linked; + } + + public Object getLinked() { + return linked; + } + +} diff --git a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ValidatingRepositoryEventListener.java b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ValidatingRepositoryEventListener.java index 18097eddd..e073259e4 100644 --- a/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ValidatingRepositoryEventListener.java +++ b/spring-data-rest-repository/src/main/java/org/springframework/data/rest/repository/context/ValidatingRepositoryEventListener.java @@ -68,13 +68,13 @@ public class ValidatingRepositoryEventListener validate("afterSave", entity); } - @Override protected void onBeforeChildSave(Object parent, Object child) { - LOG.info("onBeforeChildSave: " + parent + "/" + child); + @Override protected void onBeforeLinkSave(Object parent, Object linked) { + LOG.info("onBeforeLinkSave: " + parent + "/" + linked); validate("beforeChildSave", parent); } - @Override protected void onAfterChildSave(Object parent, Object child) { - LOG.info("onAfterChildSave: " + parent + "/" + child); + @Override protected void onAfterLinkSave(Object parent, Object linked) { + LOG.info("onAfterLinkSave: " + parent + "/" + linked); validate("afterChildSave", parent); } diff --git a/spring-data-rest-repository/src/test/groovy/org/springframework/data/rest/repository/spec/ExtensionsSpec.groovy b/spring-data-rest-repository/src/test/groovy/org/springframework/data/rest/repository/spec/ExtensionsSpec.groovy index 698d8a4be..b2fe60bd5 100644 --- a/spring-data-rest-repository/src/test/groovy/org/springframework/data/rest/repository/spec/ExtensionsSpec.groovy +++ b/spring-data-rest-repository/src/test/groovy/org/springframework/data/rest/repository/spec/ExtensionsSpec.groovy @@ -2,22 +2,24 @@ package org.springframework.data.rest.repository.spec import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.ApplicationContext -import org.springframework.data.rest.repository.annotation.HandleAfterChildSave + import org.springframework.data.rest.repository.annotation.HandleAfterDelete import org.springframework.data.rest.repository.annotation.HandleAfterSave -import org.springframework.data.rest.repository.annotation.HandleBeforeChildSave + import org.springframework.data.rest.repository.annotation.HandleBeforeDelete import org.springframework.data.rest.repository.annotation.HandleBeforeSave import org.springframework.data.rest.repository.annotation.RepositoryEventHandler -import org.springframework.data.rest.repository.context.AfterChildSaveEvent +import org.springframework.data.rest.repository.context.AfterLinkSaveEvent import org.springframework.data.rest.repository.context.AfterDeleteEvent import org.springframework.data.rest.repository.context.AfterSaveEvent -import org.springframework.data.rest.repository.context.BeforeChildSaveEvent +import org.springframework.data.rest.repository.context.BeforeLinkSaveEvent import org.springframework.data.rest.repository.context.BeforeDeleteEvent import org.springframework.data.rest.repository.context.BeforeSaveEvent import org.springframework.data.rest.repository.test.Person import org.springframework.test.context.ContextConfiguration import spock.lang.Specification +import org.springframework.data.rest.repository.annotation.HandleBeforeLinkSave +import org.springframework.data.rest.repository.annotation.HandleAfterLinkSave /** * @author Jon Brisbin @@ -38,8 +40,8 @@ class ExtensionsSpec extends Specification { when: appCtx.publishEvent(new BeforeSaveEvent(p)) appCtx.publishEvent(new AfterSaveEvent(p)) - appCtx.publishEvent(new BeforeChildSaveEvent(p, new Object())) - appCtx.publishEvent(new AfterChildSaveEvent(p, new Object())) + appCtx.publishEvent(new BeforeLinkSaveEvent(p, new Object())) + appCtx.publishEvent(new AfterLinkSaveEvent(p, new Object())) appCtx.publishEvent(new BeforeDeleteEvent(p)) appCtx.publishEvent(new AfterDeleteEvent(p)) @@ -73,11 +75,11 @@ class PersonEventHandler { afterSave = true } - @HandleBeforeChildSave void handleBeforeChildSave(Person p, Object child) { + @HandleBeforeLinkSave void handleBeforeChildSave(Person p, Object child) { beforeChildSave = true } - @HandleAfterChildSave void handleAfterChildSave(Person p, Object child) { + @HandleAfterLinkSave void handleAfterChildSave(Person p, Object child) { afterChildSave = true } diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestController.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestController.java index f05197cc4..69229e9e7 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestController.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/RepositoryRestController.java @@ -37,10 +37,10 @@ import org.springframework.data.rest.core.util.UriUtils; import org.springframework.data.rest.repository.JpaEntityMetadata; import org.springframework.data.rest.repository.JpaRepositoryMetadata; import org.springframework.data.rest.repository.RepositoryConstraintViolationException; -import org.springframework.data.rest.repository.context.AfterChildSaveEvent; +import org.springframework.data.rest.repository.context.AfterLinkSaveEvent; import org.springframework.data.rest.repository.context.AfterDeleteEvent; import org.springframework.data.rest.repository.context.AfterSaveEvent; -import org.springframework.data.rest.repository.context.BeforeChildSaveEvent; +import org.springframework.data.rest.repository.context.BeforeLinkSaveEvent; import org.springframework.data.rest.repository.context.BeforeDeleteEvent; import org.springframework.data.rest.repository.context.BeforeSaveEvent; import org.springframework.http.HttpHeaders; @@ -686,12 +686,12 @@ public class RepositoryRestController if (null != eventPublisher) { eventPublisher.publishEvent(new BeforeSaveEvent(entity)); - eventPublisher.publishEvent(new BeforeChildSaveEvent(entity, child)); + eventPublisher.publishEvent(new BeforeLinkSaveEvent(entity, child)); } Object savedEntity = repo.save(entity); if (null != eventPublisher) { child = typeMeta.entityMetadata.get(attr.getName(), savedEntity); - eventPublisher.publishEvent(new AfterChildSaveEvent(savedEntity, child)); + eventPublisher.publishEvent(new AfterLinkSaveEvent(savedEntity, child)); eventPublisher.publishEvent(new AfterSaveEvent(savedEntity)); } @@ -734,11 +734,11 @@ public class RepositoryRestController typeMeta.entityMetadata.set(property, null, entity); if (null != eventPublisher) { - eventPublisher.publishEvent(new BeforeChildSaveEvent(entity, child)); + eventPublisher.publishEvent(new BeforeLinkSaveEvent(entity, child)); } Object savedEntity = repo.save(entity); if (null != eventPublisher) { - eventPublisher.publishEvent(new AfterChildSaveEvent(savedEntity, null)); + eventPublisher.publishEvent(new AfterLinkSaveEvent(savedEntity, null)); } model.addAttribute(STATUS, HttpStatus.NO_CONTENT);