1 /*
2 * $Id: ShowFileAction.java 471754 2006-11-06 14:55:09Z husted $
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 package org.apache.struts.webapp.validator;
23
24 import javax.servlet.http.HttpServletRequest;
25 import javax.servlet.http.HttpServletResponse;
26
27 import java.io.InputStream;
28 import java.io.InputStreamReader;
29
30 import org.apache.struts.action.Action;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34 import org.apache.commons.logging.LogFactory;
35 import org.apache.commons.logging.Log;
36
37 /**
38 * Action which retrieves a file specified in the parameter
39 * and stores its contents in the request, so that they
40 * can be displayed.
41 */
42 public class ShowFileAction extends Action {
43
44 /** Logging Instance. */
45 private static final Log log = LogFactory.getLog(ShowFileAction.class);
46
47 public ActionForward execute(ActionMapping mapping,
48 ActionForm form,
49 HttpServletRequest request,
50 HttpServletResponse response)
51 throws Exception {
52
53 // Get the file name
54 String fileName = mapping.getParameter();
55 StringBuffer fileContents = new StringBuffer();
56
57 if(fileName != null) {
58
59 InputStream input = servlet.getServletContext().getResourceAsStream(fileName);
60 if (input == null) {
61 log.warn("File Not Found: "+fileName);
62 } else {
63 InputStreamReader inputReader = new InputStreamReader(input);
64 char[] buffer = new char[1000];
65 while (true) {
66 int lth = inputReader.read(buffer);
67 if (lth < 0) {
68 break;
69 } else {
70 fileContents.append(buffer, 0, lth);
71 }
72 }
73 }
74 } else {
75 log.error("No file name specified.");
76 }
77
78
79 // Store the File contents and name in the Request
80 request.setAttribute("fileName", fileName);
81 request.setAttribute("fileContents", fileContents.toString());
82
83 return mapping.findForward("success");
84 }
85 }