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 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.