AbstractHttpFileProxyManager.java 2.83 KB
package it.softecspa.fileproxy.proxyservices.manager;

import it.softecspa.fileproxy.proxyservices.manager.core.NullSession;
import it.softecspa.fileproxy.proxyservices.request.AbstractHttpFileProxyRequest;
import it.softecspa.fileproxy.proxyservices.response.AbstractHttpFileProxyResponse;
import it.softecspa.fileproxy.services.ServerCacheFactory;
import it.softecspa.fileproxy.services.common.CheckerException;
import it.softecspa.fileproxy.services.common.ManagerException;
import it.softecspa.fileproxy.services.common.ResponseOutcome;
import it.softecspa.fileproxy.services.common.core.UniversalManager;
import it.softecspa.kahuna.io.File;


public abstract class AbstractHttpFileProxyManager<I extends AbstractHttpFileProxyRequest, O extends AbstractHttpFileProxyResponse> extends UniversalManager <I,O,NullSession<I>> {
	
	
	boolean logRequestInfo;
	
	
	
	@Override
	protected void initialize() throws ManagerException {
		/* Nessuna operazione */
	}
	
	
	@Override
	protected NullSession<I> buildAndValidateSession(ServerCacheFactory cacheInfo, boolean stageMode) throws CheckerException, ManagerException {
		
		//try {
			// Creo l'istanza dell'oggetto di sessione DM
			session = new NullSession(cacheInfo, request, true, null);
			
			return session;
		/*
		} catch (SQLException e) {
			throw new ManagerException(e);
		}
		*/
	}
	
	/**
	 * Normalizza il percorso passato come parametro
	 * @param value
	 * @return
	 */
	protected String normalizePath(String value) {
		String _path; 
		if (value!=null) {
			_path = value;
		} else {
			// se il parametro path non è passato, parto dalla ROOT configurata
			_path = "";
		}
		// Tolgo un eventuale primo /
		if (!_path.startsWith("/")) _path = "/"+_path;
		
		// Concateno con la base
		return ServerCacheFactory.getInstance().getResourceRoot() + _path;
	}
	
	/**
	 * Controlla la presenza di caratteri speciali non accettati dai path
	 * @param da_controllare
	 * @throws CheckerException
	 */
	protected void checkWildecard(String da_controllare) throws CheckerException {
		if (da_controllare==null) return;
		
		if (da_controllare.contains("..")) {
			throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "..");
		}
		if (da_controllare.contains("*")) {
			throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "*");
		}
		if (da_controllare.contains("!")) {
			throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "!");
		}
		if (da_controllare.contains("?")) {
			throw new CheckerException(ResponseOutcome.FOUND_NOT_VALID_CHAR, "?");
		}
		
	}
	
	
	
	@Override
	protected void completeWithSuccess(boolean stage) throws ManagerException {
		/* Nessuna operazione */
	}
	
	@Override
	protected void checkAndTraceCheckerExceptionErrorIfExist(CheckerException e) {
		/* Nessuna operazione */
	}
	
	
}