Skip to content

Commit

Permalink
[#697] Encodings: Inject InputParameters into serializers
Browse files Browse the repository at this point in the history
  • Loading branch information
opatrascoiu committed Aug 4, 2024
1 parent 096ecdf commit 0cf8a2d
Show file tree
Hide file tree
Showing 16 changed files with 41 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,9 @@ protected AbstractFEELInterpreter<NUMBER, DATE, TIME, DATE_TIME, DURATION> creat
public DMNSerializer createDMNSerializer(BuildLogger logger, InputParameters inputParameters) {
SerializationFormat format = inputParameters.getFormat();
if (XML == format) {
return new XMLDMNSerializer(logger, inputParameters.isXsdValidation());
return new XMLDMNSerializer(logger, inputParameters);
} else if (format == JSON) {
return new JsonDMNSerializer(logger, inputParameters.isXsdValidation());
return new JsonDMNSerializer(logger, inputParameters);
} else {
throw new IllegalArgumentException(String.format("Format '%s' is not supported yet", format));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.gs.dmn.log.BuildLogger;
import com.gs.dmn.runtime.DMNRuntimeException;
import com.gs.dmn.serialization.xstream.XStreamMarshaller;
import com.gs.dmn.transformation.InputParameters;

import java.io.File;
import java.io.FileOutputStream;
Expand All @@ -33,13 +34,13 @@ public static boolean isDMNFile(File file) {
private final BuildLogger logger;
private final DMNMarshaller dmnMarshaller;

private final boolean validateSchema;
private final InputParameters inputParameters;
private final DMNDialectTransformer dmnTransformer;

protected DMNSerializer(BuildLogger logger, DMNMarshaller dmnMarshaller, boolean validateSchema) {
protected DMNSerializer(BuildLogger logger, DMNMarshaller dmnMarshaller, InputParameters inputParameters) {
this.logger = logger;
this.dmnMarshaller = dmnMarshaller;
this.validateSchema = validateSchema;
this.inputParameters = inputParameters;
this.dmnTransformer = new DMNDialectTransformer(logger);
}

Expand Down Expand Up @@ -160,18 +161,18 @@ private TDefinitions transform(TDefinitions definitions) {
}

protected TDefinitions unmarshall(File input) {
return this.dmnMarshaller.unmarshal(input, this.validateSchema);
return this.dmnMarshaller.unmarshal(input, this.inputParameters.isXsdValidation());
}

protected TDefinitions unmarshall(URL input) {
return this.dmnMarshaller.unmarshal(input, this.validateSchema);
return this.dmnMarshaller.unmarshal(input, this.inputParameters.isXsdValidation());
}

protected TDefinitions unmarshall(InputStream input) {
return this.dmnMarshaller.unmarshal(input, this.validateSchema);
return this.dmnMarshaller.unmarshal(input, this.inputParameters.isXsdValidation());
}

protected TDefinitions unmarshall(Reader input) {
return this.dmnMarshaller.unmarshal(input, this.validateSchema);
return this.dmnMarshaller.unmarshal(input, this.inputParameters.isXsdValidation());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@

import com.gs.dmn.log.BuildLogger;
import com.gs.dmn.serialization.DMNSerializer;
import com.gs.dmn.transformation.InputParameters;

public class JsonDMNSerializer extends DMNSerializer {
public JsonDMNSerializer(BuildLogger logger, boolean validateSchema) {
super(logger, new JsonDMNMarshaller(logger), validateSchema);
public JsonDMNSerializer(BuildLogger logger, InputParameters inputParameters) {
super(logger, new JsonDMNMarshaller(logger), inputParameters);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,17 @@

import com.gs.dmn.log.BuildLogger;
import com.gs.dmn.serialization.DMNSerializer;
import com.gs.dmn.transformation.InputParameters;

import java.util.ArrayList;
import java.util.List;

public class XMLDMNSerializer extends DMNSerializer {
public XMLDMNSerializer(BuildLogger logger, boolean validateSchema) {
this(logger, new ArrayList<>(), validateSchema);
public XMLDMNSerializer(BuildLogger logger, InputParameters inputParameters) {
this(logger, new ArrayList<>(), inputParameters);
}

public XMLDMNSerializer(BuildLogger logger, List<DMNExtensionRegister> registers, boolean validateSchema) {
super(logger, DMNMarshallerFactory.newMarshallerWithExtensions(registers), validateSchema);
public XMLDMNSerializer(BuildLogger logger, List<DMNExtensionRegister> registers, InputParameters inputParameters) {
super(logger, DMNMarshallerFactory.newMarshallerWithExtensions(registers), inputParameters);
}
}
9 changes: 5 additions & 4 deletions dmn-core/src/main/java/com/gs/dmn/tck/TCKSerializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.gs.dmn.runtime.DMNRuntimeException;
import com.gs.dmn.tck.ast.TestCases;
import com.gs.dmn.tck.serialization.TCKMarshaller;
import com.gs.dmn.transformation.InputParameters;

import java.io.File;
import java.net.URL;
Expand All @@ -33,12 +34,12 @@ public static boolean isTCKFile(File file) {

private final BuildLogger logger;
private final TCKMarshaller marshaller;
private final boolean validateSchema;
private final InputParameters inputParameters;

public TCKSerializer(BuildLogger logger, TCKMarshaller marshaller, boolean validateSchema) {
public TCKSerializer(BuildLogger logger, TCKMarshaller marshaller, InputParameters inputParameters) {
this.logger = logger;
this.marshaller = marshaller;
this.validateSchema = validateSchema;
this.inputParameters = inputParameters;
}

public TestCases read(File input) {
Expand All @@ -53,7 +54,7 @@ public TestCases read(URL input) {
try {
logger.info(String.format("Reading TCK '%s' ...", input.toString()));

TestCases testCases = this.marshaller.unmarshal(input, this.validateSchema);
TestCases testCases = this.marshaller.unmarshal(input, this.inputParameters.isXsdValidation());

logger.info("TCK read.");
return testCases;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public TCKTestCasesToJavaJUnitTransformer(DMNDialectDefinition<NUMBER, DATE, TIM
DMNModelRepository repository = readModels(inputModelPath.toFile());
this.basicTransformer = this.dialectDefinition.createBasicTransformer(repository, lazyEvaluationDetector, inputParameters);
handleValidationErrors(this.dmnValidator.validate(repository));
this.testCasesReader = new XMLTCKSerializer(logger, true);
this.testCasesReader = new XMLTCKSerializer(logger, inputParameters);
this.tckUtil = new TCKUtil<>(basicTransformer, (StandardFEELLib<NUMBER, DATE, TIME, DATE_TIME, DURATION>) dialectDefinition.createFEELLib());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,17 @@
import com.gs.dmn.log.BuildLogger;
import com.gs.dmn.serialization.xstream.DMNExtensionRegister;
import com.gs.dmn.tck.TCKSerializer;
import com.gs.dmn.transformation.InputParameters;

import java.util.ArrayList;
import java.util.List;

public class XMLTCKSerializer extends TCKSerializer {
public XMLTCKSerializer(BuildLogger logger, boolean validateSchema) {
this(logger, new ArrayList<>(), validateSchema);
public XMLTCKSerializer(BuildLogger logger, InputParameters inputParameters) {
this(logger, new ArrayList<>(), inputParameters);
}

public XMLTCKSerializer(BuildLogger logger, List<DMNExtensionRegister> registers, boolean validateSchema) {
super(logger, TCKMarshallerFactory.newMarshallerWithExtensions(registers), validateSchema);
public XMLTCKSerializer(BuildLogger logger, List<DMNExtensionRegister> registers, InputParameters inputParameters) {
super(logger, TCKMarshallerFactory.newMarshallerWithExtensions(registers), inputParameters);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

public class DMNModelRepositoryTest extends AbstractTest {
private DMNModelRepository dmnModelRepository;
private final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, false);
private final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, makeInputParameters());

@BeforeEach
public void setUp() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public abstract class AbstractDMNInterpreterTest<NUMBER, DATE, TIME, DATE_TIME,
private static final boolean IGNORE_ERROR_FLAG = true;

private final DMNSerializer dmnSerializer = this.getDialectDefinition().createDMNSerializer(LOGGER, makeInputParameters());
private final TCKSerializer tckSerializer = new XMLTCKSerializer(LOGGER, true);
private final TCKSerializer tckSerializer = new XMLTCKSerializer(LOGGER, makeInputParameters());

protected DMNInterpreter<NUMBER, DATE, TIME, DATE_TIME, DURATION> interpreter;
private DMNTransformer<TestCases> dmnTransformer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import static org.junit.jupiter.api.Assertions.*;

public class DMNSerializerTest extends AbstractTest {
private final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, false);
private final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, makeInputParameters());

@Test
public void testRead() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import static org.junit.jupiter.api.Assertions.*;

public class JsonDMNSerializerTest extends AbstractTest {
private final DMNSerializer dmnSerializer = new JsonDMNSerializer(LOGGER, false);
private final DMNSerializer dmnSerializer = new JsonDMNSerializer(LOGGER, makeInputParameters());

@Test
public void testRead() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
public abstract class SimpleDMNTransformerTest extends AbstractFileTransformerTest {
protected static final ClassLoader CLASS_LOADER = SimpleDMNTransformerTest.class.getClassLoader();

protected final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, true);
protected final TCKSerializer tckSerializer = new XMLTCKSerializer(LOGGER, true);
protected final DMNSerializer dmnSerializer = new XMLDMNSerializer(LOGGER, makeInputParameters());
protected final TCKSerializer tckSerializer = new XMLTCKSerializer(LOGGER, makeInputParameters());

protected void doTest(String dmmVersion, List<String> dmnFileNames, String testsFileName, Map<String, Pair<String, String>> namespacePrefixMapping) throws Exception {
DMNTransformer<TestCases> transformer = getTransformer();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
public class SparseDecisionDetectorTest extends AbstractTest {
private SparseDecisionDetector detector;
private DMNModelRepository dmnModelRepository;
private final DMNSerializer dmnReader = new XMLDMNSerializer(LOGGER, false);
private final DMNSerializer dmnReader = new XMLDMNSerializer(LOGGER, makeInputParameters());

@BeforeEach
public void setUp() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import static org.junit.jupiter.api.Assertions.assertEquals;

public abstract class AbstractValidatorTest extends AbstractTest {
protected final DMNSerializer serializer = new XMLDMNSerializer(LOGGER, false);
protected final DMNSerializer serializer = new XMLDMNSerializer(LOGGER, makeInputParameters());

protected void validate(DMNValidator validator, URI fileURI, List<String> expectedErrors) {
DMNModelRepository repository = makeRepository(fileURI);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.gs.dmn.log.Slf4jBuildLogger;
import com.gs.dmn.serialization.DMNSerializer;
import com.gs.dmn.serialization.xstream.XMLDMNSerializer;
import com.gs.dmn.transformation.InputParameters;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand All @@ -31,7 +32,7 @@
public class BatchValidationTest {
private static final Logger LOGGER = LoggerFactory.getLogger(BatchValidationTest.class);

private final DMNSerializer serializer = new XMLDMNSerializer(new Slf4jBuildLogger(LOGGER), false);
private final DMNSerializer serializer = new XMLDMNSerializer(new Slf4jBuildLogger(LOGGER), new InputParameters());
private final DMNValidator validator = new CompositeDMNValidator(Arrays.asList(
new SweepRuleOverlapValidator(),
new SweepMissingIntervalValidator(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ protected AbstractFEELInterpreter<NUMBER, DATE, TIME, DATE_TIME, DURATION> creat
public DMNSerializer createDMNSerializer(BuildLogger logger, InputParameters inputParameters) {
SerializationFormat format = inputParameters.getFormat();
if (format == XML) {
return new XMLDMNSerializer(logger, Collections.singletonList(new SignavioExtensionRegister(inputParameters.getSchemaNamespace())), inputParameters.isXsdValidation());
return new XMLDMNSerializer(logger, Collections.singletonList(new SignavioExtensionRegister(inputParameters.getSchemaNamespace())), inputParameters);
} else if (format == JSON) {
return new JsonDMNSerializer(logger, inputParameters.isXsdValidation());
return new JsonDMNSerializer(logger, inputParameters);
} else {
throw new IllegalArgumentException(String.format("Format '%s' is not supported yet", format));
}
Expand Down

0 comments on commit 0cf8a2d

Please sign in to comment.