public final class org.apache.axiom.mime.MultipartBody extends java.lang.Object implements java.lang.Iterable
{
private static final org.apache.commons.logging.Log log;
private static final org.apache.james.mime4j.stream.MimeConfig config;
private final org.apache.axiom.mime.ContentType contentType;
private final java.lang.String rootPartContentID;
private final org.apache.james.mime4j.stream.MimeTokenStream parser;
private final java.util.Map partMap;
private org.apache.axiom.mime.PartImpl currentPart;
private org.apache.axiom.mime.PartImpl firstPart;
private org.apache.axiom.mime.PartImpl rootPart;
private int partCount;
private final org.apache.axiom.blob.WritableBlobFactory attachmentBlobFactory;
private final org.apache.axiom.mime.DataHandlerFactory dataHandlerFactory;
private final org.apache.axiom.mime.MultipartBody$PartCreationListener partCreationListener;
void <init>(java.io.InputStream, org.apache.axiom.mime.ContentType, org.apache.axiom.blob.WritableBlobFactory, org.apache.axiom.mime.DataHandlerFactory, org.apache.axiom.mime.MultipartBody$PartCreationListener)
{
java.lang.Throwable v;
java.util.HashMap v;
org.apache.james.mime4j.stream.MimeConfig v;
org.apache.axiom.blob.WritableBlobFactory v;
java.lang.String v, v, v;
org.apache.axiom.mime.MIMEException v, v;
org.apache.james.mime4j.stream.RecursionMode v;
org.apache.axiom.mime.DataHandlerFactory v;
java.io.IOException v;
org.apache.axiom.mime.MultipartBody$PartCreationListener v;
org.apache.james.mime4j.stream.EntityState v, v;
org.apache.james.mime4j.stream.MimeTokenStream v, v, v, v, v;
org.apache.axiom.mime.ContentType v;
org.apache.axiom.mime.MultipartBody v;
java.io.InputStream v;
v := @this: org.apache.axiom.mime.MultipartBody;
v := @parameter: java.io.InputStream;
v := @parameter: org.apache.axiom.mime.ContentType;
v := @parameter: org.apache.axiom.blob.WritableBlobFactory;
v := @parameter: org.apache.axiom.mime.DataHandlerFactory;
v := @parameter: org.apache.axiom.mime.MultipartBody$PartCreationListener;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v.<org.apache.axiom.mime.MultipartBody: java.util.Map partMap> = v;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.blob.WritableBlobFactory attachmentBlobFactory> = v;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.DataHandlerFactory dataHandlerFactory> = v;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.MultipartBody$PartCreationListener partCreationListener> = v;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.ContentType contentType> = v;
v = virtualinvoke v.<org.apache.axiom.mime.ContentType: java.lang.String getParameter(java.lang.String)>("start");
if v != null goto label;
v = null;
goto label;
label:
v = staticinvoke <org.apache.axiom.mime.MultipartBody: java.lang.String normalizeContentID(java.lang.String)>(v);
label:
v.<org.apache.axiom.mime.MultipartBody: java.lang.String rootPartContentID> = v;
v = new org.apache.james.mime4j.stream.MimeTokenStream;
v = <org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeConfig config>;
specialinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: void <init>(org.apache.james.mime4j.stream.MimeConfig)>(v);
v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser> = v;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = <org.apache.james.mime4j.stream.RecursionMode: org.apache.james.mime4j.stream.RecursionMode M_NO_RECURSE>;
virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: void setRecursionMode(org.apache.james.mime4j.stream.RecursionMode)>(v);
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.axiom.mime.ContentType: java.lang.String toString()>();
virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.Field parseHeadless(java.io.InputStream,java.lang.String)>(v, v);
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState getState()>();
v = <org.apache.james.mime4j.stream.EntityState: org.apache.james.mime4j.stream.EntityState T_START_BODYPART>;
if v == v goto label;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState next()>();
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.io.IOException from label to label with label;
catch org.apache.james.mime4j.MimeException from label to label with label;
}
public static org.apache.axiom.mime.MultipartBody$Builder builder()
{
org.apache.axiom.mime.MultipartBody$Builder v;
v = new org.apache.axiom.mime.MultipartBody$Builder;
specialinvoke v.<org.apache.axiom.mime.MultipartBody$Builder: void <init>()>();
return v;
}
private static java.lang.String normalizeContentID(java.lang.String)
{
char v, v;
int v, v, v, v, v, v;
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v < 2 goto label;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v != 60 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: char charAt(int)>(v);
if v != 62 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(1, v);
label:
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 4 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("cid:");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(4);
label:
return v;
}
org.apache.axiom.mime.DataHandlerFactory getDataHandlerFactory()
{
org.apache.axiom.mime.DataHandlerFactory v;
org.apache.axiom.mime.MultipartBody v;
v := @this: org.apache.axiom.mime.MultipartBody;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.DataHandlerFactory dataHandlerFactory>;
return v;
}
public org.apache.axiom.mime.ContentType getContentType()
{
org.apache.axiom.mime.ContentType v;
org.apache.axiom.mime.MultipartBody v;
v := @this: org.apache.axiom.mime.MultipartBody;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.ContentType contentType>;
return v;
}
public org.apache.axiom.mime.Part getPart(java.lang.String)
{
org.apache.axiom.mime.MultipartBody v;
java.util.Map v;
java.lang.Object v;
java.lang.String v;
org.apache.axiom.mime.PartImpl v;
v := @this: org.apache.axiom.mime.MultipartBody;
v := @parameter: java.lang.String;
label:
v = v.<org.apache.axiom.mime.MultipartBody: java.util.Map partMap>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
return v;
label:
v = virtualinvoke v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl getNextPart()>();
if v != null goto label;
return null;
}
public int getPartCount()
{
int v;
org.apache.axiom.mime.MultipartBody v;
v := @this: org.apache.axiom.mime.MultipartBody;
virtualinvoke v.<org.apache.axiom.mime.MultipartBody: void detach()>();
v = v.<org.apache.axiom.mime.MultipartBody: int partCount>;
return v;
}
org.apache.axiom.mime.PartImpl getFirstPart()
{
org.apache.axiom.mime.PartImpl v, v;
org.apache.axiom.mime.MultipartBody v;
v := @this: org.apache.axiom.mime.MultipartBody;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl firstPart>;
if v != null goto label;
virtualinvoke v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl getNextPart()>();
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl firstPart>;
return v;
}
public org.apache.axiom.mime.Part getRootPart()
{
org.apache.axiom.mime.MultipartBody v;
org.apache.axiom.mime.MIMEException v;
org.apache.axiom.mime.PartImpl v, v, v;
v := @this: org.apache.axiom.mime.MultipartBody;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl rootPart>;
if v == null goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl rootPart>;
return v;
label:
v = virtualinvoke v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl getNextPart()>();
if v != null goto label;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.String)>("Mandatory root MIME part is missing");
throw v;
}
org.apache.axiom.mime.PartImpl getNextPart()
{
java.util.Map v, v;
org.apache.axiom.blob.WritableBlobFactory v;
org.apache.axiom.mime.MIMEException v, v, v;
boolean v, v, v, v, v;
org.apache.james.mime4j.stream.Field v;
org.apache.axiom.mime.MultipartBody v;
java.lang.Throwable v;
org.apache.axiom.mime.PartImpl v, v, v, v, v, v, v, v, v, v;
java.util.ArrayList v;
int v, v;
java.lang.String v, v, v, v, v, v;
org.apache.axiom.mime.Header v;
java.io.IOException v;
org.apache.axiom.mime.MultipartBody$PartCreationListener v, v;
org.apache.james.mime4j.stream.EntityState v, v, v, v, v, v, v, v;
org.apache.james.mime4j.stream.MimeTokenStream v, v, v, v, v, v;
org.apache.commons.logging.Log v, v;
v := @this: org.apache.axiom.mime.MultipartBody;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
if v == null goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
virtualinvoke v.<org.apache.axiom.mime.PartImpl: void fetch()>();
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState getState()>();
v = <org.apache.james.mime4j.stream.EntityState: org.apache.james.mime4j.stream.EntityState T_END_MULTIPART>;
if v != v goto label;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart> = null;
goto label;
label:
v = null;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState next()>();
v = <org.apache.james.mime4j.stream.EntityState: org.apache.james.mime4j.stream.EntityState T_START_HEADER>;
staticinvoke <org.apache.axiom.mime.MultipartBody: void checkParserState(org.apache.james.mime4j.stream.EntityState,org.apache.james.mime4j.stream.EntityState)>(v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState next()>();
v = <org.apache.james.mime4j.stream.EntityState: org.apache.james.mime4j.stream.EntityState T_FIELD>;
if v != v goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.Field getField()>();
v = interfaceinvoke v.<org.apache.james.mime4j.stream.Field: java.lang.String getName()>();
v = interfaceinvoke v.<org.apache.james.mime4j.stream.Field: java.lang.String getBody()>();
v = <org.apache.axiom.mime.MultipartBody: org.apache.commons.logging.Log log>;
v = interfaceinvoke v.<org.apache.commons.logging.Log: boolean isDebugEnabled()>();
if v == 0 goto label;
v = <org.apache.axiom.mime.MultipartBody: org.apache.commons.logging.Log log>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("addHeader: (\u) value=(\u)");
interfaceinvoke v.<org.apache.commons.logging.Log: void debug(java.lang.Object)>(v);
label:
v = new org.apache.axiom.mime.Header;
specialinvoke v.<org.apache.axiom.mime.Header: void <init>(java.lang.String,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
if v != null goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("Content-ID");
if v == 0 goto label;
v = staticinvoke <org.apache.axiom.mime.MultipartBody: java.lang.String normalizeContentID(java.lang.String)>(v);
goto label;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeTokenStream: org.apache.james.mime4j.stream.EntityState next()>();
v = <org.apache.james.mime4j.stream.EntityState: org.apache.james.mime4j.stream.EntityState T_BODY>;
staticinvoke <org.apache.axiom.mime.MultipartBody: void checkParserState(org.apache.james.mime4j.stream.EntityState,org.apache.james.mime4j.stream.EntityState)>(v, v);
v = v.<org.apache.axiom.mime.MultipartBody: java.lang.String rootPartContentID>;
if v != null goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl firstPart>;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
goto label;
label:
v = v.<org.apache.axiom.mime.MultipartBody: java.lang.String rootPartContentID>;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
label:
v = new org.apache.axiom.mime.PartImpl;
if v == 0 goto label;
v = <org.apache.axiom.blob.MemoryBlob: org.apache.axiom.blob.WritableBlobFactory FACTORY>;
goto label;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.blob.WritableBlobFactory attachmentBlobFactory>;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeTokenStream parser>;
specialinvoke v.<org.apache.axiom.mime.PartImpl: void <init>(org.apache.axiom.mime.MultipartBody,org.apache.axiom.blob.WritableBlobFactory,java.lang.String,java.util.List,org.apache.james.mime4j.stream.MimeTokenStream)>(v, v, v, v, v);
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
if v != null goto label;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl firstPart> = v;
goto label;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
virtualinvoke v.<org.apache.axiom.mime.PartImpl: void setNextPart(org.apache.axiom.mime.PartImpl)>(v);
label:
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart> = v;
label:
goto label;
label:
v := @caughtexception;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v := @caughtexception;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
v = v.<org.apache.axiom.mime.MultipartBody: int partCount>;
v = v + 1;
v.<org.apache.axiom.mime.MultipartBody: int partCount> = v;
if v == null goto label;
v = v.<org.apache.axiom.mime.MultipartBody: java.util.Map partMap>;
v = interfaceinvoke v.<java.util.Map: boolean containsKey(java.lang.Object)>(v);
if v == 0 goto label;
v = new org.apache.axiom.mime.MIMEException;
specialinvoke v.<org.apache.axiom.mime.MIMEException: void <init>(java.lang.String)>("Two MIME parts with the same Content-ID not allowed.");
throw v;
label:
v = v.<org.apache.axiom.mime.MultipartBody: java.util.Map partMap>;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
if v == 0 goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl rootPart> = v;
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.MultipartBody$PartCreationListener partCreationListener>;
if v == null goto label;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.MultipartBody$PartCreationListener partCreationListener>;
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
interfaceinvoke v.<org.apache.axiom.mime.MultipartBody$PartCreationListener: void partCreated(org.apache.axiom.mime.Part)>(v);
label:
v = v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl currentPart>;
return v;
catch java.io.IOException from label to label with label;
catch org.apache.james.mime4j.MimeException from label to label with label;
}
private static void checkParserState(org.apache.james.mime4j.stream.EntityState, org.apache.james.mime4j.stream.EntityState) throws java.lang.IllegalStateException
{
org.apache.james.mime4j.stream.EntityState v, v;
java.lang.IllegalStateException v;
java.lang.String v;
v := @parameter: org.apache.james.mime4j.stream.EntityState;
v := @parameter: org.apache.james.mime4j.stream.EntityState;
if v == v goto label;
v = new java.lang.IllegalStateException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (org.apache.james.mime4j.stream.EntityState,org.apache.james.mime4j.stream.EntityState)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Internal error: expected parser to be in state \u, but got \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
public java.util.Iterator iterator()
{
org.apache.axiom.mime.MultipartBody v;
org.apache.axiom.mime.PartIterator v;
v := @this: org.apache.axiom.mime.MultipartBody;
v = new org.apache.axiom.mime.PartIterator;
specialinvoke v.<org.apache.axiom.mime.PartIterator: void <init>(org.apache.axiom.mime.MultipartBody)>(v);
return v;
}
public void detach()
{
org.apache.axiom.mime.PartImpl v;
org.apache.axiom.mime.MultipartBody v;
v := @this: org.apache.axiom.mime.MultipartBody;
label:
v = virtualinvoke v.<org.apache.axiom.mime.MultipartBody: org.apache.axiom.mime.PartImpl getNextPart()>();
if v != null goto label;
return;
}
static void <clinit>()
{
org.apache.james.mime4j.stream.MimeConfig$Builder v, v;
org.apache.commons.logging.Log v;
org.apache.james.mime4j.stream.MimeConfig v;
v = staticinvoke <org.apache.commons.logging.LogFactory: org.apache.commons.logging.Log getLog(java.lang.Class)>(class "Lorg/apache/axiom/mime/MultipartBody;");
<org.apache.axiom.mime.MultipartBody: org.apache.commons.logging.Log log> = v;
v = staticinvoke <org.apache.james.mime4j.stream.MimeConfig: org.apache.james.mime4j.stream.MimeConfig$Builder custom()>();
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeConfig$Builder: org.apache.james.mime4j.stream.MimeConfig$Builder setStrictParsing(boolean)>(1);
v = virtualinvoke v.<org.apache.james.mime4j.stream.MimeConfig$Builder: org.apache.james.mime4j.stream.MimeConfig build()>();
<org.apache.axiom.mime.MultipartBody: org.apache.james.mime4j.stream.MimeConfig config> = v;
return;
}
}