Move various CMS extensions to Argeo SLC.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / proxy / ResourceProxyServlet.java
index 0a90e64a520eb7e81f405f3fffa2aceb7a093ba7..d77bd49dca21fed2b7e2e1e827723fe4ba3055c2 100644 (file)
@@ -1,26 +1,9 @@
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * 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 org.argeo.jcr.proxy;
 
 import java.io.IOException;
 import java.io.InputStream;
 
-import javax.jcr.Binary;
 import javax.jcr.Node;
-import javax.jcr.PathNotFoundException;
 import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import javax.servlet.ServletException;
@@ -32,7 +15,8 @@ import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.argeo.jcr.ArgeoJcrException;
+import org.argeo.jcr.JcrException;
+import org.argeo.jcr.Bin;
 import org.argeo.jcr.JcrUtils;
 
 /** Wraps a proxy via HTTP */
@@ -82,9 +66,10 @@ public class ResourceProxyServlet extends HttpServlet {
 
        /** Retrieve the content of the node. */
        protected void processResponse(Node node, HttpServletResponse response) {
-               Binary binary = null;
-               InputStream in = null;
-               try {
+//             Binary binary = null;
+//             InputStream in = null;
+               try(Bin binary = new Bin( node.getNode(Property.JCR_CONTENT)
+                               .getProperty(Property.JCR_DATA));InputStream in = binary.getStream()) {
                        String fileName = node.getName();
                        String ext = FilenameUtils.getExtension(fileName);
 
@@ -116,20 +101,11 @@ public class ResourceProxyServlet extends HttpServlet {
 
                        response.setContentType(contentType);
 
-                       try {
-                               binary = node.getNode(Property.JCR_CONTENT)
-                                               .getProperty(Property.JCR_DATA).getBinary();
-                       } catch (PathNotFoundException e) {
-                               log.error("Node " + node + " as no data under content");
-                               throw e;
-                       }
-                       in = binary.getStream();
                        IOUtils.copy(in, response.getOutputStream());
-               } catch (Exception e) {
-                       throw new ArgeoJcrException("Cannot download " + node, e);
-               } finally {
-                       IOUtils.closeQuietly(in);
-                       JcrUtils.closeQuietly(binary);
+               } catch (RepositoryException e) {
+                       throw new JcrException("Cannot download " + node, e);
+               } catch (IOException e) {
+                       throw new RuntimeException("Cannot download " + node, e);
                }
        }