package com.github.fge.jsonschema.process; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.github.fge.jackson.JacksonUtils; import com.github.fge.jsonschema.core.exceptions.ProcessingException; import com.github.fge.jsonschema.core.processing.ProcessingResult; import com.github.fge.jsonschema.core.report.ListProcessingReport; import com.github.fge.jsonschema.core.report.ProcessingReport; import com.github.fge.jsonschema.core.tree.CanonicalSchemaTree; import com.github.fge.jsonschema.core.tree.SchemaTree; import com.github.fge.jsonschema.core.tree.key.SchemaKey; import com.github.fge.jsonschema.core.util.ValueHolder; import com.github.fge.jsonschema2pojo.JsonSchema2SourceCode; import javax.ws.rs.Path; import java.io.IOException; import static com.github.fge.jsonschema.constants.ResponseFields.*; @Path("/schema2pojo") public final class Schema2PojoProcessing extends Processing { private static final JsonSchema2SourceCode PROCESSOR = new JsonSchema2SourceCode(); @Override protected JsonNode buildResult(final String input) throws IOException, ProcessingException { final ObjectNode ret = FACTORY.objectNode(); final boolean invalidSchema = fillWithData(ret, INPUT, INVALID_INPUT, input); final JsonNode schemaNode = ret.remove(INPUT); if (invalidSchema) return ret; final SchemaTree tree = new CanonicalSchemaTree(SchemaKey.anonymousKey(), schemaNode); final ValueHolder<SchemaTree> holder = ValueHolder.hold("schema", tree); final ProcessingReport report = new ListProcessingReport(); final ProcessingResult<ValueHolder<String>> result = ProcessingResult.uncheckedResult(PROCESSOR, report, holder); final boolean success = result.isSuccess(); ret.put(VALID, success); final String content = success ? result.getResult().getValue() : JacksonUtils.prettyPrint(buildReport(result.getReport())); ret.put(RESULTS, content); return ret; } }