Skip to content
This repository has been archived by the owner on May 26, 2020. It is now read-only.

Commit

Permalink
Merge pull request #22 from CJSCommonPlatform/better-names
Browse files Browse the repository at this point in the history
use better names/naming for java classes
  • Loading branch information
mapingo committed Aug 30, 2017
2 parents 967b20e + 1700cd0 commit df4e557
Show file tree
Hide file tree
Showing 41 changed files with 284 additions and 274 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
import uk.gov.justice.generation.pojo.core.NameGenerator;
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory;
import uk.gov.justice.generation.pojo.integration.utils.ClassCompiler;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapper;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchema;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory;
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor;
import uk.gov.justice.generation.pojo.write.SourceWriter;
Expand Down Expand Up @@ -66,10 +66,10 @@ public void shouldAnArraySchemaDocumentWithAnArrayOfItemSchemas() throws Excepti
final String fieldName = rootFieldNameGenerator.rootFieldNameFrom(jsonSchemaFile);

final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor("uk.gov.justice.pojo.arrays", definitionFactory);
final JsonSchemaWrapperFactory jsonSchemaWrapperFactory = new JsonSchemaWrapperFactory();
final JsonSchemaWrapper jsonSchemaWrapper = jsonSchemaWrapperFactory.createWith(schema, new DefaultJsonSchemaAcceptorFactory(jsonSchemaWrapperFactory));
final VisitableSchemaFactory visitableSchemaFactory = new VisitableSchemaFactory();
final VisitableSchema visitableSchema = visitableSchemaFactory.createWith(schema, new DefaultAcceptorFactory(visitableSchemaFactory));

jsonSchemaWrapper.accept(fieldName, definitionBuilderVisitor);
visitableSchema.accept(fieldName, definitionBuilderVisitor);

