Java tutorial
/* ========================================================================== * * Copyright (C) 2006, 2007 TAO Consulting Pte <http://www.taoconsulting.sg/> * * based on work of * * (C) 2004-2005 Pier Fumagalli <http://www.betaversion.org/~pier/> * * All rights reserved. * * ========================================================================== * * * * Licensed under the Apache License, Version 2.0 (the "License"). You may * * not use this file except in compliance with the License. You may obtain a * * copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>. * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * * License for the specific language governing permissions and limitations * * under the License. * * * * ========================================================================== */ package biz.taoconsulting.dominodav.methods; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import biz.taoconsulting.dominodav.exceptions.DAVNotFoundException; import biz.taoconsulting.dominodav.interfaces.IDAVResource; /** * @author Bastian Buch (TAO Consulting) * */ public class COPY extends AbstractDAVMethod { /** * Logger for Errors */ private static final Log LOGGER = LogFactory.getLog(COPY.class); /** * the destination Resource */ private IDAVResource destinationResource; /** * (non-Javadoc) * * @see biz.taoconsulting.dominodav.methods.AbstractDAVMethod#action() */ protected void action() { // TODO Needs fixing! String src = (String) this.getHeaderValues().get("path-info"); String uri = (String) this.getHeaderValues().get("uri"); String des = (String) this.getReq().getHeader("Destination"); des = des.replaceAll(this.getReq().getRequestURL().toString().replaceAll(src, ""), ""); try { this.resource = this.getRepository().getResource(uri, true); } catch (DAVNotFoundException e) { this.setErrorMessage("Not found: " + src, HttpServletResponse.SC_NOT_FOUND); return; } try { // FIXME: needs fixin this.destinationResource = this.getRepository().getResource(des, true); } catch (DAVNotFoundException e) { // TODO Very BAD, we didn't fix the URI! this.destinationResource = this.getRepository().createNewResource(des); } InputStream instream = this.resource.getStream(); OutputStream out = this.destinationResource.getOutputStream(); try { int read = 0; byte[] bytes = new byte[1024]; while ((read = instream.read(bytes)) != -1) { out.write(bytes, 0, read); } out.flush(); instream.close(); out.close(); } catch (Exception ex) { LOGGER.error(ex); } } /** * (non-Javadoc) * * @see biz.taoconsulting.dominodav.methods.AbstractDAVMethod#writeInitialHeader() */ protected void writeInitialHeader() { // No action needed! } }