Skip to content

Commit

Permalink
[SHIBUI-839]
Browse files Browse the repository at this point in the history
Added a StringTrimModule that trims all leading and trailing whitespace
from Strings as Jackson deserializes them.
  • Loading branch information
Bill Smith committed Sep 19, 2018
1 parent 37e8347 commit c62384f
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration;

import com.fasterxml.jackson.databind.Module;
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects;
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository;
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository;
Expand Down Expand Up @@ -168,4 +169,9 @@ public DirectoryService directoryService() {
public LuceneUtility luceneUtility(DirectoryService directoryService) {
return new LuceneUtility(directoryService);
}

@Bean
public Module stringTrimModule() {
return new StringTrimModule();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration;

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;

import java.io.IOException;

/**
* @author Bill Smith (wsmith@unicon.net)
*
* Adapted from Maciej Marczuk's answer on Stack Overflow here:
* https://stackoverflow.com/questions/6852213/can-jackson-be-configured-to-trim-leading-trailing-whitespace-from-all-string-pr/33765854#33765854
*/
public class StringTrimModule extends SimpleModule {

public StringTrimModule() {
addDeserializer(String.class, new StdScalarDeserializer<String>(String.class) {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException {
return jsonParser.getValueAsString().trim();
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,27 @@ class MetadataResolversControllerIntegrationTests extends Specification {
result.statusCodeValue == 404
}

@DirtiesContext
def "SHIBUI-839 - POST resolver with spaces in the provider name results in trimmed name"() {
given:
def resolver = generator.buildRandomMetadataResolverOfType('DynamicHttp')
resolver.name = ' This name has spaces '

when:
def result = this.restTemplate.postForEntity(BASE_URI, createRequestHttpEntityFor { mapper.writeValueAsString(resolver) }, String)

then:
def metadataResolverMap = new JsonSlurper().parseText(result.body)
metadataResolverMap.name == resolver.name.trim()
}

@Unroll
@DirtiesContext
def "POST new concrete MetadataResolver of type #resolverType -> /api/MetadataResolvers"(String resolverType) {
given: 'New MetadataResolver JSON representation'
def resolver = generator.buildRandomMetadataResolverOfType(resolverType)
String sourceDirectory
if (resolverType.equals('Localdynamic')) {
if (resolverType.equals('LocalDynamic')) {
sourceDirectory = ((LocalDynamicMetadataResolver) resolver).sourceDirectory
}

Expand Down

0 comments on commit c62384f

Please sign in to comment.