<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>Configurable</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Configurable";
        }
    }
    catch(err) {
    }
//-->
var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../javax/ws/rs/core/CacheControl.html" title="class in javax.ws.rs.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/ws/rs/core/Configuration.html" title="interface in javax.ws.rs.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/ws/rs/core/Configurable.html" target="_top">Frames</a></li>
<li><a href="Configurable.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">javax.ws.rs.core</div>
<h2 title="Interface Configurable" class="title">Interface Configurable&lt;C extends Configurable&gt;</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Known Subinterfaces:</dt>
<dd><a href="../../../../javax/ws/rs/client/Client.html" title="interface in javax.ws.rs.client">Client</a>, <a href="../../../../javax/ws/rs/core/FeatureContext.html" title="interface in javax.ws.rs.core">FeatureContext</a>, <a href="../../../../org/eclipse/microprofile/rest/client/RestClientBuilder.html" title="interface in org.eclipse.microprofile.rest.client">RestClientBuilder</a>, <a href="../../../../javax/ws/rs/client/WebTarget.html" title="interface in javax.ws.rs.client">WebTarget</a></dd>
</dl>
<dl>
<dt>All Known Implementing Classes:</dt>
<dd><a href="../../../../javax/ws/rs/client/ClientBuilder.html" title="class in javax.ws.rs.client">ClientBuilder</a></dd>
</dl>
<hr>
<br>
<pre>public interface <span class="typeNameLabel">Configurable&lt;C extends Configurable&gt;</span></pre>
<div class="block">Represents a client or server-side configurable context.

 A configurable context can be used to define the components as well as
 additional meta-data that should be used in the scope of the configured context.
 The modification of the context typically involves setting properties or registering
 custom components, such as providers and/or features.
 All modifications of a <code>Configurable</code> context are reflected in the associated
 <a href="../../../../javax/ws/rs/core/Configuration.html" title="interface in javax.ws.rs.core"><code>Configuration</code></a> state which is exposed via <a href="../../../../javax/ws/rs/core/Configurable.html#getConfiguration--"><code>getConfiguration()</code></a> method.
 <p>
 A configurable context can be either indirectly associated with a particular component
 (such as application or resource method configurable context passed to a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>Feature</code></a>
 or <a href="../../../../javax/ws/rs/container/DynamicFeature.html" title="interface in javax.ws.rs.container"><code>DynamicFeature</code></a> meta-providers) or can be directly represented
 by a concrete component implementing the <code>Configurable</code> interface
 (such as <a href="../../../../javax/ws/rs/client/Client.html" title="interface in javax.ws.rs.client"><code>Client</code></a> or <a href="../../../../javax/ws/rs/client/WebTarget.html" title="interface in javax.ws.rs.client"><code>WebTarget</code></a>).
 As such, the exact scope of a configuration context is typically determined by a use case
 scenario in which the context is accessed.
 </p>
 <h3>Setting properties.</h3>
 <p>
 New properties can be set using the <a href="../../../../javax/ws/rs/core/Configurable.html#property-java.lang.String-java.lang.Object-"><code>property(java.lang.String, java.lang.Object)</code></a> method. Similarly, updating a value of
 an existing property can be achieved using the same method. Information about the configured set of
 properties is available via the underlying <code>Configuration</code> object. An existing property
 can be removed by assigning a <code>null</code> value to the property.
 </p>
 <h3>Registering components.</h3>
 <p>
 Registered custom component classes and instances are important part of the contextual
 configuration information as these are the main factors that determine the capabilities of
 a configured runtime.
 Implementations SHOULD warn about and ignore registrations that do not conform to the requirements
 of supported components in a given configurable context.
 </p>
 <p>
 In most cases, when registering a component, the simplest form of methods
 (<a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-"><code>register(Class)</code></a> or <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-"><code>register(Object)</code></a>) of the available registration API
 is sufficient.
 </p>
 <p>
 For example:
 <pre>
 config.register(HtmlDocumentReader.class);
 config.register(new HtmlDocumentWriter(writerConfig));
 </pre>
 </p>
 <p>
 In some situations a component class or instance may implement multiple
 provider contracts recognized by an implementation (e.g. filter, interceptor or entity provider).
 By default, the implementation MUST register the new component class or instance as
 a provider for all the recognized provider contracts implemented by the component class.
 </p>
 <p>
 For example:
 <pre>
 &#64;Priority(ENTITY_CODER)
 public class GzipInterceptor
         implements ReaderInterceptor, WriterInterceptor { ... }

 ...

 // register GzipInterceptor as a ReaderInterceptor
 // as well as a WriterInterceptor
 config.register(GzipInterceptor.class);
 </pre>
 </p>
 <p>
 There are however situations when the default registration of a component to all the
 recognized provider contracts is not desirable. In such cases users may use other versions of the
 <code>register(...)</code> method to explicitly specify the collection of the provider contracts
 for which the component should be registered and/or the priority of each registered
 provider contract.
 </p>
 <p>
 For example:
 <pre>
 &#64;Priority(USER)
 public class ClientLoggingFilter
         implements ClientRequestFilter, ClientResponseFilter { ... }

 &#64;Priority(ENTITY_CODER)
 public class GzipInterceptor
         implements ReaderInterceptor, WriterInterceptor { ... }

 ...

 // register ClientLoggingFilter as a ClientResponseFilter only
 config.register(ClientLoggingFilter.class, ClientResponseFilter.class);

 // override the priority of registered GzipInterceptor
 // and both of it's provider contracts
 config.register(GzipInterceptor.class, 6500);
 </pre>
 </p>
 <p>
 As a general rule, for each component class there can be at most one registration
 &mdash; class-based or instance-based &mdash; configured at any given moment. Implementations
 MUST reject any attempts to configure a new registration for a provider class that has been
 already registered in the given configurable context earlier. Implementations SHOULD also raise
 a warning to inform the user about the rejected component registration.
 </p>
 <p>
 For example:
 <pre>
 config.register(GzipInterceptor.class, WriterInterceptor.class);
 config.register(GzipInterceptor.class);       // Rejected by runtime.
 config.register(new GzipInterceptor());       // Rejected by runtime.
 config.register(GzipInterceptor.class, 6500); // Rejected by runtime.

 config.register(new ClientLoggingFilter());
 config.register(ClientLoggingFilter.class);   // rejected by runtime.
 config.register(ClientLoggingFilter.class,
                 ClientResponseFilter.class);  // Rejected by runtime.
 </pre>
 </p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>2.0</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configuration.html" title="interface in javax.ws.rs.core">Configuration</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#getConfiguration--">getConfiguration</a></span>()</code>
<div class="block">Get a live view of an internal configuration state of this configurable instance.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#property-java.lang.String-java.lang.Object-">property</a></span>(java.lang.String&nbsp;name,
        java.lang.Object&nbsp;value)</code>
<div class="block">Set the new configuration property, if already set, the existing value of
 the property will be updated.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-">register</a></span>(java.lang.Class&lt;?&gt;&nbsp;componentClass)</code>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-java.lang.Class...-">register</a></span>(java.lang.Class&lt;?&gt;&nbsp;componentClass,
        java.lang.Class&lt;?&gt;...&nbsp;contracts)</code>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-int-">register</a></span>(java.lang.Class&lt;?&gt;&nbsp;componentClass,
        int&nbsp;priority)</code>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-java.util.Map-">register</a></span>(java.lang.Class&lt;?&gt;&nbsp;componentClass,
        java.util.Map&lt;java.lang.Class&lt;?&gt;,java.lang.Integer&gt;&nbsp;contracts)</code>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-">register</a></span>(java.lang.Object&nbsp;component)</code>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-java.lang.Class...-">register</a></span>(java.lang.Object&nbsp;component,
        java.lang.Class&lt;?&gt;...&nbsp;contracts)</code>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-int-">register</a></span>(java.lang.Object&nbsp;component,
        int&nbsp;priority)</code>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-java.util.Map-">register</a></span>(java.lang.Object&nbsp;component,
        java.util.Map&lt;java.lang.Class&lt;?&gt;,java.lang.Integer&gt;&nbsp;contracts)</code>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getConfiguration--">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getConfiguration</h4>
<pre><a href="../../../../javax/ws/rs/core/Configuration.html" title="interface in javax.ws.rs.core">Configuration</a>&nbsp;getConfiguration()</pre>
<div class="block">Get a live view of an internal configuration state of this configurable instance.

 Any changes made using methods of this <code>Configurable</code> instance will be reflected
 in the returned <code>Configuration</code> instance.
 <p>
 The returned <code>Configuration</code> instance and the collection data it provides are not
 thread-safe wrt. modification made using methods on the parent configurable object.
 </p></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>configuration live view of the internal configuration state.</dd>
</dl>
</li>
</ul>
<a name="property-java.lang.String-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>property</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;property(java.lang.String&nbsp;name,
           java.lang.Object&nbsp;value)</pre>
<div class="block">Set the new configuration property, if already set, the existing value of
 the property will be updated. Setting a <code>null</code> value into a property
 effectively removes the property from the property bag.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - property name.</dd>
<dd><code>value</code> - (new) property value. <code>null</code> value removes the property
              with the given name.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable instance.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Class-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Class&lt;?&gt;&nbsp;componentClass)</pre>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.

 Implementations SHOULD warn about and ignore registrations that do not
 conform to the requirements of supported component types in the
 given configurable context. Any subsequent registration attempts for a component
 type, for which a class or instance-based registration already exists in the system
 MUST be rejected by the API implementation and a warning SHOULD be raised to
 inform the user about the rejected registration.

 The registered component class is registered as a contract provider of
 all the recognized API or implementation-specific extension contracts including
 meta-provider contracts, such as <code>Feature</code> or <a href="../../../../javax/ws/rs/container/DynamicFeature.html" title="interface in javax.ws.rs.container"><code>DynamicFeature</code></a>.
 <p>
 As opposed to component instances registered via <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-"><code>register(Object)</code></a> method,
 the lifecycle of components registered using this class-based <code>register(...)</code>
 method is fully managed by the implementation or any underlying IoC
 container supported by the implementation.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>componentClass</code> - component class to be configured in the scope of this
                       configurable context.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Class-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Class&lt;?&gt;&nbsp;componentClass,
           int&nbsp;priority)</pre>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides the same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-"><code>register(Class)</code></a>
 except that any priority specified on the registered component class via
 <code>javax.annotation.Priority</code> annotation is overridden with the supplied
 <code>priority</code> value.
 </p>
 <p>
 Note that in case the priority is not applicable to a particular
 provider contract implemented by the class of the registered component, the supplied
 <code>priority</code> value will be ignored for that contract.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>componentClass</code> - component class to be configured in the scope of this
                       configurable context.</dd>
<dd><code>priority</code> - the overriding priority for the registered component
                       and all the provider contracts the component implements.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Class-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Class&lt;?&gt;&nbsp;componentClass,
           java.lang.Class&lt;?&gt;...&nbsp;contracts)</pre>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides the same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-"><code>register(Class)</code></a>
 except the component class is only registered as a provider of the listed
 extension provider or meta-provider <code>contracts</code>.
 All explicitly enumerated contract types must represent a class or an interface
 implemented or extended by the registered component. Contracts that are not
 <code>assignable from</code> the registered component class
 MUST be ignored and implementations SHOULD raise a warning to inform users about the
 ignored contract(s).
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>componentClass</code> - component class to be configured in the scope of this
                       configurable context.</dd>
<dd><code>contracts</code> - the specific extension provider or meta-provider contracts
                       implemented by the component for which the component should
                       be registered.
                       Implementations MUST ignore attempts to register a component
                       class for an empty or <code>null</code> collection of contracts via
                       this method and SHOULD raise a warning about such event.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Class-java.util.Map-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Class&lt;?&gt;&nbsp;componentClass,
           java.util.Map&lt;java.lang.Class&lt;?&gt;,java.lang.Integer&gt;&nbsp;contracts)</pre>
<div class="block">Register a class of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-java.lang.Class...-"><code>register(Class, Class[])</code></a>
 except that any priority specified on the registered component class via
 <code>javax.annotation.Priority</code> annotation is overridden
 for each extension provider contract type separately with an integer priority value
 specified as a value in the supplied map of [contract type, priority] pairs.
 </p>
 <p>
 Note that in case a priority is not applicable to a provider contract registered
 for the component, the supplied priority value is ignored for such
 contract.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>componentClass</code> - component class to be configured in the scope of this
                       configurable context.</dd>
