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.&lt;init&gt;(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.