You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jochen Wiedmann (JIRA)" <ji...@apache.org> on 2009/01/18 02:28:59 UTC
[jira] Resolved: (FILEUPLOAD-166) Outputting a file problems to the
Server
[ https://issues.apache.org/jira/browse/FILEUPLOAD-166?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jochen Wiedmann resolved FILEUPLOAD-166.
----------------------------------------
Resolution: Invalid
Assignee: Jochen Wiedmann
According to the stack trace, this is most likely an issue in your code and not in the fileupload library. Please use a users mailing list or something similar to resolve such issues. The Jira issue tracking system is for tracking problems in the libraries, not in the user code.
> Outputting a file problems to the Server
> ----------------------------------------
>
> Key: FILEUPLOAD-166
> URL: https://issues.apache.org/jira/browse/FILEUPLOAD-166
> Project: Commons FileUpload
> Issue Type: Task
> Affects Versions: 1.2
> Environment: Windows XP
> Reporter: Barry Barrios
> Assignee: Jochen Wiedmann
> Original Estimate: 1h
> Remaining Estimate: 1h
>
> My code ran smoothly when it was just outputting just the input text file.
> I made further changes such that my input text file gets process and make an output file of the results. I use F5 to debug in Eclipse, and the problem lied in the CVRP class on the server side.
> ERROR FROM SERVER:
> <H1>HTTP Status 500 - </H1>
> <HR noShade SIZE=1>
> <P><B>type</B> Exception report</P>
> <P><B>message</B> <U></U></P>
> <P><B>description</B> <U>The server encountered an internal error () that prevented it from fulfilling this request.</U></P>
> <P><B>exception</B> <PRE>java.lang.NumberFormatException: For input string: " 1"
> java.lang.NumberFormatException.forInputString(Unknown Source)
> java.lang.Integer.parseInt(Unknown Source)
> java.lang.Integer.parseInt(Unknown Source)
> de.herbstcampus.server.CVRPOutputs.DistanceMatrix(CVRPOutputs.java:53)
> de.herbstcampus.server.CVRPOutputs.<init>(CVRPOutputs.java:112)
> de.herbstcampus.server.FileUploadServlet.getStringOutput(FileUploadServlet.java:67)
> de.herbstcampus.server.FileUploadServlet.doPost(FileUploadServlet.java:28)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:290)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
> </PRE>
> <P></P>
> <P><B>note</B> <U>The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.</U></P>
> <HR noShade SIZE=1>
> <H3>Apache Tomcat/5.0.28</H3>
> Fragment where error lied:
> public ArrayList<Waypoint[]> DistanceMatrix(String DM) {
> lines= DM.split("\n");
> for(int i=0; i<lines.length;i++)
> {
> if(lines[i].length()>1)
> {
> //Using F5 parts was read perfectly
> parts = lines[i].split(",");
> //NodeId was changed correctly to 1 as the uploaded file was read correctly
> NodeId = Integer.parseInt(parts[0]);
> //Major problems: When Debugging I get ErrorReportValue.invoke(Request, ValveCOntext)
> CustomerId = Integer.parseInt(parts[1]);
> Name = parts[2];
> Address = parts[3];
> Postal_Code = parts[4];
> x_coord = Double.parseDouble(parts[5]);
> y_coord = Double.parseDouble(parts[6]);
> Demand = Double.parseDouble(parts[7]);
> Node aNode = new Node(NodeId,CustomerId,Name,Address,Postal_Code, x_coord, y_coord, Demand);
> nodesList.add(aNode);
>
> }
> }
> -------------------------------
> package de.herbstcampus.server;
> import java.io.IOException;
> import java.util.List;
> import javax.servlet.ServletException;
> import javax.servlet.http.HttpServlet;
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
> import org.apache.commons.fileupload.FileItem;
> import org.apache.commons.fileupload.FileItemFactory;
> import org.apache.commons.fileupload.FileUploadException;
> import org.apache.commons.fileupload.disk.DiskFileItemFactory;
> import org.apache.commons.fileupload.servlet.ServletFileUpload;
> public class FileUploadServlet extends HttpServlet {
> private static final long serialVersionUID = 1156467149259077140L;
> protected void doPost(HttpServletRequest request,
> HttpServletResponse response) throws ServletException, IOException {
>
>
> FileItem uploadItem = getFileItem(request);
> String output = getStringOutput(new String(uploadItem.get()));
> /*
> * Note this must be 'text/html', otherwise the onSubmitComplete(...)
> * won't work properly and the browser may open a save dialog.
> */
> response.setContentType("text/html");
>
> if (uploadItem == null) {
> response.getWriter().write("No data");
> return;
> } else {
> response.getOutputStream().println(output);
> }
> }
> @SuppressWarnings("unchecked")
> private FileItem getFileItem(HttpServletRequest request) {
> FileItemFactory factory = new DiskFileItemFactory();
> ServletFileUpload upload = new ServletFileUpload(factory);
> try {
> List<FileItem> items = upload.parseRequest(request);
>
> for (FileItem item: items) {
> if (!item.isFormField()
> && "uploadFormElement".equals(item.getFieldName())) {
> return item;
> }
> }
> } catch (FileUploadException e) {
> return null;
> }
>
> return null;
> }
> private String getStringOutput(String input){
> String outputFileName="output.txt";
> CVRPOutputs outputs; // this object manages the outputs file
> outputs = new CVRPOutputs(outputFileName,input);
> outputs.printOutputFile();
> return outputFileName;
>
> }
> }
> --------------------------------------
> //THIS IS THE CODE WHERE THE ERROR OF the SErVER STARTS TO HAPPEN
> package de.herbstcampus.server;
> import java.io.IOException;
> import java.io.PrintWriter;
> import java.util.ArrayList;
> import com.google.gwt.core.client.GWT;
> import com.google.gwt.maps.client.MapWidget;
> import com.google.gwt.maps.client.geocode.DirectionQueryOptions;
> import com.google.gwt.maps.client.geocode.DirectionResults;
> import com.google.gwt.maps.client.geocode.Directions;
> import com.google.gwt.maps.client.geocode.DirectionsCallback;
> import com.google.gwt.maps.client.geocode.DirectionsPanel;
> import com.google.gwt.maps.client.geocode.StatusCodes;
> import com.google.gwt.maps.client.geocode.Waypoint;
> import com.google.gwt.user.client.Window;
> public class CVRPOutputs
> {
>
> /* Instance fields */
>
> private String outFile;
> private ArrayList<Waypoint[]> costsMatrix;
> private double[][] Distance1;
> private int ii;
> private int jj;
> private int iii;
> private int jjj;
> String[] parts ;
> String[] lines;
> int NodeId;
> int CustomerId;
> String Name;
> String Address;
> String Postal_Code;
> double x_coord;
> double y_coord;
> double Demand;
> ArrayList<Node> nodesList = new ArrayList<Node>();
> ArrayList<Edge> edgesList = new ArrayList<Edge>();
> ArrayList<Waypoint[]> Distance = null;
>
> /* Class constructor */
>
> public ArrayList<Waypoint[]> DistanceMatrix(String DM) {
> lines= DM.split("\n");
> for(int i=0; i<lines.length;i++)
> {
> if(lines[i].length()>1)
> {
> parts = lines[i].split(",");
> NodeId = Integer.parseInt(parts[0]);
> CustomerId = Integer.parseInt(parts[1]);
> Name = parts[2];
> Address = parts[3];
> Postal_Code = parts[4];
> x_coord = Double.parseDouble(parts[5]);
> y_coord = Double.parseDouble(parts[6]);
> Demand = Double.parseDouble(parts[7]);
> Node aNode = new Node(NodeId,CustomerId,Name,Address,Postal_Code, x_coord, y_coord, Demand);
> nodesList.add(aNode);
>
> }
> }
>
>
> for(int i=0; i<nodesList.size(); i++)
> { Node first= nodesList.get(i);
> for(int j=1+i; j<nodesList.size(); j++)
> { Node last = nodesList.get(j);
> Waypoint from = new Waypoint(first.getAddress());
> Waypoint to = new Waypoint(last.getAddress());
> Waypoint[] query= {from, to};
>
> Edge waypoint = new Edge(first,last,query);
>
> edgesList.add(waypoint);
>
> }
>
> }
>
> for(int i= 0; i<nodesList.size();i++)
> { Node first= nodesList.get(i);
> for(int j=1+i; j<nodesList.size();j++)
> {Node last = nodesList.get(j);
> Waypoint from = new Waypoint(first.getAddress());
> Waypoint to = new Waypoint(last.getAddress());
>
> Waypoint[] yreuq={to,from};
> Edge tniopyaw = new Edge(last,first,yreuq);
> edgesList.add(tniopyaw);
> }
> }
> int dim =edgesList.size();
>
> Distance= new ArrayList<Waypoint[]>();
> for(int i=0; i<dim;i++)
> {
> Distance.set(i, edgesList.get(i).getquery());
> }
> return Distance;
> }
>
>
>
>
>
> CVRPOutputs(String outputFileName,String DM)
> {
> outFile = outputFileName;
> costsMatrix = DistanceMatrix(DM);
> Distance1 = costsMatrix(costsMatrix);
>
> }
> @SuppressWarnings("null")
> public double[][] costsMatrix( ArrayList<Waypoint[]> costsMatrix){
> int index=0;
>
> int indey=(nodesList.size()*nodesList.size()-nodesList.size())/2;
> Waypoint[][][] distmat = null;
> MapWidget map= null;
> DirectionsPanel directionsPanel=null;
> DirectionQueryOptions opts = new DirectionQueryOptions(map, directionsPanel);
>
> for(int i=0; i<nodesList.size();i++)
> {for(int j=1+i; j<nodesList.size();j++)
> {
> distmat[i][j]=costsMatrix.get(index);
> index ++;
> }
> }
> for(int i=0; i<nodesList.size();i++)
> {
> for(int j=1+i;j<nodesList.size();j++)
> {
> distmat[j][i]=costsMatrix.get(indey);
> indey++;
> }
> }
> for(ii=0; ii<nodesList.size();ii++)
> {
> for(jj=0;jj<nodesList.size();jj++)
> {
> final int iiIndex = ii;
> final int jjIndex = jj;
> Directions.loadFromWaypoints(distmat[ii][jj], opts, new DirectionsCallback() {
> public void onFailure(int statusCode) {
> Window.alert("Failed to load directions: Status "
> + StatusCodes.getName(statusCode) + " " + statusCode);
> }
> public void onSuccess(DirectionResults result) {
> GWT.log("Successfully loaded directions.", null);
> Distance1[iiIndex][jjIndex]=result.getDistance().inMeters();
> }
>
>
>
> });
>
> }
> }
>
> for(iii=0; iii<nodesList.size();iii++)
> {
> for(jjj=0;jjj<nodesList.size();jjj++)
> {
> final int iiiIndex = iii;
> final int jjjIndex = jjj;
> Directions.loadFromWaypoints(distmat[jjj][iii], opts, new DirectionsCallback() {
> public void onFailure(int statusCode) {
> Window.alert("Failed to load directions: Status "
> + StatusCodes.getName(statusCode) + " " + statusCode);
> }
> public void onSuccess(DirectionResults result) {
> GWT.log("Successfully loaded directions.", null);
> Distance1[jjjIndex][iiiIndex]=result.getDistance().inMeters();
> }
>
>
>
> });
>
> }
> }
> return Distance1;
> }
>
> public void printOutputFile()
> {
> try
> {
> PrintWriter out = new PrintWriter(System.currentTimeMillis() + outFile);
> out.println("***************************************************");
> out.println("* *");
> out.println("* RESULTS FROM SIMUROUTE PROJECT *");
> out.println("* *");
> out.println("***************************************************");
>
> out.println("\r\n");
> out.println("***************************************************");
> out.println("* COSTS MATRIX *");
> out.println("***************************************************");
> out.println("\r\nCOSTS MATRIX:\n");
> for (int i = 0; i < nodesList.size(); i++)
> for (int j = 0; j <= i; j++)
> out.println(i + " " + j + " " + Distance1[i][j]);
>
> out.close();
> }
> catch (IOException exception)
> {
> System.out.println("Error processing output file: " + exception);
> }
>
> }
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.