01: /*
02: * Portions Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
03: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04: *
05: * This code is free software; you can redistribute it and/or modify it
06: * under the terms of the GNU General Public License version 2 only, as
07: * published by the Free Software Foundation. Sun designates this
08: * particular file as subject to the "Classpath" exception as provided
09: * by Sun in the LICENSE file that accompanied this code.
10: *
11: * This code is distributed in the hope that it will be useful, but WITHOUT
12: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * version 2 for more details (a copy is included in the LICENSE file that
15: * accompanied this code).
16: *
17: * You should have received a copy of the GNU General Public License version
18: * 2 along with this work; if not, write to the Free Software Foundation,
19: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22: * CA 95054 USA or visit www.sun.com if you need additional information or
23: * have any questions.
24: */
25:
26: package com.sun.xml.internal.ws.client;
27:
28: import com.sun.xml.internal.ws.pept.presentation.MessageStruct;
29: import static com.sun.xml.internal.ws.client.BindingProviderProperties.CONTENT_NEGOTIATION_PROPERTY;
30:
31: import java.util.Map;
32:
33: public class ContentNegotiation {
34:
35: /**
36: * Initializes content negotiation property in <code>MessageStruct</code>
37: * based on request context and system properties.
38: */
39: static public void initialize(Map context,
40: MessageStruct messageStruct) {
41: String value = (String) context
42: .get(CONTENT_NEGOTIATION_PROPERTY);
43: if (value != null) {
44: if (value.equals("none") || value.equals("pessimistic")
45: || value.equals("optimistic")) {
46: messageStruct.setMetaData(CONTENT_NEGOTIATION_PROPERTY,
47: value.intern());
48: } else {
49: throw new SenderException(
50: "sender.request.illegalValueForContentNegotiation",
51: value);
52: }
53: } else {
54: initFromSystemProperties(context, messageStruct);
55: }
56: }
57:
58: /**
59: * Initializes content negotiation property in <code>MessageStruct</code>
60: * based on system property of the same name.
61: */
62: static public void initFromSystemProperties(Map context,
63: MessageStruct messageStruct) throws SenderException {
64: String value = System.getProperty(CONTENT_NEGOTIATION_PROPERTY);
65:
66: if (value == null) {
67: messageStruct.setMetaData(CONTENT_NEGOTIATION_PROPERTY,
68: "none"); // FI is off by default
69: } else if (value.equals("none") || value.equals("pessimistic")
70: || value.equals("optimistic")) {
71: messageStruct.setMetaData(CONTENT_NEGOTIATION_PROPERTY,
72: value.intern());
73: context.put(CONTENT_NEGOTIATION_PROPERTY, value.intern());
74: } else {
75: throw new SenderException(
76: "sender.request.illegalValueForContentNegotiation",
77: value);
78: }
79: }
80: }
|