io.permazen.change.ObjectCreate Maven / Gradle / Ivy
Show all versions of permazen-main Show documentation
/*
* Copyright (C) 2015 Archie L. Cobbs. All rights reserved.
*/
package io.permazen.change;
import com.google.common.base.Preconditions;
import io.permazen.PermazenObject;
import io.permazen.PermazenTransaction;
import io.permazen.annotation.OnCreate;
/**
* Change notification that indicates a new object has been created.
*
*
* This type of change notification is never generated by Permazen itself; object creation notifications are instead
* delivered to {@link OnCreate @OnCreate} methods, which do not take any parameters.
* This class exists as a convenience for application code that may want to unify handling of
* object change and object lifecycle events.
*
* @param the type of the object that was created
*/
public class ObjectCreate extends Change {
/**
* Constructor.
*
* @param jobj Java model object that was created
* @throws IllegalArgumentException if {@code jobj} is null
*/
public ObjectCreate(T jobj) {
super(jobj);
}
@Override
public R visit(ChangeSwitch target) {
return target.caseObjectCreate(this);
}
@Override
public void apply(PermazenTransaction jtx, PermazenObject jobj) {
Preconditions.checkArgument(jtx != null, "null jtx");
jtx.recreate(jobj);
}
// Object
@Override
public String toString() {
return "ObjectCreate[object=" + this.getObject() + "]";
}
}