Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.paypal.base.rest;
  
  import java.net.URL;
  import java.util.HashMap;
  import java.util.Map;
 
RESTApiCallPreHandler acts as a com.paypal.base.APICallPreHandler for REST API calls. The implementation is PayPal specific, To do custom implementation override the protected methods
 
 public class RESTAPICallPreHandler implements APICallPreHandler {
 
 	/*
 	 * RESTApiCallPreHandler requires a configuration system to function
 	 * properly. The configuration is initialized to default in PayPalResource
 	 * class if no configuration methods initConfig(..) was attempted before
 	 * making the API call. The users can override this default file
 	 * 'sdk_config.properties' by choosing different version of
 	 * initConfi(...) and passing their custom configuration.
 	 * Initializing to default means the system looks for a file specifically
 	 * named 'sdk_config.properties' in the classpath and reads the
 	 * configuration from there. 'Dynamic Configuration' enables the users to
 	 * pass custom configuration (per call basis) as a Map object to override
 	 * the default behavior for the system to function. For Dynamic
 	 * configuration to take effect create a Map of custom configuration and set
 	 * it in APIContext object, choose the overloaded method of the Resource
 	 * class that takes APIContext object as a parameter and pass the APIContext
 	 * object.
 	 */
Configuration Map used for dynamic configuration
 
 	private Map<StringStringconfigurationMap = null;

Base URL for the service
 
 	private URL url;

Authorization token
 
Resource URI as defined in the WSDL
 
 	private String resourcePath;

Request Id
 
 	private String requestId;

Custom headers Map
 
 	private Map<StringStringheadersMap;

Request Payload
 
 	private String payLoad;

 
 	private SDKVersion sdkVersion;

Constructor using configurations dynamically

Parameters:
configurationMap Map used for dynamic configuration
 
 	public RESTAPICallPreHandler(Map<StringStringconfigurationMap) {
 		this. = SDKUtil.combineDefaultMap(configurationMap);
 	}

Constructor using a Map of headers for forming custom headers

Parameters:
configurationMap Map used for dynamic configuration
headersMap Headers Map
	public RESTAPICallPreHandler(Map<StringStringconfigurationMap,
			Map<StringStringheadersMap) {
		this(configurationMap);
		this. = (headersMap == null) ? Collections
				.<StringStringemptyMap() : headersMap;
	}

Parameters:
authorizationToken the authorizationToken to set
	public void setAuthorizationToken(String authorizationToken) {
		this. = authorizationToken;
	}

Parameters:
resourcePath the resourcePath to set
	public void setResourcePath(String resourcePath) {
		this. = resourcePath;
	}

Parameters:
requestId the requestId to set
	public void setRequestId(String requestId) {
		this. = requestId;
	}

Parameters:
payLoad the payLoad to set
	public void setPayLoad(String payLoad) {
		this. = payLoad;
	}

Parameters:
sdkVersion the sdkVersion to set
	public void setSdkVersion(SDKVersion sdkVersion) {
		this. = sdkVersion;
	}

Returns HTTP headers as a java.util.Map

Returns:
java.util.Map of Http headers
	public Map<StringStringgetHeaderMap() {
	}
	public String getPayLoad() {
	}
	public String getEndPoint() {
	}
		return null;
	}
	public void validate() throws ClientActionRequiredException {
		// TODO
	}

Returns the base URL configured in application resources or java.util.Map passed for dynamic configuration

Returns:
BaseUrl ending with a '/' character java.net.URL
Throws:
java.net.MalformedURLException if endpoint cannot be found or formed
	public URL getBaseURL() throws MalformedURLException {
		/*
		 * Check for property 'service.EndPoint' in the configuration, if not
		 * found, check for 'mode' property in the configuration and default
		 * endpoint to PayPal sandbox or live endpoints. Throw exception if the
		 * above rules fail
		 */
		if ( == null) {
			if (urlString == null || urlString.length() <= 0) {
else if (..equalsIgnoreCase(mode)) {
else {
							"service.EndPoint not set (OR) mode not configured to sandbox/live ");
				}
			}
			if (!urlString.endsWith("/")) {
				urlString += "/";
			}
			 = new URL(urlString);
		}
		return ;
	}

Parameters:
urlString the url to set
	public void setUrl(String urlStringthrows MalformedURLException {
		if (urlString != null && urlString.length() > 0) {
			String uString = urlString.endsWith("/") ? urlString : urlString
"/";
			this. = new URL(uString);
else {
			this. = getBaseURL();
		}
	}

Returns User-Agent header

Returns:
java.util.Map storing the User-Agent header
		UserAgentHeader userAgentHeader = new UserAgentHeader(
				 != null ? .getSDKId() : null,
				 != null ? .getSDKVersion() : null);
		return userAgentHeader.getHeader();
	}
	/*
	 * Return Client ID from configuration Map
	 */
	private String getClientID() {
	}
	/*
	 * Returns Client Secret from configuration Map
	 */
	private String getClientSecret() {
	}
	/*
	 * Encodes Client ID and Client Secret in Base 64
	 */
	private String encodeToBase64(String clientIDString clientSecret)
		String base64ClientID = generateBase64String(clientID + ":"
clientSecret);
		return base64ClientID;
	}
	/*
	 * Generate a Base64 encoded String from clientID & clientSecret
	 */
	private String generateBase64String(String clientID)
		String base64ClientID = null;
		byte[] encoded = null;
		encoded = Base64.encodeBase64(clientID.getBytes("UTF-8"));
		base64ClientID = new String(encoded"UTF-8");
		return base64ClientID;
	}

Override this method to process EndPoint

Returns:
Endpoint as String
		/*
		 * Process the EndPoint to append the resourcePath sent as a part of the
		 * method call with the base endPoint retrieved from configuration
		 * system
		 */
		String endPoint = null;
		try {
catch (MalformedURLException e) {
			//
catch (URISyntaxException e) {
			//
		}
		return endPoint;
	}

Override this method to return a java.util.Map of HTTP headers

Returns:
java.util.Map of HTTP headers
		/*
		 * The implementation is PayPal specific. The Authorization header is
		 * formed for OAuth or Basic, for OAuth system the authorization token
		 * passed as a parameter is used in creation of HTTP header, for Basic
		 * Authorization the ClientID and ClientSecret passed as parameters are
		 * used after a Base64 encoding.
		 */
		Map<StringStringheaders = new HashMap<StringString>();
		if ( != null
				&& .trim().length() > 0) {
else if (getClientID() != null && getClientID().trim().length() > 0
				&& getClientSecret() != null
				&& getClientSecret().trim().length() > 0) {
			try {
				// TODO
			}
		}
		/*
		 * Appends request Id which is used by PayPal API service for
		 * Idempotency
		 */
		if ( != null && .length() > 0) {
		}
		/*
		 * Add User-Agent header for tracking in PayPal system
		 */
		// Add any custom headers
		if ( != null && .size() > 0) {
		}
		// Add application/json as the default Content-Type
		// backward compatibility for PayPal rest sdks which
		// does not add Content-Type HTTP header in the sdk
		// stubs
		}
		return headers;
	}

Override this method to process payload for processing

Returns:
PayLoad as String
	protected String getProcessedPayLoad() {
		/*
		 * Since the REST API of PayPal depends on json, which is well formed,
		 * no additional processing is required.
		 */
		return ;
	}
New to GrepCode? Check out our FAQ X