killbill-uncached

Changes

Details

diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/glue/DefaultJaxrsModule.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/glue/DefaultJaxrsModule.java
index f19b31d..e8292d4 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/glue/DefaultJaxrsModule.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/glue/DefaultJaxrsModule.java
@@ -20,6 +20,7 @@ package org.killbill.billing.jaxrs.glue;
 import org.killbill.billing.jaxrs.DefaultJaxrsService;
 import org.killbill.billing.jaxrs.JaxrsExecutors;
 import org.killbill.billing.jaxrs.JaxrsService;
+import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
 import org.killbill.billing.platform.api.KillbillConfigSource;
 import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.glue.KillBillModule;
@@ -36,7 +37,7 @@ public class DefaultJaxrsModule extends KillBillModule {
         final ConfigurationObjectFactory factory = new ConfigurationObjectFactory(skifeConfigSource);
         final JaxrsConfig jaxrsConfig = factory.build(JaxrsConfig.class);
         bind(JaxrsConfig.class).toInstance(jaxrsConfig);
-
+        bind(JaxrsUriBuilder.class).asEagerSingleton();
         bind(JaxrsExecutors.class).asEagerSingleton();
         bind(JaxrsService.class).to(DefaultJaxrsService.class).asEagerSingleton();
     }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
index 6d4c2ce..ca85ff4 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java
@@ -333,7 +333,7 @@ public class AccountResource extends JaxRsResourceBase {
 
         final AccountData data = json.toAccountData();
         final Account account = accountUserApi.createAccount(data, context.createContext(createdBy, reason, comment, request));
-        return uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", account.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", account.getId());
     }
 
     @TimedResource
@@ -979,7 +979,7 @@ public class AccountResource extends JaxRsResourceBase {
             default:
                 return Response.status(Status.PRECONDITION_FAILED).entity("TransactionType " + transactionType + " is not allowed for an account").build();
         }
