Changed name of "child" events to the more proper "link" events.

This commit is contained in:
Jon Brisbin
2012-04-26 13:10:57 -05:00
parent fe9e485d81
commit 7738b95b18
12 changed files with 67 additions and 65 deletions

View File

@@ -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 {};

View File

@@ -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 {};

View File

@@ -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) {}

View File

@@ -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);
}
}

View File

@@ -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());
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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
}

View File

@@ -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);