You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/06/15 23:34:01 UTC
svn commit: r1685674 - in /tomcat/trunk/java:
javax/security/auth/message/config/AuthConfigFactory.java
org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
Author: markt
Date: Mon Jun 15 21:34:00 2015
New Revision: 1685674
URL: http://svn.apache.org/r1685674
Log:
Initial AuthConfigFactory implementation.
Patch by fjodorver
Modified:
tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java
tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
Modified: tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java?rev=1685674&r1=1685673&r2=1685674&view=diff
==============================================================================
--- tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java (original)
+++ tomcat/trunk/java/javax/security/auth/message/config/AuthConfigFactory.java Mon Jun 15 21:34:00 2015
@@ -46,7 +46,7 @@ public abstract class AuthConfigFactory
new SecurityPermission(PROVIDER_REGISTRATION_PERMISSION_NAME);
private static final String DEFAULT_JASPI_AUTHCONFIGFACTORYIMPL =
- "org.apache.geronimo.components.jaspi.AuthConfigFactoryImpl";
+ "org.apache.catalina.authenticator.jaspic.AuthConfigFactoryImpl";
private static AuthConfigFactory factory;
private static ClassLoader contextClassLoader;
Modified: tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java?rev=1685674&r1=1685673&r2=1685674&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java (original)
+++ tomcat/trunk/java/org/apache/catalina/authenticator/jaspic/AuthConfigFactoryImpl.java Mon Jun 15 21:34:00 2015
@@ -16,6 +16,9 @@
*/
package org.apache.catalina.authenticator.jaspic;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.security.auth.message.config.AuthConfigFactory;
@@ -24,47 +27,145 @@ import javax.security.auth.message.confi
public class AuthConfigFactoryImpl extends AuthConfigFactory {
+ private Map<String, ConfigProviderInfo> configProviders = new HashMap<>();
+
+
@Override
public AuthConfigProvider getConfigProvider(String layer, String appContext,
RegistrationListener listener) {
- return null;
+
+ String registrationKey = getRegistrationKey(layer, appContext);
+
+ ConfigProviderInfo provider = configProviders.get(registrationKey);
+ if (provider == null) {
+ provider = configProviders.get(getRegistrationKey(null, appContext));
+ }
+ if (provider == null) {
+ provider = configProviders.get(getRegistrationKey(layer, null));
+ }
+ if (provider == null) {
+ provider = configProviders.get(getRegistrationKey(null, null));
+ }
+ if (provider == null) {
+ return null;
+ }
+
+ if (listener != null) {
+ provider.addListener(listener);
+ }
+
+ return provider.getAuthConfigProvider();
}
+
@Override
@SuppressWarnings("rawtypes") // JASPIC API uses raw types
public String registerConfigProvider(String className, Map properties, String layer,
String appContext, String description) {
- return null;
+ throw new IllegalStateException("Not implemented yet!");
}
+
@Override
public String registerConfigProvider(AuthConfigProvider provider, String layer,
String appContext, String description) {
- return null;
+
+ String registrationId = getRegistrationKey(layer, appContext);
+ ConfigProviderInfo providerInfo =
+ new ConfigProviderInfo(provider, true, layer, appContext, description);
+ configProviders.put(registrationId, providerInfo);
+ return registrationId;
}
+
@Override
public boolean removeRegistration(String registrationID) {
- return false;
+ return configProviders.remove(registrationID) != null;
}
+
@Override
public String[] detachListener(RegistrationListener listener, String layer, String appContext) {
return null;
}
+
@Override
public String[] getRegistrationIDs(AuthConfigProvider provider) {
return null;
}
+
@Override
public RegistrationContext getRegistrationContext(String registrationID) {
- return null;
+ return configProviders.get(registrationID);
}
+
@Override
public void refresh() {
}
+
+
+ private String getRegistrationKey(String layer, String appContext) {
+ return layer + "/" + appContext;
+ }
+
+
+ private static class ConfigProviderInfo implements AuthConfigFactory.RegistrationContext {
+ private final AuthConfigProvider authConfigProvider;
+ private String appContext;
+ private String description;
+ private String messageLayer;
+ private final boolean persistent;
+ private final List<RegistrationListener> listeners = new ArrayList<>();
+
+ private ConfigProviderInfo(AuthConfigProvider authConfigProvider, boolean persistent,
+ String layer, String appContext, String description) {
+ this.authConfigProvider = authConfigProvider;
+ this.persistent = persistent;
+ this.messageLayer = layer;
+ this.appContext = appContext;
+ this.description = description;
+ }
+
+ private ConfigProviderInfo(AuthConfigProvider authConfigProvider,
+ List<RegistrationListener> listeners, boolean persistent) {
+ this.authConfigProvider = authConfigProvider;
+ this.persistent = persistent;
+ }
+
+ public AuthConfigProvider getAuthConfigProvider() {
+ return authConfigProvider;
+ }
+
+ public List<RegistrationListener> getListeners() {
+ return listeners;
+ }
+
+ public void addListener(RegistrationListener listener) {
+ listeners.add(listener);
+ }
+
+ @Override
+ public String getAppContext() {
+ return appContext;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getMessageLayer() {
+ return messageLayer;
+ }
+
+ @Override
+ public boolean isPersistent() {
+ return persistent;
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org