diff --git a/catalog-core/src/main/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoader.java b/catalog-core/src/main/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoader.java index 33c38a3..48e0086 100644 --- a/catalog-core/src/main/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoader.java +++ b/catalog-core/src/main/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoader.java @@ -4,7 +4,6 @@ import static java.util.stream.Collectors.toMap; import uk.gov.justice.schema.catalog.domain.Catalog; -import uk.gov.justice.schema.catalog.domain.CatalogWrapper; import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader; import uk.gov.justice.schema.catalog.util.UrlConverter; @@ -42,7 +41,7 @@ public Map getCatalogs() { private Catalog loadCatalog(final URL catalogUrl) { try { - return objectMapper.readValue(catalogUrl, CatalogWrapper.class).getCatalog(); + return objectMapper.readValue(catalogUrl, Catalog.class); } catch (IOException e) { throw new SchemaCatalogException(format("Failed to convert to json loaded from '%s' to a Catalog pojo", catalogUrl.toString()), e); } diff --git a/catalog-core/src/main/resources/schema_catalog_schema.json b/catalog-core/src/main/resources/schema_catalog_schema.json new file mode 100644 index 0000000..f965e2e --- /dev/null +++ b/catalog-core/src/main/resources/schema_catalog_schema.json @@ -0,0 +1,53 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "group": { + "type": "array", + "items": { + "type": "object", + "properties": { + "baseLocation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "location": { + "location": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "location" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "baseLocation", + "name", + "schema" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "name", + "group" + ] +} diff --git a/catalog-core/src/test/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoaderTest.java b/catalog-core/src/test/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoaderTest.java index 3d0a8da..61812a0 100644 --- a/catalog-core/src/test/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoaderTest.java +++ b/catalog-core/src/test/java/uk/gov/justice/schema/catalog/ClasspathCatalogLoaderTest.java @@ -7,7 +7,7 @@ import static org.junit.Assert.fail; import static org.mockito.Mockito.when; -import uk.gov.justice.schema.catalog.domain.CatalogWrapper; +import uk.gov.justice.schema.catalog.domain.Catalog; import uk.gov.justice.schema.catalog.util.ClasspathResourceLoader; import uk.gov.justice.schema.catalog.util.UrlConverter; @@ -46,7 +46,7 @@ public void shouldThrowExceptionIfLoadingFileThrowsIOException() throws Exceptio when(classpathResourceLoader.getResources(ClasspathCatalogLoader.class, "json/schema/schema_catalog.json")).thenReturn(singletonList(url)); when(urlConverter.toUri(url)).thenReturn(uri); - when(objectMapper.readValue(url, CatalogWrapper.class)).thenThrow(ioException); + when(objectMapper.readValue(url, Catalog.class)).thenThrow(ioException); try { classpathCatalogLoader.getCatalogs(); diff --git a/catalog-core/src/test/resources/json/schema/schema_catalog.json b/catalog-core/src/test/resources/json/schema/schema_catalog.json index 53acf52..08ca509 100644 --- a/catalog-core/src/test/resources/json/schema/schema_catalog.json +++ b/catalog-core/src/test/resources/json/schema/schema_catalog.json @@ -1,30 +1,28 @@ { - "catalog": { - "name": "my catalog", - "group": [ - { - "name": "standards", - "baseLocation": "standards/", - "schema": [ - { - "id": "http://justice.gov.uk/standards/complex_address.json", - "location": "complex_address.json" - }, - { - "id": "http://justice.gov.uk/standards/address.json", - "location": "address.json" - } - ] - }, - { - "name": "staging interface", - "schema": [ - { - "id": "http://justice.gov.uk/context/person.json", - "location": "context/person.json" - } - ] - } - ] - } + "name": "my catalog", + "group": [ + { + "name": "standards", + "baseLocation": "standards/", + "schema": [ + { + "id": "http://justice.gov.uk/standards/complex_address.json", + "location": "complex_address.json" + }, + { + "id": "http://justice.gov.uk/standards/address.json", + "location": "address.json" + } + ] + }, + { + "name": "staging interface", + "schema": [ + { + "id": "http://justice.gov.uk/context/person.json", + "location": "context/person.json" + } + ] + } + ] } diff --git a/catalog-domain/src/main/java/uk/gov/justice/schema/catalog/domain/CatalogWrapper.java b/catalog-domain/src/main/java/uk/gov/justice/schema/catalog/domain/CatalogWrapper.java deleted file mode 100644 index 126e06c..0000000 --- a/catalog-domain/src/main/java/uk/gov/justice/schema/catalog/domain/CatalogWrapper.java +++ /dev/null @@ -1,15 +0,0 @@ -package uk.gov.justice.schema.catalog.domain; - -public class CatalogWrapper { - - private final Catalog catalog; - - public CatalogWrapper(final Catalog catalog) { - this.catalog = catalog; - } - - public Catalog getCatalog() { - return catalog; - } - -} diff --git a/catalog-domain/src/main/resources/domain/json_catalog.schema.json b/catalog-domain/src/main/resources/domain/json_catalog.schema.json deleted file mode 100644 index 7e53c79..0000000 --- a/catalog-domain/src/main/resources/domain/json_catalog.schema.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema#", - "id": "http://uk.gov.justice/standards/json_catalog.schema.json", - "definitions": { - "catalog": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "group": { - "type": "array", - "items": { - "$ref": "#/definitions/group" - } - } - }, - "required": [ - "group" - ], - "additionalProperties": false - }, - "group": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "baseLocation": { - "type": "string" - }, - "schema": { - "type": "array", - "items": { - "$ref": "#/definitions/schema" - } - } - }, - "required": [ - "name", - "schema" - ], - "additionalProperties": false - }, - "schema": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "location": { - "type": "string" - } - }, - "required": [ - "id", - "location" - ], - "additionalProperties": false - } - }, - "properties": { - "catalog": { - "$ref": "#/definitions/catalog" - } - }, - "required": [ - "catalog" - ], - "additionalProperties": false -} \ No newline at end of file diff --git a/catalog-generation-plugin-it/src/raml/json/schema/context/person.json b/catalog-generation-plugin-it/src/json/schema/context/person.json similarity index 100% rename from catalog-generation-plugin-it/src/raml/json/schema/context/person.json rename to catalog-generation-plugin-it/src/json/schema/context/person.json diff --git a/catalog-generation-plugin-it/src/raml/json/schema/standards/address.json b/catalog-generation-plugin-it/src/json/schema/standards/address.json similarity index 100% rename from catalog-generation-plugin-it/src/raml/json/schema/standards/address.json rename to catalog-generation-plugin-it/src/json/schema/standards/address.json diff --git a/catalog-generation-plugin-it/src/raml/json/schema/standards/complex_address.json b/catalog-generation-plugin-it/src/json/schema/standards/complex_address.json similarity index 100% rename from catalog-generation-plugin-it/src/raml/json/schema/standards/complex_address.json rename to catalog-generation-plugin-it/src/json/schema/standards/complex_address.json diff --git a/catalog-generation-plugin-it/src/raml/json/schema/standards/defendant.json b/catalog-generation-plugin-it/src/json/schema/standards/defendant.json similarity index 100% rename from catalog-generation-plugin-it/src/raml/json/schema/standards/defendant.json rename to catalog-generation-plugin-it/src/json/schema/standards/defendant.json diff --git a/catalog-generation/pom.xml b/catalog-generation/pom.xml index 272f99b..eadc43a 100644 --- a/catalog-generation/pom.xml +++ b/catalog-generation/pom.xml @@ -17,16 +17,6 @@ catalog-core ${project.version} - - uk.gov.justice.maven.generator - generator-core - ${generator-maven-plugin.version} - - - uk.gov.justice.maven.generator - parser-common - ${generator-maven-plugin.version} - org.reflections reflections diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContext.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContext.java index a5cd1c7..f7e8d02 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContext.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContext.java @@ -3,14 +3,10 @@ public class CatalogGenerationContext { private static final String CATALOG_FILENAME = "schema_catalog.json"; - private static final String JSON_SCHEMA_PATH = "raml/json/schema/"; public static final String AN_EMPTY_STRING = ""; public String getCatalogFilename() { return CATALOG_FILENAME; } - public String getJsonSchemaPath() { - return JSON_SCHEMA_PATH; - } } diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunner.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunner.java index 65ebbcd..0a89c36 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunner.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunner.java @@ -25,11 +25,12 @@ public CatalogGenerationRunner( this.urlConverter = urlConverter; } - public void generateCatalog(final String catalogName, final List schemaFiles, final Path catalogGenerationPath) { + public void generateCatalog(final String catalogName, final List schemaFiles, final Path catalogGenerationPath, final Path jsonSchemaPath) { final Catalog catalog = catalogObjectGenerator.generate( catalogName, - asUrls(schemaFiles)); + asUrls(schemaFiles), + jsonSchemaPath); catalogWriter.write(catalog, catalogGenerationPath); } diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGenerator.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGenerator.java index d6fdb0b..b25af5f 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGenerator.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGenerator.java @@ -7,6 +7,7 @@ import uk.gov.justice.schema.catalog.domain.Schema; import java.net.URL; +import java.nio.file.Path; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -20,10 +21,10 @@ public CatalogObjectGenerator(final SchemaDefParser schemaDefParser) { this.schemaDefParser = schemaDefParser; } - public Catalog generate(final String catalogName, final List schemaFiles) { + public Catalog generate(final String catalogName, final List schemaFiles, final Path jsonSchemaPath) { final List schemaDefs = schemaFiles.stream() - .map(schemaDefParser::parse) + .map(schemaFile -> schemaDefParser.parse(schemaFile, jsonSchemaPath)) .collect(toList()); final List groups = asGroups(schemaDefs); diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGenerator.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGenerator.java index 861bed3..178f5f1 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGenerator.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGenerator.java @@ -33,7 +33,8 @@ public void run(final List schemaFiles, final GeneratorConfig generatorConf final CatalogGeneratorProperties generatorProperties = (CatalogGeneratorProperties) generatorConfig.getGeneratorProperties(); final String catalogName = generatorProperties.getCatalogName(); + final Path jsonSchemaPath = generatorProperties.getJsonSchemaPath(); - catalogGenerationRunner.generateCatalog(catalogName, schemaFiles, catalogGenerationPath); + catalogGenerationRunner.generateCatalog(catalogName, schemaFiles, catalogGenerationPath, jsonSchemaPath); } } diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/ObjectFactory.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/ObjectFactory.java index 7768766..1af6e44 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/ObjectFactory.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/ObjectFactory.java @@ -32,7 +32,7 @@ public CatalogObjectGenerator catalogObjectGenerator() { } public SchemaDefParser schemaDefParser() { - return new SchemaDefParser(schemaIdParser(), catalogGenerationConstants()); + return new SchemaDefParser(schemaIdParser()); } public CatalogGenerationRunner catalogGenerationRunner() { diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDef.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDef.java index 84e7cc7..d1d77c7 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDef.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDef.java @@ -43,4 +43,15 @@ public String getBaseLocation() { public String getLocation() { return location; } + + @Override + public String toString() { + return "SchemaDef{" + + "schemaFile=" + schemaFile + + ", id=" + id + + ", groupName='" + groupName + '\'' + + ", baseLocation='" + baseLocation + '\'' + + ", location='" + location + '\'' + + '}'; + } } diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDefParser.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDefParser.java index 70a729d..34141e9 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDefParser.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/SchemaDefParser.java @@ -4,26 +4,23 @@ import java.net.URI; import java.net.URL; +import java.nio.file.Path; public class SchemaDefParser { private final SchemaIdParser schemaIdParser; - private final CatalogGenerationContext catalogGenerationContext; - public SchemaDefParser( - final SchemaIdParser schemaIdParser, - final CatalogGenerationContext catalogGenerationContext) { + public SchemaDefParser(final SchemaIdParser schemaIdParser) { this.schemaIdParser = schemaIdParser; - this.catalogGenerationContext = catalogGenerationContext; } - public SchemaDef parse(final URL schemaFile) { + public SchemaDef parse(final URL schemaFile, final Path jsonSchemaPath) { final URI id = schemaIdParser.parse(schemaFile); final String fileUrl = schemaFile.toString(); - final String jsonSchemaPath = catalogGenerationContext.getJsonSchemaPath(); - final String relativeUri = fileUrl.substring(fileUrl.indexOf(jsonSchemaPath) + jsonSchemaPath.length()); + final String jsonSchemaPathString = jsonSchemaPath.toString(); + final String relativeUri = fileUrl.substring(fileUrl.indexOf(jsonSchemaPathString) + jsonSchemaPathString.length() + 1); final int firstSlashIndex = relativeUri.indexOf('/'); diff --git a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorProperties.java b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorProperties.java index caba1ec..150996a 100644 --- a/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorProperties.java +++ b/catalog-generation/src/main/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorProperties.java @@ -2,6 +2,9 @@ import uk.gov.justice.maven.generator.io.files.parser.core.GeneratorProperties; +import java.nio.file.Path; +import java.nio.file.Paths; + import org.apache.maven.plugins.annotations.Parameter; public class CatalogGeneratorProperties implements GeneratorProperties { @@ -9,7 +12,14 @@ public class CatalogGeneratorProperties implements GeneratorProperties { @Parameter private String catalogName; + @Parameter(defaultValue = "json/schema/") + private String jsonSchemaPath = "json/schema/"; + public String getCatalogName() { return catalogName; } + + public Path getJsonSchemaPath() { + return Paths.get(jsonSchemaPath); + } } diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContextTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContextTest.java index a6688e0..af1ef39 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContextTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationContextTest.java @@ -18,9 +18,4 @@ public class CatalogGenerationContextTest { public void shouldGetCatalogFilename() throws Exception { assertThat(catalogGenerationContext.getCatalogFilename(), is("schema_catalog.json")); } - - @Test - public void shouldGetJsonSchemaPath() throws Exception { - assertThat(catalogGenerationContext.getJsonSchemaPath(), is("raml/json/schema/")); - } } diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunnerTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunnerTest.java index 00d1572..208611d 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunnerTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogGenerationRunnerTest.java @@ -39,6 +39,7 @@ public void shouldGenerateACatalogFile() throws Exception { final String catalogName = "catalog name"; final URI schemaFile = new URI("file:/schemaFile.json"); + final Path jsonSchemaPath = Paths.get("json/schema/"); final URL schemaFileUrl = schemaFile.toURL(); final Path catalogGenerationPath = Paths.get(new URI("file:/path/to/catalog/generation/directory")); @@ -47,9 +48,10 @@ public void shouldGenerateACatalogFile() throws Exception { when(urlConverter.toUrl(schemaFile)).thenReturn(schemaFileUrl); when(catalogObjectGenerator.generate( catalogName, - singletonList(schemaFileUrl))).thenReturn(catalog); + singletonList(schemaFileUrl), + jsonSchemaPath)).thenReturn(catalog); - catalogGenerationRunner.generateCatalog(catalogName, singletonList(schemaFile), catalogGenerationPath); + catalogGenerationRunner.generateCatalog(catalogName, singletonList(schemaFile), catalogGenerationPath, jsonSchemaPath); verify(catalogWriter).write(catalog, catalogGenerationPath); } diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGeneratorTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGeneratorTest.java index 3643f66..7f9479d 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGeneratorTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/CatalogObjectGeneratorTest.java @@ -8,6 +8,8 @@ import uk.gov.justice.schema.catalog.util.UrlConverter; import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; import org.junit.Test; @@ -16,7 +18,7 @@ public class CatalogObjectGeneratorTest { private final UrlConverter urlConverter = new UrlConverter(); private final SchemaIdParser schemaIdParser = new SchemaIdParser(urlConverter); - private final SchemaDefParser schemaDefParser = new SchemaDefParser(schemaIdParser, new CatalogGenerationContext()); + private final SchemaDefParser schemaDefParser = new SchemaDefParser(schemaIdParser); private final CatalogObjectGenerator catalogObjectGenerator = new CatalogObjectGenerator(schemaDefParser); @@ -24,6 +26,7 @@ public class CatalogObjectGeneratorTest { public void shouldParseAListOfSchemaFilesIntoACatalogObject() throws Exception { final String catalogName = "my catalog"; + final Path jsonSchemaPath = Paths.get("raml/json/schema/"); final ClassLoader classLoader = getClass().getClassLoader(); final URL personSchemaFile = classLoader.getResource("raml/json/schema/context/person.json"); @@ -38,7 +41,7 @@ public void shouldParseAListOfSchemaFilesIntoACatalogObject() throws Exception { defendantSchemaFile); - final Catalog catalog = catalogObjectGenerator.generate(catalogName, schemaFiles); + final Catalog catalog = catalogObjectGenerator.generate(catalogName, schemaFiles, jsonSchemaPath); assertThat(catalog.getName(), is(catalogName)); assertThat(catalog.getGroup().size(), is(2)); diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGeneratorTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGeneratorTest.java index d3ae5fe..9401194 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGeneratorTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/MavenCatalogGeneratorTest.java @@ -37,6 +37,7 @@ public void shouldInstantiateAndRunTheCatalogGeneration() throws Exception { final String catalogName = "my catalog"; final List schemaFiles = singletonList(new URI("/a-schema-file.json")); final Path catalogGenerationPath = Paths.get(new URI("file:/path/to/catalog/generation/directory")); + final Path jsonSchemaPath = Paths.get("json/schema/"); final CatalogGenerationRunner catalogGenerationRunner = mock(CatalogGenerationRunner.class); final GeneratorConfig generatorConfig = mock(GeneratorConfig.class); @@ -46,10 +47,11 @@ public void shouldInstantiateAndRunTheCatalogGeneration() throws Exception { when(objectFactory.catalogGenerationRunner()).thenReturn(catalogGenerationRunner); when(generatorConfig.getGeneratorProperties()).thenReturn(catalogGeneratorProperties); when(catalogGeneratorProperties.getCatalogName()).thenReturn(catalogName); + when(catalogGeneratorProperties.getJsonSchemaPath()).thenReturn(jsonSchemaPath); mavenCatalogGenerator.run(schemaFiles, generatorConfig); - verify(catalogGenerationRunner).generateCatalog(catalogName, schemaFiles, catalogGenerationPath); + verify(catalogGenerationRunner).generateCatalog(catalogName, schemaFiles, catalogGenerationPath, jsonSchemaPath); } @Test diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/SchemaDefParserTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/SchemaDefParserTest.java index 9df4d6c..12f9aeb 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/SchemaDefParserTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/SchemaDefParserTest.java @@ -6,6 +6,8 @@ import static uk.gov.justice.schema.catalog.generation.CatalogGenerationContext.AN_EMPTY_STRING; import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; import org.junit.Test; import org.junit.runner.RunWith; @@ -30,12 +32,13 @@ public class SchemaDefParserTest { @Test public void shouldParseTheSchemaUrlIntoIdGroupBaseLocationAndLocation() throws Exception { + final Path jsonSchemaPath = Paths.get("json/schema/"); final URL schemaFile = new URL("file:/path/to/raml/json/schema/a-sub-directory/some-schema-or-other.json"); final String schemaId = "http://justice.gov.uk/context/some-schema-or-other.json"; when(schemaIdParser.parse(schemaFile)).thenReturn(new URL(schemaId).toURI()); - final SchemaDef schemaDef = schemaDefParser.parse(schemaFile); + final SchemaDef schemaDef = schemaDefParser.parse(schemaFile, jsonSchemaPath); assertThat(schemaDef.getSchemaFile(), is(schemaFile)); assertThat(schemaDef.getId().toString(), is(schemaId)); @@ -47,12 +50,13 @@ public void shouldParseTheSchemaUrlIntoIdGroupBaseLocationAndLocation() throws E @Test public void shouldHandleSchemasAtTheRootOfTheJsonSchemaDirectory() throws Exception { + final Path jsonSchemaPath = Paths.get("json/schema/"); final URL schemaFile = new URL("file:/path/to/raml/json/schema/some-schema-or-other.json"); final String schemaId = "http://justice.gov.uk/context/some-schema-or-other.json"; when(schemaIdParser.parse(schemaFile)).thenReturn(new URL(schemaId).toURI()); - final SchemaDef schemaDef = schemaDefParser.parse(schemaFile); + final SchemaDef schemaDef = schemaDefParser.parse(schemaFile, jsonSchemaPath); assertThat(schemaDef.getSchemaFile(), is(schemaFile)); assertThat(schemaDef.getId().toString(), is(schemaId)); @@ -64,12 +68,13 @@ public void shouldHandleSchemasAtTheRootOfTheJsonSchemaDirectory() throws Except @Test public void shouldParseTheSchemaUrlIntoIdGroupBaseLocationAndLocationWithSubDirectories() throws Exception { + final Path jsonSchemaPath = Paths.get("json/schema/"); final URL schemaFile = new URL("file:/path/to/raml/json/schema/a-sub-directory/another-sub-directory/some-schema-or-other.json"); final String schemaId = "http://justice.gov.uk/context/some-schema-or-other.json"; when(schemaIdParser.parse(schemaFile)).thenReturn(new URL(schemaId).toURI()); - final SchemaDef schemaDef = schemaDefParser.parse(schemaFile); + final SchemaDef schemaDef = schemaDefParser.parse(schemaFile, jsonSchemaPath); assertThat(schemaDef.getSchemaFile(), is(schemaFile)); assertThat(schemaDef.getId().toString(), is(schemaId)); diff --git a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorPropertiesTest.java b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorPropertiesTest.java index 60efb61..9611a11 100644 --- a/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorPropertiesTest.java +++ b/catalog-generation/src/test/java/uk/gov/justice/schema/catalog/generation/maven/CatalogGeneratorPropertiesTest.java @@ -1,9 +1,11 @@ package uk.gov.justice.schema.catalog.generation.maven; import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; import static org.junit.Assert.assertThat; +import java.lang.reflect.Field; +import java.nio.file.Paths; + import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; @@ -16,8 +18,28 @@ public class CatalogGeneratorPropertiesTest { private CatalogGeneratorProperties catalogGeneratorProperties; @Test - public void shouldAddAPointlessTestToStopCoverallsFromWhingeing() throws Exception { + public void shouldGetTheCatalogNameSetByMaven() throws Exception { + + final String catalogName = "my catalog"; + setProperty(catalogGeneratorProperties, "catalogName", catalogName); + + assertThat(catalogGeneratorProperties.getCatalogName(), is(catalogName)); + } + + @Test + public void shouldGetTheJsonSchemaPathAsAPath() throws Exception { + + final String jsonSchemaPath = "json/schema/"; + + setProperty(catalogGeneratorProperties, "jsonSchemaPath", jsonSchemaPath); + + assertThat(catalogGeneratorProperties.getJsonSchemaPath(), is(Paths.get(jsonSchemaPath))); + } + + private void setProperty(final Object bean, final String propertyName, final Object propertyValue) throws Exception { - assertThat(catalogGeneratorProperties.getCatalogName(), is(nullValue())); + final Field declaredField = bean.getClass().getDeclaredField(propertyName); + declaredField.setAccessible(true); + declaredField.set(bean, propertyValue); } } diff --git a/integration-test/src/test/resources/json/schema/schema_catalog.json b/integration-test/src/test/resources/json/schema/schema_catalog.json index 908c942..e25db35 100644 --- a/integration-test/src/test/resources/json/schema/schema_catalog.json +++ b/integration-test/src/test/resources/json/schema/schema_catalog.json @@ -1,30 +1,28 @@ { - "catalog": { - "name": "my catalog", - "group": [ - { - "name": "staging interface", - "schema": [ - { - "id": "http://justice.gov.uk/context/person.json", - "location": "context/person.json" - } - ] - }, - { - "name": "standards", - "baseLocation": "standards/", - "schema": [ - { - "id": "http://justice.gov.uk/standards/complex_address.json", - "location": "complex_address.json" - }, - { - "id": "http://justice.gov.uk/standards/address.json", - "location": "address.json" - } - ] - } - ] - } + "name": "my catalog", + "group": [ + { + "name": "staging interface", + "schema": [ + { + "id": "http://justice.gov.uk/context/person.json", + "location": "context/person.json" + } + ] + }, + { + "name": "standards", + "baseLocation": "standards/", + "schema": [ + { + "id": "http://justice.gov.uk/standards/complex_address.json", + "location": "complex_address.json" + }, + { + "id": "http://justice.gov.uk/standards/address.json", + "location": "address.json" + } + ] + } + ] } diff --git a/schema-example-context/example-integration-test/pom.xml b/schema-example-context/example-integration-test/pom.xml index 7061587..27139a6 100644 --- a/schema-example-context/example-integration-test/pom.xml +++ b/schema-example-context/example-integration-test/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - example-context + schema-example-context uk.gov.justice.schema 1.0.0-SNAPSHOT @@ -15,13 +15,13 @@ uk.gov.justice.schema - example-command-api + schema-example-command-api ${project.version} test uk.gov.justice.schema - example-standards + schema-example-standards ${project.version} test diff --git a/schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/CatalogLoaderIT.java b/schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/ExampleCatalogLoaderIT.java similarity index 95% rename from schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/CatalogLoaderIT.java rename to schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/ExampleCatalogLoaderIT.java index 3aacd34..506a215 100644 --- a/schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/CatalogLoaderIT.java +++ b/schema-example-context/example-integration-test/src/test/java/uk/gov/justice/schema/catalog/ExampleCatalogLoaderIT.java @@ -15,7 +15,7 @@ import org.everit.json.schema.Schema; import org.junit.Test; -public class CatalogLoaderIT { +public class ExampleCatalogLoaderIT { private final FileContentsAsStringLoader fileContentsAsStringLoader = new FileContentsAsStringLoader(); private final JsonStringToSchemaConverter jsonStringToSchemaConverter = new JsonStringToSchemaConverter(); @@ -37,7 +37,7 @@ public class CatalogLoaderIT { schemaClientFactory); @Test - public void shouldMapSchemasOnClasspathToTheirIds() throws Exception { + public void shouldMapSchemasOnClasspathToTheirIds2() throws Exception { final Map idsToSchemaMap = catalogLoader.loadCatalogsFromClasspath(); diff --git a/schema-example-context/example-standards/pom.xml b/schema-example-context/example-standards/pom.xml deleted file mode 100644 index 4222200..0000000 --- a/schema-example-context/example-standards/pom.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - example-context - uk.gov.justice.schema - 1.0.0-SNAPSHOT - - 4.0.0 - - example-standards - - - \ No newline at end of file diff --git a/schema-example-context/example-standards/src/main/resources/json/schema/schema_catalog.json b/schema-example-context/example-standards/src/main/resources/json/schema/schema_catalog.json deleted file mode 100644 index 4e97306..0000000 --- a/schema-example-context/example-standards/src/main/resources/json/schema/schema_catalog.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "catalog": { - "name": "standards", - "group": [ - { - "name": "cakeshop", - "baseLocation": "standards/", - "schema": [ - { - "id": "http://justice.gov.uk/example/standard/ingredient.json", - "location": "ingredient.json" - } - ] - } - ] - } -} diff --git a/schema-example-context/pom.xml b/schema-example-context/pom.xml index 1ebd250..09f8bf3 100644 --- a/schema-example-context/pom.xml +++ b/schema-example-context/pom.xml @@ -10,12 +10,12 @@ 4.0.0 - example-context + schema-example-context pom schema-example-command-api - example-standards + schema-example-standards example-integration-test diff --git a/schema-example-context/schema-example-command-api/pom.xml b/schema-example-context/schema-example-command-api/pom.xml index 019ab94..3b3c9d4 100644 --- a/schema-example-context/schema-example-command-api/pom.xml +++ b/schema-example-context/schema-example-command-api/pom.xml @@ -3,13 +3,61 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - example-context + schema-example-context uk.gov.justice.schema 1.0.0-SNAPSHOT 4.0.0 - example-command-api + schema-example-command-api + + + + + generator-plugin + uk.gov.justice.maven.generator + ${generator-maven-plugin.version} + + + internal-jsons + + + uk.gov.justice.schema.catalog.generation.MavenCatalogGenerator + + + uk.gov.justice.schema.catalog.generation.io.parser.ListOfUriParser + + uk.gov.justice.events.pojo + src/raml/json/schema + + ${project.build.directory}/generated-resources + + + **/*.json + + + + + ${project.artifactId} + + + + generate + + generate-sources + + + + + uk.gov.justice.schema + catalog-generation + ${project.version} + + + + + diff --git a/schema-example-context/schema-example-command-api/src/main/resources/json/schema/schema_catalog.json b/schema-example-context/schema-example-command-api/src/main/resources/json/schema/schema_catalog.json deleted file mode 100644 index 7fdc75e..0000000 --- a/schema-example-context/schema-example-command-api/src/main/resources/json/schema/schema_catalog.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "catalog": { - "name": "example", - "group": [ - { - "name": "", - "baseLocation": "", - "schema": [ - { - "id": "http://justice.gov.uk/example/cakeshop/example.add-recipe.json", - "location": "example.add-recipe.json" - } - ] - } - ] - } -} diff --git a/schema-example-context/schema-example-command-api/src/main/resources/json/add-recipe.json b/schema-example-context/schema-example-command-api/src/raml/json/add-recipe.json similarity index 100% rename from schema-example-context/schema-example-command-api/src/main/resources/json/add-recipe.json rename to schema-example-context/schema-example-command-api/src/raml/json/add-recipe.json diff --git a/schema-example-context/schema-example-command-api/src/main/resources/json/schema/example.add-recipe.json b/schema-example-context/schema-example-command-api/src/raml/json/schema/example.add-recipe.json similarity index 100% rename from schema-example-context/schema-example-command-api/src/main/resources/json/schema/example.add-recipe.json rename to schema-example-context/schema-example-command-api/src/raml/json/schema/example.add-recipe.json diff --git a/schema-example-context/schema-example-standards/pom.xml b/schema-example-context/schema-example-standards/pom.xml new file mode 100644 index 0000000..707adf2 --- /dev/null +++ b/schema-example-context/schema-example-standards/pom.xml @@ -0,0 +1,62 @@ + + + + schema-example-context + uk.gov.justice.schema + 1.0.0-SNAPSHOT + + 4.0.0 + + schema-example-standards + + + + + generator-plugin + uk.gov.justice.maven.generator + ${generator-maven-plugin.version} + + + internal-jsons + + + uk.gov.justice.schema.catalog.generation.MavenCatalogGenerator + + + uk.gov.justice.schema.catalog.generation.io.parser.ListOfUriParser + + uk.gov.justice.events.pojo + ${project.basedir}/src/main/resources/json/schema + + ${project.build.directory}/generated-resources + + + **/*.json + + + + + ${project.artifactId} + + + + generate + + generate-sources + + + + + uk.gov.justice.schema + catalog-generation + ${project.version} + + + + + + + diff --git a/schema-example-context/example-standards/src/main/resources/json/schema/standards/ingredient.json b/schema-example-context/schema-example-standards/src/main/resources/json/schema/standards/ingredient.json similarity index 100% rename from schema-example-context/example-standards/src/main/resources/json/schema/standards/ingredient.json rename to schema-example-context/schema-example-standards/src/main/resources/json/schema/standards/ingredient.json diff --git a/schema-service/src/test/resources/json/schema/schema_catalog.json b/schema-service/src/test/resources/json/schema/schema_catalog.json index 908c942..bc5c0e1 100644 --- a/schema-service/src/test/resources/json/schema/schema_catalog.json +++ b/schema-service/src/test/resources/json/schema/schema_catalog.json @@ -1,30 +1,27 @@ { - "catalog": { - "name": "my catalog", - "group": [ - { - "name": "staging interface", - "schema": [ - { - "id": "http://justice.gov.uk/context/person.json", - "location": "context/person.json" - } - ] - }, - { - "name": "standards", - "baseLocation": "standards/", - "schema": [ - { - "id": "http://justice.gov.uk/standards/complex_address.json", - "location": "complex_address.json" - }, - { - "id": "http://justice.gov.uk/standards/address.json", - "location": "address.json" - } - ] - } - ] - } + "group": [ + { + "name": "staging interface", + "schema": [ + { + "id": "http://justice.gov.uk/context/person.json", + "location": "context/person.json" + } + ] + }, + { + "name": "standards", + "baseLocation": "standards/", + "schema": [ + { + "id": "http://justice.gov.uk/standards/complex_address.json", + "location": "complex_address.json" + }, + { + "id": "http://justice.gov.uk/standards/address.json", + "location": "address.json" + } + ] + } + ] }