001: /*
002: * The contents of this file are subject to the terms
003: * of the Common Development and Distribution License
004: * (the "License"). You may not use this file except
005: * in compliance with the License.
006: *
007: * You can obtain a copy of the license at
008: * https://jwsdp.dev.java.net/CDDLv1.0.html
009: * See the License for the specific language governing
010: * permissions and limitations under the License.
011: *
012: * When distributing Covered Code, include this CDDL
013: * HEADER in each file and include the License file at
014: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
015: * add the following below this CDDL HEADER, with the
016: * fields enclosed by brackets "[]" replaced with your
017: * own identifying information: Portions Copyright [yyyy]
018: * [name of copyright owner]
019: */
020:
021: /*
022: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
023: *
024: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
025: *
026: * The contents of this file are subject to the terms of either the GNU
027: * General Public License Version 2 only ("GPL") or the Common Development
028: * and Distribution License("CDDL") (collectively, the "License"). You
029: * may not use this file except in compliance with the License. You can obtain
030: * a copy of the License at https://glassfish.dev.java.net/public/CDDL+GPL.html
031: * or glassfish/bootstrap/legal/LICENSE.txt. See the License for the specific
032: * language governing permissions and limitations under the License.
033: *
034: * When distributing the software, include this License Header Notice in each
035: * file and include the License file at glassfish/bootstrap/legal/LICENSE.txt.
036: * Sun designates this particular file as subject to the "Classpath" exception
037: * as provided by Sun in the GPL Version 2 section of the License file that
038: * accompanied this code. If applicable, add the following below the License
039: * Header, with the fields enclosed by brackets [] replaced by your own
040: * identifying information: "Portions Copyrighted [year]
041: * [name of copyright owner]"
042: *
043: * Contributor(s):
044: *
045: * If you wish your version of this file to be governed by only the CDDL or
046: * only the GPL Version 2, indicate your decision by adding "[Contributor]
047: * elects to include this software in this distribution under the [CDDL or GPL
048: * Version 2] license." If you don't indicate a single choice of license, a
049: * recipient has the option to distribute your version of this file under
050: * either the CDDL, the GPL Version 2 or to extend the choice of license to
051: * its licensees as provided above. However, if you add GPL Version 2 code
052: * and therefore, elected the GPL Version 2 license, then the option applies
053: * only if the new code is made subject to such option by the copyright
054: * holder.
055: */
056:
057: /**
058: * $Id: CustomTypeTest.java,v 1.2 2007/07/16 16:41:28 ofung Exp $
059: * $Revision: 1.2 $
060: * $Date: 2007/07/16 16:41:28 $
061: */package mime.custom;
062:
063: import java.io.FileInputStream;
064: import java.io.FileOutputStream;
065: import java.util.Iterator;
066:
067: import javax.activation.*;
068: import javax.xml.soap.*;
069:
070: import junit.framework.TestCase;
071:
072: /*
073: * Attaches a custom object to a SOAP message in two different ways. The data
074: * content handlers are got using MailcapCommandMap and DataContentHandlerFactory
075: *
076: * @author Jitendra Kotamraju (jitendra.kotamraju@sun.com)
077: */
078:
079: public class CustomTypeTest extends TestCase {
080:
081: public CustomTypeTest(String name) {
082: super (name);
083: }
084:
085: /*
086: * Add CustomType object to SOAP message and verify that it comes back
087: * after writing to a file
088: */
089: public void addCustomObjAndVerify(String mimeType) throws Exception {
090:
091: MessageFactory mf = MessageFactory.newInstance();
092: SOAPMessage msg = mf.createMessage();
093: SOAPPart sp = msg.getSOAPPart();
094:
095: SOAPEnvelope envelope = sp.getEnvelope();
096:
097: SOAPHeader hdr = envelope.getHeader();
098: SOAPBody bdy = envelope.getBody();
099:
100: // Add something to body
101: SOAPBodyElement gltp = bdy.addBodyElement(envelope.createName(
102: "GetLastTradePrice", "ztrade",
103: "http://wombat.ztrade.com"));
104:
105: gltp.addChildElement(
106: envelope.createName("symbol", "ztrade",
107: "http://wombat.ztrade.com"))
108: .addTextNode("SUNW");
109:
110: // Attach Custom Type
111: CustomType type = new CustomType();
112: AttachmentPart ap = msg.createAttachmentPart(type, mimeType);
113: msg.addAttachmentPart(ap);
114: msg.saveChanges();
115:
116: // Save the soap message to file
117: FileOutputStream sentFile = new FileOutputStream(
118: "src/test/mime/data/custom_type_sent.ctp");
119: msg.writeTo(sentFile);
120: sentFile.close();
121:
122: // See if we get the CustomType object back
123: FileInputStream fin = new FileInputStream(
124: "src/test/mime/data/custom_type_sent.ctp");
125: SOAPMessage newMsg = mf
126: .createMessage(msg.getMimeHeaders(), fin);
127: Iterator i = newMsg.getAttachments();
128: while (i.hasNext()) {
129: AttachmentPart att = (AttachmentPart) i.next();
130: CustomType obj = (CustomType) att.getContent(); // Works or throws
131: break;
132: }
133: fin.close();
134: }
135:
136: /*
137: * Set DataConentHandlerFactory which provides a DataContentHandler for
138: * "custom/factory" MIME type
139: */
140: private void setFactory() {
141: DataHandler
142: .setDataContentHandlerFactory(new CustomDataContentHandlerFactory());
143: }
144:
145: public void testCustomTypeUsingFactory() {
146: try {
147: setFactory();
148: addCustomObjAndVerify("custom/factory");
149: } catch (Exception e) {
150: e.printStackTrace();
151: fail("No exception should have been thrown");
152: }
153: }
154:
155: /*
156: * Set MailCap entry which provides a DataContentHandler for
157: * "custom/mailcap" MIME type
158: */
159: private void setMailcap() {
160: // Register data content handler for "custom/mailcap"
161: CommandMap map = CommandMap.getDefaultCommandMap();
162: if (map instanceof MailcapCommandMap) {
163: MailcapCommandMap mailMap = (MailcapCommandMap) map;
164: String hndlrStr = "; ;x-java-content-handler=";
165: mailMap.addMailcap("custom/mailcap" + hndlrStr
166: + "mime.custom.MailcapDataContentHandler");
167: }
168: }
169:
170: public void testCustomTypeUsingMailcap() {
171: try {
172: setMailcap();
173: addCustomObjAndVerify("custom/mailcap");
174: } catch (Exception e) {
175: e.printStackTrace();
176: fail("No exception should have been thrown");
177: }
178: }
179: }
|