diff options
Diffstat (limited to 'java/gov/nist/javax/sip/message/MessageFactoryImpl.java')
-rw-r--r-- | java/gov/nist/javax/sip/message/MessageFactoryImpl.java | 849 |
1 files changed, 849 insertions, 0 deletions
diff --git a/java/gov/nist/javax/sip/message/MessageFactoryImpl.java b/java/gov/nist/javax/sip/message/MessageFactoryImpl.java new file mode 100644 index 0000000..5045cf6 --- /dev/null +++ b/java/gov/nist/javax/sip/message/MessageFactoryImpl.java @@ -0,0 +1,849 @@ +/* + * Conditions Of Use + * + * This software was developed by employees of the National Institute of + * Standards and Technology (NIST), an agency of the Federal Government. + * Pursuant to title 15 Untied States Code Section 105, works of NIST + * employees are not subject to copyright protection in the United States + * and are considered to be in the public domain. As a result, a formal + * license is not needed to use the software. + * + * This software is provided by NIST as a service and is expressly + * provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED + * OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT + * AND DATA ACCURACY. NIST does not warrant or make any representations + * regarding the use of the software or the results thereof, including but + * not limited to the correctness, accuracy, reliability or usefulness of + * the software. + * + * Permission to use this software is contingent upon your acceptance + * of the terms of this agreement + * + * . + * + */ +/******************************************************************************* + * Product of NIST/ITL Advanced Networking Technologies Division (ANTD). * + *******************************************************************************/ +package gov.nist.javax.sip.message; + +import java.text.ParseException; +import javax.sip.header.*; + +import java.util.LinkedList; +import java.util.List; +import gov.nist.javax.sip.header.*; + +import javax.sip.message.*; +import javax.sip.address.*; +import gov.nist.javax.sip.parser.*; + +/** + * Message Factory implementation + * + * @version 1.2 $Revision: 1.23 $ $Date: 2009/09/08 01:58:40 $ + * @since 1.1 + * + * @author M. Ranganathan <br/> + * @author Olivier Deruelle <br/> + * + */ +@SuppressWarnings("unchecked") +public class MessageFactoryImpl implements MessageFactory, MessageFactoryExt { + + private boolean testing = false; + + private boolean strict = true; + + private static String defaultContentEncodingCharset = "UTF-8"; + + + /* + * The UserAgent header to include for all requests created from this message factory. + */ + private static UserAgentHeader userAgent; + + /* + * The Server header to include + */ + private static ServerHeader server; + + + public void setStrict(boolean strict) { + this.strict = strict; + } + + + + /** + * This is for testing -- allows you to generate invalid requests + */ + public void setTest(boolean flag) { + this.testing = flag; + } + + /** + * Creates a new instance of MessageFactoryImpl + */ + public MessageFactoryImpl() { + } + + /** + * Creates a new Request message of type specified by the method paramater, + * containing the URI of the Request, the mandatory headers of the message + * with a body in the form of a Java object and the body content type. + * + * @param requestURI - + * the new URI object of the requestURI value of this Message. + * @param method - + * the new string of the method value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @param content - + * the new Object of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the method or the body. + */ + public Request createRequest(javax.sip.address.URI requestURI, + String method, CallIdHeader callId, CSeqHeader cSeq, + FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, ContentTypeHeader contentType, + Object content) throws ParseException { + if (requestURI == null || method == null || callId == null + || cSeq == null || from == null || to == null || via == null + || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException("Null parameters"); + + SIPRequest sipRequest = new SIPRequest(); + sipRequest.setRequestURI(requestURI); + sipRequest.setMethod(method); + sipRequest.setCallId(callId); + sipRequest.setCSeq(cSeq); + sipRequest.setFrom(from); + sipRequest.setTo(to); + sipRequest.setVia(via); + sipRequest.setMaxForwards(maxForwards); + sipRequest.setContent(content, contentType); + if ( userAgent != null ) { + sipRequest.setHeader(userAgent); + } + + return sipRequest; + } + + /** + * Creates a new Request message of type specified by the method paramater, + * containing the URI of the Request, the mandatory headers of the message + * with a body in the form of a byte array and body content type. + * + * @param requestURI - + * the new URI object of the requestURI value of this Message. + * @param method - + * the new string of the method value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @param content - + * the new byte array of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the method or the body. + */ + public Request createRequest(URI requestURI, String method, + CallIdHeader callId, CSeqHeader cSeq, FromHeader from, ToHeader to, + List via, MaxForwardsHeader maxForwards, byte[] content, + ContentTypeHeader contentType) throws ParseException { + if (requestURI == null || method == null || callId == null + || cSeq == null || from == null || to == null || via == null + || maxForwards == null || content == null + || contentType == null) + throw new ParseException( + "JAIN-SIP Exception, some parameters are missing" + + ", unable to create the request", 0); + + SIPRequest sipRequest = new SIPRequest(); + sipRequest.setRequestURI(requestURI); + sipRequest.setMethod(method); + sipRequest.setCallId(callId); + sipRequest.setCSeq(cSeq); + sipRequest.setFrom(from); + sipRequest.setTo(to); + sipRequest.setVia(via); + sipRequest.setMaxForwards(maxForwards); + sipRequest.setHeader((ContentType) contentType); + sipRequest.setMessageContent(content); + if ( userAgent != null ) { + sipRequest.setHeader(userAgent); + } + return sipRequest; + } + + /** + * Creates a new Request message of type specified by the method paramater, + * containing the URI of the Request, the mandatory headers of the message. + * This new Request does not contain a body. + * + * @param requestURI - + * the new URI object of the requestURI value of this Message. + * @param method - + * the new string of the method value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the method. + */ + public Request createRequest(URI requestURI, String method, + CallIdHeader callId, CSeqHeader cSeq, FromHeader from, ToHeader to, + List via, MaxForwardsHeader maxForwards) throws ParseException { + if (requestURI == null || method == null || callId == null + || cSeq == null || from == null || to == null || via == null + || maxForwards == null) + throw new ParseException( + "JAIN-SIP Exception, some parameters are missing" + + ", unable to create the request", 0); + + SIPRequest sipRequest = new SIPRequest(); + sipRequest.setRequestURI(requestURI); + sipRequest.setMethod(method); + sipRequest.setCallId(callId); + sipRequest.setCSeq(cSeq); + sipRequest.setFrom(from); + sipRequest.setTo(to); + sipRequest.setVia(via); + sipRequest.setMaxForwards(maxForwards); + if (userAgent != null) { + sipRequest.setHeader(userAgent); + } + + return sipRequest; + } + + // Standard Response Creation methods + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, containing the mandatory headers of the message with a body in + * the form of a Java object and the body content type. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @param content - + * the new Object of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, CallIdHeader callId, + CSeqHeader cSeq, FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, Object content, + ContentTypeHeader contentType) throws ParseException { + if (callId == null || cSeq == null || from == null || to == null + || via == null || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException(" unable to create the response"); + + SIPResponse sipResponse = new SIPResponse(); + StatusLine statusLine = new StatusLine(); + statusLine.setStatusCode(statusCode); + String reasonPhrase = SIPResponse.getReasonPhrase(statusCode); + //if (reasonPhrase == null) + // throw new ParseException(statusCode + " Unkown ", 0); + statusLine.setReasonPhrase(reasonPhrase); + sipResponse.setStatusLine(statusLine); + sipResponse.setCallId(callId); + sipResponse.setCSeq(cSeq); + sipResponse.setFrom(from); + sipResponse.setTo(to); + sipResponse.setVia(via); + sipResponse.setMaxForwards(maxForwards); + sipResponse.setContent(content, contentType); + if (userAgent != null) { + sipResponse.setHeader(userAgent); + } + return sipResponse; + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, containing the mandatory headers of the message with a body in + * the form of a byte array and the body content type. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @param content - + * the new byte array of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, CallIdHeader callId, + CSeqHeader cSeq, FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, byte[] content, + ContentTypeHeader contentType) throws ParseException { + if (callId == null || cSeq == null || from == null || to == null + || via == null || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException("Null params "); + + SIPResponse sipResponse = new SIPResponse(); + sipResponse.setStatusCode(statusCode); + sipResponse.setCallId(callId); + sipResponse.setCSeq(cSeq); + sipResponse.setFrom(from); + sipResponse.setTo(to); + sipResponse.setVia(via); + sipResponse.setMaxForwards(maxForwards); + sipResponse.setHeader((ContentType) contentType); + sipResponse.setMessageContent(content); + if (userAgent != null) { + sipResponse.setHeader(userAgent); + } + return sipResponse; + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, containing the mandatory headers of the message. This new + * Response does not contain a body. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode. + */ + public Response createResponse(int statusCode, CallIdHeader callId, + CSeqHeader cSeq, FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards) throws ParseException { + if (callId == null || cSeq == null || from == null || to == null + || via == null || maxForwards == null) + throw new ParseException( + "JAIN-SIP Exception, some parameters are missing" + + ", unable to create the response", 0); + + SIPResponse sipResponse = new SIPResponse(); + sipResponse.setStatusCode(statusCode); + sipResponse.setCallId(callId); + sipResponse.setCSeq(cSeq); + sipResponse.setFrom(from); + sipResponse.setTo(to); + sipResponse.setVia(via); + sipResponse.setMaxForwards(maxForwards); + if (userAgent != null) { + sipResponse.setHeader(userAgent); + } + return sipResponse; + } + + // Response Creation methods based on a Request + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, based on a specific Request with a new body in the form of a + * Java object and the body content type. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param request - + * the received Reqest object upon which to base the Response. + * @param content - + * the new Object of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, Request request, + ContentTypeHeader contentType, Object content) + throws ParseException { + if (request == null || content == null || contentType == null) + throw new NullPointerException("null parameters"); + + SIPRequest sipRequest = (SIPRequest) request; + SIPResponse sipResponse = sipRequest.createResponse(statusCode); + sipResponse.setContent(content, contentType); + if (server != null) { + sipResponse.setHeader(server); + } + return sipResponse; + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, based on a specific Request with a new body in the form of a + * byte array and the body content type. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param request - + * the received Reqest object upon which to base the Response. + * @param content - + * the new byte array of the body content value of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, Request request, + ContentTypeHeader contentType, byte[] content) + throws ParseException { + if (request == null || content == null || contentType == null) + throw new NullPointerException("null Parameters"); + + SIPRequest sipRequest = (SIPRequest) request; + SIPResponse sipResponse = sipRequest.createResponse(statusCode); + sipResponse.setHeader((ContentType) contentType); + sipResponse.setMessageContent(content); + if (server != null) { + sipResponse.setHeader(server); + } + return sipResponse; + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, based on a specific Request message. This new Response does + * not contain a body. + * + * @param statusCode - + * the new integer of the statusCode value of this Message. + * @param request - + * the received Reqest object upon which to base the Response. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode. + */ + public Response createResponse(int statusCode, Request request) + throws ParseException { + if (request == null) + throw new NullPointerException("null parameters"); + + // if (LogWriter.needsLogging) + // LogWriter.logMessage("createResponse " + request); + + SIPRequest sipRequest = (SIPRequest) request; + SIPResponse sipResponse = sipRequest.createResponse(statusCode); + // Remove the content from the message (Bug report from + // Antonis Karydas. + sipResponse.removeContent(); + sipResponse.removeHeader(ContentTypeHeader.NAME); + if (server != null) { + sipResponse.setHeader(server); + } + return sipResponse; + } + + /** + * Creates a new Request message of type specified by the method paramater, + * containing the URI of the Request, the mandatory headers of the message + * with a body in the form of a byte array and body content type. + * + * @param requestURI - + * the new URI object of the requestURI value of this Message. + * @param method - + * the new string of the method value of this Message. + * @param callId - + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq - + * the new CSeqHeader object of the cSeq value of this Message. + * @param from - + * the new FromHeader object of the from value of this Message. + * @param to - + * the new ToHeader object of the to value of this Message. + * @param via - + * the new List object of the ViaHeaders of this Message. + * @param contentType - + * the new ContentTypeHeader object of the content type value of + * this Message. + * @param content - + * the new byte array of the body content value of this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the method or the body. + */ + public Request createRequest(javax.sip.address.URI requestURI, + String method, CallIdHeader callId, CSeqHeader cSeq, + FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, ContentTypeHeader contentType, + byte[] content) throws ParseException { + if (requestURI == null || method == null || callId == null + || cSeq == null || from == null || to == null || via == null + || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException("missing parameters"); + + SIPRequest sipRequest = new SIPRequest(); + sipRequest.setRequestURI(requestURI); + sipRequest.setMethod(method); + sipRequest.setCallId(callId); + sipRequest.setCSeq(cSeq); + sipRequest.setFrom(from); + sipRequest.setTo(to); + sipRequest.setVia(via); + sipRequest.setMaxForwards(maxForwards); + sipRequest.setContent(content, contentType); + if (userAgent != null) { + sipRequest.setHeader(userAgent); + } + return sipRequest; + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, containing the mandatory headers of the message with a body in + * the form of a Java object and the body content type. + * + * @param statusCode + * the new integer of the statusCode value of this Message. + * @param callId + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq + * the new CSeqHeader object of the cSeq value of this Message. + * @param from + * the new FromHeader object of the from value of this Message. + * @param to + * the new ToHeader object of the to value of this Message. + * @param via + * the new List object of the ViaHeaders of this Message. + * @param contentType + * the new ContentTypeHeader object of the content type value of + * this Message. + * @param content + * the new Object of the body content value of this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, CallIdHeader callId, + CSeqHeader cSeq, FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, ContentTypeHeader contentType, + Object content) throws ParseException { + if (callId == null || cSeq == null || from == null || to == null + || via == null || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException("missing parameters"); + SIPResponse sipResponse = new SIPResponse(); + StatusLine statusLine = new StatusLine(); + statusLine.setStatusCode(statusCode); + String reason = SIPResponse.getReasonPhrase(statusCode); + if (reason == null) + throw new ParseException(statusCode + " Unknown", 0); + statusLine.setReasonPhrase(reason); + sipResponse.setStatusLine(statusLine); + sipResponse.setCallId(callId); + sipResponse.setCSeq(cSeq); + sipResponse.setFrom(from); + sipResponse.setTo(to); + sipResponse.setVia(via); + sipResponse.setContent(content, contentType); + if ( userAgent != null) { + sipResponse.setHeader(userAgent); + } + return sipResponse; + + } + + /** + * Creates a new Response message of type specified by the statusCode + * paramater, containing the mandatory headers of the message with a body in + * the form of a byte array and the body content type. + * + * @param statusCode + * the new integer of the statusCode value of this Message. + * @param callId + * the new CallIdHeader object of the callId value of this + * Message. + * @param cSeq + * the new CSeqHeader object of the cSeq value of this Message. + * @param from + * the new FromHeader object of the from value of this Message. + * @param to + * the new ToHeader object of the to value of this Message. + * @param via + * the new List object of the ViaHeaders of this Message. + * @param contentType + * the new ContentTypeHeader object of the content type value of + * this Message. + * @param content + * the new byte array of the body content value of this Message. + * @throws ParseException + * which signals that an error has been reached unexpectedly + * while parsing the statusCode or the body. + */ + public Response createResponse(int statusCode, CallIdHeader callId, + CSeqHeader cSeq, FromHeader from, ToHeader to, List via, + MaxForwardsHeader maxForwards, ContentTypeHeader contentType, + byte[] content) throws ParseException { + if (callId == null || cSeq == null || from == null || to == null + || via == null || maxForwards == null || content == null + || contentType == null) + throw new NullPointerException("missing parameters"); + SIPResponse sipResponse = new SIPResponse(); + StatusLine statusLine = new StatusLine(); + statusLine.setStatusCode(statusCode); + String reason = SIPResponse.getReasonPhrase(statusCode); + if (reason == null) + throw new ParseException(statusCode + " : Unknown", 0); + statusLine.setReasonPhrase(reason); + sipResponse.setStatusLine(statusLine); + sipResponse.setCallId(callId); + sipResponse.setCSeq(cSeq); + sipResponse.setFrom(from); + sipResponse.setTo(to); + sipResponse.setVia(via); + sipResponse.setContent(content, contentType); + if ( userAgent != null) { + sipResponse.setHeader(userAgent); + } + return sipResponse; + } + + /** + * Create a request from a string. Conveniance method for UACs that want to + * create an outgoing request from a string. Only the headers of the request + * should be included in the String that is supplied to this method. + * + * @param requestString -- + * string from which to create the message null string returns an + * empty message. + */ + public javax.sip.message.Request createRequest(String requestString) + throws java.text.ParseException { + if (requestString == null || requestString.equals("")) { + SIPRequest retval = new SIPRequest(); + retval.setNullRequest(); + return retval; + } + + StringMsgParser smp = new StringMsgParser(); + smp.setStrict(this.strict); + + /* + * This allows you to catch parse exceptions and create invalid messages + * if you want. + */ + ParseExceptionListener parseExceptionListener = new ParseExceptionListener() { + + public void handleException(ParseException ex, + SIPMessage sipMessage, Class headerClass, + String headerText, String messageText) + throws ParseException { + // Rethrow the error for the essential headers. Otherwise bad + // headers are simply + // recorded in the message. + if (testing) { + if (headerClass == From.class || headerClass == To.class + || headerClass == CallID.class + || headerClass == MaxForwards.class + || headerClass == Via.class + || headerClass == RequestLine.class + || headerClass == StatusLine.class + || headerClass == CSeq.class) + throw ex; + + sipMessage.addUnparsed(headerText); + } + + } + + }; + + if (this.testing) + smp.setParseExceptionListener(parseExceptionListener); + + SIPMessage sipMessage = smp.parseSIPMessage(requestString); + + if (!(sipMessage instanceof SIPRequest)) + throw new ParseException(requestString, 0); + + return (SIPRequest) sipMessage; + } + + /** + * Create a response from a string + * + * @param responseString -- + * string from which to create the message null string returns an + * empty message. + * + */ + public Response createResponse(String responseString) + throws java.text.ParseException { + if (responseString == null) + return new SIPResponse(); + + StringMsgParser smp = new StringMsgParser(); + + SIPMessage sipMessage = smp.parseSIPMessage(responseString); + + if (!(sipMessage instanceof SIPResponse)) + throw new ParseException(responseString, 0); + + return (SIPResponse) sipMessage; + } + + /** + * Set the common UserAgent header for all requests created from this message factory. + * This header is applied to all Messages created from this Factory object except those + * that take String for an argument and create Message from the given String. + * + * @param userAgent -- the user agent header to set. + * + * @since 2.0 + */ + + public void setDefaultUserAgentHeader(UserAgentHeader userAgent) { + MessageFactoryImpl.userAgent = userAgent; + } + + /** + * Set the common Server header for all responses created from this message factory. + * This header is applied to all Messages created from this Factory object except those + * that take String for an argument and create Message from the given String. + * + * @param userAgent -- the user agent header to set. + * + * @since 2.0 + */ + + public void setDefaultServerHeader(ServerHeader server) { + MessageFactoryImpl.server = server; + } + /** + * Get the default common UserAgentHeader. + * + * @return the user agent header. + * + * @since 2.0 + */ + public static UserAgentHeader getDefaultUserAgentHeader() { + return userAgent; + } + + + /** + * Get the default common server header. + * + * @return the server header. + */ + public static ServerHeader getDefaultServerHeader() { + return server; + } + + + /** + * Set default charset used for encoding String content. + * @param charset + */ + public void setDefaultContentEncodingCharset(String charset) throws NullPointerException, + IllegalArgumentException { + if (charset == null ) throw new NullPointerException ("Null argument!"); + MessageFactoryImpl.defaultContentEncodingCharset = charset; + + } + + public static String getDefaultContentEncodingCharset() { + return MessageFactoryImpl.defaultContentEncodingCharset; + } + + + public MultipartMimeContent createMultipartMimeContent(ContentTypeHeader multipartMimeCth, + String[] contentType, + String[] contentSubtype, + String[] contentBody) { + String boundary = multipartMimeCth.getParameter("boundary"); + MultipartMimeContentImpl retval = new MultipartMimeContentImpl(multipartMimeCth); + for (int i = 0 ; i < contentType.length; i++ ) { + ContentTypeHeader cth = new ContentType(contentType[i],contentSubtype[i]); + ContentImpl contentImpl = new ContentImpl(contentBody[i],boundary); + contentImpl.setContentTypeHeader(cth); + retval.add(contentImpl); + } + return retval; + } + + + + +} |