Package org.cip4.jdflib.util
Class MimeUtil
java.lang.Object
org.cip4.jdflib.util.UrlUtil
org.cip4.jdflib.util.MimeUtil
MIME utilities for reading and writing MIME/MULTIPART/RELATED streams
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classdata source for binary filesstatic classhelper class to set mime detailsNested classes/interfaces inherited from class org.cip4.jdflib.util.UrlUtil
UrlUtil.HTTPDetails, UrlUtil.HttpMethod, UrlUtil.URLProtocol, UrlUtil.URLWriter -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringcommonly used stringsFields inherited from class org.cip4.jdflib.util.UrlUtil
ACCEPT, APPLICATION_CFF2, APPLICATION_JSON, APPLICATION_PDF, APPLICATION_PS, APPLICATION_XML, APPLICATION_XZIP, APPLICATION_ZIP, AUTHORIZATION, BASE64, BINARY, CLOSE, CONNECT, CONNECTION, CONTENT_ID, CONTENT_LENGTH, CONTENT_TRANSFER_ENCODING, CONTENT_TYPE, DELETE, FILE, FTP, GET, HEAD, HTTP, HTTPS, KEEPALIVE, m_UNCEscape, m_URIEscape, MAX_STREAM, OPTIONS, PATCH, POST, PUT, TEXT_CSV, TEXT_HTML, TEXT_JSON, TEXT_PLAIN, TEXT_UNKNOWN, TEXT_XML, TRACE, VND_JDF, VND_JMF, VND_PPF, VND_PTK, VND_PTK_J, VND_XJDF, VND_XJDF_J, VND_XJMF, VND_XJMF_J, ZIP -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic javax.mail.MultipartbuildMimePackage(Vector<? extends XMLDoc> vXMLDocs) Builds a MIME package.static javax.mail.MultipartbuildMimePackage(JDFDoc docJMF, JDFDoc docJDF) Deprecated.use 3 parameter versionstatic javax.mail.MultipartbuildMimePackage(JDFDoc docJMF, XMLDoc docJDF, boolean extendReferenced) build a MIME package that contains all references in all FileSpecs of a given JDFDoc the doc is modified so that all URLs are cidsstatic javax.mail.BodyPart[]extractMultipartMime(InputStream mimeStream) Extracts all the parts of a multipart MIME message and returns an array of InputStream for each of the separate MIME parts.static javax.mail.BodyPart[]getBodyParts(javax.mail.Multipart mp) get all the parts of of a multipart anstatic StringgetContentID(javax.mail.BodyPart bp) get the ContentID header of a bodypart a stringstatic javax.mail.BodyPartgetCreatePartByCID(javax.mail.Multipart mp, String cid) get the MIME BodyPart from a multiPart package with a given cid create one if it does not exist;static StringgetFileName(javax.mail.BodyPart bp) get the filename header of a bodypart a string if no file name is set, a unique filename is generated from cid and content typestatic JDFDocgetJDFDoc(InputStream stream, int index) get the JDF Doc from a stream, also handle non mime streams gracefullystatic JDFDocgetJDFDoc(javax.mail.BodyPart bp) get the JDF Doc from a given body partstatic JDFDoc[]getJMFSubmission(javax.mail.Multipart mp) gets the JMF document of a submitqueueentry or returnqueuentry and the attached jdf documentstatic StringgetMimeTypeFromExt(String fileName) Deprecated.use UrlUtil.getMimeTypeFromURL(fileName);static javax.mail.MultipartgetMultiPart(InputStream mimeStream) create a root multipart from an input streamstatic javax.mail.MultipartgetMultiPart(String fileName) helper to create a root multipart from a filestatic javax.mail.BodyPartgetPartByCID(javax.mail.Multipart mp, String cid) get the MIME BodyPart from a multiPart package with a given cidstatic BodyPartHelpergetPartByFileName(javax.mail.Multipart mp, String name) get the MIME BodyPart from a multiPart package with a given file namestatic booleanisJDFMimeType(String mimeType) checks whether the mime type corresponds to one of "application/vnd.cip4-jdf+xml"; "application/vnd.cip4-jmf+xml"; "text/xml"; or the respective XJDF tapesstatic booleanisMimeMultiPart(String contentType) static booleanisMimeType(String toCheck, String mimeType) checks whether the mime type corresponds to mimetyoestatic booleanisPPFMimeType(String mimeType) checks whether the mime type corresponds to ppfstatic booleanmatchesCID(javax.mail.BodyPart bp, String cid) check if a BodyPart matches a given cidstatic voidsetContent(javax.mail.BodyPart messageBodyPart, XMLDoc xmlDoc) sets the content of a bodypart to the xmlDoc - correctly handling non-ascii features and setting the correct content typestatic voidsetContentID(javax.mail.BodyPart bp, String cid) static voidsetFileName(javax.mail.BodyPart bp, String path) set the filename header of a bodypart to a stringstatic javax.mail.BodyPartupdateXMLMultipart(javax.mail.Multipart multipart, XMLDoc xmlDoc, String cid) static Stringstatic Stringstatic voidwriteBodyPartToFile(javax.mail.BodyPart bp, File directory) static voidwriteToDir(javax.mail.Multipart mp, File directory) write a Message to a directorystatic FilewriteToFile(javax.mail.Multipart m, String fileName) Deprecated.static FilewriteToFile(javax.mail.Multipart m, String fileName, MimeUtil.MIMEDetails md) write a Multipart to an output filestatic JDFDocwriteToQueue(JDFDoc docJMF, JDFDoc docJDF, String strUrl, MimeUtil.MIMEDetails urlDet) submit a multipart file to a queuestatic voidwriteToStream(javax.mail.Multipart m, OutputStream outStream) Deprecated.static voidwriteToStream(javax.mail.Multipart m, OutputStream outStream, MimeUtil.MIMEDetails md) write a Multipart to a Streamstatic HttpURLConnectionwriteToURL(javax.mail.Multipart mp, String strUrl) write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http responsestatic HttpURLConnectionwriteToURL(javax.mail.Multipart mp, String strUrl, MimeUtil.MIMEDetails mimeDetails) write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http responseMethods inherited from class org.cip4.jdflib.util.UrlUtil
addParameter, addPath, addSecure, cleanDots, cleanHttpURL, createHttpUrl, escape, escape, extension, fileToUrl, getBytesFromIP, getCidURLStream, getConnectionTimeout, getCreateDirectory, getExtensionFromMimeType, getFileName, getIPFromBytes, getLocalURL, getMimeTypeFromURL, getParameter, getParentDirectory, getProtocol, getRelativePath, getRelativeURL, getSecurePath, getURLInputStream, getURLInputStream, getURLInputStream, getURLParts, getURLWithDirectory, isCID, isEscaped, isFile, isFileOK, isFtp, isHttp, isHttps, isIRL, isJSONType, isMIME, isMIMEExtenstension, isNet, isNotCID, isRedirect, isRelativeURL, isReturnCodeOK, isReturnCodeOK, isUNC, isURL, isWindowsLocalPath, isXMLType, isZip, isZIPType, moveToDir, moveToDir, moveToDir, newExtension, normalize, prefix, removeExtension, removeProtocol, setConnectionTimeout, setParameter, stringToURL, uncToUrl, unEscape, urlToFile, urlToFileName, urlToString, urlToUNC, writerToURL, writeToURL
-
Field Details
-
CID
- See Also:
-
MULTIPART_RELATED
commonly used strings- See Also:
-
MULTIPART_FORMDATA
- See Also:
-
-
Constructor Details
-
MimeUtil
public MimeUtil()
-
-
Method Details
-
setContentID
- Parameters:
bp-cid-
-
setFileName
set the filename header of a bodypart to a string- Parameters:
bp- the bodypartpath- the path to set
-
getFileName
get the filename header of a bodypart a string if no file name is set, a unique filename is generated from cid and content type- Parameters:
bp- the bodypart- Returns:
- the file name, null if bp is null
-
getContentID
get the ContentID header of a bodypart a string- Parameters:
bp- the bodypart- Returns:
- the cid, null if there was an error
-
extractMultipartMime
Extracts all the parts of a multipart MIME message and returns an array of InputStream for each of the separate MIME parts.- Parameters:
mimeStream-- Returns:
-
getBodyParts
public static javax.mail.BodyPart[] getBodyParts(javax.mail.Multipart mp) get all the parts of of a multipart an- Parameters:
mp- the multiPart to extract- Returns:
- the array of parts, null if snafu...
-
getPartByCID
get the MIME BodyPart from a multiPart package with a given cid- Parameters:
mp- the multipart package to search incid- the cid of the requested bodypart- Returns:
- BodyPart the matching BodyPart, null if none is found
-
getPartByFileName
get the MIME BodyPart from a multiPart package with a given file name- Parameters:
mp- the multipart package to search inname- the cid of the requested bodypart- Returns:
- BodyPart the matching BodyPart, null if none is found
-
getCreatePartByCID
get the MIME BodyPart from a multiPart package with a given cid create one if it does not exist;- Parameters:
mp- the multipart package to search incid- the cid of the requested bodypart- Returns:
- BodyPart the matching BodyPart, null if none is found
-
getJDFDoc
get the JDF Doc from a stream, also handle non mime streams gracefully- Parameters:
stream- the stream to search inindex- the index of the body part to search- Returns:
- JDFDoc the parsed xml JDFDoc, null if stream does not contain xml
-
getJDFDoc
get the JDF Doc from a given body part- Parameters:
bp- the BodyPart to search in- Returns:
- JDFDoc the parsed xml JDFDoc, null if bp does not contain xml
-
matchesCID
check if a BodyPart matches a given cid- Parameters:
bp- the bodyPart to checkcid- the cid string any '<' '>' or 'cid:' prefixes are removed if null, anything matches- Returns:
- true if this bp matches the cid
-
getMultiPart
helper to create a root multipart from a file- Parameters:
fileName- the name of the file used as input- Returns:
- MultiPart the Multipart that represents the root mime, null if something went wrong
-
getMultiPart
create a root multipart from an input stream- Parameters:
mimeStream- the input stream- Returns:
- MultiPart the Multipart that represents the root mime, null if something went wrong
-
getMimeTypeFromExt
Deprecated.use UrlUtil.getMimeTypeFromURL(fileName);checkst whether the mime type corresponds to one of "application/vnd.cip4-jdf+xml"; "application/vnd.cip4-jmf+xml"; "text/xml";- Parameters:
fileName- the string to test- Returns:
- the mime type
-
isJDFMimeType
checks whether the mime type corresponds to one of "application/vnd.cip4-jdf+xml"; "application/vnd.cip4-jmf+xml"; "text/xml"; or the respective XJDF tapes- Parameters:
mimeType- the string to test- Returns:
- true if matches
-
isPPFMimeType
checks whether the mime type corresponds to ppf- Parameters:
mimeType- the string to test- Returns:
- true if matches
-
isMimeType
checks whether the mime type corresponds to mimetyoe- Parameters:
toCheck- the string to check againstmimeType- the mime type- Returns:
- true if matches
-
buildMimePackage
Deprecated.use 3 parameter version- Parameters:
docJMF-docJDF-- Returns:
-
buildMimePackage
public static javax.mail.Multipart buildMimePackage(JDFDoc docJMF, XMLDoc docJDF, boolean extendReferenced) build a MIME package that contains all references in all FileSpecs of a given JDFDoc the doc is modified so that all URLs are cids- Parameters:
docJMF- the JDFDoc representation of the JMF that references the jdf to package, if null only the jdf is packaged note that the URL of docJDF must already be specified as a CIDdocJDF- the JDFDoc representation of the JDF to packageextendReferenced- if true, also package any further referenced files- Returns:
- a Message representing the resulting MIME package, null if an error occurred
-
urlToCid
- Parameters:
urlString-- Returns:
-
urlToCid
- Parameters:
normalized-- Returns:
-
buildMimePackage
Builds a MIME package.- Parameters:
vXMLDocs- the Vector of XMLDoc representing the JMF and JDFs to be stored as the first part of the package t- Returns:
- a Message representing the resulting MIME package, null if an error occured
-
updateXMLMultipart
public static javax.mail.BodyPart updateXMLMultipart(javax.mail.Multipart multipart, XMLDoc xmlDoc, String cid) - Parameters:
multipart-xmlDoc-cid-- Returns:
-
setContent
public static void setContent(javax.mail.BodyPart messageBodyPart, XMLDoc xmlDoc) throws javax.mail.MessagingException, IOException sets the content of a bodypart to the xmlDoc - correctly handling non-ascii features and setting the correct content type- Parameters:
messageBodyPart- the BodyPart to fillxmlDoc- the xmlDoc to fill in- Throws:
javax.mail.MessagingExceptionIOException
-
writeToURL
public static HttpURLConnection writeToURL(javax.mail.Multipart mp, String strUrl) throws IOException, javax.mail.MessagingException write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http response- Parameters:
mp- the mime MultiPart to writestrUrl- the URL to write to- Returns:
HttpURLConnectionthe opened http connection, null in case of error or file- Throws:
IOExceptionjavax.mail.MessagingException
-
writeToURL
public static HttpURLConnection writeToURL(javax.mail.Multipart mp, String strUrl, MimeUtil.MIMEDetails mimeDetails) throws IOException, javax.mail.MessagingException write a Multipart to an output URL File: and http: are currently supported Use HttpURLConnection.getInputStream() to retrieve the http response- Parameters:
mp- the mime MultiPart to writestrUrl- the URL to write tomimeDetails-- Returns:
HttpURLConnectionthe opened http connection, null in case of error or file- Throws:
IOExceptionjavax.mail.MessagingException
-
writeToQueue
public static JDFDoc writeToQueue(JDFDoc docJMF, JDFDoc docJDF, String strUrl, MimeUtil.MIMEDetails urlDet) throws IOException, javax.mail.MessagingException submit a multipart file to a queue- Parameters:
docJMF- the jmf document containing the submitqueueentry or resubmitqueueentrydocJDF- the jdf to submitstrUrl- the url to submit tourlDet- url details- Returns:
- Throws:
IOExceptionjavax.mail.MessagingException
-
writeToFile
Deprecated.- Parameters:
m-fileName-- Returns:
- the File that was written
-
writeToFile
write a Multipart to an output file- Parameters:
m- the mime MultiPart to writefileName- the file namemd-- Returns:
-
writeToStream
@Deprecated public static void writeToStream(javax.mail.Multipart m, OutputStream outStream) throws IOException, javax.mail.MessagingException Deprecated.- Parameters:
m-outStream-- Throws:
IOExceptionjavax.mail.MessagingException
-
writeToStream
public static void writeToStream(javax.mail.Multipart m, OutputStream outStream, MimeUtil.MIMEDetails md) throws IOException, javax.mail.MessagingException write a Multipart to a Stream- Parameters:
m- the mime MultiPart to writeoutStream- the existing output stream, note that a buffered output stream is created in case outStream is unbufferedmd- details for messaging- Throws:
IOExceptionjavax.mail.MessagingException
-
writeToDir
public static void writeToDir(javax.mail.Multipart mp, File directory) throws javax.mail.MessagingException, IOException write a Message to a directory- Parameters:
mp- the mime Message to writedirectory- the directory to use as '.' for writing the mime parts- Throws:
javax.mail.MessagingExceptionIOExceptionjavax.mail.MessagingException
-
writeBodyPartToFile
public static void writeBodyPartToFile(javax.mail.BodyPart bp, File directory) throws IOException, javax.mail.MessagingException - Parameters:
bp-directory-- Throws:
javax.mail.MessagingExceptionIOException
-
getJMFSubmission
gets the JMF document of a submitqueueentry or returnqueuentry and the attached jdf document- Parameters:
mp- the Multipart to search- Returns:
- one or two JDFDocs: bp[0] is the jmf, bp[1] is the jdf, if a JDF is referenced;
-
isMimeMultiPart
- Parameters:
contentType-- Returns:
-