/*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.oracle.webservices.internal.api.message;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Map;
import javax.xml.ws.handler.MessageContext;
A set of "properties" that can be accessed via strongly-typed fields
as well as reflexibly through the property name.
Author: Kohsuke Kawaguchi
/**
* A set of "properties" that can be accessed via strongly-typed fields
* as well as reflexibly through the property name.
*
* @author Kohsuke Kawaguchi
*/
public interface PropertySet {
Marks a field on PropertySet
as a property of MessageContext
. To make the runtime processing easy, this annotation must be on a public field (since the property name can be set through Map
anyway, you won't be losing abstraction by doing so.)
For similar reason, this annotation can be only placed
on a reference type, not primitive type.
Author: Kohsuke Kawaguchi
/**
* Marks a field on {@link PropertySet} as a
* property of {@link MessageContext}.
*
* <p>
* To make the runtime processing easy, this annotation
* must be on a public field (since the property name
* can be set through {@link Map} anyway, you won't be
* losing abstraction by doing so.)
*
* <p>
* For similar reason, this annotation can be only placed
* on a reference type, not primitive type.
*
* @author Kohsuke Kawaguchi
*/
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.METHOD})
public @interface Property {
Name of the property.
/**
* Name of the property.
*/
String[] value();
}
public boolean containsKey(Object key);
Gets the name of the property.
Params: - key – This field is typed as
Object
to follow the Map.get(Object)
convention, but if anything but String
is passed, this method just returns null.
/**
* Gets the name of the property.
*
* @param key
* This field is typed as {@link Object} to follow the {@link Map#get(Object)}
* convention, but if anything but {@link String} is passed, this method
* just returns null.
*/
public Object get(Object key);
Sets a property.
Implementation Note
This method is slow. Code inside JAX-WS should define strongly-typed
fields in this class and access them directly, instead of using this.
See Also: - Property
/**
* Sets a property.
*
* <h3>Implementation Note</h3>
* This method is slow. Code inside JAX-WS should define strongly-typed
* fields in this class and access them directly, instead of using this.
*
* @see Property
*/
public Object put(String key, Object value);
Checks if this PropertySet
supports a property of the given name. /**
* Checks if this {@link PropertySet} supports a property of the given name.
*/
public boolean supports(Object key);
public Object remove(Object key);
Creates a Map
view of this PropertySet
. This map is partially live, in the sense that values you set to it will be reflected to PropertySet
.
However, this map may not pick up changes made to PropertySet
after the view is created.
Deprecated: use newer implementation BasePropertySet.asMap()
which produces readwrite Map
Returns:
always non-null valid instance.
/**
* Creates a {@link Map} view of this {@link PropertySet}.
*
* <p>
* This map is partially live, in the sense that values you set to it
* will be reflected to {@link PropertySet}.
*
* <p>
* However, this map may not pick up changes made
* to {@link PropertySet} after the view is created.
*
* @deprecated use newer implementation {@link com.sun.xml.internal.ws.api.PropertySet#asMap()} which produces
* readwrite {@link Map}
*
* @return
* always non-null valid instance.
*/
@Deprecated
public Map<String,Object> createMapView();
Creates a modifiable Map
view of this PropertySet
. Changes done on this Map
or on PropertySet
object work in both directions - values made to Map
are reflected to PropertySet
and changes done using getters/setters on PropertySet
object are automatically reflected in this Map
. If necessary, it also can hold other values (not present on PropertySet
) - {@see PropertySet#mapAllowsAdditionalProperties} Returns: always non-null valid instance.
/**
* Creates a modifiable {@link Map} view of this {@link PropertySet}.
* <p/>
* Changes done on this {@link Map} or on {@link PropertySet} object work in both directions - values made to
* {@link Map} are reflected to {@link PropertySet} and changes done using getters/setters on {@link PropertySet}
* object are automatically reflected in this {@link Map}.
* <p/>
* If necessary, it also can hold other values (not present on {@link PropertySet}) -
* {@see PropertySet#mapAllowsAdditionalProperties}
*
* @return always non-null valid instance.
*/
public Map<String, Object> asMap();
}