Tue, 09 Apr 2013 14:51:13 +0100
8010393: Update JAX-WS RI to 2.2.9-b12941
Reviewed-by: alanb, erikj
Contributed-by: miroslav.kos@oracle.com, martin.grebac@oracle.com
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright (c) 1997-2012 Oracle and/or its affiliates. All rights reserved.
5 *
6 * The contents of this file are subject to the terms of either the GNU
7 * General Public License Version 2 only ("GPL") or the Common Development
8 * and Distribution License("CDDL") (collectively, the "License"). You
9 * may not use this file except in compliance with the License. You can
10 * obtain a copy of the License at
11 * http://glassfish.java.net/public/CDDL+GPL_1_1.html
12 * or packager/legal/LICENSE.txt. See the License for the specific
13 * language governing permissions and limitations under the License.
14 *
15 * When distributing the software, include this License Header Notice in each
16 * file and include the License file at packager/legal/LICENSE.txt.
17 *
18 * GPL Classpath Exception:
19 * Oracle designates this particular file as subject to the "Classpath"
20 * exception as provided by Oracle in the GPL Version 2 section of the License
21 * file that accompanied this code.
22 *
23 * Modifications:
24 * If applicable, add the following below the License Header, with the fields
25 * enclosed by brackets [] replaced by your own identifying information:
26 * "Portions Copyright [year] [name of copyright owner]"
27 *
28 * Contributor(s):
29 * If you wish your version of this file to be governed by only the CDDL or
30 * only the GPL Version 2, indicate your decision by adding "[Contributor]
31 * elects to include this software in this distribution under the [CDDL or GPL
32 * Version 2] license." If you don't indicate a single choice of license, a
33 * recipient has the option to distribute your version of this file under
34 * either the CDDL, the GPL Version 2 or to extend the choice of license to
35 * its licensees as provided above. However, if you add GPL Version 2 code
36 * and therefore, elected the GPL Version 2 license, then the option applies
37 * only if the new code is made subject to such option by the copyright
38 * holder.
39 */
41 package com.oracle.webservices.internal.api.message;
43 import java.lang.annotation.ElementType;
44 import java.lang.annotation.Inherited;
45 import java.lang.annotation.Retention;
46 import java.lang.annotation.RetentionPolicy;
47 import java.lang.annotation.Target;
48 import java.util.Map;
50 import javax.xml.ws.handler.MessageContext;
52 /**
53 * A set of "properties" that can be accessed via strongly-typed fields
54 * as well as reflexibly through the property name.
55 *
56 * @author Kohsuke Kawaguchi
57 */
58 public interface PropertySet {
60 /**
61 * Marks a field on {@link PropertySet} as a
62 * property of {@link MessageContext}.
63 *
64 * <p>
65 * To make the runtime processing easy, this annotation
66 * must be on a public field (since the property name
67 * can be set through {@link Map} anyway, you won't be
68 * losing abstraction by doing so.)
69 *
70 * <p>
71 * For similar reason, this annotation can be only placed
72 * on a reference type, not primitive type.
73 *
74 * @author Kohsuke Kawaguchi
75 */
76 @Inherited
77 @Retention(RetentionPolicy.RUNTIME)
78 @Target({ElementType.FIELD,ElementType.METHOD})
79 public @interface Property {
80 /**
81 * Name of the property.
82 */
83 String[] value();
84 }
86 public boolean containsKey(Object key);
88 /**
89 * Gets the name of the property.
90 *
91 * @param key
92 * This field is typed as {@link Object} to follow the {@link Map#get(Object)}
93 * convention, but if anything but {@link String} is passed, this method
94 * just returns null.
95 */
96 public Object get(Object key);
98 /**
99 * Sets a property.
100 *
101 * <h3>Implementation Note</h3>
102 * This method is slow. Code inside JAX-WS should define strongly-typed
103 * fields in this class and access them directly, instead of using this.
104 *
105 * @see Property
106 */
107 public Object put(String key, Object value);
109 /**
110 * Checks if this {@link PropertySet} supports a property of the given name.
111 */
112 public boolean supports(Object key);
114 public Object remove(Object key);
116 /**
117 * Creates a {@link Map} view of this {@link PropertySet}.
118 *
119 * <p>
120 * This map is partially live, in the sense that values you set to it
121 * will be reflected to {@link PropertySet}.
122 *
123 * <p>
124 * However, this map may not pick up changes made
125 * to {@link PropertySet} after the view is created.
126 *
127 * @deprecated use newer implementation {@link com.sun.xml.internal.ws.api.PropertySet#asMap()} which produces
128 * readwrite {@link Map}
129 *
130 * @return
131 * always non-null valid instance.
132 */
133 @Deprecated
134 public Map<String,Object> createMapView();
136 /**
137 * Creates a modifiable {@link Map} view of this {@link PropertySet}.
138 * <p/>
139 * Changes done on this {@link Map} or on {@link PropertySet} object work in both directions - values made to
140 * {@link Map} are reflected to {@link PropertySet} and changes done using getters/setters on {@link PropertySet}
141 * object are automatically reflected in this {@link Map}.
142 * <p/>
143 * If necessary, it also can hold other values (not present on {@link PropertySet}) -
144 * {@see PropertySet#mapAllowsAdditionalProperties}
145 *
146 * @return always non-null valid instance.
147 */
148 public Map<String, Object> asMap();
149 }