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.VariantKey; 22 import org.outerj.daisy.repository.VariantKeys; 23 import org.outerj.daisy.repository.acl.AccessManager; 24 import org.outerj.daisy.repository.acl.AclPermission; 25 import org.outerj.daisy.httpconnector.RequestHandler; 26 import org.outerj.daisy.xmlutil.LocalSAXParserFactory; 27 import org.outerx.daisy.x10.VariantKeysDocument; 28 import org.apache.xmlbeans.XmlOptions; 29 30 import java.util.Map ; 31 32 public class FilterDocumentsHandler implements RequestHandler { 33 public String getPathPattern() { 34 return "/filterDocuments"; 35 } 36 37 public void handleRequest(Map matchMap, HttpRequest request, HttpResponse response, Repository repository) throws Exception { 38 XmlOptions xmlOptions = new XmlOptions().setLoadUseXMLReader(LocalSAXParserFactory.newXmlReader()); 39 VariantKeysDocument variantKeysDocument = VariantKeysDocument.Factory.parse(request.getInputStream(), xmlOptions); 40 VariantKey[] variantKeys = VariantKeys.fromXml(variantKeysDocument).getArray(); 41 42 String permissionParam = request.getParameter("permission"); 44 AclPermission permission = AclPermission.READ_LIVE; 45 if (permissionParam != null) 46 permission = AclPermission.fromString(permissionParam); 47 48 AccessManager accessManager = repository.getAccessManager(); 49 VariantKey[] filteredVariantKeys = accessManager.filterDocuments(variantKeys, permission); 50 51 new VariantKeys(filteredVariantKeys).getXml().save(response.getOutputStream()); 52 response.commit(); 53 } 54 } 55 | Popular Tags |