From 8f5d81b6a8e0fe483897509f5837245844e28bf0 Mon Sep 17 00:00:00 2001 From: Shaun Francis Date: Tue, 26 Sep 2017 15:06:10 +0100 Subject: [PATCH] Add tests for schema pojo generator providers --- .../generation/DefinitionProvider.java | 33 ++++++--- .../generation/GeneratorContextProvider.java | 21 ++++-- .../generation/JavaClassFileWriter.java | 9 ++- .../SchemaPojoGeneratorFactory.java | 27 ++++++- .../ClassNameFactoryProviderTest.java | 32 ++++++++ .../generation/DefinitionProviderTest.java | 73 +++++++++++++++++++ .../GeneratorContextProviderTest.java | 57 +++++++++++++++ .../generation/JavaClassFileWriterTest.java | 40 ++++++++++ .../JavaGeneratorFactoryProviderTest.java | 23 ++++++ .../SchemaPojoGeneratorFactoryTest.java | 23 ++++++ .../generation/SchemaPojoGeneratorTest.java | 2 +- .../core/PojoGeneratorPropertiesTest.java | 2 +- .../classmodifying/PluginContextTest.java | 2 +- .../PluginsFromClassnameListFactoryTest.java | 2 +- .../PojoGeneratorPropertiesBuilder.java | 37 +--------- .../generation/utils/ReflectionUtil.java | 55 ++++++++++++++ 16 files changed, 377 insertions(+), 61 deletions(-) create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/ClassNameFactoryProviderTest.java create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/DefinitionProviderTest.java create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/GeneratorContextProviderTest.java create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaClassFileWriterTest.java create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaGeneratorFactoryProviderTest.java create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorFactoryTest.java rename pojo-generator-core/src/test/java/uk/gov/justice/generation/{pojo/core => utils}/PojoGeneratorPropertiesBuilder.java (54%) create mode 100644 pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/ReflectionUtil.java diff --git a/pojo-generator-core/src/main/java/uk/gov/justice/generation/DefinitionProvider.java b/pojo-generator-core/src/main/java/uk/gov/justice/generation/DefinitionProvider.java index ad1da88..a344f61 100644 --- a/pojo-generator-core/src/main/java/uk/gov/justice/generation/DefinitionProvider.java +++ b/pojo-generator-core/src/main/java/uk/gov/justice/generation/DefinitionProvider.java @@ -5,30 +5,41 @@ import uk.gov.justice.generation.pojo.plugin.PluginProvider; import uk.gov.justice.generation.pojo.plugin.classmodifying.PluginContext; import uk.gov.justice.generation.pojo.visitable.VisitableFactory; -import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorService; -import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory; +import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorService; import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor; -import uk.gov.justice.generation.pojo.visitor.ReferenceValueParser; import java.io.File; import java.util.List; +import org.everit.json.schema.Schema; + public class DefinitionProvider { - private final SchemaLoader schemaLoader = new SchemaLoader(); - private final VisitableFactory visitableFactory = new VisitableFactory(); - private DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor(new DefaultDefinitionFactory(new ReferenceValueParser())); + private final SchemaLoader schemaLoader; + private final VisitableFactory visitableFactory; + private final DefinitionBuilderVisitor definitionBuilderVisitor; + private final AcceptorService acceptorService; + + public DefinitionProvider(final SchemaLoader schemaLoader, + final VisitableFactory visitableFactory, + final DefinitionBuilderVisitor definitionBuilderVisitor, + final AcceptorService acceptorService) { + this.schemaLoader = schemaLoader; + this.visitableFactory = visitableFactory; + this.definitionBuilderVisitor = definitionBuilderVisitor; + this.acceptorService = acceptorService; + } public List createDefinitions(final File source, final PluginProvider pluginProvider, final PluginContext pluginContext) { + final Schema schema = schemaLoader.loadFrom(source); + final String fieldName = pluginProvider .nameGeneratablePlugin() - .rootFieldNameFrom(schemaLoader.loadFrom(source), source.getName(), pluginContext); + .rootFieldNameFrom(schema, source.getName(), pluginContext); - visitableFactory.createWith( - fieldName, - schemaLoader.loadFrom(source), - new DefaultAcceptorService(visitableFactory)) + visitableFactory + .createWith(fieldName, schema, acceptorService) .accept(definitionBuilderVisitor); return definitionBuilderVisitor.getDefinitions(); diff --git a/pojo-generator-core/src/main/java/uk/gov/justice/generation/GeneratorContextProvider.java b/pojo-generator-core/src/main/java/uk/gov/justice/generation/GeneratorContextProvider.java index 6d34336..1c49ecd 100644 --- a/pojo-generator-core/src/main/java/uk/gov/justice/generation/GeneratorContextProvider.java +++ b/pojo-generator-core/src/main/java/uk/gov/justice/generation/GeneratorContextProvider.java @@ -5,21 +5,30 @@ import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorConfig; import java.io.File; +import java.nio.file.Path; import java.util.List; public class GeneratorContextProvider { - private final JavaFileSimpleNameLister javaFileSimpleNameLister = new JavaFileSimpleNameLister(); + private final JavaFileSimpleNameLister javaFileSimpleNameLister; + + public GeneratorContextProvider(final JavaFileSimpleNameLister javaFileSimpleNameLister) { + this.javaFileSimpleNameLister = javaFileSimpleNameLister; + } public GenerationContext getGenerationContext(final File jsonSchemaFile, final GeneratorConfig generatorConfig) { + final List sourcePaths = generatorConfig.getSourcePaths(); + final Path outputDirectory = generatorConfig.getOutputDirectory(); + final String basePackageName = generatorConfig.getBasePackageName(); + final List hardCodedClassNames = javaFileSimpleNameLister.findSimpleNames( - generatorConfig.getSourcePaths(), - generatorConfig.getOutputDirectory(), - generatorConfig.getBasePackageName()); + sourcePaths, + outputDirectory, + basePackageName); return new GenerationContext( - generatorConfig.getOutputDirectory(), - generatorConfig.getBasePackageName(), + outputDirectory, + basePackageName, jsonSchemaFile.getName(), hardCodedClassNames); } diff --git a/pojo-generator-core/src/main/java/uk/gov/justice/generation/JavaClassFileWriter.java b/pojo-generator-core/src/main/java/uk/gov/justice/generation/JavaClassFileWriter.java index 5c4bf88..5cda16a 100644 --- a/pojo-generator-core/src/main/java/uk/gov/justice/generation/JavaClassFileWriter.java +++ b/pojo-generator-core/src/main/java/uk/gov/justice/generation/JavaClassFileWriter.java @@ -2,18 +2,19 @@ import uk.gov.justice.generation.pojo.core.GenerationContext; import uk.gov.justice.generation.pojo.generators.ClassGeneratable; -import uk.gov.justice.generation.pojo.write.JavaSourceFileProvider; import uk.gov.justice.generation.pojo.write.NonDuplicatingSourceWriter; -import uk.gov.justice.generation.pojo.write.SourceWriter; import java.util.List; public class JavaClassFileWriter { - private final SourceWriter sourceWriter = new SourceWriter(); + private final NonDuplicatingSourceWriter writer; + + public JavaClassFileWriter(final NonDuplicatingSourceWriter writer) { + this.writer = writer; + } public void writeJavaClassesToFile(final GenerationContext generationContext, final List classGenerators) { - final NonDuplicatingSourceWriter writer = new NonDuplicatingSourceWriter(new JavaSourceFileProvider(), sourceWriter); classGenerators.forEach(classGeneratable -> writer.write(classGeneratable, generationContext)); } } diff --git a/pojo-generator-core/src/main/java/uk/gov/justice/generation/SchemaPojoGeneratorFactory.java b/pojo-generator-core/src/main/java/uk/gov/justice/generation/SchemaPojoGeneratorFactory.java index 2a9d4c4..5ce06ef 100644 --- a/pojo-generator-core/src/main/java/uk/gov/justice/generation/SchemaPojoGeneratorFactory.java +++ b/pojo-generator-core/src/main/java/uk/gov/justice/generation/SchemaPojoGeneratorFactory.java @@ -1,6 +1,17 @@ package uk.gov.justice.generation; +import uk.gov.justice.generation.io.files.JavaFileSimpleNameLister; +import uk.gov.justice.generation.io.files.loader.SchemaLoader; import uk.gov.justice.generation.pojo.plugin.PluginProviderFactoryFactory; +import uk.gov.justice.generation.pojo.visitable.VisitableFactory; +import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorService; +import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorService; +import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory; +import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor; +import uk.gov.justice.generation.pojo.visitor.ReferenceValueParser; +import uk.gov.justice.generation.pojo.write.JavaSourceFileProvider; +import uk.gov.justice.generation.pojo.write.NonDuplicatingSourceWriter; +import uk.gov.justice.generation.pojo.write.SourceWriter; import uk.gov.justice.maven.generator.io.files.parser.core.Generator; import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorFactory; @@ -8,14 +19,24 @@ public class SchemaPojoGeneratorFactory implements GeneratorFactory { + private final SchemaLoader schemaLoader = new SchemaLoader(); + private final VisitableFactory visitableFactory = new VisitableFactory(); + private final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor(new DefaultDefinitionFactory(new ReferenceValueParser())); + private final AcceptorService acceptorService = new DefaultAcceptorService(visitableFactory); + + private final JavaFileSimpleNameLister javaFileSimpleNameLister = new JavaFileSimpleNameLister(); + + private final SourceWriter sourceWriter = new SourceWriter(); + private NonDuplicatingSourceWriter writer = new NonDuplicatingSourceWriter(new JavaSourceFileProvider(), sourceWriter); + @Override public Generator create() { return new SchemaPojoGenerator( new PluginProviderFactoryFactory().create(), - new DefinitionProvider(), - new GeneratorContextProvider(), + new DefinitionProvider(schemaLoader, visitableFactory, definitionBuilderVisitor, acceptorService), + new GeneratorContextProvider(javaFileSimpleNameLister), new ClassNameFactoryProvider(), new JavaGeneratorFactoryProvider(), - new JavaClassFileWriter()); + new JavaClassFileWriter(writer)); } } diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/ClassNameFactoryProviderTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/ClassNameFactoryProviderTest.java new file mode 100644 index 0000000..fd39ad9 --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/ClassNameFactoryProviderTest.java @@ -0,0 +1,32 @@ +package uk.gov.justice.generation; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static uk.gov.justice.generation.utils.ReflectionUtil.fieldValue; + +import uk.gov.justice.generation.pojo.core.GenerationContext; +import uk.gov.justice.generation.pojo.generators.ClassNameFactory; +import uk.gov.justice.generation.pojo.plugin.PluginProvider; + +import org.junit.Test; + +public class ClassNameFactoryProviderTest { + + @Test + public void shouldProvideClassNameFactory() throws Exception { + final GenerationContext generationContext = mock(GenerationContext.class); + final PluginProvider pluginProvider = mock(PluginProvider.class); + + final ClassNameFactory classNameFactory = new ClassNameFactoryProvider().getClassNameFactory(generationContext, pluginProvider); + + assertThat(classNameFactory, notNullValue()); + + final Object typeNameProvider = fieldValue(classNameFactory, "typeNameProvider"); + assertThat(fieldValue(typeNameProvider, "generationContext"), is(generationContext)); + + final Object typeNamePluginProcessor = fieldValue(classNameFactory, "typeNamePluginProcessor"); + assertThat(fieldValue(typeNamePluginProcessor, "pluginProvider"), is(pluginProvider)); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/DefinitionProviderTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/DefinitionProviderTest.java new file mode 100644 index 0000000..a7a9d65 --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/DefinitionProviderTest.java @@ -0,0 +1,73 @@ +package uk.gov.justice.generation; + +import static org.hamcrest.core.Is.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import uk.gov.justice.generation.io.files.loader.SchemaLoader; +import uk.gov.justice.generation.pojo.dom.Definition; +import uk.gov.justice.generation.pojo.plugin.PluginProvider; +import uk.gov.justice.generation.pojo.plugin.classmodifying.PluginContext; +import uk.gov.justice.generation.pojo.plugin.namegeneratable.NameGeneratablePlugin; +import uk.gov.justice.generation.pojo.visitable.Visitable; +import uk.gov.justice.generation.pojo.visitable.VisitableFactory; +import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorService; +import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor; + +import java.io.File; +import java.util.List; + +import org.everit.json.schema.Schema; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class DefinitionProviderTest { + + @Mock + private SchemaLoader schemaLoader; + + @Mock + private VisitableFactory visitableFactory; + + @Mock + private DefinitionBuilderVisitor definitionBuilderVisitor; + + @Mock + private AcceptorService acceptorService; + + @InjectMocks + private DefinitionProvider definitionProvider; + + @Test + @SuppressWarnings("unchecked") + public void shouldCreateDefinitions() throws Exception { + final String fieldName = "fieldName"; + final String schemaFilename = "schemaFilename"; + + final List definitions = mock(List.class); + final File schemaFile = mock(File.class); + final Schema schema = mock(Schema.class); + + final PluginProvider pluginProvider = mock(PluginProvider.class); + final PluginContext pluginContext = mock(PluginContext.class); + final NameGeneratablePlugin nameGeneratablePlugin = mock(NameGeneratablePlugin.class); + + when(schemaLoader.loadFrom(schemaFile)).thenReturn(schema); + when(pluginProvider.nameGeneratablePlugin()).thenReturn(nameGeneratablePlugin); + + when(schemaFile.getName()).thenReturn(schemaFilename); + when(nameGeneratablePlugin.rootFieldNameFrom(schema, schemaFilename, pluginContext)).thenReturn(fieldName); + + when(visitableFactory.createWith(fieldName, schema, acceptorService)).thenReturn(mock(Visitable.class)); + when(definitionBuilderVisitor.getDefinitions()).thenReturn(definitions); + + final List result = definitionProvider.createDefinitions(schemaFile, pluginProvider, pluginContext); + + assertThat(result, is(definitions)); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/GeneratorContextProviderTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/GeneratorContextProviderTest.java new file mode 100644 index 0000000..297603b --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/GeneratorContextProviderTest.java @@ -0,0 +1,57 @@ +package uk.gov.justice.generation; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import uk.gov.justice.generation.io.files.JavaFileSimpleNameLister; +import uk.gov.justice.generation.pojo.core.GenerationContext; +import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorConfig; + +import java.io.File; +import java.nio.file.Path; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class GeneratorContextProviderTest { + + @Mock + private JavaFileSimpleNameLister javaFileSimpleNameLister; + + @InjectMocks + private GeneratorContextProvider generatorContextProvider; + + @Test + @SuppressWarnings("unchecked") + public void shouldProvideGeneratorContext() throws Exception { + final String packageName = "package.name"; + final String schemaFilename = "schemaFilename"; + final Path outputDirectory = mock(Path.class); + final List hardCodedClassNames = mock(List.class); + + final List sourcePaths = mock(List.class); + final File schemaFile = mock(File.class); + final GeneratorConfig generatorConfig = mock(GeneratorConfig.class); + + when(generatorConfig.getSourcePaths()).thenReturn(sourcePaths); + when(generatorConfig.getOutputDirectory()).thenReturn(outputDirectory); + when(generatorConfig.getBasePackageName()).thenReturn(packageName); + when(javaFileSimpleNameLister.findSimpleNames(sourcePaths, outputDirectory, packageName)).thenReturn(hardCodedClassNames); + + when(schemaFile.getName()).thenReturn(schemaFilename); + + final GenerationContext generationContext = generatorContextProvider.getGenerationContext(schemaFile, generatorConfig); + + assertThat(generationContext.getPackageName(), is(packageName)); + assertThat(generationContext.getOutputDirectoryPath(), is(outputDirectory)); + assertThat(generationContext.getSourceFilename(), is(schemaFilename)); + assertThat(generationContext.getIgnoredClassNames(), is(hardCodedClassNames)); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaClassFileWriterTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaClassFileWriterTest.java new file mode 100644 index 0000000..c7eeb25 --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaClassFileWriterTest.java @@ -0,0 +1,40 @@ +package uk.gov.justice.generation; + +import static java.util.Collections.singletonList; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +import uk.gov.justice.generation.pojo.core.GenerationContext; +import uk.gov.justice.generation.pojo.generators.ClassGeneratable; +import uk.gov.justice.generation.pojo.write.NonDuplicatingSourceWriter; + +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class JavaClassFileWriterTest { + + @Mock + private NonDuplicatingSourceWriter nonDuplicatingSourceWriter; + + @InjectMocks + private JavaClassFileWriter javaClassFileWriter; + + @Test + @SuppressWarnings("unchecked") + public void shouldWriteJavaClassFiles() throws Exception { + final GenerationContext generationContext = mock(GenerationContext.class); + final ClassGeneratable classGeneratable = mock(ClassGeneratable.class); + final List classGenerators = singletonList(classGeneratable); + + javaClassFileWriter.writeJavaClassesToFile(generationContext, classGenerators); + + verify(nonDuplicatingSourceWriter, times(1)).write(classGeneratable, generationContext); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaGeneratorFactoryProviderTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaGeneratorFactoryProviderTest.java new file mode 100644 index 0000000..ea676ef --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/JavaGeneratorFactoryProviderTest.java @@ -0,0 +1,23 @@ +package uk.gov.justice.generation; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.mock; +import static uk.gov.justice.generation.utils.ReflectionUtil.fieldValue; + +import uk.gov.justice.generation.pojo.generators.ClassNameFactory; +import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory; + +import org.junit.Test; + +public class JavaGeneratorFactoryProviderTest { + + @Test + public void shouldProvideJavaGeneratorFactory() throws Exception { + final ClassNameFactory classNameFactory = mock(ClassNameFactory.class); + + final JavaGeneratorFactory javaGeneratorFactory = new JavaGeneratorFactoryProvider().getJavaGeneratorFactory(classNameFactory); + + assertThat(fieldValue(javaGeneratorFactory, "classNameFactory"), is(classNameFactory)); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorFactoryTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorFactoryTest.java new file mode 100644 index 0000000..99d718a --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorFactoryTest.java @@ -0,0 +1,23 @@ +package uk.gov.justice.generation; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.notNullValue; +import static org.junit.Assert.assertThat; + +import uk.gov.justice.maven.generator.io.files.parser.core.Generator; + +import java.io.File; + +import org.junit.Test; + +public class SchemaPojoGeneratorFactoryTest { + + @Test + public void shouldCreateSchemaPojoGenerator() throws Exception { + final Generator schemaPojoGenerator = new SchemaPojoGeneratorFactory().create(); + + assertThat(schemaPojoGenerator, notNullValue()); + assertThat(schemaPojoGenerator, is(instanceOf(SchemaPojoGenerator.class))); + } +} diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorTest.java index e4c8d1c..f30b376 100644 --- a/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorTest.java +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/SchemaPojoGeneratorTest.java @@ -7,7 +7,7 @@ import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static uk.gov.justice.generation.pojo.core.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; +import static uk.gov.justice.generation.utils.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; import uk.gov.justice.generation.pojo.core.PojoGeneratorProperties; import uk.gov.justice.maven.generator.io.files.parser.core.Generator; diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesTest.java index 44e3b04..9c14d1f 100644 --- a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesTest.java +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesTest.java @@ -4,7 +4,7 @@ import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; -import static uk.gov.justice.generation.pojo.core.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; +import static uk.gov.justice.generation.utils.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; import java.util.List; import java.util.Map; diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/classmodifying/PluginContextTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/classmodifying/PluginContextTest.java index 12d65a1..2a46c57 100644 --- a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/classmodifying/PluginContextTest.java +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/classmodifying/PluginContextTest.java @@ -8,7 +8,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static uk.gov.justice.generation.pojo.core.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; +import static uk.gov.justice.generation.utils.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; import uk.gov.justice.generation.pojo.core.PojoGeneratorProperties; import uk.gov.justice.generation.pojo.generators.ClassNameFactory; diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/factory/PluginsFromClassnameListFactoryTest.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/factory/PluginsFromClassnameListFactoryTest.java index 53707ea..9513e92 100644 --- a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/factory/PluginsFromClassnameListFactoryTest.java +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/plugin/factory/PluginsFromClassnameListFactoryTest.java @@ -5,7 +5,7 @@ import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; -import static uk.gov.justice.generation.pojo.core.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; +import static uk.gov.justice.generation.utils.PojoGeneratorPropertiesBuilder.pojoGeneratorPropertiesBuilder; import uk.gov.justice.generation.pojo.core.PojoGeneratorProperties; diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesBuilder.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/PojoGeneratorPropertiesBuilder.java similarity index 54% rename from pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesBuilder.java rename to pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/PojoGeneratorPropertiesBuilder.java index fec79ad..c647a88 100644 --- a/pojo-generator-core/src/test/java/uk/gov/justice/generation/pojo/core/PojoGeneratorPropertiesBuilder.java +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/PojoGeneratorPropertiesBuilder.java @@ -1,12 +1,11 @@ -package uk.gov.justice.generation.pojo.core; +package uk.gov.justice.generation.utils; -import static org.junit.Assert.assertTrue; +import static uk.gov.justice.generation.utils.ReflectionUtil.setField; + +import uk.gov.justice.generation.pojo.core.PojoGeneratorProperties; -import java.lang.reflect.Field; -import java.util.Arrays; import java.util.List; import java.util.Map; -import java.util.Optional; public class PojoGeneratorPropertiesBuilder { @@ -50,32 +49,4 @@ public PojoGeneratorProperties build() throws IllegalAccessException { return pojoGeneratorProperties; } - /** - * sets value of the field by reflection - * - * @param object - object to modify - * @param fieldName - name of the field belonging to the object - * @param fieldValue - value of the field to be set - * @throws IllegalAccessException if unable to access field - */ - public static void setField(final Object object, final String fieldName, final Object fieldValue) - throws IllegalAccessException { - final Field field = fieldOf(object.getClass(), fieldName); - field.setAccessible(true); - field.set(object, fieldValue); - } - - /** - * Searches for a field in the given class by reflection - * - * @param clazz - class type - * @param fieldName - name of field in class - * @return - field belonging to the given clazz with the given fieldName - */ - public static Field fieldOf(final Class clazz, final String fieldName) { - final Optional field = Arrays.stream(clazz.getDeclaredFields()).filter(f -> f.getName().equals(fieldName)) - .findFirst(); - assertTrue(field.isPresent()); - return field.get(); - } } diff --git a/pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/ReflectionUtil.java b/pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/ReflectionUtil.java new file mode 100644 index 0000000..fb0a43d --- /dev/null +++ b/pojo-generator-core/src/test/java/uk/gov/justice/generation/utils/ReflectionUtil.java @@ -0,0 +1,55 @@ +package uk.gov.justice.generation.utils; + +import static org.junit.Assert.assertTrue; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.Optional; + +public class ReflectionUtil { + + private ReflectionUtil() { + } + + /** + * sets value of the field by reflection + * + * @param object - object to modify + * @param fieldName - name of the field belonging to the object + * @param fieldValue - value of the field to be set + * @throws IllegalAccessException if unable to access field + */ + public static void setField(final Object object, final String fieldName, final Object fieldValue) + throws IllegalAccessException { + final Field field = fieldOf(object.getClass(), fieldName); + field.setAccessible(true); + field.set(object, fieldValue); + } + + /** + * Get the value of a field from an Object + * + * @param object - object to find value from + * @param fieldName - name of field in class + * @return - field belonging to the given clazz with the given fieldName + */ + public static Object fieldValue(final Object object, final String fieldName) throws IllegalAccessException { + final Field field = fieldOf(object.getClass(), fieldName); + field.setAccessible(true); + return field.get(object); + } + + /** + * Searches for a field in the given class by reflection + * + * @param clazz - class type + * @param fieldName - name of field in class + * @return - field belonging to the given clazz with the given fieldName + */ + public static Field fieldOf(final Class clazz, final String fieldName) { + final Optional field = Arrays.stream(clazz.getDeclaredFields()).filter(f -> f.getName().equals(fieldName)) + .findFirst(); + assertTrue(field.isPresent()); + return field.get(); + } +}