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

org.apache.wink.client.Resource Maven / Gradle / Ivy

There is a newer version: 1.4
Show newest version
/*******************************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *  
 *   http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License.
 *  
 *******************************************************************************/

package org.apache.wink.client;

import java.net.URI;
import java.util.Locale;

import javax.ws.rs.core.Cookie;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriBuilder;

/**
 * Represents a web resource, enabling the invocation of different http methods
 */
public interface Resource {

    /**
     * Add a request header to be used in every invocation
     * 
     * @param name name of the header to add. the name of the header is case
     *            insensitive.
     * @param values the values of the header. All of the values will be added
     *            to the same header, separated by a commas (,).
     * @return this resource instance
     */
    Resource header(String name, String... values);

    /**
     * Add values to the Accept header.
     * 
     * @param values accept header values to add
     * @return this resource instance
     */
    Resource accept(String... values);

    /**
     * Add values to the Accept header.
     * 
     * @param values accept header values to add
     * @return this resource instance
     */
    Resource accept(MediaType... values);

    /**
     * Add values to the Accept-Language header.
     * 
     * @param values accept-langage header values to add
     * @return this resource instance
     */
    Resource acceptLanguage(String... values);

    /**
     * Add values to the Accept-Language header.
     * 
     * @param values accept-langage header values to add
     * @return this resource instance
     */
    Resource acceptLanguage(Locale... values);

    /**
     * Add a Cookie value. Every call to this method will create a new Cookie
     * header.
     * 
     * @param value the cookie value to add
     * @return this resource instance
     */
    Resource cookie(String value);

    /**
     * Add a Cookie value. Every call to this method will create a new Cookie
     * header.
     * 
     * @param value the cookie value to add
     * @return this resource instance
     */
    Resource cookie(Cookie value);

    /**
     * Set the Content-Type header, overriding any previous value.
     * 
     * @param mediaType the content type to set
     * @return this resource instance
     */
    Resource contentType(String mediaType);

    /**
     * Set the Content-Type header, overriding any previous value.
     * 
     * @param mediaType the content type to set
     * @return this resource instance
     */
    Resource contentType(MediaType mediaType);

    /**
     * Add a query parameter to the uri
     * 
     * @param key the name of the query parameter
     * @param values values of the query parameters. A query parameter will be
     *            added for every value
     * @return this resource instance
     */
    Resource queryParam(String key, Object... values);

    /**
     * Add all the query parameters from the provided multivalued map.
     * 
     * @param params multivalued map of parameters.
     * @return this resource instance
     */
    Resource queryParams(MultivaluedMap params);

    /**
     * Set an attribute on the resource. All the attributes are available to
     * handlers during a request via the {@link ClientRequest#getAttributes()}
     * and {@link ClientResponse#getAttributes()} methods.
     * 
     * @param key attribute key
     * @param value attribute value
     * @return this resource instance
     */
    Resource attribute(String key, Object value);

    /**
     * Get an attribute
     * 
     * @param key attribute key
     * @return attribute value, or null if the attribute is not set
     */
    Object attribute(String key);

    /**
     * Get the {@link UriBuilder} associated with this resource. All
     * modifications to the builder affect the uri of the resource
     * 
     * @return the {@link UriBuilder} associated with this resource
     */
    UriBuilder getUriBuilder();

    /**
     * Set the uri of this resource and create a new UriBuilder
     * 
     * @param uri the new uri for this resource
     * @return this resource instance
     */
    Resource uri(URI uri);

    /**
     * Set the uri of this resource and create a new UriBuilder
     * 
     * @param uri the new uri for this resource
     * @return this resource instance
     */
    Resource uri(String uri);

    /**
     * Invoke a request to the uri associated with the resource, and with any
     * headers and attributes set on the resource. If the response code
     * represents an error code, then a {@link ClientWebException} is thrown.
     * 
     * @param  the type of response entity to return
     * @param method the http request method
     * @param responseEntity the class of the response entity to return
     * @param requestEntity the request entity for methods that can send an
     *            entity (PUT, POST)
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T invoke(String method, Class responseEntity, Object requestEntity);

    /**
     * Invoke a request to the uri associated with the resource, and with any
     * headers and attributes set on the resource. If the response code
     * represents an error code, then a {@link ClientWebException} is thrown.
     * 
     * @param  the type of response entity to return
     * @param method the http request method
     * @param responseEntity an instance of {@link EntityType} specifying the
     *            response entity to return
     * @param requestEntity the request entity for methods that can send an
     *            entity (PUT, POST)
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T invoke(String method, EntityType responseEntity, Object requestEntity);

    /**
     * Invoke the HEAD method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse head();

    /**
     * Invoke the OPTIONS method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse options();

    /**
     * Invoke the GET method
     * 
     * @param  type of response entity
     * @param responseEntity response entity class
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T get(Class responseEntity);

    /**
     * Invoke the GET method
     * 
     * @param  type of response entity
     * @param responseEntity an instance of {@link EntityType} specifying the
     *            response entity to return
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T get(EntityType responseEntity);

    /**
     * Invoke the GET method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse get();

    /**
     * Invoke the POST method
     * 
     * @param  type of response entity
     * @param responseEntity response entity class
     * @param requestEntity request entity to send
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T post(Class responseEntity, Object requestEntity);

    /**
     * Invoke the POST method
     * 
     * @param  type of response entity
     * @param responseEntity an instance of {@link EntityType} specifying the
     *            response entity to return
     * @param requestEntity request entity to send
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T post(EntityType responseEntity, Object requestEntity);

    /**
     * Invoke the POST method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse post(Object requestEntity);

    /**
     * Invoke the PUT method
     * 
     * @param  type of response entity
     * @param responseEntity response entity class
     * @param requestEntity request entity to send
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T put(Class responseEntity, Object requestEntity);

    /**
     * Invoke the PUT method
     * 
     * @param  type of response entity
     * @param responseEntity an instance of {@link EntityType} specifying the
     *            response entity to return
     * @param requestEntity request entity to send
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T put(EntityType responseEntity, Object requestEntity);

    /**
     * Invoke the PUT method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse put(Object requestEntity);

    /**
     * Invoke the DELETE method
     * 
     * @param  type of response entity
     * @param responseEntity response entity class
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T delete(Class responseEntity);

    /**
     * Invoke the DELETE method
     * 
     * @param  type of response entity
     * @param responseEntity an instance of {@link EntityType} specifying the
     *            response entity to return
     * @return an instance of the response entity as specified by the response
     *         entity type
     * @throws ClientWebException if the response code represents an error code
     */
     T delete(EntityType responseEntity);

    /**
     * Invoke the DELETE method
     * 
     * @return the ClientResponse for the invocation
     */
    ClientResponse delete();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy