From 6d8b1042b023fa1e4adeb649ceefb23f8a9cea86 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Thu, 1 Sep 2011 07:39:44 +0000 Subject: [PATCH] Publish a default callback handler git-svn-id: https://svn.argeo.org/commons/trunk@4707 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../ui/rcp/SecureApplicationActivator.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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) { -- 2.39.2