1 16 package org.outerj.daisy.httpconnector.handlers; 17 18 import org.mortbay.http.HttpRequest; 19 import org.mortbay.http.HttpResponse; 20 import org.outerj.daisy.repository.Repository; 21 import org.outerj.daisy.repository.RepositoryException; 22 import org.outerj.daisy.repository.schema.RepositorySchema; 23 import org.outerj.daisy.repository.schema.PartType; 24 import org.outerj.daisy.httpconnector.RequestHandler; 25 import org.outerj.daisy.httpconnector.HttpUtil; 26 import org.outerj.daisy.xmlutil.LocalSAXParserFactory; 27 import org.apache.xmlbeans.XmlObject; 28 import org.apache.xmlbeans.XmlOptions; 29 import org.outerx.daisy.x10.PartTypeDocument; 30 31 import java.util.Map ; 32 33 public class PartTypeHandler implements RequestHandler { 34 public String getPathPattern() { 35 return "/schema/partType/*"; 36 } 37 38 public void handleRequest(Map matchMap, HttpRequest request, HttpResponse response, Repository repository) throws Exception { 39 long id = HttpUtil.parseId("part type", (String )matchMap.get("1")); 40 RepositorySchema repositorySchema = repository.getRepositorySchema(); 41 42 if (request.getMethod().equals(HttpRequest.__GET)) { 43 PartType partType = repositorySchema.getPartTypeById(id, true); 44 XmlObject partTypeDocument = partType.getXml(); 45 partTypeDocument.save(response.getOutputStream()); 46 response.commit(); 47 } else if (request.getMethod().equals(HttpRequest.__POST)) { 48 PartType partType = repositorySchema.getPartTypeById(id, true); 50 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader()); 51 PartTypeDocument partTypeDocument = PartTypeDocument.Factory.parse(request.getInputStream(), xmlOptions); 52 PartTypeDocument.PartType partTypeXml = partTypeDocument.getPartType(); 53 if (partType.getUpdateCount() != partTypeXml.getUpdateCount()) 54 throw new RepositoryException("The part type was updated concurrently."); 55 partType.setAllFromXml(partTypeXml); 56 partType.save(); 57 58 partTypeDocument = partType.getXml(); 59 partTypeDocument.save(response.getOutputStream()); 60 response.commit(); 61 } else if (request.getMethod().equals(HttpRequest.__DELETE)) { 62 repositorySchema.deletePartType(id); 63 response.commit(); 64 } else { 65 response.sendError(HttpResponse.__405_Method_Not_Allowed); 66 } 67 } 68 } 69 | Popular Tags |