Pull.java

package jasper.plugin;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import jasper.domain.Ref;
import jasper.domain.User;
import jasper.domain.proj.HasTags;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.List;

import static jasper.domain.proj.HasTags.getPlugin;


@Getter
@Setter
@JsonInclude(Include.NON_NULL)
public class Pull implements Serializable {
	private boolean websocket = true;
	private boolean cachePrefetch = true;
	private boolean cacheProxy;
	private boolean cacheProxyPrefetch;
	private String query;
	private int batchSize;
	private boolean validatePlugins;
	private boolean stripInvalidPlugins;
	private boolean validateTemplates;
	private boolean stripInvalidTemplates;
	private List<String> addTags;
	private List<String> removeTags;

	// TODO: copy to origin post-processing
	// TODO: conditional tag/origin mapping

	public void migrate(Ref ref, Origin config) {
		if (ref.getTags() != null && removeTags != null) {
			ref.removeTags(removeTags);
			ref.clearPlugins();
		}
		if (addTags != null) {
			ref.addTags(addTags);
		}
	}

	public void migrate(User user, Origin config) {
	}

	private static final Pull DEFAULTS = new Pull();
	public static Pull getPull(HasTags ref) {
		var pull = ref == null ? null : getPlugin(ref, "+plugin/origin/pull", Pull.class);
		return pull == null ? DEFAULTS : pull;
	}
}