diff --git a/imixs-archive-documents/README.md b/imixs-archive-documents/README.md
index e2c4a29..859d594 100644
--- a/imixs-archive-documents/README.md
+++ b/imixs-archive-documents/README.md
@@ -234,11 +234,6 @@ The Adapter can be configured in an BPMN event to extract e-invoice data fields
-
-
-
-
-
If the type is not set the item value will be treated as a String. Possible types are 'double' and 'date'
If the document is not a e-invoice no items and also the einvoice.type field will be set.
diff --git a/imixs-archive-documents/pom.xml b/imixs-archive-documents/pom.xml
index 75ad2e0..7138e92 100644
--- a/imixs-archive-documents/pom.xml
+++ b/imixs-archive-documents/pom.xml
@@ -47,6 +47,14 @@
provided
+
+
+ org.mustangproject
+ validator
+ shaded
+ 2.14.2
+
+
Imixs-Archive Documents
\ No newline at end of file
diff --git a/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAdapter.java b/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAdapter.java
index 39eb3da..5bb0f0c 100644
--- a/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAdapter.java
+++ b/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAdapter.java
@@ -120,7 +120,7 @@ public class EInvoiceAdapter implements SignalAdapter {
DocumentService documentService;
@Inject
- private WorkflowService workflowService;
+ WorkflowService workflowService;
@Inject
SnapshotService snapshotService;
diff --git a/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAutoAdapter.java b/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAutoAdapter.java
index 6cc2260..90cea3a 100644
--- a/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAutoAdapter.java
+++ b/imixs-archive-documents/src/main/java/org/imixs/archive/documents/EInvoiceAutoAdapter.java
@@ -1,11 +1,21 @@
package org.imixs.archive.documents;
+import java.io.ByteArrayInputStream;
+import java.math.BigDecimal;
+import java.text.ParseException;
import java.util.logging.Logger;
+import javax.xml.xpath.XPathExpressionException;
+
import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.PluginException;
+import org.mustangproject.BankDetails;
+import org.mustangproject.Invoice;
+import org.mustangproject.TradeParty;
+import org.mustangproject.ZUGFeRD.TransactionCalculator;
+import org.mustangproject.ZUGFeRD.ZUGFeRDInvoiceImporter;
/**
* The EInvoiceAutoAdapter can detect and extract content from e-invoice
@@ -67,15 +77,34 @@ private void readEInvoiceContent(FileData eInvoiceFileData,
byte[] xmlData = readXMLContent(eInvoiceFileData);
logger.info("Autodetect e-invoice data...");
- createXMLDoc(xmlData);
+ // createXMLDoc(xmlData);
+ try {
+ ZUGFeRDInvoiceImporter zii = new ZUGFeRDInvoiceImporter(new ByteArrayInputStream(xmlData));
+
+ Invoice invoice = zii.extractInvoice();
+ workitem.setItemValue("invoice.number", invoice.getNumber());
+ workitem.setItemValue("cdtr.name", invoice.getOwnOrganisationName());
+ workitem.setItemValue("invoice.date", invoice.getIssueDate());
+
+ TransactionCalculator tc = new TransactionCalculator(invoice);
+ BigDecimal value = tc.getValue();
+ workitem.setItemValue("invoice.total.net", tc.getValue());
+ workitem.setItemValue("invoice.total", tc.getGrandTotal());
+ workitem.setItemValue("invoice.total.tax", tc.getGrandTotal().floatValue() - tc.getValue().floatValue());
- readItem(workitem, "//rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID", "text", "invoice.number");
- readItem(workitem, "//rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString/text()", "date",
- "invoice.date");
- readItem(workitem, "//ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount", "double",
- "invoice.total");
- readItem(workitem, "//ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name/text()", "text",
- "cdtr.name");
+ try {
+ TradeParty payee = invoice.getSender();
+ BankDetails bankDetails = payee.getBankDetails().get(0);
+ workitem.setItemValue("cdtr.bic", bankDetails.getBIC());
+ workitem.setItemValue("cdtr.iban", bankDetails.getIBAN());
+ } catch (Exception e) {
+ // no bank data
+ }
+
+ } catch (XPathExpressionException | ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
diff --git a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAdapterTest.java b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAdapterTest.java
similarity index 57%
rename from imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAdapterTest.java
rename to imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAdapterTest.java
index 03da6b1..a980e88 100644
--- a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAdapterTest.java
+++ b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAdapterTest.java
@@ -1,4 +1,4 @@
-package org.imixs.workflow.documents;
+package org.imixs.archive.documents;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -10,53 +10,71 @@
import java.util.List;
import java.util.Map;
-import org.imixs.archive.documents.EInvoiceAdapter;
import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection;
-import org.imixs.workflow.engine.DocumentService;
-import org.imixs.workflow.engine.WorkflowService;
+import org.imixs.workflow.engine.WorkflowMockEnvironment;
import org.imixs.workflow.exceptions.AdapterException;
import org.imixs.workflow.exceptions.ModelException;
import org.imixs.workflow.exceptions.PluginException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
+import org.mockito.MockitoAnnotations;
+import org.openbpmn.bpmn.BPMNModel;
/**
* This test class is testing the EInvoiceAdapter and tests different
* kind of files
*
- *
*/
-@ExtendWith(MockitoExtension.class)
class EInvoiceAdapterTest {
- @Mock
- private DocumentService documentService;
-
- @Mock
- private WorkflowService workflowService;
-
@InjectMocks
- private EInvoiceAdapter adapter;
+ protected EInvoiceAdapter adapter;
- private ItemCollection workitem;
- private ItemCollection event;
+ protected ItemCollection workitem;
+ protected ItemCollection event;
+ protected WorkflowMockEnvironment workflowEnvironment;
+ BPMNModel model = null;
@BeforeEach
- void setUp() throws PluginException, ModelException {
- // MockitoAnnotations.openMocks(this);
+ public void setUp() throws PluginException, ModelException {
+ // Ensures that @Mock and @InjectMocks annotations are processed
+ MockitoAnnotations.openMocks(this);
+ workflowEnvironment = new WorkflowMockEnvironment();
+
+ // register AccessAdapter Mock
+ workflowEnvironment.registerAdapter(adapter);
+
+ // Setup Environment
+ workflowEnvironment.setUp();
+ workflowEnvironment.loadBPMNModel("/bpmn/TestZUGFeRD.bpmn");
+ model = workflowEnvironment.getModelService().getModelManager().getModel("1.0.0");
+ adapter.workflowService = workflowEnvironment.getWorkflowService();
+
+ // prepare data
+ workitem = new ItemCollection().model("1.0.0").task(100);
- workitem = new ItemCollection();
event = new ItemCollection();
// set test txtActivityResult....
- String config = "\n";
- config += " - invoice.number=//rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID
\n";
- config += " - invoice.date=//rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime
\n";
- config += "";
+ String config = "\n" + //
+ " invoice.number\n" + //
+ " //rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID\n" + //
+ "\n" + //
+ "\n" + //
+ " invoice.date\n" + //
+ " date\n" + //
+ " //rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString/text()\n" + //
+ "\n" + //
+ "\n" + //
+ " invoice.total\n" + //
+ " double\n" + //
+ " //ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:GrandTotalAmount\n" + //
+ "\n" + //
+ "\n" + //
+ " cdtr.name\n" + //
+ " //ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name/text()\n" + //
+ "";
event.setItemValue("txtActivityResult", config);
}
@@ -85,6 +103,28 @@ void testExecuteWithStandaloneXML() throws AdapterException, PluginException, IO
assertEquals("Factur-X/ZUGFeRD 2.0", result);
}
+ /**
+ * This test uses the xpath expressions form teh workflow event to extract xml
+ * content.
+ *
+ * @throws AdapterException
+ * @throws PluginException
+ * @throws IOException
+ */
+ @Test
+ void testExecuteWithStandaloneXMLExtractData() throws AdapterException, PluginException, IOException {
+
+ // Prepare test data
+ FileData xmlFile = createFileData("e-invoice/Rechnung_R_00010.xml", "application/xml");
+ workitem.addFileData(xmlFile);
+
+ adapter.execute(workitem, event);
+
+ assertEquals("R-00010", workitem.getItemValueString("invoice.number"));
+ assertEquals("Max Mustermann", workitem.getItemValueString("cdtr.name"));
+
+ }
+
@Test
void testExecuteWithZIPContainingXML() throws AdapterException, PluginException, IOException {
// Prepare test data
diff --git a/imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAutoAdapterTest.java b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAutoAdapterTest.java
new file mode 100644
index 0000000..8cce664
--- /dev/null
+++ b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/EInvoiceAutoAdapterTest.java
@@ -0,0 +1,136 @@
+package org.imixs.archive.documents;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.imixs.workflow.FileData;
+import org.imixs.workflow.ItemCollection;
+import org.imixs.workflow.engine.WorkflowMockEnvironment;
+import org.imixs.workflow.exceptions.AdapterException;
+import org.imixs.workflow.exceptions.ModelException;
+import org.imixs.workflow.exceptions.PluginException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.MockitoAnnotations;
+import org.openbpmn.bpmn.BPMNModel;
+
+/**
+ * This test class is testing the EInvoiceAutoAdapter and tests different
+ * kind of files
+ *
+ */
+class EInvoiceAutoAdapterTest {
+
+ @InjectMocks
+ protected EInvoiceAutoAdapter adapter;
+
+ protected ItemCollection workitem;
+ protected ItemCollection event;
+ protected WorkflowMockEnvironment workflowEnvironment;
+ BPMNModel model = null;
+
+ @BeforeEach
+ public void setUp() throws PluginException, ModelException {
+ // Ensures that @Mock and @InjectMocks annotations are processed
+ MockitoAnnotations.openMocks(this);
+ workflowEnvironment = new WorkflowMockEnvironment();
+
+ // register AccessAdapter Mock
+ workflowEnvironment.registerAdapter(adapter);
+
+ // Setup Environment
+ workflowEnvironment.setUp();
+ workflowEnvironment.loadBPMNModel("/bpmn/TestZUGFeRD.bpmn");
+ model = workflowEnvironment.getModelService().getModelManager().getModel("1.0.0");
+ adapter.workflowService = workflowEnvironment.getWorkflowService();
+
+ // prepare data
+ workitem = new ItemCollection().model("1.0.0").task(100);
+
+ event = new ItemCollection();
+
+ }
+
+ /**
+ * Simple test that extracts the invoice from a XML file - number and the
+ * creditor name
+ *
+ * @throws AdapterException
+ * @throws PluginException
+ * @throws IOException
+ */
+ @Test
+ void testXMLWithExtraction() throws AdapterException, PluginException, IOException {
+ // Prepare test data
+ FileData xmlFile = createFileData("e-invoice/Rechnung_R_00010.xml", "application/xml");
+ workitem.addFileData(xmlFile);
+
+ adapter.execute(workitem, event);
+
+ assertEquals("R-00010", workitem.getItemValueString("invoice.number"));
+ assertEquals("Max Mustermann", workitem.getItemValueString("cdtr.name"));
+ }
+
+ /**
+ * Simple test that extracts the invoice from a zugferd pdf file - number and
+ * the creditor name
+ *
+ * @throws AdapterException
+ * @throws PluginException
+ * @throws IOException
+ */
+ @Test
+ void testZugferdWithExtraction() throws AdapterException, PluginException, IOException {
+ // Prepare test data
+ FileData xmlFile = createFileData("e-invoice/Rechnung_R_00011.pdf", "application/pdf");
+ workitem.addFileData(xmlFile);
+
+ adapter.execute(workitem, event);
+
+ assertEquals("R-00011", workitem.getItemValueString("invoice.number"));
+ assertEquals("Max Mustermann", workitem.getItemValueString("cdtr.name"));
+ ZonedDateTime expectedZdt = ZonedDateTime.of(2021, 7, 27, 0, 0, 0, 0, ZoneId.of("Europe/Berlin"));
+ Date expectedDate = Date.from(expectedZdt.toInstant());
+
+ assertEquals(expectedDate, workitem.getItemValueDate("invoice.date"));
+
+ // Payment data
+ assertEquals(892.50, workitem.getItemValueFloat("invoice.total"));
+ assertEquals(750, workitem.getItemValueFloat("invoice.total.net"));
+ assertEquals(142.5, workitem.getItemValueFloat("invoice.total.tax"));
+ // assertEquals("xxxxxR-00011", workitem.getItemValueString("cdtr.iban"));
+ // assertEquals("xxxxxR-00011", workitem.getItemValueString("cdtr.bic"));
+
+ }
+
+ /**
+ * Creates a FileData object from a file stored under /test/resources/
+ *
+ * @param fileName
+ * @param contentType
+ * @return
+ * @throws IOException
+ */
+ private FileData createFileData(String fileName, String contentType) throws IOException {
+ byte[] content = null;
+ ClassLoader classLoader = getClass().getClassLoader();
+ try (InputStream is = classLoader.getResourceAsStream(fileName)) {
+ if (is == null) {
+ throw new IOException("Resource not found: " + fileName);
+ }
+ content = is.readAllBytes();
+ }
+ Map> attributes = new HashMap<>();
+ return new FileData(fileName, content, contentType, attributes);
+ }
+
+}
\ No newline at end of file
diff --git a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/PDFXMLExtractorPluginTest.java b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/PDFXMLExtractorPluginTest.java
similarity index 97%
rename from imixs-archive-documents/src/test/java/org/imixs/workflow/documents/PDFXMLExtractorPluginTest.java
rename to imixs-archive-documents/src/test/java/org/imixs/archive/documents/PDFXMLExtractorPluginTest.java
index 203335e..4ba06e0 100644
--- a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/PDFXMLExtractorPluginTest.java
+++ b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/PDFXMLExtractorPluginTest.java
@@ -1,4 +1,4 @@
-package org.imixs.workflow.documents;
+package org.imixs.archive.documents;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -10,7 +10,6 @@
import java.util.logging.Logger;
import java.util.regex.Pattern;
-import org.imixs.archive.documents.PDFXMLExtractorPlugin;
import org.imixs.workflow.FileData;
import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.WorkflowMockEnvironment;
diff --git a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/TestEInvoiceTransform.java b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/TestEInvoiceTransform.java
similarity index 97%
rename from imixs-archive-documents/src/test/java/org/imixs/workflow/documents/TestEInvoiceTransform.java
rename to imixs-archive-documents/src/test/java/org/imixs/archive/documents/TestEInvoiceTransform.java
index de65d88..68d1bd1 100644
--- a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/TestEInvoiceTransform.java
+++ b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/TestEInvoiceTransform.java
@@ -1,4 +1,4 @@
-package org.imixs.workflow.documents;
+package org.imixs.archive.documents;
import java.io.IOException;
import java.util.logging.Logger;
diff --git a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/XSLTester.java b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/XSLTester.java
similarity index 98%
rename from imixs-archive-documents/src/test/java/org/imixs/workflow/documents/XSLTester.java
rename to imixs-archive-documents/src/test/java/org/imixs/archive/documents/XSLTester.java
index 504b669..1e055c3 100644
--- a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/XSLTester.java
+++ b/imixs-archive-documents/src/test/java/org/imixs/archive/documents/XSLTester.java
@@ -1,4 +1,4 @@
-package org.imixs.workflow.documents;
+package org.imixs.archive.documents;
import java.io.BufferedReader;
import java.io.FileOutputStream;
diff --git a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAutoAdapterTest.java b/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAutoAdapterTest.java
deleted file mode 100644
index 6b0663e..0000000
--- a/imixs-archive-documents/src/test/java/org/imixs/workflow/documents/EInvoiceAutoAdapterTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package org.imixs.workflow.documents;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.imixs.archive.documents.EInvoiceAdapter;
-import org.imixs.workflow.FileData;
-import org.imixs.workflow.ItemCollection;
-import org.imixs.workflow.engine.DocumentService;
-import org.imixs.workflow.engine.WorkflowService;
-import org.imixs.workflow.exceptions.AdapterException;
-import org.imixs.workflow.exceptions.ModelException;
-import org.imixs.workflow.exceptions.PluginException;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.InjectMocks;
-import org.mockito.Mock;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-/**
- * This test class is testing the EInvoiceAutoAdapter and tests different
- * kind of files
- *
- *
- */
-@ExtendWith(MockitoExtension.class)
-class EInvoiceAutoAdapterTest {
-
- @Mock
- private DocumentService documentService;
-
- @Mock
- private WorkflowService workflowService;
-
- @InjectMocks
- private EInvoiceAdapter adapter;
-
- private ItemCollection workitem;
- private ItemCollection event;
-
- @BeforeEach
- void setUp() throws PluginException, ModelException {
- // MockitoAnnotations.openMocks(this);
-
- workitem = new ItemCollection();
- event = new ItemCollection();
- // set test txtActivityResult....
- String config = "\n";
- config += " - invoice.number=//rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:ID
\n";
- config += " - invoice.date=//rsm:CrossIndustryInvoice/rsm:ExchangedDocument/ram:IssueDateTime
\n";
- config += "";
- event.setItemValue("txtActivityResult", config);
- }
-
- @Test
- void testExecuteWithPDFContainingXML() throws AdapterException, PluginException, IOException {
- // Prepare test data
- FileData pdfFile = createFileData("e-invoice/Rechnung_R_00011.pdf", "application/pdf");
- workitem.addFileData(pdfFile);
- FileData fileData = adapter.detectEInvoice(workitem);
- String result = EInvoiceAdapter.detectEInvoiceType(fileData);
- assertNotNull(result);
- assertEquals("Factur-X/ZUGFeRD 2.0", result);
- }
-
- @Test
- void testExecuteWithStandaloneXML() throws AdapterException, PluginException, IOException {
- // Prepare test data
- FileData xmlFile = createFileData("e-invoice/Rechnung_R_00010.xml", "application/xml");
- workitem.addFileData(xmlFile);
-
- FileData fileData = adapter.detectEInvoice(workitem);
- String result = EInvoiceAdapter.detectEInvoiceType(fileData);
-
- // Verify the result
- assertNotNull(result);
- assertEquals("Factur-X/ZUGFeRD 2.0", result);
- }
-
- @Test
- void testExecuteWithZIPContainingXML() throws AdapterException, PluginException, IOException {
- // Prepare test data
- FileData zipFile = createFileData("e-invoice/XRechnung_Beispiel.zip", "application/zip");
- workitem.addFileData(zipFile);
-
- FileData fileData = adapter.detectEInvoice(workitem);
- String result = EInvoiceAdapter.detectEInvoiceType(fileData);
- // Verify the result
- assertNotNull(result);
- assertEquals("Factur-X/ZUGFeRD 2.0", result);
- }
-
- @Test
- void testExecuteWithNonEInvoiceFile() throws AdapterException, PluginException, IOException {
- // Prepare test data
- FileData txtFile = createFileData("e-invoice/document.txt", "text/plain");
- workitem.addFileData(txtFile);
-
- // Execute the adapter
- FileData fileData = adapter.detectEInvoice(workitem);
- // Verify the result
- assertNull(fileData);
- }
-
- @Test
- void testExecuteWithNoAttachments() throws AdapterException, PluginException {
- // Execute the adapter
- FileData fileData = adapter.detectEInvoice(workitem);
- // Verify the result
- assertNull(fileData);
- }
-
- /**
- * Creates a FileData object from a file stored under /test/resources/
- *
- * @param fileName
- * @param contentType
- * @return
- * @throws IOException
- */
- private FileData createFileData(String fileName, String contentType) throws IOException {
- byte[] content = null;
- ClassLoader classLoader = getClass().getClassLoader();
- try (InputStream is = classLoader.getResourceAsStream(fileName)) {
- if (is == null) {
- throw new IOException("Resource not found: " + fileName);
- }
- content = is.readAllBytes();
- }
- Map> attributes = new HashMap<>();
- return new FileData(fileName, content, contentType, attributes);
- }
-
-}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index cbd3c79..8a34175 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
11
11
10.0.0
- 6.1.0-SNAPSHOT
+ 6.1.0
2.1.0-SNAPSHOT
2.0.21
6.0