Skip to content

V next #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Aug 5, 2014
Prev Previous commit
Next Next commit
Adding overloaded methods to support setting merchantauthentication a…
…nd environment once and sample code
  • Loading branch information
ramittal committed Jul 24, 2014
commit 45e89b48a4595f41f50c8e33b2a0d32d010f3150
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package net.authorize.apicore.controller.base;

import java.lang.reflect.ParameterizedType;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -24,6 +25,9 @@
public abstract class ApiOperationBase<Q extends ANetApiRequest, S extends ANetApiResponse> implements IApiOperation<Q, S> {

protected static Log logger = LogFactory.getLog(ApiOperationBase.class);

private static Environment environment = null;
private static MerchantAuthenticationType merchantAuthentication = null;

private Q apiRequest = null;
private S apiResponse = null;
Expand Down Expand Up @@ -82,13 +86,50 @@ private void setErrorResponse(ANetApiResponse errorResponse) {
this.errorResponse = errorResponse;
}

public static Environment getEnvironment() {
return environment;
}

public static void setEnvironment(Environment environment) {
ApiOperationBase.environment = environment;
}

public static MerchantAuthenticationType getMerchantAuthentication() {
return merchantAuthentication;
}

public static void setMerchantAuthentication(
MerchantAuthenticationType merchantAuthentication) {
ApiOperationBase.merchantAuthentication = merchantAuthentication;
}

public S executeWithApiResponse() {
return this.executeWithApiResponse(ApiOperationBase.getEnvironment());
}

public S executeWithApiResponse(Environment environment) {
this.execute(environment);
return this.getApiResponse();
}

final String nullEnvironmentErrorMessage = "Environment not set. Set environment using setter or use overloaded method to pass appropriate environment";

public void execute() {
if ( null == ApiOperationBase.getEnvironment())
{
throw new InvalidParameterException(nullEnvironmentErrorMessage);
}
else
{
this.execute( ApiOperationBase.getEnvironment());
}
}

public void execute(Environment environment) {
logger.info(String.format("Executing Request:'%s'", this.getApiRequest()));

if ( null == environment) throw new InvalidParameterException(nullEnvironmentErrorMessage);

beforeExecute();

ANetApiResponse httpApiResponse = HttpUtility.postData(environment, this.getApiRequest(), this.responseClass);
Expand Down Expand Up @@ -164,9 +205,9 @@ protected void afterExecute() {}
private void validate() {

ANetApiRequest request = this.getApiRequest();

//validate not nulls
if ( null == request.getMerchantAuthentication()) throw new NullPointerException("MerchantAuthentication cannot be null");
validateAndSetMerchantAuthentication();

//validate nulls
MerchantAuthenticationType merchantAuthenticationType = request.getMerchantAuthentication();
Expand All @@ -184,4 +225,20 @@ private void validate() {

validateRequest();
}

private void validateAndSetMerchantAuthentication() {

ANetApiRequest request = this.getApiRequest();
if ( null == request.getMerchantAuthentication())
{
if ( null != ApiOperationBase.getMerchantAuthentication())
{
request.setMerchantAuthentication(ApiOperationBase.getMerchantAuthentication());
}
else
{
throw new NullPointerException("MerchantAuthentication cannot be null");
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
*
*/
public interface IApiOperation<Q extends ANetApiRequest, S extends ANetApiResponse> {
public void execute();
public void execute(Environment environment);
public List<String> getResults();
public MessageTypeEnum getResultCode();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import net.authorize.apicore.controller.ARBCreateSubscriptionController;
import net.authorize.apicore.controller.ARBGetSubscriptionListController;
import net.authorize.apicore.controller.ARBGetSubscriptionStatusController;
import net.authorize.apicore.controller.base.ApiOperationBase;
import net.authorize.util.LogHelper;

import org.junit.After;
Expand Down Expand Up @@ -154,4 +155,79 @@ private String createSubscription( MerchantAuthenticationType merchantAuthentica

return createResponse.getSubscriptionId();
}

@Test
public void sampleGetSubscriptionList() throws DatatypeConfigurationException {

//Common code to set for all requests
ApiOperationBase.setEnvironment(environment);
ApiOperationBase.setMerchantAuthentication(cnpMerchantAuthenticationType);

//create
ARBCreateSubscriptionRequest createRequest = new ARBCreateSubscriptionRequest();
createRequest.setRefId(refId);
createRequest.setSubscription(arbSubscriptionOne);
ARBCreateSubscriptionController createController = new ARBCreateSubscriptionController(createRequest);
//separate execute and getResponse calls
createController.execute();
ARBCreateSubscriptionResponse createResponse = createController.getApiResponse();

Assert.assertNotNull(createResponse.getSubscriptionId());
logger.info(String.format("Created Subscription: %s", createResponse.getSubscriptionId()));
String subscriptionId = createResponse.getSubscriptionId();

//get
ARBGetSubscriptionStatusRequest getRequest = new ARBGetSubscriptionStatusRequest();
getRequest.setRefId(refId);
getRequest.setSubscriptionId(subscriptionId);
ARBGetSubscriptionStatusController statusController = new ARBGetSubscriptionStatusController(getRequest);
//execute and getResponse calls together
ARBGetSubscriptionStatusResponse getResponse = statusController.executeWithApiResponse();
Assert.assertNotNull(getResponse.getStatus());
logger.info(String.format("Subscription Status: %s", getResponse.getStatus()));
ARBSubscriptionStatusEnum newStatus = getResponse.getStatus();
Assert.assertEquals(ARBSubscriptionStatusEnum.ACTIVE, newStatus);
LogHelper.info(logger, "Getting Subscription List for SubscriptionId: %s", subscriptionId);

//get list
ARBGetSubscriptionListSorting sorting = new ARBGetSubscriptionListSorting();
sorting.setOrderDescending(true);
sorting.setOrderBy(ARBGetSubscriptionListOrderFieldEnum.CREATE_TIME_STAMP_UTC);
Paging paging = new Paging();
paging.setLimit(100);
paging.setOffset(1);
ARBGetSubscriptionListRequest listRequest = new ARBGetSubscriptionListRequest();
listRequest.setRefId(refId);
listRequest.setSearchType(ARBGetSubscriptionListSearchTypeEnum.SUBSCRIPTION_ACTIVE);
listRequest.setSorting(sorting);
listRequest.setPaging(paging);
ARBGetSubscriptionListController listController = new ARBGetSubscriptionListController(listRequest);
ARBGetSubscriptionListResponse listResponse = listController.executeWithApiResponse();
LogHelper.info( logger, "Subscription Count: %d", listResponse.getTotalNumInResultSet());
Assert.assertTrue( 0 < listResponse.getTotalNumInResultSet());

//cancel
ARBCancelSubscriptionRequest cancelRequest = new ARBCancelSubscriptionRequest();
cancelRequest.setMerchantAuthentication(cnpMerchantAuthenticationType);
cancelRequest.setRefId(refId);
cancelRequest.setSubscriptionId(subscriptionId);
//explicitly setting up the merchant id and environment
ARBCancelSubscriptionResponse cancelResponse = executeTestRequestWithSuccess(cancelRequest, ARBCancelSubscriptionController.class, environment);
Assert.assertNotNull(cancelResponse.getMessages());
logger.info(String.format("Subscription Cancelled %s", subscriptionId));

//validation of list
ArrayOfSubscription subscriptionsArray = listResponse.getSubscriptionDetails();
Assert.assertNotNull( subscriptionsArray);
boolean found = false;
int subsId = Integer.parseInt(subscriptionId);
for( SubscriptionDetail aSubscription : subscriptionsArray.getSubscriptionDetail()) {
Assert.assertTrue( 0 < aSubscription.getId());
LogHelper.info( logger, "Subscription Id: %s, Status:%s, PaymentMethod: %s, Amount: %s, Account:%s",
aSubscription.getId(), aSubscription.getStatus(), aSubscription.getPaymentMethod(), aSubscription.getAmount(), aSubscription.getAccountNumber());
if ( subsId == aSubscription.getId()) { found = true;}
}
Assert.assertTrue(found);
}

}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy