From: Mathieu Baudier Date: Thu, 1 Sep 2011 07:39:44 +0000 (+0000) Subject: Publish a default callback handler X-Git-Tag: argeo-commons-2.1.30~1183 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=6d8b1042b023fa1e4adeb649ceefb23f8a9cea86;p=lgpl%2Fargeo-commons.git Publish a default callback handler git-svn-id: https://svn.argeo.org/commons/trunk@4707 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureApplicationActivator.java b/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureApplicationActivator.java index 1c8bd7c25..d5617d773 100644 --- a/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureApplicationActivator.java +++ b/security/plugins/org.argeo.security.ui.rcp/src/main/java/org/argeo/security/ui/rcp/SecureApplicationActivator.java @@ -1,11 +1,19 @@ package org.argeo.security.ui.rcp; +import java.io.IOException; import java.net.URL; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.UnsupportedCallbackException; + +import org.argeo.security.ui.dialogs.DefaultLoginDialog; import org.eclipse.equinox.security.auth.ILoginContext; import org.eclipse.equinox.security.auth.LoginContextFactory; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; +import org.osgi.framework.ServiceRegistration; /** Activator able to create {@link ILoginContext} */ public class SecureApplicationActivator implements BundleActivator { @@ -15,12 +23,25 @@ public class SecureApplicationActivator implements BundleActivator { private static final String JAAS_CONFIG_FILE = "/META-INF/jaas_default.txt"; private static BundleContext bundleContext; + private ServiceRegistration callbackHandlerRegistration; public void start(BundleContext bundleContext) throws Exception { SecureApplicationActivator.bundleContext = bundleContext; + + CallbackHandler callbackHandler = new CallbackHandler() { + + public void handle(Callback[] callbacks) throws IOException, + UnsupportedCallbackException { + DefaultLoginDialog dialog = new DefaultLoginDialog(); + dialog.handle(callbacks); + } + }; + callbackHandlerRegistration = bundleContext.registerService( + CallbackHandler.class.getName(), callbackHandler, null); } public void stop(BundleContext context) throws Exception { + callbackHandlerRegistration.unregister(); } static ILoginContext createLoginContext(String context) {