-        return createPaymentResponse(uriInfo, result, transactionType, json.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, result, transactionType, json.getTransactionExternalKey());
     }
 
     /*
@@ -1033,7 +1033,7 @@ public class AccountResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(id), customFields, context.createContext(createdBy, reason,
-                                             comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                             comment, request), uriInfo);
     }
 
     @TimedResource
@@ -1207,7 +1207,7 @@ public class AccountResource extends JaxRsResourceBase {
             accountUserApi.addEmail(accountId, json.toAccountEmail(UUIDs.randomUUID()), callContext);
         }
 
-        return uriBuilder.buildResponse(uriInfo, AccountResource.class, "getEmails", json.getAccountId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, AccountResource.class, "getEmails", json.getAccountId());
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
index ec604c3..d74eacd 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/BundleResource.java
@@ -68,7 +68,6 @@ import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AccountAuditLogs;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.entity.Pagination;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
@@ -91,7 +90,6 @@ public class BundleResource extends JaxRsResourceBase {
 
     private final SubscriptionApi subscriptionApi;
     private final EntitlementApi entitlementApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public BundleResource(final JaxrsUriBuilder uriBuilder,
@@ -103,12 +101,10 @@ public class BundleResource extends JaxRsResourceBase {
                           final EntitlementApi entitlementApi,
                           final PaymentApi paymentApi,
                           final Clock clock,
-                          final JaxrsConfig jaxrsConfig,
                           final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.entitlementApi = entitlementApi;
         this.subscriptionApi = subscriptionApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -321,7 +317,7 @@ public class BundleResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(id), customFields,
-                                        context.createContext(createdBy, reason, comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                        context.createContext(createdBy, reason, comment, request), uriInfo);
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
index fe1a911..eddf1b9 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CatalogResource.java
@@ -51,7 +51,6 @@ import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
 import org.killbill.xmlloader.XMLWriter;
@@ -71,7 +70,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_XML;
 public class CatalogResource extends JaxRsResourceBase {
 
     private final CatalogUserApi catalogUserApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public CatalogResource(final JaxrsUriBuilder uriBuilder,
@@ -82,11 +80,9 @@ public class CatalogResource extends JaxRsResourceBase {
                            final PaymentApi paymentApi,
                            final CatalogUserApi catalogUserApi,
                            final Clock clock,
-                           final JaxrsConfig jaxrsConfig,
                            final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.catalogUserApi = catalogUserApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -112,7 +108,7 @@ public class CatalogResource extends JaxRsResourceBase {
                                      @javax.ws.rs.core.Context final UriInfo uriInfo) throws Exception {
         final CallContext callContext = context.createContext(createdBy, reason, comment, request);
         catalogUserApi.uploadCatalog(catalogXML, callContext);
-        return uriBuilder.buildResponse(uriInfo, CatalogResource.class, null, null, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, CatalogResource.class, null, null);
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
index c0b896a..bfad1b1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/CreditResource.java
@@ -47,7 +47,6 @@ import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 
 import com.google.inject.Inject;
@@ -66,7 +65,6 @@ public class CreditResource extends JaxRsResourceBase {
 
     private final InvoiceUserApi invoiceUserApi;
     private final AccountUserApi accountUserApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public CreditResource(final InvoiceUserApi invoiceUserApi,
@@ -77,12 +75,10 @@ public class CreditResource extends JaxRsResourceBase {
                           final AuditUserApi auditUserApi,
                           final PaymentApi paymentApi,
                           final Clock clock,
-                          final JaxrsConfig jaxrsConfig,
                           final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.invoiceUserApi = invoiceUserApi;
         this.accountUserApi = accountUserApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @GET
@@ -132,7 +128,7 @@ public class CreditResource extends JaxRsResourceBase {
                                                  account.getCurrency(), callContext);
         }
 
-        return uriBuilder.buildResponse(uriInfo, CreditResource.class, "getCredit", credit.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, CreditResource.class, "getCredit", credit.getId());
     }
 
     @Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
index c34dd2f..a7b2c9a 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoicePaymentResource.java
@@ -66,7 +66,6 @@ import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AccountAuditLogs;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
 
@@ -88,7 +87,6 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
     private static final String ID_PARAM_NAME = "paymentId";
 
     private final InvoicePaymentApi invoicePaymentApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public InvoicePaymentResource(final AccountUserApi accountUserApi,
@@ -99,11 +97,9 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
                                   final AuditUserApi auditUserApi,
                                   final InvoicePaymentApi invoicePaymentApi,
                                   final Clock clock,
-                                  final JaxrsConfig jaxrsConfig,
                                   final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.invoicePaymentApi = invoicePaymentApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -211,7 +207,7 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
 
         final Payment result = paymentApi.createChargebackWithPaymentControl(account, payment.getId(), json.getAmount(), account.getCurrency(),
                                                                                    transactionExternalKey, createInvoicePaymentControlPluginApiPaymentOptions(false), callContext);
-        return uriBuilder.buildResponse(uriInfo, InvoicePaymentResource.class, "getInvoicePayment", result.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, InvoicePaymentResource.class, "getInvoicePayment", result.getId());
     }
 
     @TimedResource
@@ -241,7 +237,7 @@ public class InvoicePaymentResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(id), customFields,
-                                        context.createContext(createdBy, reason, comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                        context.createContext(createdBy, reason, comment, request), uriInfo);
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
index 1ebc646..dcb2738 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java
@@ -103,7 +103,6 @@ import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AccountAuditLogs;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.entity.Pagination;
 import org.killbill.clock.Clock;
 import org.killbill.clock.ClockUtil;
@@ -141,7 +140,6 @@ public class InvoiceResource extends JaxRsResourceBase {
     private final InvoiceNotifier invoiceNotifier;
     private final TenantUserApi tenantApi;
     private final Locale defaultLocale;
-    private final JaxrsConfig jaxrsConfig;
 
     private static final Ordering<InvoicePaymentJson> INVOICE_PAYMENT_ORDERING = Ordering.from(new Comparator<InvoicePaymentJson>() {
         @Override
@@ -161,14 +159,12 @@ public class InvoiceResource extends JaxRsResourceBase {
                            final CustomFieldUserApi customFieldUserApi,
                            final AuditUserApi auditUserApi,
                            final TenantUserApi tenantApi,
-                           final JaxrsConfig jaxrsConfig,
                            final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.invoiceApi = invoiceApi;
         this.invoiceNotifier = invoiceNotifier;
         this.tenantApi = tenantApi;
         this.defaultLocale = Locale.getDefault();
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -311,7 +307,7 @@ public class InvoiceResource extends JaxRsResourceBase {
         try {
             final Invoice generatedInvoice = invoiceApi.triggerInvoiceGeneration(UUID.fromString(accountId), inputDate, null,
                                                                                  callContext);
-            return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, "getInvoice", generatedInvoice.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+            return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, "getInvoice", generatedInvoice.getId());
         } catch (InvoiceApiException e) {
             if (e.getCode() == ErrorCode.INVOICE_NOTHING_TO_DO.getCode()) {
                 return Response.status(Status.NOT_FOUND).build();
@@ -448,7 +444,7 @@ public class InvoiceResource extends JaxRsResourceBase {
                                                                     callContext);
         }
 
-        return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, "getInvoice", adjustmentItem.getInvoiceId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, "getInvoice", adjustmentItem.getInvoiceId());
     }
 
     @TimedResource
@@ -618,7 +614,7 @@ public class InvoiceResource extends JaxRsResourceBase {
 
         final Payment result = createPurchaseForInvoice(account, invoiceId, payment.getPurchasedAmount(), paymentMethodId, externalPayment, pluginProperties, callContext);
         return result != null ?
-               uriBuilder.buildResponse(uriInfo, InvoicePaymentResource.class, "getInvoicePayment", result.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl()) :
+               uriBuilder.buildResponse(uriInfo, InvoicePaymentResource.class, "getInvoicePayment", result.getId()) :
                Response.status(Status.NO_CONTENT).build();
     }
 
@@ -833,7 +829,7 @@ public class InvoiceResource extends JaxRsResourceBase {
             }
         }
         tenantApi.addTenantKeyValue(tenantKeyStr, templateResource, callContext);
-        return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, getMethodStr, localeStr, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, InvoiceResource.class, getMethodStr, localeStr);
     }
 
     private Response getTemplateResource(@Nullable final String localeStr,
@@ -874,7 +870,7 @@ public class InvoiceResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(id), customFields,
-                                        context.createContext(createdBy, reason, comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                        context.createContext(createdBy, reason, comment, request), uriInfo);
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
index cc836b0..19a8d26 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -83,7 +83,6 @@ import org.killbill.billing.util.audit.AccountAuditLogsForObjectType;
 import org.killbill.billing.util.audit.AuditLog;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.customfield.CustomField;
 import org.killbill.billing.util.customfield.StringCustomField;
 import org.killbill.billing.util.entity.Entity;
@@ -219,8 +218,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
     protected Response createCustomFields(final UUID id,
                                           final List<CustomFieldJson> customFields,
                                           final CallContext context,
-                                          final UriInfo uriInfo,
-                                          final boolean jaxrsPathLikeUrl) throws CustomFieldApiException {
+                                          final UriInfo uriInfo) throws CustomFieldApiException {
         final LinkedList<CustomField> input = new LinkedList<CustomField>();
         for (final CustomFieldJson cur : customFields) {
             verifyNonNullOrEmpty(cur.getName(), "CustomFieldJson name needs to be set");
@@ -229,7 +227,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
         }
 
         customFieldUserApi.addCustomFields(input, context);
-        return uriBuilder.buildResponse(uriInfo, this.getClass(), "getCustomFields", id, jaxrsPathLikeUrl);
+        return uriBuilder.buildResponse(uriInfo, this.getClass(), "getCustomFields", id);
     }
 
     /**
@@ -547,7 +545,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
     }
 
     protected Response createPaymentResponse(final UriInfo uriInfo, final Payment payment, final TransactionType transactionType,
-                                             @Nullable final String transactionExternalKey, final boolean jaxrsPathLikeUrl) {
+                                             @Nullable final String transactionExternalKey) {
         final PaymentTransaction createdTransaction = findCreatedTransaction(payment, transactionType, transactionExternalKey);
         Preconditions.checkNotNull(createdTransaction, "No transaction of type '%s' found", transactionType);
 
@@ -556,7 +554,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
         switch (createdTransaction.getTransactionStatus()) {
             case PENDING:
             case SUCCESS:
-                return uriBuilder.buildResponse(uriInfo, PaymentResource.class, "getPayment", payment.getId(), jaxrsPathLikeUrl);
+                return uriBuilder.buildResponse(uriInfo, PaymentResource.class, "getPayment", payment.getId());
             case PAYMENT_FAILURE:
                 // 402 - Payment Required
                 responseBuilder = Response.status(402);
@@ -583,7 +581,7 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
                 exception = createBillingException("This should never have happened!!!");
         }
         addExceptionToResponse(responseBuilder, exception);
-        return responseBuilder.location(getPaymentLocation(uriInfo, payment, jaxrsPathLikeUrl)).build();
+        return responseBuilder.location(getPaymentLocation(uriInfo, payment)).build();
     }
 
     private void addExceptionToResponse(final ResponseBuilder responseBuilder, final BillingExceptionJson exception) {
@@ -601,8 +599,8 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
         return exception;
     }
 
-    private URI getPaymentLocation(final UriInfo uriInfo, final Payment payment, final boolean jaxrsPathLikeUrl) {
-        return uriBuilder.buildLocation(uriInfo, PaymentResource.class, "getPayment", payment.getId(), jaxrsPathLikeUrl);
+    private URI getPaymentLocation(final UriInfo uriInfo, final Payment payment) {
+        return uriBuilder.buildLocation(uriInfo, PaymentResource.class, "getPayment", payment.getId());
     }
 
     private PaymentTransaction findCreatedTransaction(final Payment payment, final TransactionType transactionType, @Nullable final String transactionExternalKey) {
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
index 481fc4a..bfe8b11 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/OverdueResource.java
@@ -43,7 +43,6 @@ import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
 import org.killbill.xmlloader.XMLLoader;
@@ -63,7 +62,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_XML;
 public class OverdueResource extends JaxRsResourceBase {
 
     private final OverdueApi overdueApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public OverdueResource(final JaxrsUriBuilder uriBuilder,
@@ -74,11 +72,9 @@ public class OverdueResource extends JaxRsResourceBase {
                            final PaymentApi paymentApi,
                            final OverdueApi overdueApi,
                            final Clock clock,
-                           final JaxrsConfig jaxrsConfig,
                            final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.overdueApi = overdueApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -108,6 +104,6 @@ public class OverdueResource extends JaxRsResourceBase {
 
         final CallContext callContext = context.createContext(createdBy, reason, comment, request);
         overdueApi.uploadOverdueConfig(overdueXML, callContext);
-        return uriBuilder.buildResponse(uriInfo, OverdueResource.class, null, null, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, OverdueResource.class, null, null);
     }
 }
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
index 4b632ff..731db34 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentMethodResource.java
@@ -59,7 +59,6 @@ import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AccountAuditLogs;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.entity.Pagination;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
@@ -81,8 +80,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 @Api(value = JaxrsResource.PAYMENT_METHODS_PATH, description = "Operations on payment methods")
 public class PaymentMethodResource extends JaxRsResourceBase {
 
-    private final JaxrsConfig jaxrsConfig;
-
     @Inject
     public PaymentMethodResource(final AccountUserApi accountUserApi,
                                  final JaxrsUriBuilder uriBuilder,
@@ -91,10 +88,8 @@ public class PaymentMethodResource extends JaxRsResourceBase {
                                  final AuditUserApi auditUserApi,
                                  final PaymentApi paymentApi,
                                  final Clock clock,
-                                 final JaxrsConfig jaxrsConfig,
                                  final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource(name = "getPaymentMethod")
@@ -307,7 +302,7 @@ public class PaymentMethodResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(paymentMethodId), customFields,
-                                        context.createContext(createdBy, reason, comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                        context.createContext(createdBy, reason, comment, request), uriInfo);
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
index c7742a4..bf820e2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
@@ -66,7 +66,6 @@ import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AccountAuditLogs;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.entity.Pagination;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.MetricTag;
@@ -86,8 +85,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 @Api(value = JaxrsResource.PAYMENTS_PATH, description = "Operations on payments")
 public class PaymentResource extends ComboPaymentResource {
 
-    private final JaxrsConfig jaxrsConfig;
-
     @Inject
     public PaymentResource(final JaxrsUriBuilder uriBuilder,
                            final TagUserApi tagUserApi,
@@ -96,10 +93,8 @@ public class PaymentResource extends ComboPaymentResource {
                            final AccountUserApi accountUserApi,
                            final PaymentApi paymentApi,
                            final Clock clock,
-                           final JaxrsConfig jaxrsConfig,
                            final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource(name = "getPayment")
@@ -337,7 +332,7 @@ public class PaymentResource extends ComboPaymentResource {
             default:
                 return Response.status(Status.PRECONDITION_FAILED).entity("TransactionType " + pendingTransaction.getTransactionType() + " cannot be completed").build();
         }
-        return createPaymentResponse(uriInfo, result, pendingTransaction.getTransactionType(), pendingTransaction.getExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, result, pendingTransaction.getTransactionType(), pendingTransaction.getExternalKey());
     }
 
     @TimedResource(name = "captureAuthorization")
@@ -413,7 +408,7 @@ public class PaymentResource extends ComboPaymentResource {
 
         final Payment payment = paymentApi.createCaptureWithPaymentControl(account, initialPayment.getId(), json.getAmount(), currency,
                                                          json.getTransactionExternalKey(), pluginProperties, paymentOptions, callContext);
-        return createPaymentResponse(uriInfo, payment, TransactionType.CAPTURE, json.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, payment, TransactionType.CAPTURE, json.getTransactionExternalKey());
     }
 
     @TimedResource(name = "refundPayment")
@@ -492,7 +487,7 @@ public class PaymentResource extends ComboPaymentResource {
         final Payment payment = paymentApi.createRefundWithPaymentControl(account, initialPayment.getId(), json.getAmount(), currency,
                                                         json.getTransactionExternalKey(), pluginProperties, paymentOptions, callContext);
 
-        return createPaymentResponse(uriInfo, payment, TransactionType.REFUND, json.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, payment, TransactionType.REFUND, json.getTransactionExternalKey());
     }
 
     @TimedResource(name = "voidPayment")
@@ -564,7 +559,7 @@ public class PaymentResource extends ComboPaymentResource {
 
         final Payment payment = paymentApi.createVoidWithPaymentControl(account, initialPayment.getId(), transactionExternalKey,
                                                                         pluginProperties, paymentOptions, callContext);
-        return createPaymentResponse(uriInfo, payment, TransactionType.VOID, json.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, payment, TransactionType.VOID, json.getTransactionExternalKey());
     }
 
     @TimedResource(name = "chargebackPayment")
@@ -640,7 +635,7 @@ public class PaymentResource extends ComboPaymentResource {
 
         final Payment payment = paymentApi.createChargebackWithPaymentControl(account, initialPayment.getId(), json.getAmount(), currency,
                                                             json.getTransactionExternalKey(), paymentOptions, callContext);
-        return createPaymentResponse(uriInfo, payment, TransactionType.CHARGEBACK, json.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, payment, TransactionType.CHARGEBACK, json.getTransactionExternalKey());
     }
 
     @TimedResource
@@ -700,7 +695,7 @@ public class PaymentResource extends ComboPaymentResource {
             default:
                 return Response.status(Status.PRECONDITION_FAILED).entity("TransactionType " + transactionType + " is not allowed for an account").build();
         }
-        return createPaymentResponse(uriInfo, result, transactionType, paymentTransactionJson.getTransactionExternalKey(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return createPaymentResponse(uriInfo, result, transactionType, paymentTransactionJson.getTransactionExternalKey());
     }
 
     @Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
index 4f77ac7..0efacbc 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java
@@ -48,7 +48,6 @@ import org.killbill.billing.account.api.AccountUserApi;
 import org.killbill.billing.catalog.api.BillingActionPolicy;
 import org.killbill.billing.catalog.api.BillingPeriod;
 import org.killbill.billing.catalog.api.CatalogApiException;
-import org.killbill.billing.catalog.api.CatalogUserApi;
 import org.killbill.billing.catalog.api.PhaseType;
 import org.killbill.billing.catalog.api.PlanPhasePriceOverride;
 import org.killbill.billing.catalog.api.PlanPhaseSpecifier;
@@ -86,7 +85,6 @@ import org.killbill.billing.util.api.TagDefinitionApiException;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.userrequest.CompletionUserRequestBase;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
@@ -114,7 +112,6 @@ public class SubscriptionResource extends JaxRsResourceBase {
     private final KillbillEventHandler killbillHandler;
     private final EntitlementApi entitlementApi;
     private final SubscriptionApi subscriptionApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public SubscriptionResource(final KillbillEventHandler killbillHandler,
@@ -127,13 +124,11 @@ public class SubscriptionResource extends JaxRsResourceBase {
                                 final AccountUserApi accountUserApi,
                                 final PaymentApi paymentApi,
                                 final Clock clock,
-                                final JaxrsConfig jaxrsConfig,
                                 final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.killbillHandler = killbillHandler;
         this.entitlementApi = entitlementApi;
         this.subscriptionApi = subscriptionApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -223,7 +218,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
 
             @Override
             public Response doResponseOk(final Entitlement createdEntitlement) {
-                return uriBuilder.buildResponse(uriInfo, SubscriptionResource.class, "getEntitlement", createdEntitlement.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                return uriBuilder.buildResponse(uriInfo, SubscriptionResource.class, "getEntitlement", createdEntitlement.getId());
             }
         };
 
@@ -334,7 +329,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
 
             @Override
             public Response doResponseOk(final Entitlement entitlement) {
-                return uriBuilder.buildResponse(uriInfo, BundleResource.class, "getBundle", entitlement.getBundleId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                return uriBuilder.buildResponse(uriInfo, BundleResource.class, "getBundle", entitlement.getBundleId());
             }
 
         };
@@ -624,7 +619,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
                                        @javax.ws.rs.core.Context final HttpServletRequest request,
                                        @javax.ws.rs.core.Context final UriInfo uriInfo) throws CustomFieldApiException {
         return super.createCustomFields(UUID.fromString(id), customFields,
-                                        context.createContext(createdBy, reason, comment, request), uriInfo, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+                                        context.createContext(createdBy, reason, comment, request), uriInfo);
     }
 
     @DELETE
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
index 59c8186..f5536f2 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TagDefinitionResource.java
@@ -48,7 +48,6 @@ import org.killbill.billing.util.api.TagDefinitionApiException;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.audit.AuditLog;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.billing.util.tag.TagDefinition;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
@@ -67,8 +66,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 @Api(value = JaxrsResource.TAG_DEFINITIONS_PATH, description = "Operations on tag definitions")
 public class TagDefinitionResource extends JaxRsResourceBase {
 
-    private final JaxrsConfig jaxrsConfig;
-
     @Inject
     public TagDefinitionResource(final JaxrsUriBuilder uriBuilder,
                                  final TagUserApi tagUserApi,
@@ -77,10 +74,8 @@ public class TagDefinitionResource extends JaxRsResourceBase {
                                  final AccountUserApi accountUserApi,
                                  final PaymentApi paymentApi,
                                  final Clock clock,
-                                 final JaxrsConfig jaxrsConfig,
                                  final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -136,7 +131,7 @@ public class TagDefinitionResource extends JaxRsResourceBase {
                              json.getDescription(), "TagDefinition description needs to be set");
 
         final TagDefinition createdTagDef = tagUserApi.createTagDefinition(json.getName(), json.getDescription(), context.createContext(createdBy, reason, comment, request));
-        return uriBuilder.buildResponse(uriInfo, TagDefinitionResource.class, "getTagDefinition", createdTagDef.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, TagDefinitionResource.class, "getTagDefinition", createdTagDef.getId());
     }
 
     @TimedResource
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
index d68388c..8ff2b14 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TenantResource.java
@@ -51,7 +51,6 @@ import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
 import org.killbill.billing.util.callcontext.TenantContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
 
@@ -71,7 +70,6 @@ import static javax.ws.rs.core.MediaType.TEXT_PLAIN;
 public class TenantResource extends JaxRsResourceBase {
 
     private final TenantUserApi tenantApi;
-    private final JaxrsConfig jaxrsConfig;
 
     @Inject
     public TenantResource(final TenantUserApi tenantApi,
@@ -82,11 +80,9 @@ public class TenantResource extends JaxRsResourceBase {
                           final AccountUserApi accountUserApi,
                           final PaymentApi paymentApi,
                           final Clock clock,
-                          final JaxrsConfig jaxrsConfig,
                           final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
         this.tenantApi = tenantApi;
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -129,7 +125,7 @@ public class TenantResource extends JaxRsResourceBase {
 
         final TenantData data = json.toTenantData();
         final Tenant tenant = tenantApi.createTenant(data, context.createContext(createdBy, reason, comment, request));
-        return uriBuilder.buildResponse(uriInfo, TenantResource.class, "getTenant", tenant.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, TenantResource.class, "getTenant", tenant.getId());
     }
 
     @TimedResource
@@ -228,7 +224,7 @@ public class TenantResource extends JaxRsResourceBase {
                                @javax.ws.rs.core.Context  final UriInfo uriInfo) throws TenantApiException {
         final CallContext callContext = context.createContext(createdBy, reason, comment, request);
         tenantApi.addTenantKeyValue(key, value, callContext);
-        return uriBuilder.buildResponse(uriInfo, TenantResource.class, "getUserKeyValue", key, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, TenantResource.class, "getUserKeyValue", key);
     }
 
     @TimedResource
@@ -276,7 +272,7 @@ public class TenantResource extends JaxRsResourceBase {
         final String tenantKey = keyPostfix != null ? key.toString() + keyPostfix : key.toString();
         tenantApi.addTenantKeyValue(tenantKey, value, callContext);
 
-        return uriBuilder.buildResponse(uriInfo, TenantResource.class, getMethodStr, keyPostfix, jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, TenantResource.class, getMethodStr, keyPostfix);
     }
 
 
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
index a4d27dd..f994dd7 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/TransactionResource.java
@@ -46,7 +46,6 @@ import org.killbill.billing.util.api.AuditUserApi;
 import org.killbill.billing.util.api.CustomFieldUserApi;
 import org.killbill.billing.util.api.TagUserApi;
 import org.killbill.billing.util.callcontext.CallContext;
-import org.killbill.billing.util.config.JaxrsConfig;
 import org.killbill.clock.Clock;
 import org.killbill.commons.metrics.TimedResource;
 
@@ -62,8 +61,6 @@ import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
 @Api(value = JaxrsResource.PAYMENT_TRANSACTIONS_PATH, description = "Operations on payment transactions")
 public class TransactionResource extends JaxRsResourceBase {
 
-    private final JaxrsConfig jaxrsConfig;
-
     @Inject
     public TransactionResource(final JaxrsUriBuilder uriBuilder,
                                final TagUserApi tagUserApi,
@@ -72,10 +69,8 @@ public class TransactionResource extends JaxRsResourceBase {
                                final AccountUserApi accountUserApi,
                                final PaymentApi paymentApi,
                                final Clock clock,
-                               final JaxrsConfig jaxrsConfig,
                                final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, clock, context);
-        this.jaxrsConfig = jaxrsConfig;
     }
 
     @TimedResource
@@ -105,7 +100,7 @@ public class TransactionResource extends JaxRsResourceBase {
 
         final boolean success = TransactionStatus.SUCCESS.name().equals(json.getStatus());
         final Payment result = paymentApi.notifyPendingTransactionOfStateChanged(account, UUID.fromString(transactionIdStr), success, callContext);
-        return uriBuilder.buildResponse(uriInfo, PaymentResource.class, "getPayment", result.getId(), jaxrsConfig.getJaxrsReturnPathLikeUrl());
+        return uriBuilder.buildResponse(uriInfo, PaymentResource.class, "getPayment", result.getId());
     }
 
     @Override
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/util/JaxrsUriBuilder.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/util/JaxrsUriBuilder.java
index 6146fe7..d4449fc 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/util/JaxrsUriBuilder.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/util/JaxrsUriBuilder.java
@@ -20,6 +20,7 @@ import java.net.URI;
 import java.util.Map;
 
 import javax.annotation.Nullable;
+import javax.inject.Inject;
 import javax.ws.rs.Path;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.UriBuilder;
@@ -27,20 +28,28 @@ import javax.ws.rs.core.UriInfo;
 
 import org.killbill.billing.jaxrs.resources.JaxRsResourceBase;
 import org.killbill.billing.jaxrs.resources.JaxrsResource;
+import org.killbill.billing.util.config.JaxrsConfig;
 
 public class JaxrsUriBuilder {
 
+    private final JaxrsConfig jaxrsConfig;
+
+    @Inject
+    public JaxrsUriBuilder(JaxrsConfig jaxrsConfig) {
+        this.jaxrsConfig = jaxrsConfig;
+    }
+
     public Response buildResponse(final UriInfo uriInfo, final Class<? extends JaxrsResource> theClass,
-                                  final String getMethodName, final Object objectId, final boolean pathLikeUrl) {
-        final URI location = buildLocation(uriInfo, theClass, getMethodName, objectId, pathLikeUrl);
-        return pathLikeUrl ? Response.ok().header("Location", location.getPath()).build() : Response.created(location).build();
+                                  final String getMethodName, final Object objectId) {
+        final URI location = buildLocation(uriInfo, theClass, getMethodName, objectId);
+        return !jaxrsConfig.isJaxrsLocationFullUrl() ? Response.ok().header("Location", location.getPath()).build() : Response.created(location).build();
     }
 
     public URI buildLocation(final UriInfo uriInfo, final Class<? extends JaxrsResource> theClass,
-                             final String getMethodName, final Object objectId, final boolean pathLikeUrl) {
+                             final String getMethodName, final Object objectId) {
         final UriBuilder uriBuilder = getUriBuilder(uriInfo.getBaseUri().getPath(), theClass, getMethodName);
 
-        if (!pathLikeUrl) {
+        if (jaxrsConfig.isJaxrsLocationFullUrl()) {
             uriBuilder.scheme(uriInfo.getAbsolutePath().getScheme())
               .host(uriInfo.getAbsolutePath().getHost())
               .port(uriInfo.getAbsolutePath().getPort());
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBuildResponse.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBuildResponse.java
index b9eb768..f66334f 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBuildResponse.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestBuildResponse.java
@@ -1,7 +1,5 @@
 /*
- * Copyright 2010-2013 Ning, Inc.
- * Copyright 2014 Groupon, Inc
- * Copyright 2014 The Billing Project, LLC
+ * Copyright 2016 The Billing Project, LLC
  *
  * The Billing Project 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
@@ -20,6 +18,8 @@ package org.killbill.billing.jaxrs;
 
 import org.killbill.billing.jaxrs.resources.AccountResource;
 import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
+import org.killbill.billing.server.log.ServerTestSuiteNoDB;
+import org.killbill.billing.util.config.JaxrsConfig;
 import org.testng.annotations.Test;
 
 import javax.ws.rs.core.Response;
@@ -31,8 +31,9 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.testng.Assert.assertEquals;
 
-public class TestBuildResponse {
-    @Test(groups = "fast", description = "Tests Uri Builder with Path Like URL and Root location")
+public class TestBuildResponse extends ServerTestSuiteNoDB {
+
+    @Test(groups = "fast", description = "Tests Uri Builder with Path Like URL and root Location")
     public void testUriBuilderWithPathLikeUrlAndRoot() throws Exception {
         UUID objectId = UUID.randomUUID();
 
@@ -40,8 +41,10 @@ public class TestBuildResponse {
         URI uri = URI.create("http://localhost:8080");
         when(uriInfo.getBaseUri()).thenReturn(uri);
 
-        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder();
-        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId, true);
+        JaxrsConfig jaxrsConfig = mock(JaxrsConfig.class);
+        when(jaxrsConfig.isJaxrsLocationFullUrl()).thenReturn(false);
+        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder(jaxrsConfig);
+        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId);
 
         assertEquals(response.getMetadata().get("Location").get(0), "/1.0/kb/accounts/" + objectId.toString());
     }
@@ -54,13 +57,15 @@ public class TestBuildResponse {
         URI uri = URI.create("http://localhost:8080/killbill");
         when(uriInfo.getBaseUri()).thenReturn(uri);
 
-        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder();
-        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId, true);
+        JaxrsConfig jaxrsConfig = mock(JaxrsConfig.class);
+        when(jaxrsConfig.isJaxrsLocationFullUrl()).thenReturn(false);
+        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder(jaxrsConfig);
+        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId);
 
         assertEquals(response.getMetadata().get("Location").get(0), "/killbill/1.0/kb/accounts/" + objectId.toString());
     }
 
-    @Test(groups = "fast", description = "Tests Uri Builder without Path Like URL and root Location")
+    @Test(groups = "fast", description = "Tests Uri Builder with Full URL and root Location")
     public void testUriBuilderWithoutPathLikeUrlAndRoot() throws Exception {
         UUID objectId = UUID.randomUUID();
 
@@ -69,13 +74,15 @@ public class TestBuildResponse {
         when(uriInfo.getBaseUri()).thenReturn(uri);
         when(uriInfo.getAbsolutePath()).thenReturn(uri);
 
-        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder();
-        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId, false);
+        JaxrsConfig jaxrsConfig = mock(JaxrsConfig.class);
+        when(jaxrsConfig.isJaxrsLocationFullUrl()).thenReturn(true);
+        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder(jaxrsConfig);
+        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId);
 
         assertEquals(response.getMetadata().get("Location").get(0).toString(), uri.toString() + "/1.0/kb/accounts/" + objectId.toString());
     }
 
-    @Test(groups = "fast", description = "Tests Uri Builder without Path Like URL and root Location")
+    @Test(groups = "fast", description = "Tests Uri Builder with Full URL and non root Location")
     public void testUriBuilderWithoutPathLikeUrlAndNonRoot() throws Exception {
         UUID objectId = UUID.randomUUID();
 
@@ -84,8 +91,10 @@ public class TestBuildResponse {
         when(uriInfo.getBaseUri()).thenReturn(uri);
         when(uriInfo.getAbsolutePath()).thenReturn(uri);
 
-        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder();
-        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId, false);
+        JaxrsConfig jaxrsConfig = mock(JaxrsConfig.class);
+        when(jaxrsConfig.isJaxrsLocationFullUrl()).thenReturn(true);
+        JaxrsUriBuilder uriBuilder = new JaxrsUriBuilder(jaxrsConfig);
+        Response response = uriBuilder.buildResponse(uriInfo, AccountResource.class, "getAccount", objectId);
 
         assertEquals(response.getMetadata().get("Location").get(0).toString(), uri.toString() + "/1.0/kb/accounts/" + objectId.toString());
     }
diff --git a/util/src/main/java/org/killbill/billing/util/config/JaxrsConfig.java b/util/src/main/java/org/killbill/billing/util/config/JaxrsConfig.java
index 38fb3b6..42e5b91 100644
--- a/util/src/main/java/org/killbill/billing/util/config/JaxrsConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/JaxrsConfig.java
@@ -34,9 +34,9 @@ public interface JaxrsConfig extends KillbillConfig {
     @Description("Total timeout for all callables associated to a given api call (parallel mode)")
     TimeSpan getJaxrsTimeout();
 
-    @Config("org.killbill.jaxrs.return.path.like.url")
+    @Config("org.killbill.jaxrs.location.full.url")
     @Default("false")
-    @Description("Type of return for the jaxrs response location")
-    boolean getJaxrsReturnPathLikeUrl();
+    @Description("Type of return for the jaxrs response location URL")
+    boolean isJaxrsLocationFullUrl();
 
 }