killbill-memoizeit
Changes
osgi-bundles/libs/killbill/src/main/java/org/killbill/killbill/osgi/libs/killbill/OSGIKillbillAPI.java 11(+11 -0)
pom.xml 2(+1 -1)
Details
diff --git a/osgi/src/main/java/org/killbill/billing/osgi/DefaultOSGIKillbill.java b/osgi/src/main/java/org/killbill/billing/osgi/DefaultOSGIKillbill.java
index b5dd39e..92639fc 100644
--- a/osgi/src/main/java/org/killbill/billing/osgi/DefaultOSGIKillbill.java
+++ b/osgi/src/main/java/org/killbill/billing/osgi/DefaultOSGIKillbill.java
@@ -28,6 +28,7 @@ import org.killbill.billing.invoice.api.InvoiceUserApi;
import org.killbill.billing.osgi.api.OSGIKillbill;
import org.killbill.billing.osgi.api.config.PluginConfigServiceApi;
import org.killbill.billing.payment.api.PaymentApi;
+import org.killbill.billing.security.api.SecurityApi;
import org.killbill.billing.tenant.api.TenantUserApi;
import org.killbill.billing.usage.api.UsageUserApi;
import org.killbill.billing.util.api.AuditUserApi;
@@ -53,6 +54,7 @@ public class DefaultOSGIKillbill implements OSGIKillbill {
private final SubscriptionApi subscriptionApi;
private final CurrencyConversionApi currencyConversionApi;
private final RecordIdApi recordIdApi;
+ private final SecurityApi securityApi;
private final PluginConfigServiceApi configServiceApi;
@@ -72,7 +74,8 @@ public class DefaultOSGIKillbill implements OSGIKillbill {
final SubscriptionApi subscriptionApi,
final RecordIdApi recordIdApi,
final CurrencyConversionApi currencyConversionApi,
- final PluginConfigServiceApi configServiceApi) {
+ final PluginConfigServiceApi configServiceApi,
+ final SecurityApi securityApi) {
this.accountUserApi = accountUserApi;
this.catalogUserApi = catalogUserApi;
this.invoicePaymentApi = invoicePaymentApi;
@@ -89,6 +92,7 @@ public class DefaultOSGIKillbill implements OSGIKillbill {
this.currencyConversionApi = currencyConversionApi;
this.recordIdApi = recordIdApi;
this.configServiceApi = configServiceApi;
+ this.securityApi = securityApi;
}
@Override
@@ -170,4 +174,9 @@ public class DefaultOSGIKillbill implements OSGIKillbill {
public PluginConfigServiceApi getPluginConfigServiceApi() {
return configServiceApi;
}
+
+ @Override
+ public SecurityApi getSecurityApi() {
+ return securityApi;
+ }
}
diff --git a/osgi-bundles/libs/killbill/src/main/java/org/killbill/killbill/osgi/libs/killbill/OSGIKillbillAPI.java b/osgi-bundles/libs/killbill/src/main/java/org/killbill/killbill/osgi/libs/killbill/OSGIKillbillAPI.java
index 2e41138..9a82604 100644
--- a/osgi-bundles/libs/killbill/src/main/java/org/killbill/killbill/osgi/libs/killbill/OSGIKillbillAPI.java
+++ b/osgi-bundles/libs/killbill/src/main/java/org/killbill/killbill/osgi/libs/killbill/OSGIKillbillAPI.java
@@ -26,6 +26,7 @@ import org.killbill.billing.invoice.api.InvoiceUserApi;
import org.killbill.billing.osgi.api.OSGIKillbill;
import org.killbill.billing.osgi.api.config.PluginConfigServiceApi;
import org.killbill.billing.payment.api.PaymentApi;
+import org.killbill.billing.security.api.SecurityApi;
import org.killbill.billing.tenant.api.TenantUserApi;
import org.killbill.billing.usage.api.UsageUserApi;
import org.killbill.billing.util.api.AuditUserApi;
@@ -212,4 +213,14 @@ public class OSGIKillbillAPI extends OSGIKillbillLibraryBase implements OSGIKill
}
});
}
+
+ @Override
+ public SecurityApi getSecurityApi() {
+ return withServiceTracker(killbillTracker, new APICallback<SecurityApi, OSGIKillbill>(KILLBILL_SERVICE_NAME) {
+ @Override
+ public SecurityApi executeWithService(final OSGIKillbill service) {
+ return service.getSecurityApi();
+ }
+ });
+ }
}
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index ec22fad..fe428ac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.7.10</version>
+ <version>0.7.12-SNAPSHOT</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.11.5-SNAPSHOT</version>
diff --git a/util/src/main/java/org/killbill/billing/util/config/OSGIConfig.java b/util/src/main/java/org/killbill/billing/util/config/OSGIConfig.java
index f3d2738..5827a48 100644
--- a/util/src/main/java/org/killbill/billing/util/config/OSGIConfig.java
+++ b/util/src/main/java/org/killbill/billing/util/config/OSGIConfig.java
@@ -73,6 +73,7 @@ public interface OSGIConfig extends KillbillConfig {
"org.killbill.billing.util.template.translation," +
"org.killbill.billing.currency.plugin.api," +
"org.killbill.billing.currency.api," +
+ "org.killbill.billing.security.api," +
// Add export for all the com.sun.xml.internal.ws required to have apache-cxf working properly within a plugin environment.
"com.sun.xml.internal.ws," +
diff --git a/util/src/main/java/org/killbill/billing/util/security/api/DefaultSecurityApi.java b/util/src/main/java/org/killbill/billing/util/security/api/DefaultSecurityApi.java
index c601350..8206cbd 100644
--- a/util/src/main/java/org/killbill/billing/util/security/api/DefaultSecurityApi.java
+++ b/util/src/main/java/org/killbill/billing/util/security/api/DefaultSecurityApi.java
@@ -21,9 +21,10 @@ import java.util.List;
import java.util.Set;
import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.AuthenticationToken;
+import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.AuthorizationException;
import org.apache.shiro.subject.Subject;
-
import org.killbill.billing.ErrorCode;
import org.killbill.billing.security.Logical;
import org.killbill.billing.security.Permission;
@@ -39,6 +40,30 @@ public class DefaultSecurityApi implements SecurityApi {
private static final String[] allPermissions = new String[Permission.values().length];
@Override
+ public void login(final Object principal, final Object credentials) {
+ final Subject currentUser = SecurityUtils.getSubject();
+
+ // UsernamePasswordToken is hardcoded in AuthenticatingRealm
+ if (principal instanceof String && credentials instanceof String) {
+ currentUser.login(new UsernamePasswordToken((String) principal, (String) credentials));
+ } else if (principal instanceof String && credentials instanceof char[]) {
+ currentUser.login(new UsernamePasswordToken((String) principal, (char[]) credentials));
+ } else {
+ currentUser.login(new AuthenticationToken() {
+ @Override
+ public Object getPrincipal() {
+ return principal;
+ }
+
+ @Override
+ public Object getCredentials() {
+ return credentials;
+ }
+ });
+ }
+ }
+
+ @Override
public Set<Permission> getCurrentUserPermissions(final TenantContext context) {
final Permission[] killbillPermissions = Permission.values();
final String[] killbillPermissionsString = getAllPermissionsAsStrings();