final List<Class<?>> newClasses = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
import uk.gov.justice.generation.pojo.core.NameGenerator;
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory;
import uk.gov.justice.generation.pojo.integration.utils.ClassCompiler;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapper;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchema;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory;
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor;
import uk.gov.justice.generation.pojo.write.SourceWriter;
Expand Down Expand Up @@ -66,10 +66,10 @@ public void shouldParseAVeryComplexSchemaDocument() throws Exception {
final String fieldName = rootFieldNameGenerator.rootFieldNameFrom(jsonSchemaFile);

final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor("uk.gov.justice.pojo.combined.schema", definitionFactory);
final JsonSchemaWrapperFactory jsonSchemaWrapperFactory = new JsonSchemaWrapperFactory();
final JsonSchemaWrapper jsonSchemaWrapper = jsonSchemaWrapperFactory.createWith(schema, new DefaultJsonSchemaAcceptorFactory(jsonSchemaWrapperFactory));
final VisitableSchemaFactory visitableSchemaFactory = new VisitableSchemaFactory();
final VisitableSchema visitableSchema = visitableSchemaFactory.createWith(schema, new DefaultAcceptorFactory(visitableSchemaFactory));

jsonSchemaWrapper.accept(fieldName, definitionBuilderVisitor);
visitableSchema.accept(fieldName, definitionBuilderVisitor);

final List<Class<?>> newClasses = new ArrayList<>();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
import uk.gov.justice.generation.pojo.core.NameGenerator;
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory;
import uk.gov.justice.generation.pojo.integration.utils.ClassCompiler;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapper;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchema;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory;
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor;
import uk.gov.justice.generation.pojo.write.SourceWriter;
Expand Down Expand Up @@ -55,10 +55,10 @@ public void shouldParseAVeryComplexSchemaDocument() throws Exception {
final String fieldName = nameGenerator.rootFieldNameFrom(jsonSchemaFile);

final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor("uk.gov.justice.pojo.complex.schema", definitionFactory);
final JsonSchemaWrapperFactory jsonSchemaWrapperFactory = new JsonSchemaWrapperFactory();
final JsonSchemaWrapper jsonSchemaWrapper = jsonSchemaWrapperFactory.createWith(schema, new DefaultJsonSchemaAcceptorFactory(jsonSchemaWrapperFactory));
final VisitableSchemaFactory visitableSchemaFactory = new VisitableSchemaFactory();
final VisitableSchema visitableSchema = visitableSchemaFactory.createWith(schema, new DefaultAcceptorFactory(visitableSchemaFactory));

jsonSchemaWrapper.accept(fieldName, definitionBuilderVisitor);
visitableSchema.accept(fieldName, definitionBuilderVisitor);

javaGeneratorFactory
.createClassGeneratorsFor(definitionBuilderVisitor.getDefinitions())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
import uk.gov.justice.generation.pojo.generators.ClassGeneratable;
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory;
import uk.gov.justice.generation.pojo.integration.utils.ClassCompiler;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapper;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchema;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory;
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor;
import uk.gov.justice.generation.pojo.write.SourceWriter;
Expand Down Expand Up @@ -65,10 +65,10 @@ public void shouldBuildTypeSpecFromSchema() throws Exception {

final DefinitionBuilderVisitor definitionBuilderVisitor = new DefinitionBuilderVisitor("uk.gov.justice.pojo.definition.builder", definitionFactory);

final JsonSchemaWrapperFactory jsonSchemaWrapperFactory = new JsonSchemaWrapperFactory();
final JsonSchemaWrapper jsonSchemaWrapper = jsonSchemaWrapperFactory.createWith(schema, new DefaultJsonSchemaAcceptorFactory(jsonSchemaWrapperFactory));
final VisitableSchemaFactory visitableSchemaFactory = new VisitableSchemaFactory();
final VisitableSchema visitableSchema = visitableSchemaFactory.createWith(schema, new DefaultAcceptorFactory(visitableSchemaFactory));

jsonSchemaWrapper.accept(fieldName, definitionBuilderVisitor);
visitableSchema.accept(fieldName, definitionBuilderVisitor);

final ClassDefinition personClassDefinition = (ClassDefinition) definitionBuilderVisitor.getDefinitions().get(0);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
import uk.gov.justice.generation.pojo.core.UnsupportedSchemaException;
import uk.gov.justice.generation.pojo.validation.SchemaValidatorVisitor;
import uk.gov.justice.generation.pojo.validation.Validator;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapper;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchema;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;

import java.io.File;

Expand All @@ -27,10 +27,10 @@ public void shouldFailValidationIfAnEnumContainsDiversTypesOfValues() throws Exc
final File jsonSchemaFile = new File("src/test/resources/invalid-schemas/invalid-enum.json");
final Schema schema = schemaLoader.loadFrom(jsonSchemaFile);

final JsonSchemaWrapper jsonSchemaWrapper = new JsonSchemaWrapperFactory().createWith(schema, new DefaultJsonSchemaAcceptorFactory(new JsonSchemaWrapperFactory()));
final VisitableSchema visitableSchema = new VisitableSchemaFactory().createWith(schema, new DefaultAcceptorFactory(new VisitableSchemaFactory()));

try {
jsonSchemaWrapper.accept("", schemaValidatorVisitor);
visitableSchema.accept("", schemaValidatorVisitor);
fail();
} catch (final UnsupportedSchemaException expected) {
assertThat(expected.getMessage(), is("Enums must have members of the same type. Found java.lang.String, java.lang.Boolean out of possible values [Mr, false, Ms, 23, Mrs]"));
Expand All @@ -42,10 +42,10 @@ public void shouldFailValidationIfAnArrayContainsDiversTypesOfValues() throws Ex
final File jsonSchemaFile = new File("src/test/resources/invalid-schemas/invalid-array.json");
final Schema schema = schemaLoader.loadFrom(jsonSchemaFile);

final JsonSchemaWrapper jsonSchemaWrapper = new JsonSchemaWrapperFactory().createWith(schema, new DefaultJsonSchemaAcceptorFactory(new JsonSchemaWrapperFactory()));
final VisitableSchema visitableSchema = new VisitableSchemaFactory().createWith(schema, new DefaultAcceptorFactory(new VisitableSchemaFactory()));

try {
jsonSchemaWrapper.accept("", schemaValidatorVisitor);
visitableSchema.accept("", schemaValidatorVisitor);
fail();
} catch (final UnsupportedSchemaException expected) {
assertThat(expected.getMessage(), is("Arrays must have members of the same type. Found org.everit.json.schema.NumberSchema, org.everit.json.schema.StringSchema"));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package uk.gov.justice.generation;

import static java.lang.String.format;

import uk.gov.justice.generation.io.files.loader.SchemaLoader;
import uk.gov.justice.generation.pojo.core.ClassNameProvider;
import uk.gov.justice.generation.pojo.core.GenerationContext;
import uk.gov.justice.generation.pojo.core.NameGenerator;
import uk.gov.justice.generation.pojo.generators.JavaGeneratorFactory;
import uk.gov.justice.generation.pojo.validation.FileNameValidator;
import uk.gov.justice.generation.pojo.visitable.JsonSchemaWrapperFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultJsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.VisitableSchemaFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.DefaultAcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.DefaultDefinitionFactory;
import uk.gov.justice.generation.pojo.visitor.DefinitionBuilderVisitor;
import uk.gov.justice.generation.pojo.write.JavaSourceFileProvider;
Expand All @@ -19,28 +21,34 @@
import java.io.File;

import org.everit.json.schema.Schema;
import org.slf4j.Logger;

public class SchemaToJavaGenerator implements Generator<File> {
public class SchemaPojoGenerator implements Generator<File> {

private final SourceWriter sourceWriter = new SourceWriter();
private final JavaGeneratorFactory javaGeneratorFactory = new JavaGeneratorFactory();
private final NameGenerator nameGenerator = new NameGenerator();
private final FileNameValidator fileNameValidator = new FileNameValidator();
private final SchemaLoader schemaLoader = new SchemaLoader();
private JsonSchemaWrapperFactory jsonSchemaWrapperFactory = new JsonSchemaWrapperFactory();
private final VisitableSchemaFactory visitableSchemaFactory = new VisitableSchemaFactory();

@Override
public void run(final File source, final GeneratorConfig generatorConfig) {

final NonDuplicatingSourceWriter writer = new NonDuplicatingSourceWriter(new JavaSourceFileProvider(), sourceWriter);
final GenerationContext generationContext = new GenerationContext(generatorConfig.getOutputDirectory());

final Logger logger = generationContext.getLoggerFor(getClass());

logger.info("Generating java pojos from schema file '{}'", source.getName());

final Schema schema = schemaLoader.loadFrom(source);
final String fieldName = nameGenerator.rootFieldNameFrom(source);

final DefinitionBuilderVisitor definitionBuilderVisitor = constructDefinitionBuilderVisitor(source, generatorConfig.getBasePackageName());
final DefaultJsonSchemaAcceptorFactory jsonSchemaAcceptorFactory = new DefaultJsonSchemaAcceptorFactory(jsonSchemaWrapperFactory);
final DefaultAcceptorFactory jsonSchemaAcceptorFactory = new DefaultAcceptorFactory(visitableSchemaFactory);

jsonSchemaWrapperFactory.createWith(schema, jsonSchemaAcceptorFactory)
visitableSchemaFactory.createWith(schema, jsonSchemaAcceptorFactory)
.accept(fieldName, definitionBuilderVisitor);

javaGeneratorFactory
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public String rootFieldNameFrom(final File jsonSchemaFile) {
final String name = getNameFrom(fileName);

if (name.contains(".") || name.isEmpty()) {
throw new JsonSchemaParseException(format("Failed to load json schema file '%s'. File name is invalid", jsonSchemaFile.getAbsolutePath()));
throw new SchemaLoadingException(format("Failed to load json schema file '%s'. File name is invalid", jsonSchemaFile.getAbsolutePath()));
}

final String className = Stream.of(name.split("-")).map(StringUtils::capitalize).collect(joining());
Expand All @@ -34,7 +34,7 @@ private String getValidFileNameWithNoExtension(final File jsonSchemaFile) {
final String fileName = jsonSchemaFile.getName();

if (!fileName.endsWith(".json")) {
throw new JsonSchemaParseException(format("Failed to load json schema file '%s'. File does not have a '.json' extension", jsonSchemaFile.getAbsolutePath()));
throw new SchemaLoadingException(format("Failed to load json schema file '%s'. File does not have a '.json' extension", jsonSchemaFile.getAbsolutePath()));
}

return removeFileExtensionFrom(fileName);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package uk.gov.justice.generation.pojo.core;

public class SchemaLoadingException extends RuntimeException {

public SchemaLoadingException(final String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package uk.gov.justice.generation.pojo.validation;

import uk.gov.justice.generation.pojo.visitor.Visitor;

import org.everit.json.schema.ArraySchema;
import org.everit.json.schema.BooleanSchema;
import org.everit.json.schema.CombinedSchema;
Expand All @@ -8,7 +10,7 @@
import org.everit.json.schema.ObjectSchema;
import org.everit.json.schema.StringSchema;

public class SchemaValidatorVisitor implements uk.gov.justice.generation.pojo.visitor.Visitor {
public class SchemaValidatorVisitor implements Visitor {

private final Validator validator;

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,27 @@
import static java.lang.String.format;

import uk.gov.justice.generation.pojo.core.UnsupportedSchemaException;
import uk.gov.justice.generation.pojo.visitable.acceptor.JsonSchemaAcceptor;
import uk.gov.justice.generation.pojo.visitable.acceptor.JsonSchemaAcceptorFactory;
import uk.gov.justice.generation.pojo.visitable.acceptor.Acceptable;
import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorFactory;
import uk.gov.justice.generation.pojo.visitor.Visitor;

import java.util.Map;

import org.everit.json.schema.Schema;

public class JsonSchemaWrapper implements Visitable {
public class VisitableSchema implements Visitable {

private final Schema schema;
private final JsonSchemaAcceptorFactory jsonAcceptorFactory;
private final AcceptorFactory jsonAcceptorFactory;

public JsonSchemaWrapper(final Schema schema, final JsonSchemaAcceptorFactory jsonAcceptorFactory) {
public VisitableSchema(final Schema schema, final AcceptorFactory jsonAcceptorFactory) {
this.schema = schema;
this.jsonAcceptorFactory = jsonAcceptorFactory;
}

@Override
public void accept(final String fieldName, final Visitor visitor) {
final Map<Class<? extends Schema>, JsonSchemaAcceptor> acceptorMap = jsonAcceptorFactory.acceptorMap();
final Map<Class<? extends Schema>, Acceptable> acceptorMap = jsonAcceptorFactory.acceptorMap();

if (acceptorMap.containsKey(schema.getClass())) {
acceptorMap.get(schema.getClass()).accept(fieldName, visitor, schema);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package uk.gov.justice.generation.pojo.visitable;

import uk.gov.justice.generation.pojo.visitable.acceptor.AcceptorFactory;

import org.everit.json.schema.Schema;

public class VisitableSchemaFactory {

public VisitableSchema createWith(final Schema schema, final AcceptorFactory acceptorFactory) {
return new VisitableSchema(schema, acceptorFactory);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import org.everit.json.schema.Schema;

public interface JsonSchemaAcceptor {
public interface Acceptable {

void accept(final String fieldName, final Visitor visitor, final Schema schema);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

import org.everit.json.schema.Schema;

public interface JsonSchemaAcceptorFactory {
public interface AcceptorFactory {

Map<Class<? extends Schema>, JsonSchemaAcceptor> acceptorMap();
Map<Class<? extends Schema>, Acceptable> acceptorMap();

void visitSchema(String fieldName, Visitor visitor, Schema childSchema);
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import org.everit.json.schema.ArraySchema;
import org.everit.json.schema.Schema;

public class ArraySchemaAcceptor implements JsonSchemaAcceptor {
public class ArrayAcceptor implements Acceptable {

private final JsonSchemaAcceptorFactory jsonSchemaAcceptorFactory;
private final AcceptorFactory acceptorFactory;

public ArraySchemaAcceptor(final JsonSchemaAcceptorFactory jsonSchemaAcceptorFactory) {
this.jsonSchemaAcceptorFactory = jsonSchemaAcceptorFactory;
public ArrayAcceptor(final AcceptorFactory acceptorFactory) {
this.acceptorFactory = acceptorFactory;
}

@Override
Expand All @@ -30,7 +30,7 @@ public void accept(final String fieldName, final Visitor visitor, final Schema s

private void acceptArraySchema(final String fieldName, final ArraySchema arraySchema, final Schema schema, final Visitor visitor) {
visitor.enter(fieldName, arraySchema);
jsonSchemaAcceptorFactory.visitSchema(fieldName, visitor, schema);
acceptorFactory.visitSchema(fieldName, visitor, schema);
visitor.leave(arraySchema);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.everit.json.schema.BooleanSchema;
import org.everit.json.schema.Schema;

public class BooleanSchemaAcceptor implements JsonSchemaAcceptor {
public class BooleanAcceptor implements Acceptable {

@Override
public void accept(final String fieldName, final Visitor visitor, final Schema schema) {
Expand Down
Loading

0 comments on commit df4e557

Please sign in to comment.