Changed name of "child" events to the more proper "link" events.
This commit is contained in:
@@ -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 {};
|
||||
|
||||
@@ -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 {};
|
||||
|
||||
@@ -45,10 +45,10 @@ public abstract class AbstractRepositoryEventListener<T extends AbstractReposito
|
||||
onBeforeSave(event.getSource());
|
||||
} else if (event instanceof AfterSaveEvent) {
|
||||
onAfterSave(event.getSource());
|
||||
} else if (event instanceof BeforeChildSaveEvent) {
|
||||
onBeforeChildSave(event.getSource(), ((BeforeChildSaveEvent) event).getChild());
|
||||
} else if (event instanceof AfterChildSaveEvent) {
|
||||
onAfterChildSave(event.getSource(), ((AfterChildSaveEvent) event).getChild());
|
||||
} else if (event instanceof BeforeLinkSaveEvent) {
|
||||
onBeforeLinkSave(event.getSource(), ((BeforeLinkSaveEvent) event).getLinked());
|
||||
} else if (event instanceof AfterLinkSaveEvent) {
|
||||
onAfterLinkSave(event.getSource(), ((AfterLinkSaveEvent) event).getLinked());
|
||||
} else if (event instanceof BeforeDeleteEvent) {
|
||||
onBeforeDelete(event.getSource());
|
||||
} else if (event instanceof AfterDeleteEvent) {
|
||||
@@ -60,9 +60,9 @@ public abstract class AbstractRepositoryEventListener<T extends AbstractReposito
|
||||
|
||||
protected void onAfterSave(Object entity) {}
|
||||
|
||||
protected void onBeforeChildSave(Object parent, Object child) {}
|
||||
protected void onBeforeLinkSave(Object parent, Object linked) {}
|
||||
|
||||
protected void onAfterChildSave(Object parent, Object child) {}
|
||||
protected void onAfterLinkSave(Object parent, Object linked) {}
|
||||
|
||||
protected void onBeforeDelete(Object entity) {}
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package org.springframework.data.rest.repository.context;
|
||||
/**
|
||||
* @author Jon Brisbin <jon@jbrisbin.com>
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -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<Object> params = new ArrayList<Object>();
|
||||
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());
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
package org.springframework.data.rest.repository.context;
|
||||
|
||||
/**
|
||||
* @author Jon Brisbin <jon@jbrisbin.com>
|
||||
*/
|
||||
public class BeforeChildSaveEvent extends ChildSaveEvent {
|
||||
public BeforeChildSaveEvent(Object source, Object child) {
|
||||
super(source, child);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.springframework.data.rest.repository.context;
|
||||
|
||||
/**
|
||||
* @author Jon Brisbin <jon@jbrisbin.com>
|
||||
*/
|
||||
public class BeforeLinkSaveEvent extends LinkSaveEvent {
|
||||
public BeforeLinkSaveEvent(Object source, Object linked) {
|
||||
super(source, linked);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package org.springframework.data.rest.repository.context;
|
||||
|
||||
/**
|
||||
* @author Jon Brisbin <jon@jbrisbin.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package org.springframework.data.rest.repository.context;
|
||||
|
||||
/**
|
||||
* @author Jon Brisbin <jon@jbrisbin.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <jon@jbrisbin.com>
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user