VIVO-1408 Allow the use of a #-terminated prefix on JAVA class URIs
This commit is contained in:
parent
8fbfc6d4ff
commit
7f8b16bc1b
5 changed files with 253 additions and 72 deletions
|
@ -0,0 +1,111 @@
|
|||
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||
|
||||
package edu.cornell.mannlib.vitro.webapp.utils.configuration;
|
||||
|
||||
import static edu.cornell.mannlib.vitro.testing.ModelUtilitiesTestHelper.typeStatement;
|
||||
import static edu.cornell.mannlib.vitro.webapp.utils.configuration.ConfigurationBeanLoader.toPossibleJavaUris;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* Assure that we can use "namespaces" for Java URIs. The namespace must end
|
||||
* with a '#'.
|
||||
*/
|
||||
public class ConfigurationBeanLoader_NamespacesTest
|
||||
extends ConfigurationBeanLoaderTestBase {
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// toPossibleJavaUris()
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@Test
|
||||
public void possibleForJavaLangString() {
|
||||
Set<String> expected = new HashSet<>();
|
||||
expected.add("java:java.lang.String");
|
||||
expected.add("java:java#lang.String");
|
||||
expected.add("java:java.lang#String");
|
||||
assertEquals(expected, toPossibleJavaUris(String.class));
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// loadAll()
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@Test
|
||||
public void loadAllForJavaUtilRandom()
|
||||
throws ConfigurationBeanLoaderException {
|
||||
model.add(typeStatement("http://noPound", "java:java.util.Random"));
|
||||
model.add(typeStatement("http://firstPound", "java:java#util.Random"));
|
||||
model.add(typeStatement("http://secondPound", "java:java.util#Random"));
|
||||
model.add(typeStatement("http://notARandom", "java:java.util.Set"));
|
||||
Set<Random> instances = loader.loadAll(Random.class);
|
||||
assertEquals(3, instances.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadAlForCustomInnerClass()
|
||||
throws ConfigurationBeanLoaderException {
|
||||
Set<String> typeUris = toPossibleJavaUris(ExampleClassForLoadAll.class);
|
||||
for (String typeUri : typeUris) {
|
||||
model.add(typeStatement("http://testUri" + model.size(), typeUri));
|
||||
}
|
||||
Set<ExampleClassForLoadAll> instances = loader
|
||||
.loadAll(ExampleClassForLoadAll.class);
|
||||
assertEquals(typeUris.size(), instances.size());
|
||||
}
|
||||
|
||||
public static class ExampleClassForLoadAll {
|
||||
// Nothing of interest
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// loadInstance()
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@Test
|
||||
public void loadInstanceVariationsForJavaUtilRandom()
|
||||
throws ConfigurationBeanLoaderException {
|
||||
model.add(typeStatement("http://noPound", "java:java.util.Random"));
|
||||
model.add(typeStatement("http://firstPound", "java:java#util.Random"));
|
||||
model.add(typeStatement("http://secondPound", "java:java.util#Random"));
|
||||
model.add(typeStatement("http://notARandom", "java:java.util.Set"));
|
||||
|
||||
assertNotNull(loader.loadInstance("http://noPound", Random.class));
|
||||
assertNotNull(loader.loadInstance("http://firstPound", Random.class));
|
||||
assertNotNull(loader.loadInstance("http://secondPound", Random.class));
|
||||
|
||||
try {
|
||||
loader.loadInstance("http://notARandom", Random.class);
|
||||
fail("Should not be a Random");
|
||||
} catch (Exception e) {
|
||||
// Expected it
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void loadInstanceVariationsForCustomInnerClass()
|
||||
throws ConfigurationBeanLoaderException {
|
||||
Set<String> typeUris = toPossibleJavaUris(
|
||||
ExampleClassForLoadInstance.class);
|
||||
for (String typeUri : typeUris) {
|
||||
model.add(typeStatement("http://testUri" + model.size(), typeUri));
|
||||
}
|
||||
for (int i = 0; i < model.size(); i++) {
|
||||
String instanceUri = "http://testUri" + i;
|
||||
assertNotNull("No instance for " + instanceUri, loader.loadInstance(
|
||||
instanceUri, ExampleClassForLoadInstance.class));
|
||||
}
|
||||
}
|
||||
|
||||
public static class ExampleClassForLoadInstance {
|
||||
// Nothing of interest
|
||||
}
|
||||
|
||||
}
|
|
@ -15,8 +15,8 @@ import edu.cornell.mannlib.vitro.webapp.utils.configuration.WrappedInstance.Vali
|
|||
/**
|
||||
* Test the @Validation annotation.
|
||||
*/
|
||||
public class ConfigurationBeanLoader_ValidationTest extends
|
||||
ConfigurationBeanLoaderTestBase {
|
||||
public class ConfigurationBeanLoader_ValidationTest
|
||||
extends ConfigurationBeanLoaderTestBase {
|
||||
// --------------------------------------------
|
||||
|
||||
@Test
|
||||
|
@ -25,8 +25,7 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(ValidationMethodWithParameter.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
ValidationMethodWithParameter.class,
|
||||
expectSimpleFailure(ValidationMethodWithParameter.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(InstanceWrapperException.class,
|
||||
|
@ -49,11 +48,11 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(ValidationMethodShouldReturnVoid.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
ValidationMethodShouldReturnVoid.class,
|
||||
expectSimpleFailure(ValidationMethodShouldReturnVoid.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(InstanceWrapperException.class, "should return void"));
|
||||
throwable(InstanceWrapperException.class,
|
||||
"should return void"));
|
||||
}
|
||||
|
||||
public static class ValidationMethodShouldReturnVoid {
|
||||
|
@ -71,8 +70,7 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(ValidationMethodIsPrivate.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
ValidationMethodIsPrivate.class,
|
||||
expectSimpleFailure(ValidationMethodIsPrivate.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(ValidationFailedException.class,
|
||||
|
@ -94,8 +92,7 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(ValidationThrowsException.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
ValidationThrowsException.class,
|
||||
expectSimpleFailure(ValidationThrowsException.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(ValidationFailedException.class,
|
||||
|
@ -144,8 +141,7 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(ValidationOverValidationSubclass.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
ValidationOverValidationSubclass.class,
|
||||
expectSimpleFailure(ValidationOverValidationSubclass.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(InstanceWrapperException.class,
|
||||
|
@ -158,8 +154,7 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
model.add(typeStatement(GENERIC_INSTANCE_URI,
|
||||
toJavaUri(PlainOverValidationSubclass.class)));
|
||||
|
||||
expectSimpleFailure(
|
||||
PlainOverValidationSubclass.class,
|
||||
expectSimpleFailure(PlainOverValidationSubclass.class,
|
||||
throwable(ConfigurationBeanLoaderException.class,
|
||||
"Failed to load"),
|
||||
throwable(InstanceWrapperException.class,
|
||||
|
@ -182,8 +177,8 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
// Just want to see that the superclass validation is run.
|
||||
}
|
||||
|
||||
public static class AdditionalValidationSubclass extends
|
||||
ValidationSuperclass {
|
||||
public static class AdditionalValidationSubclass
|
||||
extends ValidationSuperclass {
|
||||
public boolean validatorSubHasRun = false;
|
||||
|
||||
@Validation
|
||||
|
@ -195,8 +190,8 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
}
|
||||
}
|
||||
|
||||
public static class ValidationOverValidationSubclass extends
|
||||
EmptyValidationSubclass {
|
||||
public static class ValidationOverValidationSubclass
|
||||
extends EmptyValidationSubclass {
|
||||
@Override
|
||||
@Validation
|
||||
public void validatorSuper() {
|
||||
|
@ -204,8 +199,8 @@ public class ConfigurationBeanLoader_ValidationTest extends
|
|||
}
|
||||
}
|
||||
|
||||
public static class PlainOverValidationSubclass extends
|
||||
ValidationSuperclass {
|
||||
public static class PlainOverValidationSubclass
|
||||
extends ValidationSuperclass {
|
||||
@Override
|
||||
public void validatorSuper() {
|
||||
// Should fail
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue