diff --git a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java index ef46c13c1d79e5f841c14757921e75e6d32424a6..290fedbf7aec37eeee02bad4277b7bf55f33af4f 100644 --- a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java +++ b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/LocalUserDetailsLoader.java @@ -3,6 +3,7 @@ package edu.wisc.uwss.local; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import org.springframework.core.io.Resource; @@ -19,25 +20,24 @@ import edu.wisc.uwss.UWSpringSecurityException; * This interface is an alternative to {@link LocalUserDetailsAttributesMapper}. * * @see {@link LocalUserDetailsAttributesMapper} + * @see {@link LocalUserDetailsLoader.Default} * @author Nicholas Blair */ public interface LocalUserDetailsLoader { /** - * * @param resource a {@link Resource} with an accessible {@link java.io.InputStream} * @return a never null, but potentially empty, {@link List} of {@link UWUserDetails} instances + * @throws UWSpringSecurityException if the {@link Resource} couldn't be read */ List<UWUserDetails> loadUsers(Resource resource); /** - * Default loader uses Jackson. - * - * This implementation can be subclassed + * Default loader uses Jackson and can parse both JSON and YAML formats. */ public static class Default implements LocalUserDetailsLoader { - private ObjectMapper objectMapper = new ObjectMapper(); + private ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); /** * Visible for subclasses to override. diff --git a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/YamlLocalUserDetailsLoader.java b/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/YamlLocalUserDetailsLoader.java deleted file mode 100644 index 0973e280358f181a674f2a07a6d1cab340d718ba..0000000000000000000000000000000000000000 --- a/uw-spring-security-core/src/main/java/edu/wisc/uwss/local/YamlLocalUserDetailsLoader.java +++ /dev/null @@ -1,16 +0,0 @@ -package edu.wisc.uwss.local; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; - -/** - * {@link LocalUserDetailsLoader} implementation that can load YAML. - * - * @author Nicholas Blair - */ -public class YamlLocalUserDetailsLoader extends LocalUserDetailsLoader.Default { - @Override - protected ObjectMapper getObjectMapper() { - return new ObjectMapper(new YAMLFactory()); - } -} diff --git a/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java b/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java index 5982c0893b3a4030d50ee010cd466e70c7a47920..cc4e17e237abebe51f4651c6641125e76b73e3a6 100644 --- a/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java +++ b/uw-spring-security-core/src/test/java/edu/wisc/uwss/local/LocalUserDetailsManagerImplTest.java @@ -89,7 +89,7 @@ public class LocalUserDetailsManagerImplTest { } /** * Confirm that {@link LocalUserDetailsManagerImpl} with {@link LocalUserDetailsManagerImpl#setLoaderEnabled(boolean)} - * of true results in equivalent {@link UWUserDetails} instances being loaded. + * of true results in equivalent {@link UWUserDetails} instances being loaded from JSON. * * @throws IOException */ @@ -114,6 +114,12 @@ public class LocalUserDetailsManagerImplTest { assertEquals(withAttributesMapper.loadUserByUsername("jim"), withLoader.loadUserByUsername("jim")); } + /** + * Confirm that {@link LocalUserDetailsManagerImpl} with {@link LocalUserDetailsManagerImpl#setLoaderEnabled(boolean)} + * of true results in equivalent {@link UWUserDetails} instances being loaded from YAML. + * + * @throws IOException + */ @Test public void init_compare_yaml_loader_vs_attributesmapper() throws IOException { Properties properties = new Properties(); @@ -124,8 +130,7 @@ public class LocalUserDetailsManagerImplTest { withAttributesMapper.init(); LocalUserDetailsManagerImpl withLoader = new LocalUserDetailsManagerImpl() - .setLocalUserDetailsLoader(new YamlLocalUserDetailsLoader()) - .setLocalUserResource(new ClassPathResource("edu/wisc/uwss/local/local-users.json")) + .setLocalUserResource(new ClassPathResource("edu/wisc/uwss/local/local-users.yaml")) .setLoaderEnabled(true); withLoader.init(); diff --git a/uw-spring-security-core/src/test/resources/log4j.properties b/uw-spring-security-core/src/test/resources/log4j.properties index 51828d1be6a9af948efb9381c589e71a1636cc5f..cd82d48243c8ce350f53bd5edc67904d14dd4ba7 100644 --- a/uw-spring-security-core/src/test/resources/log4j.properties +++ b/uw-spring-security-core/src/test/resources/log4j.properties @@ -1,6 +1,6 @@ log4j.rootCategory=DEBUG, R -#log4j.appender.R=org.apache.log4j.varia.NullAppender -log4j.appender.R=org.apache.log4j.ConsoleAppender +log4j.appender.R=org.apache.log4j.varia.NullAppender +#log4j.appender.R=org.apache.log4j.ConsoleAppender log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d %p [%t] %c - %m%n