Merge pull request #211 from dBucik/fix_filter_init_npe
fix: 🐛 Fix nullPointerexception in AuthProcFilterInit
pull/1580/head
commit
d80673d8de
|
@ -6,6 +6,7 @@ import static cz.muni.ics.oidc.server.filters.AuthProcFilterConstants.DEVICE_APP
|
||||||
import cz.muni.ics.oauth2.model.ClientDetailsEntity;
|
import cz.muni.ics.oauth2.model.ClientDetailsEntity;
|
||||||
import cz.muni.ics.oauth2.service.ClientDetailsEntityService;
|
import cz.muni.ics.oauth2.service.ClientDetailsEntityService;
|
||||||
import cz.muni.ics.oidc.BeanUtil;
|
import cz.muni.ics.oidc.BeanUtil;
|
||||||
|
import cz.muni.ics.oidc.exceptions.ConfigurationException;
|
||||||
import cz.muni.ics.oidc.models.Facility;
|
import cz.muni.ics.oidc.models.Facility;
|
||||||
import cz.muni.ics.oidc.models.PerunUser;
|
import cz.muni.ics.oidc.models.PerunUser;
|
||||||
import cz.muni.ics.oidc.saml.SamlProperties;
|
import cz.muni.ics.oidc.saml.SamlProperties;
|
||||||
|
@ -74,7 +75,7 @@ public class AuthProcFiltersContainer extends GenericFilterBean {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void postConstruct() {
|
public void postConstruct() throws ConfigurationException {
|
||||||
this.filters = AuthProcFiltersInitializer.initialize(properties, beanUtil);
|
this.filters = AuthProcFiltersInitializer.initialize(properties, beanUtil);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package cz.muni.ics.oidc.server.filters;
|
package cz.muni.ics.oidc.server.filters;
|
||||||
|
|
||||||
import cz.muni.ics.oidc.BeanUtil;
|
import cz.muni.ics.oidc.BeanUtil;
|
||||||
|
import cz.muni.ics.oidc.exceptions.ConfigurationException;
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
@ -22,7 +23,7 @@ public class AuthProcFiltersInitializer {
|
||||||
private static final String FILTER_NAMES = "filter.names";
|
private static final String FILTER_NAMES = "filter.names";
|
||||||
private static final String FILTERS_PROP_BASE_PREFIX = "filter.";
|
private static final String FILTERS_PROP_BASE_PREFIX = "filter.";
|
||||||
|
|
||||||
public static List<AuthProcFilter> initialize(Properties coreProperties, BeanUtil beanUtil) {
|
public static List<AuthProcFilter> initialize(Properties coreProperties, BeanUtil beanUtil) throws ConfigurationException {
|
||||||
List<AuthProcFilter> filters = new LinkedList<>();
|
List<AuthProcFilter> filters = new LinkedList<>();
|
||||||
|
|
||||||
String filterNames = coreProperties.getProperty(FILTER_NAMES);
|
String filterNames = coreProperties.getProperty(FILTER_NAMES);
|
||||||
|
@ -39,11 +40,11 @@ public class AuthProcFiltersInitializer {
|
||||||
return filters;
|
return filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AuthProcFilter loadFilter(AuthProcFilterInitContext ctx) {
|
private static AuthProcFilter loadFilter(AuthProcFilterInitContext ctx) throws ConfigurationException {
|
||||||
String filterClass = ctx.getFilterClass();
|
String filterClass = ctx.getFilterClass();
|
||||||
if (!StringUtils.hasText(filterClass)) {
|
if (!StringUtils.hasText(filterClass)) {
|
||||||
log.warn("{} - failed to initialized filter: no class has ben configured", ctx.getFilterName());
|
log.warn("{} - failed to initialized filter: no class has ben configured", ctx.getFilterName());
|
||||||
return null;
|
throw new ConfigurationException("Failed to initialize filter '" + ctx.getFilterName() + "' (" + filterClass + ")");
|
||||||
}
|
}
|
||||||
log.debug("{} - loading class '{}'", ctx.getFilterName(), filterClass);
|
log.debug("{} - loading class '{}'", ctx.getFilterName(), filterClass);
|
||||||
|
|
||||||
|
@ -52,25 +53,27 @@ public class AuthProcFiltersInitializer {
|
||||||
if (!AuthProcFilter.class.isAssignableFrom(rawClazz)) {
|
if (!AuthProcFilter.class.isAssignableFrom(rawClazz)) {
|
||||||
log.warn("{} - failed to initialized filter: class '{}' does not extend AuthProcFilter",
|
log.warn("{} - failed to initialized filter: class '{}' does not extend AuthProcFilter",
|
||||||
ctx.getFilterName(), filterClass);
|
ctx.getFilterName(), filterClass);
|
||||||
return null;
|
throw new ConfigurationException("Failed to initialize filter '" + ctx.getFilterName() + "' (" + filterClass + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked") Class<AuthProcFilter> clazz = (Class<AuthProcFilter>) rawClazz;
|
@SuppressWarnings("unchecked") Class<AuthProcFilter> clazz = (Class<AuthProcFilter>) rawClazz;
|
||||||
Constructor<AuthProcFilter> constructor = clazz.getConstructor(AuthProcFilterInitContext.class);
|
Constructor<AuthProcFilter> constructor = clazz.getConstructor(AuthProcFilterInitContext.class);
|
||||||
return constructor.newInstance(ctx);
|
AuthProcFilter filter = constructor.newInstance(ctx);
|
||||||
|
log.debug("Initialized AuthProcFilter - {}", filter);
|
||||||
|
return filter;
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
log.warn("{} - failed to initialize filter: class '{}' was not found", ctx.getFilterName(), filterClass);
|
log.warn("{} - failed to initialize filter: class '{}' was not found", ctx.getFilterName(), filterClass);
|
||||||
log.debug("{} - details:", ctx.getFilterName(), e);
|
log.debug("{} - details:", ctx.getFilterName(), e);
|
||||||
return null;
|
throw new ConfigurationException("Failed to initialize filter '" + ctx.getFilterName() + "' (" + filterClass + ")");
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
log.warn("{} - failed to initialize filter: class '{}' does not have proper constructor",
|
log.warn("{} - failed to initialize filter: class '{}' does not have proper constructor",
|
||||||
ctx.getFilterName(), filterClass);
|
ctx.getFilterName(), filterClass);
|
||||||
log.debug("{} - details:", ctx.getFilterName(), e);
|
log.debug("{} - details:", ctx.getFilterName(), e);
|
||||||
return null;
|
throw new ConfigurationException("Failed to initialize filter '" + ctx.getFilterName() + "' (" + filterClass + ")");
|
||||||
} catch (IllegalAccessException | InvocationTargetException | InstantiationException e) {
|
} catch (IllegalAccessException | InvocationTargetException | InstantiationException e) {
|
||||||
log.warn("{} - failed to initialize filter: class '{}' cannot be instantiated", ctx.getFilterName(), filterClass);
|
log.warn("{} - failed to initialize filter: class '{}' cannot be instantiated", ctx.getFilterName(), filterClass);
|
||||||
log.debug("{} - details:", ctx.getFilterName(), e);
|
log.debug("{} - details:", ctx.getFilterName(), e);
|
||||||
return null;
|
throw new ConfigurationException("Failed to initialize filter '" + ctx.getFilterName() + "' (" + filterClass + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue