src/share/jaxws_classes/com/oracle/webservices/internal/api/message/PropertySet.java

Tue, 09 Apr 2013 14:51:13 +0100

author
alanb
date
Tue, 09 Apr 2013 14:51:13 +0100
changeset 368
0989ad8c0860
child 374
72e03566f0a6
permissions
-rw-r--r--

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 }

mercurial