- *
- * @param subscriptionId
- * Id of the {@link Subscription} to be updated.
- * @return
- */
- public Subscription update( String subscriptionId ) {
- return RestfulUtils.update( SubscriptionService.PATH, new Subscription( subscriptionId ), Subscription.class, super.httpClient );
- }
}
diff --git a/src/main/java/com/paymill/services/TransactionService.java b/src/main/java/com/paymill/services/TransactionService.java
index eb70af3..e08f7ef 100644
--- a/src/main/java/com/paymill/services/TransactionService.java
+++ b/src/main/java/com/paymill/services/TransactionService.java
@@ -2,8 +2,8 @@
import java.util.List;
-import javax.ws.rs.core.MultivaluedMap;
-
+import com.paymill.utils.HttpClient;
+import com.paymill.utils.ParameterMap;
import org.apache.commons.lang3.StringUtils;
import com.paymill.context.PaymillContext;
@@ -13,7 +13,6 @@
import com.paymill.models.PaymillList;
import com.paymill.models.Preauthorization;
import com.paymill.models.Transaction;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
/**
* The {@link TransactionService} is used to list, create, edit and update PAYMILL {@link Transaction}s.
@@ -24,7 +23,7 @@ public class TransactionService extends AbstractService {
private final static String PATH = "/transactions";
- private TransactionService( com.sun.jersey.api.client.Client httpClient ) {
+ private TransactionService( HttpClient httpClient ) {
super( httpClient );
}
@@ -165,7 +164,7 @@ public Transaction createWithTokenAndFee( String token, Integer amount, String c
ValidationUtils.validatesCurrency( currency );
ValidationUtils.validatesFee( fee );
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "token", token );
params.add( "amount", String.valueOf( amount ) );
params.add( "currency", currency );
@@ -216,7 +215,7 @@ public Transaction createWithPayment( Payment payment, Integer amount, String cu
ValidationUtils.validatesAmount( amount );
ValidationUtils.validatesCurrency( currency );
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "payment", payment.getId() );
params.add( "amount", String.valueOf( amount ) );
params.add( "currency", currency );
@@ -296,7 +295,7 @@ public Transaction createWithPaymentAndClient( Payment payment, Client client, I
ValidationUtils.validatesAmount( amount );
ValidationUtils.validatesCurrency( currency );
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "payment", payment.getId() );
params.add( "client", client.getId() );
params.add( "amount", String.valueOf( amount ) );
@@ -388,7 +387,7 @@ public Transaction createWithPreauthorization( String preauthorizationId, Intege
ValidationUtils.validatesAmount( amount );
ValidationUtils.validatesCurrency( currency );
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "preauthorization", preauthorizationId );
params.add( "amount", String.valueOf( amount ) );
params.add( "currency", currency );
diff --git a/src/main/java/com/paymill/services/WebhookService.java b/src/main/java/com/paymill/services/WebhookService.java
index 5cea454..d027325 100644
--- a/src/main/java/com/paymill/services/WebhookService.java
+++ b/src/main/java/com/paymill/services/WebhookService.java
@@ -2,13 +2,11 @@
import java.util.List;
-import javax.ws.rs.core.MultivaluedMap;
-
import com.paymill.models.PaymillList;
import com.paymill.models.Webhook;
import com.paymill.models.Webhook.EventType;
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
+import com.paymill.utils.HttpClient;
+import com.paymill.utils.ParameterMap;
/**
* The {@link WebhookService} is used to list, create, edit and update PAYMILL {@link Webhook}s.
@@ -19,7 +17,7 @@ public class WebhookService extends AbstractService {
private final static String PATH = "/webhooks";
- private WebhookService( Client httpClient ) {
+ private WebhookService( HttpClient httpClient ) {
super( httpClient );
}
@@ -103,7 +101,7 @@ public Webhook get( String webhookId ) {
* @return A {@link Webhook}
*/
public Webhook createUrlWebhook( String url, Webhook.EventType[] eventTypes ) {
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "url", url );
for( Webhook.EventType eventType : eventTypes )
@@ -121,7 +119,7 @@ public Webhook createUrlWebhook( String url, Webhook.EventType[] eventTypes ) {
* @return A {@link Webhook}
*/
public Webhook createEmailWebhook( String email, Webhook.EventType[] eventTypes ) {
- MultivaluedMap params = new MultivaluedMapImpl();
+ ParameterMap params = new ParameterMap();
params.add( "email", email );
for( Webhook.EventType eventType : eventTypes )
diff --git a/src/main/java/com/paymill/utils/HttpClient.java b/src/main/java/com/paymill/utils/HttpClient.java
new file mode 100644
index 0000000..7077606
--- /dev/null
+++ b/src/main/java/com/paymill/utils/HttpClient.java
@@ -0,0 +1,15 @@
+package com.paymill.utils;
+
+public interface HttpClient {
+
+ public String get( String path );
+
+ public String get( String path, ParameterMap params );
+
+ public String post( String path, ParameterMap params );
+
+ public String put( String path, ParameterMap params );
+
+ public String delete( String path, ParameterMap params );
+
+}
diff --git a/src/main/java/com/paymill/utils/JerseyClient.java b/src/main/java/com/paymill/utils/JerseyClient.java
new file mode 100644
index 0000000..1973f7a
--- /dev/null
+++ b/src/main/java/com/paymill/utils/JerseyClient.java
@@ -0,0 +1,72 @@
+package com.paymill.utils;
+
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.ClientResponse;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
+import com.sun.jersey.core.util.MultivaluedMapImpl;
+
+public final class JerseyClient implements HttpClient {
+ private final Client httpClient;
+
+ public JerseyClient( final String apiKey ) {
+ this( apiKey, null );
+ }
+
+ public JerseyClient( final String apiKey, final Integer timeout ) {
+ this.httpClient = new Client();
+ if( timeout != null ) {
+ this.httpClient.setReadTimeout( timeout );
+ this.httpClient.setConnectTimeout( timeout );
+ }
+ this.httpClient.addFilter( new HTTPBasicAuthFilter( apiKey, StringUtils.EMPTY ) );
+ }
+
+ @Override
+ public String get( final String path ) {
+ WebResource webResource = this.httpClient.resource( path );
+ ClientResponse response = webResource.get( ClientResponse.class );
+ return response.getEntity( String.class );
+ }
+
+ @Override
+ public String get( final String path, final ParameterMap params ) {
+ WebResource webResource = this.httpClient.resource( path ).queryParams( JerseyClient.convertMap( params ) );
+ ClientResponse response = webResource.get( ClientResponse.class );
+ return response.getEntity( String.class );
+ }
+
+ @Override
+ public String post( final String path, final ParameterMap params ) {
+ WebResource webResource = this.httpClient.resource( path );
+ ClientResponse response = webResource.post( ClientResponse.class, JerseyClient.convertMap( params ) );
+ return response.getEntity( String.class );
+ }
+
+ @Override
+ public String put( final String path, final ParameterMap params ) {
+ WebResource webResource = this.httpClient.resource( path );
+ ClientResponse response = webResource.put( ClientResponse.class, JerseyClient.convertMap( params ) );
+ return response.getEntity( String.class );
+ }
+
+ @Override
+ public String delete( final String path, final ParameterMap params ) {
+ WebResource webResource = this.httpClient.resource( path );
+ ClientResponse response = webResource.delete( ClientResponse.class, JerseyClient.convertMap( params ) );
+ return response.getEntity( String.class );
+ }
+
+ private static MultivaluedMap convertMap( final ParameterMap map ) {
+ if( map == null ) {
+ return null;
+ }
+ MultivaluedMap params = new MultivaluedMapImpl();
+ params.putAll( map );
+ return params;
+ }
+}
diff --git a/src/main/java/com/paymill/utils/ParameterMap.java b/src/main/java/com/paymill/utils/ParameterMap.java
new file mode 100644
index 0000000..e760776
--- /dev/null
+++ b/src/main/java/com/paymill/utils/ParameterMap.java
@@ -0,0 +1,92 @@
+package com.paymill.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public final class ParameterMap implements Map> {
+ private final HashMap> map;
+
+ public ParameterMap() {
+ this.map = new HashMap>();
+ }
+
+ public void add( final K key, final V value ) {
+ List values = this.map.get( key );
+
+ if( values == null ) {
+ values = new ArrayList();
+ }
+
+ values.add( value );
+
+ this.map.put( key, values );
+ }
+
+ public V getFirst( final K key ) {
+ return this.get( key ) != null ? this.get( key ).get( 0 ) : null;
+ }
+
+ @Override
+ public int size() {
+ return this.map.size();
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return this.map.isEmpty();
+ }
+
+ @Override
+ public boolean containsKey( final Object o ) {
+ return this.map.containsKey( o );
+ }
+
+ @Override
+ public boolean containsValue( final Object o ) {
+ return this.map.containsValue( o );
+ }
+
+ @Override
+ public List get( final Object o ) {
+ return this.map.get( o );
+ }
+
+ @Override
+ public List put( final K k, final List vs ) {
+ return this.map.put( k, vs );
+ }
+
+ @Override
+ public List remove( final Object o ) {
+ return this.map.remove( o );
+ }
+
+ @Override
+ public void putAll( final Map extends K, ? extends List> map ) {
+ this.map.putAll( map );
+ }
+
+ @Override
+ public void clear() {
+ this.map.clear();
+ }
+
+ @Override
+ public Set keySet() {
+ return this.map.keySet();
+ }
+
+ @Override
+ public Collection> values() {
+ return this.map.values();
+ }
+
+ @Override
+ public Set>> entrySet() {
+ return this.map.entrySet();
+ }
+}
diff --git a/src/test/java/com/paymill/services/OfferServiceTest.java b/src/test/java/com/paymill/services/OfferServiceTest.java
index 23e3f8e..bee791d 100644
--- a/src/test/java/com/paymill/services/OfferServiceTest.java
+++ b/src/test/java/com/paymill/services/OfferServiceTest.java
@@ -110,7 +110,7 @@ public void testUpdateOfferAndSubscritions() {
Assert.assertEquals( subscription.getOffer().getId(), offer.getId() );
Assert.assertEquals( subscription.getInterval().getInterval(), (Integer) 1 );
Assert.assertEquals( subscription.getInterval().getUnit(), Interval.Unit.MONTH );
- offer.setInterval( "2 WEEK" );
+ offer.setInterval( new Interval.Period( "2 WEEK" ) );
this.offerService.update( offer, true );
Assert.assertEquals( offer.getId(), offer.getId() );
Assert.assertEquals( offer.getInterval().getInterval(), (Integer) 2 );