
org.javersion.object.ManagedObjectVersionBuilder Maven / Gradle / Ivy
The newest version!
package org.javersion.object;
import java.util.Map;
import javax.annotation.concurrent.NotThreadSafe;
import org.javersion.core.Revision;
import org.javersion.core.Version;
import org.javersion.core.VersionNode;
import org.javersion.path.PropertyPath;
import org.javersion.path.SchemaPathFilter;
@NotThreadSafe
public class ManagedObjectVersionBuilder extends Version.BuilderBase> {
private final ObjectVersionManager, M> manager;
private final Map newProperties;
private Iterable rebaseOn;
public ManagedObjectVersionBuilder(ObjectVersionManager, M> manager, Map newProperties) {
this.manager = manager;
this.newProperties = newProperties;
}
public ObjectVersion build(boolean commit) {
if (manager.useSchemaFilter) {
changeset(newProperties, manager.getVersionGraph(), new SchemaPathFilter(manager.getSchema()));
} else {
changeset(newProperties, manager.getVersionGraph());
}
if (rebaseOn != null) {
parents(rebaseOn);
}
ObjectVersion version = new ObjectVersion<>(this);
if (commit) {
manager.commit(version);
}
return version;
}
public ManagedObjectVersionBuilder rebaseOn(Iterable revisions) {
this.rebaseOn = revisions;
return this;
}
@Override
public ObjectVersion build() {
return build(true);
}
public VersionNode buildVersionNode() {
ObjectVersion version = build(true);
return manager.getVersionNode(version.revision);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy