All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jakarta.ws.rs.client.WebTarget Maven / Gradle / Ivy

There is a newer version: 11.0.0-M4
Show newest version
/*
 * Copyright (c) 2011, 2019 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package jakarta.ws.rs.client;

import java.net.URI;
import java.util.Map;

import jakarta.ws.rs.core.Configurable;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.UriBuilder;

/**
 * A resource target identified by the resource URI.
 *
 * @author Marek Potociar
 * @since 2.0
 */
public interface WebTarget extends Configurable {

    /**
     * Get the URI identifying the resource.
     *
     * @return the resource URI.
     */
    public URI getUri();

    /**
     * Get the URI builder initialized with the {@link URI} of the current resource target. The returned URI builder is
     * detached from the target, i.e. any updates in the URI builder MUST NOT have any effects on the URI of the originating
     * target.
     *
     * @return the initialized URI builder.
     */
    public UriBuilder getUriBuilder();

    /**
     * Create a new {@code WebTarget} instance by appending path to the URI of the current target instance.
     * 

* When constructing the final path, a '/' separator will be inserted between the existing path and the supplied path if * necessary. Existing '/' characters are preserved thus a single value can represent multiple URI path segments. *

*

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param path the path, may contain URI template parameters. * @return a new target instance. * @throws NullPointerException if path is {@code null}. */ public WebTarget path(String path); /** * Create a new {@code WebTarget} instance by resolving a URI template with a given {@code name} in the URI of the * current target instance using a supplied value. * * In case a {@code null} template name or value is entered a {@link NullPointerException} is thrown. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param name name of the URI template. * @param value value to be used to resolve the template. * @return a new target instance. * @throws NullPointerException if the resolved template name or value is {@code null}. */ public WebTarget resolveTemplate(String name, Object value); /** * Create a new {@code WebTarget} instance by resolving a URI template with a given {@code name} in the URI of the * current target instance using a supplied value. * * In case a {@code null} template name or value is entered a {@link NullPointerException} is thrown. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param name name of the URI template. * @param value value to be used to resolve the template. * @param encodeSlashInPath if {@code true}, the slash ({@code '/'}) characters in template values will be encoded if * the template is placed in the URI path component, otherwise the slash characters will not be encoded in path * templates. * @return a new target instance. * @throws NullPointerException if the resolved template name or value is {@code null}. */ public WebTarget resolveTemplate(String name, Object value, boolean encodeSlashInPath); /** * Create a new {@code WebTarget} instance by resolving a URI template with a given {@code name} in the URI of the * current target instance using a supplied encoded value. * * A template with a matching name will be replaced by the supplied value. Value is converted to {@code String} using * its {@code toString()} method and is then encoded to match the rules of the URI component to which they pertain. All * % characters in the stringified values that are not followed by two hexadecimal numbers will be encoded. * * In case a {@code null} template name or value is entered a {@link NullPointerException} is thrown. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param name name of the URI template. * @param value encoded value to be used to resolve the template. * @return a new target instance. * @throws NullPointerException if the resolved template name or value is {@code null}. */ public WebTarget resolveTemplateFromEncoded(String name, Object value); /** * Create a new {@code WebTarget} instance by resolving one or more URI templates in the URI of the current target * instance using supplied name-value pairs. * * A call to the method with an empty parameter map is ignored, i.e. same {@code WebTarget} instance is returned. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param templateValues a map of URI template names and their values. * @return a new target instance or the same target instance in case the input name-value map is empty. * @throws NullPointerException if the name-value map or any of the names or values in the map is {@code null}. */ public WebTarget resolveTemplates(Map templateValues); /** * Create a new {@code WebTarget} instance by resolving one or more URI templates in the URI of the current target * instance using supplied name-value pairs. * * A call to the method with an empty parameter map is ignored, i.e. same {@code WebTarget} instance is returned. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * * @param templateValues a map of URI template names and their values. * @param encodeSlashInPath if {@code true}, the slash ({@code '/'}) characters in template values will be encoded if * the template is placed in the URI path component, otherwise the slash characters will not be encoded in path * templates. * @return a new target instance or the same target instance in case the input name-value map is empty. * @throws NullPointerException if the name-value map or any of the names or values in the map is {@code null}. */ public WebTarget resolveTemplates(Map templateValues, boolean encodeSlashInPath); /** * Create a new {@code WebTarget} instance by resolving one or more URI templates in the URI of the current target * instance using supplied name-encoded value pairs. * * All templates with their name matching one of the keys in the supplied map will be replaced by the value in the * supplied map. Values are converted to {@code String} using their {@code toString()} method and are then encoded to * match the rules of the URI component to which they pertain. All % characters in the stringified values that are not * followed by two hexadecimal numbers will be encoded. * * A call to the method with an empty parameter map is ignored, i.e. same {@code WebTarget} instance is returned. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param templateValues a map of URI template names and their encoded values. * @return a new target instance or the same target instance in case the input name-value map is empty. * @throws NullPointerException if the name-value map or any of the names or encoded values in the map is {@code null}. */ public WebTarget resolveTemplatesFromEncoded(Map templateValues); /** * Create a new {@code WebTarget} instance by appending a matrix parameter to the existing set of matrix parameters of * the current final segment of the URI of the current target instance. * * If multiple values are supplied the parameter will be added once per value. In case a single {@code null} value is * entered, all parameters with that name in the current final path segment are removed (if present) from the collection * of last segment matrix parameters inherited from the current target. *

* Note that the matrix parameters are tied to a particular path segment; appending a value to an existing matrix * parameter name will not affect the position of the matrix parameter in the URI path. *

*

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param name the matrix parameter name, may contain URI template parameters. * @param values the matrix parameter value(s), each object will be converted to a {@code String} using its * {@code toString()} method. Stringified values may contain URI template parameters. * @return a new target instance. * @throws NullPointerException if the parameter name is {@code null} or if there are multiple values present and any of * those values is {@code null}. * @see Matrix URIs */ public WebTarget matrixParam(String name, Object... values); /** * Create a new {@code WebTarget} instance by configuring a query parameter on the URI of the current target instance. * * If multiple values are supplied the parameter will be added once per value. In case a single {@code null} value is * entered, all parameters with that name are removed (if present) from the collection of query parameters inherited * from the current target. *

* A snapshot of the present configuration of the current (parent) target instance is taken and is inherited by the * newly constructed (child) target instance. *

* * @param name the query parameter name, may contain URI template parameters * @param values the query parameter value(s), each object will be converted to a {@code String} using its * {@code toString()} method. Stringified values may contain URI template parameters. * @return a new target instance. * @throws NullPointerException if the parameter name is {@code null} or if there are multiple values present and any of * those values is {@code null}. */ public WebTarget queryParam(String name, Object... values); /** * Start building a request to the targeted web resource. * * @return builder for a request targeted at the URI referenced by this target instance. */ public Invocation.Builder request(); /** * Start building a request to the targeted web resource and define the accepted response media types. *

* Invoking this method is identical to: *

* *
     * webTarget.request().accept(types);
     * 
* * @param acceptedResponseTypes accepted response media types. * @return builder for a request targeted at the URI referenced by this target instance. */ public Invocation.Builder request(String... acceptedResponseTypes); /** * Start building a request to the targeted web resource and define the accepted response media types. *

* Invoking this method is identical to: *

* *
     * webTarget.request().accept(types);
     * 
* * @param acceptedResponseTypes accepted response media types. * @return builder for a request targeted at the URI referenced by this target instance. */ public Invocation.Builder request(MediaType... acceptedResponseTypes); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy