/* * AtomModuleBase.java * * Created on June 16, 2006, 12:46 PM * * (C) R. Alexander Milowski alex@milowski.com */ package org.exist.atom.modules; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.exist.EXistException; import org.exist.atom.AtomModule; import org.exist.atom.IncomingMessage; import org.exist.atom.OutgoingMessage; import org.exist.http.BadRequestException; import org.exist.http.NotFoundException; import org.exist.security.PermissionDeniedException; import org.exist.storage.DBBroker; /** * * @author R. Alexander Milowski */ public class AtomModuleBase implements AtomModule { protected Context context; /** Creates a new instance of AtomModuleBase */ public AtomModuleBase() { } public void init(Context context) throws EXistException { this.context = context; } protected Context getContext() { return context; } public void process(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException,IOException { String method = request.getMethod(); if (method.equals("GET")) { doGet(broker,request,response); } else if (method.equals("POST")) { doPost(broker,request,response); } else if (method.equals("PUT")) { doPut(broker,request,response); } else if (method.equals("HEAD")) { doHead(broker,request,response); } else if (method.equals("DELETE")) { doDelete(broker,request,response); } else { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } } public void doGet(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } public void doHead(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } public void doPost(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } public void doPut(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } public void doDelete(DBBroker broker,IncomingMessage request,OutgoingMessage response) throws BadRequestException,PermissionDeniedException,NotFoundException,EXistException, IOException { throw new BadRequestException("Method "+request.getMethod()+" is not supported by this module."); } protected File storeInTemporaryFile(InputStream is,int len) throws IOException { File tempFile = File.createTempFile("atom", ".tmp"); OutputStream os = new FileOutputStream(tempFile); byte[] buffer = new byte[4096]; int count, l = 0; do { count = is.read(buffer); if (count > 0) { os.write(buffer, 0, count); } l += count; } while ((len<0 && count>=0) || l < len); os.close(); return tempFile; } }