在线等 反编译过来的JAVA代码中有GOTO
在对ahxu中的上传文件中的DiskFileUploadEx.class进行反编译时出现了goto语句:
编译后的代码如下:
public List parseRequestEx(HttpServletRequest req)
throws FileUploadException
{
ArrayList InvalidFiles;
ArrayList items;
String contentType;
if(req == null)
throw new NullPointerException("req parameter");
InvalidFiles = new ArrayList();
items = new ArrayList();
contentType = req.getHeader("Content-type");
if(contentType == null || !contentType.startsWith("multipart/"))
throw new org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException("the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is " + contentType);
checkIfInMaxSize(req);
byte boundary[];
MultipartStream multi;
boolean nextPart;
int boundaryIndex = contentType.indexOf("boundary=");
if(boundaryIndex < 0)
throw new FileUploadException("the request was rejected because no multipart boundary was found");
boundary = contentType.substring(boundaryIndex + 9).getBytes();
java.io.InputStream input = req.getInputStream();
aUploadProcess = new UploadProcess(req);
aUploadProcess.init();
aUploadProcess.setReportLimitSize(reportLimitSize);
InputSteamEx inputEx = new InputSteamEx(input, aUploadProcess);
multi = new MultipartStream(inputEx, boundary);
String headerEncoding = getHeaderEncoding();
multi.setHeaderEncoding(headerEncoding);
nextPart = multi.skipPreamble();
goto _L1
_L16:
java.util.Map headers;
String fieldName;
headers = parseHeaders(multi.readHeaders());
fieldName = getFieldName(headers);
if(fieldName == null) goto _L3; else goto _L2
_L2:
String subContentType = getHeader(headers, "Content-type");
if(subContentType == null || !subContentType.startsWith("multipart/mixed")) goto _L5; else goto _L4
_L4:
boolean nextSubPart;
byte subBoundary[] = subContentType.substring(subContentType.indexOf("boundary=") + 9).getBytes();
multi.setBoundary(subBoundary);
nextSubPart = multi.skipPreamble();
goto _L6
_L10:
headers = parseHeaders(multi.readHeaders());
if(getFileName(headers) == null) goto _L8; else goto _L7
_L7:
FileItem item;
if(!isInAllowFilesList(getFileName(headers)))
{
InvalidFiles.add(getFileName(headers));
multi.discardBodyData();
continue; /* Loop/switch isn't completed */
}
item = createItem(headers, false);
OutputStream os = item.getOutputStream();
try
{
aUploadProcess.setCurrentUploadFileName(getFileName(headers));
multi.readBodyData(os);
}
finally
{
os.close();
}
items.add(item);
continue; /* Loop/switch isn't completed */
_L8:
multi.discardBodyData();
nextSubPart = multi.readBoundary();
_L6:
if(nextSubPart) goto _L10; else goto _L9
_L9:
multi.setBoundary(boundary);
continue; /* Loop/switch isn't completed */
_L5:
if(getFileName(headers) == null) goto _L12; else goto _L11
_L11:
FileItem item;
if(!isInAllowFilesList(getFileName(headers)))
{
InvalidFiles.add(getFileName(headers));
multi.discardBodyData();
continue; /* Loop/switch isn't completed */
}
item = createItem(headers, false);
OutputStream os = item.getOutputStream();
try
{
aUploadProcess.setCurrentUploadFileName(getFileName(headers));
multi.readBodyData(os);
}
finally
{
os.close();
}
items.add(item);
continue; /* Loop/switch isn't completed */
_L12:
if(!allowField) goto _L14; else goto _L13
_L13:
item = createItem(headers, true);
OutputStream os = item.getOutputStream();
try
{
multi.readBodyData(os);
}
finally
{
os.close();
}
items.add(item);
continue; /* Loop/switch isn't completed */
_L14:
multi.discardBodyData();
continue; /* Loop/switch isn't completed */
_L3:
multi.discardBodyData();
nextPart = multi.readBoundary();
_L1:
if(nextPart) goto _L16; else goto _L15
_L15:
if(!InvalidFiles.isEmpty())
throw new InvalidFileUploadException("Unallowed Files!", InvalidFiles);
break MISSING_BLOCK_LABEL_710;
IOException e;
e;
throw new FileUploadException("Processing of multipart/form-data request failed. " + e.getMessage());
return items;
}
如何对上面的代码进行还原?请高手帮帮
高手帮帮忙 在线等..........