package org.geogebra.common.factories;
import org.geogebra.common.util.HttpRequest;
import org.geogebra.common.util.Prover;
import org.geogebra.common.util.URLEncoder;
import org.geogebra.common.util.debug.Log;
/**
* @author Zoltan Kovacs <zoltan@geogebra.org> Various util-like factories for
* common usage
*/
public abstract class UtilFactory {
/**
* UtilFactory prototype for various common utils
*/
private static volatile UtilFactory prototype;
private static final Object lock = new Object();
public static UtilFactory getPrototype() {
return prototype;
}
public static void setPrototypeIfNull(UtilFactory p) {
synchronized (lock) {
if (prototype == null) {
prototype = p;
}
}
}
/**
* @return HttpRequest object Creates a HttpRequest object
*/
public abstract HttpRequest newHttpRequest();
/**
* @return URLEncoder object Creates a URLEncoder object
*/
public abstract URLEncoder newURLEncoder();
/**
* @return GeoGebraLogger Creates a GeoGebraLogger object
*/
public abstract Log newGeoGebraLogger();
/**
* @return Prover Creates a Prover object
*/
public abstract Prover newProver();
}