package org.basex.http.webdav; import java.io.*; import org.basex.server.*; import org.basex.util.*; import com.bradmcevoy.http.exceptions.*; /** * Code container. * * @author BaseX Team 2005-17, BSD License * @author Christian Gruen * @param <E> return type */ abstract class WebDAVCode<E> { /** Resource. */ private final WebDAVResource resource; /** * Constructor. * @param resource resource */ WebDAVCode(final WebDAVResource resource) { this.resource = resource; } /** * Runs the contained code. * @return result * @throws BadRequestException bad request exception * @throws NotAuthorizedException not authorized exception */ final E eval() throws BadRequestException, NotAuthorizedException { try { final E ret = get(); if(ret == null) run(); return ret; } catch(final LoginException ex) { throw new NotAuthorizedException(Util.message(ex), resource); } catch(final IOException ex) { throw new BadRequestException(resource, Util.message(ex)); } } /** * Runs the contained code, throwing no exception. * @return result */ final E evalNoEx() { try { return eval(); } catch(final Exception ex) { Util.errln(ex); return null; } } /** * Method to run, returning some output. * @return result * @throws IOException I/O exception */ @SuppressWarnings("unused") E get() throws IOException { return null; } /** * Method to run. * @throws IOException I/O exception */ @SuppressWarnings("unused") void run() throws IOException { } }