diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 0000000..3096444
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,228 @@
+
+
+
+ 4.0.0
+
+ io.openepcis
+ openepcis-document-converter-parent
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ openepcis-document-converter
+ openepcis-document-converter
+ Project to convert EPCIS events in XML format to JSON/JSON-LD and vice-versa. Also, supports the conversion of EPCIS 1.2 XML document to 2.0 XML document and vice
+ versa.
+ https://github.com/openepcis/openepcis-document-converter
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+
+
+
+
+
+ Aravinda Baliga B
+ aravinda.baliga@benelog.com
+ benelog GmbH & Co. KG
+ https://www.benelog.com
+
+
+ Sven Boeckelmann
+ sven.boeckelmann@benelog.com
+ benelog GmbH & Co. KG
+ https://www.benelog.com
+
+
+
+
+ scm:git:git://github.com/openepcis/openepcis-document-converter.git
+ scm:git:ssh://github.com:openepcis/openepcis-document-converter.git
+ https://github.com/openepcis/openepcis-document-converter/tree/main
+
+
+
+
+ io.openepcis
+ openepcis-model-rest
+ ${project.parent.version}
+
+
+ io.openepcis
+ openepcis-model-epcis
+ ${project.parent.version}
+
+
+ io.openepcis
+ openepcis-document-validation-service
+ ${project.parent.version}
+
+
+ io.openepcis
+ openepcis-repository-common
+
+
+ io.smallrye.reactive
+ mutiny
+
+
+ jakarta.enterprise
+ jakarta.enterprise.cdi-api
+ provided
+
+
+ jakarta.ws.rs
+ jakarta.ws.rs-api
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ provided
+
+
+
+
+ jakarta.xml.bind
+ jakarta.xml.bind-api
+
+
+ org.eclipse.persistence
+ org.eclipse.persistence.moxy
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+ com.fasterxml.jackson.core
+ jackson-core
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
+ commons-io
+ commons-io
+
+
+
+
+ io.openepcis
+ openepcis-epcis-constants
+ ${project.parent.version}
+
+
+
+
+ io.openepcis
+ openepcis-test-resources
+ ${project.parent.version}
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+ org.slf4j
+ slf4j-simple
+ test
+
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ ${java.version}
+ ${java.version}
+ ${project.build.sourceEncoding}
+
+
+
+ maven-surefire-plugin
+ 3.1.2
+
+
+
+
+
+
+
+ coverage
+
+ false
+
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+
+
+ report
+
+ report
+
+ verify
+
+
+
+
+
+
+
+
+
+
+
+ sonatype-releases
+ https://s01.oss.sonatype.org/content/repositories/releases
+
+
+
+ sonatype-staging
+ https://s01.oss.sonatype.org/content/repositories/snapshots
+
+ true
+ always
+
+
+
+
+
diff --git a/src/main/java/io/openepcis/convert/AttributePreScanUtil.java b/core/src/main/java/io/openepcis/converter/AttributePreScanUtil.java
similarity index 98%
rename from src/main/java/io/openepcis/convert/AttributePreScanUtil.java
rename to core/src/main/java/io/openepcis/converter/AttributePreScanUtil.java
index 7530312..40fd16d 100644
--- a/src/main/java/io/openepcis/convert/AttributePreScanUtil.java
+++ b/core/src/main/java/io/openepcis/converter/AttributePreScanUtil.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert;
+package io.openepcis.converter;
import java.io.BufferedInputStream;
import java.io.IOException;
diff --git a/src/main/java/io/openepcis/convert/Conversion.java b/core/src/main/java/io/openepcis/converter/Conversion.java
similarity index 99%
rename from src/main/java/io/openepcis/convert/Conversion.java
rename to core/src/main/java/io/openepcis/converter/Conversion.java
index 9fa19ac..6473e32 100644
--- a/src/main/java/io/openepcis/convert/Conversion.java
+++ b/core/src/main/java/io/openepcis/converter/Conversion.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert;
+package io.openepcis.converter;
import io.openepcis.constants.EPCISFormat;
import io.openepcis.constants.EPCISVersion;
diff --git a/src/main/java/io/openepcis/convert/EventsConverter.java b/core/src/main/java/io/openepcis/converter/EventsConverter.java
similarity index 91%
rename from src/main/java/io/openepcis/convert/EventsConverter.java
rename to core/src/main/java/io/openepcis/converter/EventsConverter.java
index 240854c..2d4e3a2 100644
--- a/src/main/java/io/openepcis/convert/EventsConverter.java
+++ b/core/src/main/java/io/openepcis/converter/EventsConverter.java
@@ -13,10 +13,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert;
+package io.openepcis.converter;
-import io.openepcis.convert.collector.EPCISEventCollector;
-import io.openepcis.convert.collector.EventHandler;
+import io.openepcis.converter.collector.EPCISEventCollector;
+import io.openepcis.converter.collector.EventHandler;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import java.io.IOException;
diff --git a/src/main/java/io/openepcis/convert/VersionTransformer.java b/core/src/main/java/io/openepcis/converter/VersionTransformer.java
similarity index 95%
rename from src/main/java/io/openepcis/convert/VersionTransformer.java
rename to core/src/main/java/io/openepcis/converter/VersionTransformer.java
index f248aec..c9c013a 100644
--- a/src/main/java/io/openepcis/convert/VersionTransformer.java
+++ b/core/src/main/java/io/openepcis/converter/VersionTransformer.java
@@ -13,24 +13,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert;
+package io.openepcis.converter;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
-import io.openepcis.constants.EPCIS;
import io.openepcis.constants.EPCISFormat;
import io.openepcis.constants.EPCISVersion;
-import io.openepcis.convert.collector.EventHandler;
-import io.openepcis.convert.collector.JsonEPCISEventCollector;
-import io.openepcis.convert.collector.XmlEPCISEventCollector;
-import io.openepcis.convert.exception.FormatConverterException;
-import io.openepcis.convert.json.JSONEventValueTransformer;
-import io.openepcis.convert.json.JsonToXmlConverter;
-import io.openepcis.convert.util.ChannelUtil;
-import io.openepcis.convert.xml.ProblemResponseBodyMarshaller;
-import io.openepcis.convert.xml.XMLEventValueTransformer;
-import io.openepcis.convert.xml.XmlToJsonConverter;
-import io.openepcis.convert.xml.XmlVersionTransformer;
+import io.openepcis.converter.collector.EventHandler;
+import io.openepcis.converter.collector.JsonEPCISEventCollector;
+import io.openepcis.converter.collector.XmlEPCISEventCollector;
+import io.openepcis.converter.exception.FormatConverterException;
+import io.openepcis.converter.json.JSONEventValueTransformer;
+import io.openepcis.converter.json.JsonToXmlConverter;
+import io.openepcis.converter.util.ChannelUtil;
+import io.openepcis.converter.xml.ProblemResponseBodyMarshaller;
+import io.openepcis.converter.xml.XMLEventValueTransformer;
+import io.openepcis.converter.xml.XmlToJsonConverter;
+import io.openepcis.converter.xml.XmlVersionTransformer;
import io.openepcis.model.rest.ProblemResponseBody;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
@@ -55,6 +54,19 @@ public class VersionTransformer {
.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
private final ExecutorService executorService;
+
+ public XmlVersionTransformer getXmlVersionTransformer() {
+ return xmlVersionTransformer;
+ }
+
+ public XmlToJsonConverter getXmlToJsonConverter() {
+ return xmlToJsonConverter;
+ }
+
+ public JsonToXmlConverter getJsonToXmlConverter() {
+ return jsonToXmlConverter;
+ }
+
private final XmlVersionTransformer xmlVersionTransformer;
private final XmlToJsonConverter xmlToJsonConverter;
private final JsonToXmlConverter jsonToXmlConverter;
diff --git a/src/main/java/io/openepcis/convert/VersionTransformerFeature.java b/core/src/main/java/io/openepcis/converter/VersionTransformerFeature.java
similarity index 97%
rename from src/main/java/io/openepcis/convert/VersionTransformerFeature.java
rename to core/src/main/java/io/openepcis/converter/VersionTransformerFeature.java
index 35dc2c6..29a5749 100644
--- a/src/main/java/io/openepcis/convert/VersionTransformerFeature.java
+++ b/core/src/main/java/io/openepcis/converter/VersionTransformerFeature.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert;
+package io.openepcis.converter;
import java.util.Collections;
import java.util.List;
diff --git a/src/main/java/io/openepcis/convert/collector/EPCISEventCollector.java b/core/src/main/java/io/openepcis/converter/collector/EPCISEventCollector.java
similarity index 97%
rename from src/main/java/io/openepcis/convert/collector/EPCISEventCollector.java
rename to core/src/main/java/io/openepcis/converter/collector/EPCISEventCollector.java
index 2f49a85..e991d65 100644
--- a/src/main/java/io/openepcis/convert/collector/EPCISEventCollector.java
+++ b/core/src/main/java/io/openepcis/converter/collector/EPCISEventCollector.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert.collector;
+package io.openepcis.converter.collector;
import java.util.Map;
diff --git a/src/main/java/io/openepcis/convert/collector/EventHandler.java b/core/src/main/java/io/openepcis/converter/collector/EventHandler.java
similarity index 95%
rename from src/main/java/io/openepcis/convert/collector/EventHandler.java
rename to core/src/main/java/io/openepcis/converter/collector/EventHandler.java
index f7c0dd6..4751d1a 100644
--- a/src/main/java/io/openepcis/convert/collector/EventHandler.java
+++ b/core/src/main/java/io/openepcis/converter/collector/EventHandler.java
@@ -13,10 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert.collector;
+package io.openepcis.converter.collector;
+
+import io.openepcis.converter.exception.FormatConverterException;
+import io.openepcis.converter.validator.EPCISEventValidator;
-import io.openepcis.convert.exception.FormatConverterException;
-import io.openepcis.convert.validator.EPCISEventValidator;
import java.util.Map;
/**
diff --git a/src/main/java/io/openepcis/convert/collector/EventListCollector.java b/core/src/main/java/io/openepcis/converter/collector/EventListCollector.java
similarity index 97%
rename from src/main/java/io/openepcis/convert/collector/EventListCollector.java
rename to core/src/main/java/io/openepcis/converter/collector/EventListCollector.java
index f90d134..95e4b86 100644
--- a/src/main/java/io/openepcis/convert/collector/EventListCollector.java
+++ b/core/src/main/java/io/openepcis/converter/collector/EventListCollector.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert.collector;
+package io.openepcis.converter.collector;
import java.util.List;
diff --git a/src/main/java/io/openepcis/convert/collector/JsonEPCISEventCollector.java b/core/src/main/java/io/openepcis/converter/collector/JsonEPCISEventCollector.java
similarity index 98%
rename from src/main/java/io/openepcis/convert/collector/JsonEPCISEventCollector.java
rename to core/src/main/java/io/openepcis/converter/collector/JsonEPCISEventCollector.java
index ea4b384..247da2a 100644
--- a/src/main/java/io/openepcis/convert/collector/JsonEPCISEventCollector.java
+++ b/core/src/main/java/io/openepcis/converter/collector/JsonEPCISEventCollector.java
@@ -13,20 +13,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert.collector;
+package io.openepcis.converter.collector;
import static io.openepcis.constants.EPCIS.*;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import io.openepcis.constants.EPCISVersion;
-import io.openepcis.convert.exception.FormatConverterException;
+import io.openepcis.converter.exception.FormatConverterException;
import io.openepcis.model.epcis.util.DefaultJsonSchemaNamespaceURIResolver;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
-import lombok.Getter;
-import lombok.Setter;
+
import org.apache.commons.lang3.StringUtils;
/**
diff --git a/src/main/java/io/openepcis/convert/collector/XmlEPCISEventCollector.java b/core/src/main/java/io/openepcis/converter/collector/XmlEPCISEventCollector.java
similarity index 98%
rename from src/main/java/io/openepcis/convert/collector/XmlEPCISEventCollector.java
rename to core/src/main/java/io/openepcis/converter/collector/XmlEPCISEventCollector.java
index 3077695..6b889ce 100644
--- a/src/main/java/io/openepcis/convert/collector/XmlEPCISEventCollector.java
+++ b/core/src/main/java/io/openepcis/converter/collector/XmlEPCISEventCollector.java
@@ -13,18 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package io.openepcis.convert.collector;
+package io.openepcis.converter.collector;
import io.openepcis.constants.EPCIS;
-import io.openepcis.convert.exception.FormatConverterException;
+import io.openepcis.converter.exception.FormatConverterException;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.stream.*;
import javax.xml.stream.util.EventReaderDelegate;
-import lombok.Getter;
-import lombok.Setter;
+
import org.apache.commons.lang3.StringUtils;
/**
diff --git a/core/src/main/java/io/openepcis/converter/common/GS1FormatSupport.java b/core/src/main/java/io/openepcis/converter/common/GS1FormatSupport.java
new file mode 100644
index 0000000..fd0e58a
--- /dev/null
+++ b/core/src/main/java/io/openepcis/converter/common/GS1FormatSupport.java
@@ -0,0 +1,77 @@
+package io.openepcis.converter.common;
+
+import io.openepcis.constants.EPCISFormat;
+import io.openepcis.model.epcis.EPCISEvent;
+import io.openepcis.model.epcis.constants.CommonConstants;
+import io.openepcis.model.epcis.format.CBVFormat;
+import io.openepcis.model.epcis.format.EPCFormat;
+import io.openepcis.model.epcis.format.FormatPreference;
+import io.openepcis.repository.model.EPCISEventES;
+import io.openepcis.repository.util.EventConvertor;
+import jakarta.ws.rs.core.MediaType;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+public class GS1FormatSupport {
+
+ public interface RequestHeaderFacade {
+ String getHeader(String name);
+ }
+
+ public static final RequestHeaderFacade createRequestFacade(final Function function) {
+ return new RequestHeaderFacade() {
+ @Override
+ public String getHeader(String name) {
+ return function.apply(name);
+ }
+ };
+ }
+
+ public static final FormatPreference getFormatPreference(RequestHeaderFacade requestHeaderFacade) {
+ Optional epcFormat =
+ Optional.ofNullable(requestHeaderFacade.getHeader(CommonConstants.GS1_EPC_FORMAT));
+ Optional cbvFormat =
+ Optional.ofNullable(requestHeaderFacade.getHeader(CommonConstants.GS1_CBV_XML_FORMAT));
+ return FormatPreference.getInstance(epcFormat, cbvFormat);
+ }
+
+ public static final BiFunction