<dd><code>contracts</code> - map of the specific extension provider and meta-provider contracts
                       and their associated priorities for which the component
                       is registered.
                       All contracts in the map must represent a class or an interface
                       implemented or extended by the component. Contracts that are
                       not <code>assignable from</code> the registered
                       component class MUST be ignored and implementations SHOULD raise a warning
                       to inform users about the ignored contract(s).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Object-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Object&nbsp;component)</pre>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.

 Implementations SHOULD warn about and ignore registrations that do not
 conform to the requirements of supported component types in the
 given configurable context. Any subsequent registration attempts for a component
 type, for which a class or instance-based registration already exists in the system
 MUST be rejected by the API implementation and a warning SHOULD be raised to
 inform the user about the rejected registration.

 The registered component is registered as a contract provider of
 all the recognized API or implementation-specific extension contracts including
 meta-provider contracts, such as <code>Feature</code> or <a href="../../../../javax/ws/rs/container/DynamicFeature.html" title="interface in javax.ws.rs.container"><code>DynamicFeature</code></a>.
 <p>
 As opposed to components registered via <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Class-"><code>register(Class)</code></a> method,
 the lifecycle of providers registered using this instance-based <code>register(...)</code>
 is not managed by the runtime. The same registered component instance is used during
 the whole lifespan of the configurable context.
 Fields and properties of all registered component instances are injected with their
 declared dependencies (see <a href="../../../../javax/ws/rs/core/Context.html" title="annotation in javax.ws.rs.core"><code>Context</code></a>) by the runtime prior to use.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>component</code> - component instance to be configured in the scope of this
                  configurable context.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Object-int-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Object&nbsp;component,
           int&nbsp;priority)</pre>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides the same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-"><code>register(Object)</code></a>
 except that any priority specified on the registered component class via
 <code>javax.annotation.Priority</code> annotation is overridden with the supplied
 <code>priority</code> value.
 </p>
 <p>
 Note that in case the priority is not applicable to a particular
 provider contract implemented by the class of the registered component, the supplied
 <code>priority</code> value will be ignored for that contract.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>component</code> - component instance to be configured in the scope of this
                  configurable context.</dd>
<dd><code>priority</code> - the overriding priority for the registered component
                  and all the provider contracts the component implements.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Object-java.lang.Class...-">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Object&nbsp;component,
           java.lang.Class&lt;?&gt;...&nbsp;contracts)</pre>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides the same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-"><code>register(Object)</code></a>
 except the component class is only registered as a provider of the listed
 extension provider or meta-provider <code>contracts</code>.
 All explicitly enumerated contract types must represent a class or an interface
 implemented or extended by the registered component. Contracts that are not
 <code>assignable from</code> the registered component class
 MUST be ignored and implementations SHOULD raise a warning to inform users about the
 ignored contract(s).
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>component</code> - component instance to be configured in the scope of this
                  configurable context.</dd>
<dd><code>contracts</code> - the specific extension provider or meta-provider contracts
                  implemented by the component for which the component should
                  be registered.
                  Implementations MUST ignore attempts to register a component
                  class for an empty or <code>null</code> collection of contracts via
                  this method and SHOULD raise a warning about such event.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
<a name="register-java.lang.Object-java.util.Map-">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>register</h4>
<pre><a href="../../../../javax/ws/rs/core/Configurable.html" title="type parameter in Configurable">C</a>&nbsp;register(java.lang.Object&nbsp;component,
           java.util.Map&lt;java.lang.Class&lt;?&gt;,java.lang.Integer&gt;&nbsp;contracts)</pre>
<div class="block">Register an instance of a custom component (such as an extension provider or
 a <a href="../../../../javax/ws/rs/core/Feature.html" title="interface in javax.ws.rs.core"><code>feature</code></a> meta-provider) to be instantiated
 and used in the scope of this configurable context.
 <p>
 This registration method provides same functionality as <a href="../../../../javax/ws/rs/core/Configurable.html#register-java.lang.Object-java.lang.Class...-"><code>register(Object, Class[])</code></a>
 except that any priority specified on the registered component class via
 <code>javax.annotation.Priority</code> annotation is overridden
 for each extension provider contract type separately with an integer priority value
 specified as a value in the supplied map of [contract type, priority] pairs.
 </p>
 <p>
 Note that in case a priority is not applicable to a provider contract registered
 for the component, the supplied priority value is ignored for such
 contract.
 </p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>component</code> - component instance to be configured in the scope of this
                  configurable context.</dd>
<dd><code>contracts</code> - map of the specific extension provider and meta-provider contracts
                  and their associated priorities for which the component
                  is registered.
                  All contracts in the map must represent a class or an interface
                  implemented or extended by the component. Contracts that are
                  not <code>assignable from</code> the registered
                  component class MUST be ignored and implementations SHOULD raise a warning
                  to inform users about the ignored contract(s).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the updated configurable context.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../javax/ws/rs/core/CacheControl.html" title="class in javax.ws.rs.core"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../javax/ws/rs/core/Configuration.html" title="interface in javax.ws.rs.core"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?javax/ws/rs/core/Configurable.html" target="_top">Frames</a></li>
<li><a href="Configurable.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
