You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2017/08/30 22:15:31 UTC
[1/2] cxf git commit: CXF-7489: Stax2Validation doesn't support
schema imports.
Repository: cxf
Updated Branches:
refs/heads/master ecac53e02 -> 09aacad7d
CXF-7489: Stax2Validation doesn't support schema imports.
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/9cb5b21d
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/9cb5b21d
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/9cb5b21d
Branch: refs/heads/master
Commit: 9cb5b21db2b3912ae84cb2cf6e0e040a821745d8
Parents: ecac53e
Author: facundov <fa...@epidataconsulting.com>
Authored: Tue Aug 29 11:32:53 2017 -0300
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Aug 30 16:38:48 2017 -0400
----------------------------------------------------------------------
.../validation/Stax2ValidationUtils.java | 65 +++++--
.../validation/Stax2ValidationUtilsTest.java | 175 +++++++++++++++++++
core/src/test/resources/schemas/echoSchema.xsd | 20 +++
core/src/test/resources/schemas/logSchema.xsd | 15 ++
.../resources/schemas/schemaWithImports.xsd | 4 +
5 files changed, 261 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/9cb5b21d/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java b/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
index 40d996c..6418b0b 100644
--- a/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
+++ b/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
@@ -25,10 +25,13 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.XMLConstants;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.apache.cxf.common.i18n.Message;
@@ -39,6 +42,7 @@ import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.staxutils.DepthXMLStreamReader;
import org.apache.ws.commons.schema.XmlSchema;
+import org.apache.ws.commons.schema.XmlSchemaExternal;
import org.codehaus.stax2.XMLStreamReader2;
import org.codehaus.stax2.XMLStreamWriter2;
import org.codehaus.stax2.validation.ValidationProblemHandler;
@@ -54,6 +58,7 @@ class Stax2ValidationUtils {
private static final String KEY = XMLValidationSchema.class.getName();
private static final boolean HAS_WOODSTOX;
+
static {
boolean hasw = false;
try {
@@ -61,7 +66,7 @@ class Stax2ValidationUtils {
new W3CMultiSchemaFactory(); // will throw if wrong woodstox.
hasw = true;
} catch (Throwable t) {
- //ignore
+ // ignore
}
HAS_WOODSTOX = hasw;
}
@@ -78,15 +83,15 @@ class Stax2ValidationUtils {
* @throws XMLStreamException
*/
public boolean setupValidation(XMLStreamReader reader, Endpoint endpoint, ServiceInfo serviceInfo)
- throws XMLStreamException {
+ throws XMLStreamException {
// Gosh, this is bad, but I don't know a better solution, unless we're willing
// to require the stax2 API no matter what.
XMLStreamReader effectiveReader = reader;
if (effectiveReader instanceof DepthXMLStreamReader) {
- effectiveReader = ((DepthXMLStreamReader)reader).getReader();
+ effectiveReader = ((DepthXMLStreamReader) reader).getReader();
}
- final XMLStreamReader2 reader2 = (XMLStreamReader2)effectiveReader;
+ final XMLStreamReader2 reader2 = (XMLStreamReader2) effectiveReader;
XMLValidationSchema vs = getValidator(endpoint, serviceInfo);
if (vs == null) {
return false;
@@ -95,7 +100,7 @@ class Stax2ValidationUtils {
public void reportProblem(XMLValidationProblem problem) throws XMLValidationException {
throw new Fault(new Message("READ_VALIDATION_ERROR", LOG, problem.getMessage()),
- Fault.FAULT_CODE_CLIENT);
+ Fault.FAULT_CODE_CLIENT);
}
});
reader2.validateAgainst(vs);
@@ -103,9 +108,9 @@ class Stax2ValidationUtils {
}
public boolean setupValidation(XMLStreamWriter writer, Endpoint endpoint, ServiceInfo serviceInfo)
- throws XMLStreamException {
+ throws XMLStreamException {
- XMLStreamWriter2 writer2 = (XMLStreamWriter2)writer;
+ XMLStreamWriter2 writer2 = (XMLStreamWriter2) writer;
XMLValidationSchema vs = getValidator(endpoint, serviceInfo);
if (vs == null) {
return false;
@@ -123,18 +128,17 @@ class Stax2ValidationUtils {
/**
* Create woodstox validator for a schema set.
*
- * @param schemas
- * @return
* @throws XMLStreamException
*/
- private XMLValidationSchema getValidator(Endpoint endpoint, ServiceInfo serviceInfo) throws XMLStreamException {
+ private XMLValidationSchema getValidator(Endpoint endpoint, ServiceInfo serviceInfo)
+ throws XMLStreamException {
synchronized (endpoint) {
- XMLValidationSchema ret = (XMLValidationSchema)endpoint.get(KEY);
+ XMLValidationSchema ret = (XMLValidationSchema) endpoint.get(KEY);
if (ret == null) {
if (endpoint.containsKey(KEY)) {
return null;
}
- Map<String, EmbeddedSchema> sources = new TreeMap<String, EmbeddedSchema>();
+ Map<String, EmbeddedSchema> sources = new TreeMap<>();
for (SchemaInfo schemaInfo : serviceInfo.getSchemas()) {
XmlSchema sch = schemaInfo.getSchema();
@@ -143,14 +147,17 @@ class Stax2ValidationUtils {
continue;
}
- Element serialized = schemaInfo.getElement();
- String schemaSystemId = sch.getSourceURI();
- if (null == schemaSystemId) {
- schemaSystemId = sch.getTargetNamespace();
+ if (sch.getTargetNamespace() == null && sch.getExternals().size() > 0) {
+ for (XmlSchemaExternal xmlSchemaExternal : sch.getExternals()) {
+ addSchema(sources, xmlSchemaExternal.getSchema(),
+ getElement(xmlSchemaExternal.getSchema().getSourceURI()));
+ }
+ continue;
+ } else if (sch.getTargetNamespace() == null) {
+ throw new IllegalStateException("An Schema without imports must have a targetNamespace");
}
- EmbeddedSchema embeddedSchema = new EmbeddedSchema(schemaSystemId, serialized);
- sources.put(sch.getTargetNamespace(), embeddedSchema);
+ addSchema(sources, sch, schemaInfo.getElement());
}
W3CMultiSchemaFactory factory = new W3CMultiSchemaFactory();
@@ -167,4 +174,26 @@ class Stax2ValidationUtils {
}
}
+ private void addSchema(Map<String, EmbeddedSchema> sources, XmlSchema schema, Element element)
+ throws XMLStreamException {
+ String schemaSystemId = schema.getSourceURI();
+ if (null == schemaSystemId) {
+ schemaSystemId = schema.getTargetNamespace();
+ }
+ EmbeddedSchema embeddedSchema = new EmbeddedSchema(schemaSystemId, element);
+ sources.put(schema.getTargetNamespace(), embeddedSchema);
+ }
+
+ private Element getElement(String path) throws XMLStreamException {
+ DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
+ try {
+ DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
+ Document doc = dBuilder.parse(path);
+ return doc.getDocumentElement();
+ } catch (Exception e) {
+ throw new XMLStreamException("There was an error trying to get external schemas " + e.getMessage());
+ }
+
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/9cb5b21d/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java b/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
new file mode 100644
index 0000000..703592d
--- /dev/null
+++ b/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
@@ -0,0 +1,175 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.staxutils.validation;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.service.model.SchemaInfo;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.ws.commons.schema.XmlSchemaCollection;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.easymock.EasyMock.anyObject;
+import static org.easymock.EasyMock.anyString;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.mock;
+import static org.easymock.EasyMock.replay;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertThat;
+
+@RunWith(Parameterized.class)
+public class Stax2ValidationUtilsTest {
+
+ private static final String VALID_MESSAGE_ECHO = "<echo xmlns=\"http://www.echo.org\">"
+ + "<echo>Testing echo</echo>" + "</echo>";
+
+ private static final String INVALID_MESSAGE_ECHO = "<wrongEcho xmlns=\"http://www.echo.org\">"
+ + "<echo>Testing echo</echo>" + "</wrongEcho>";
+
+ private static final String VALID_MESSAGE_LOG = "<log xmlns=\"http://www.log.org\">"
+ + "<message>Testing Log</message>" + "</log>";
+
+ private static final String INVALID_MESSAGE_LOG = "<wrongLog xmlns=\"http://www.log.org\">"
+ + "<message>Testing Log</message>" + "</wrongLog>";
+
+ private static final String ECHO_ERROR_MESSAGE = "tag name \"wrongEcho\" is not allowed.";
+
+ private static final String LOG_ERROR_MESSAGE = "tag name \"wrongLog\" is not allowed.";
+
+ private static final String ECHO_SCHEMA = "schemas/echoSchema.xsd";
+
+ private static final String LOG_SCHEMA = "schemas/logSchema.xsd";
+
+ private static final String MULTI_IMPORT_SCHEMA = "schemas/schemaWithImports.xsd";
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ private Stax2ValidationUtils utils = new Stax2ValidationUtils();
+ private XMLStreamReader xmlReader;
+ private final Endpoint endpoint = mock(Endpoint.class);
+ private final ServiceInfo serviceInfo = new ServiceInfo();
+ private final SchemaInfo schemaInfo = new SchemaInfo("testUri");
+
+ private String validMessage;
+
+ private String invalidMessage;
+
+ private String errorMessage;
+
+ private String schemaPath;
+
+ public Stax2ValidationUtilsTest(String validMessage, String invalidMessage, String errorMessage,
+ String schemaPath) {
+ this.validMessage = validMessage;
+ this.invalidMessage = invalidMessage;
+ this.errorMessage = errorMessage;
+ this.schemaPath = schemaPath;
+ }
+
+ @Parameterized.Parameters
+ public static Collection<String[]> data() {
+ List<String[]> parameters = new ArrayList();
+ parameters.add(new String[]{VALID_MESSAGE_ECHO, INVALID_MESSAGE_ECHO, ECHO_ERROR_MESSAGE, MULTI_IMPORT_SCHEMA});
+ parameters.add(new String[]{VALID_MESSAGE_LOG, INVALID_MESSAGE_LOG, LOG_ERROR_MESSAGE, MULTI_IMPORT_SCHEMA});
+ parameters.add(new String[]{VALID_MESSAGE_ECHO, INVALID_MESSAGE_ECHO, ECHO_ERROR_MESSAGE, ECHO_SCHEMA});
+ parameters.add(new String[]{VALID_MESSAGE_LOG, INVALID_MESSAGE_LOG, LOG_ERROR_MESSAGE, LOG_SCHEMA});
+ return parameters;
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ XmlSchemaCollection schemaCol = new XmlSchemaCollection();
+ InputStream io = getClass().getClassLoader().getResourceAsStream(schemaPath);
+ schemaCol.setBaseUri(getTestBaseURI());
+ schemaCol.read(new StreamSource(io));
+ serviceInfo.addSchema(schemaInfo);
+ schemaInfo.setSchema(schemaCol.getXmlSchemas()[0]);
+ expect(endpoint.get(anyObject())).andReturn(null);
+ expect(endpoint.containsKey(anyObject())).andReturn(false);
+ expect(endpoint.put(anyString(), anyObject())).andReturn(null);
+ replay(endpoint);
+ }
+
+ @Test
+ public void testValidMessage() throws Exception {
+ Throwable exception = null;
+ xmlReader = createReader(validMessage);
+ utils.setupValidation(xmlReader, endpoint, serviceInfo);
+ try {
+ while (xmlReader.hasNext()) {
+ xmlReader.next();
+ }
+ } catch (Throwable e) {
+ exception = e;
+ }
+
+ assertThat(exception, is(nullValue()));
+ }
+
+ @Test
+ public void testInvalidMessage() throws Exception {
+ Throwable exception = null;
+ xmlReader = createReader(invalidMessage);
+ utils.setupValidation(xmlReader, endpoint, serviceInfo);
+ try {
+ while (xmlReader.hasNext()) {
+ xmlReader.next();
+ }
+ } catch (Throwable e) {
+ exception = e;
+ }
+
+ assertThat(exception, is(notNullValue()));
+ assertThat(exception.getMessage(), containsString(errorMessage));
+ }
+
+ private String getTestBaseURI() {
+ ClassLoader classLoader = getClass().getClassLoader();
+ File file = new File(classLoader.getResource(schemaPath).getFile());
+ return file.getAbsolutePath();
+ }
+
+ private XMLStreamReader createReader(String message) throws XMLStreamException {
+ Reader reader = new StringReader(message);
+ XMLInputFactory factory = XMLInputFactory.newInstance();
+ return factory.createXMLStreamReader(reader);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/9cb5b21d/core/src/test/resources/schemas/echoSchema.xsd
----------------------------------------------------------------------
diff --git a/core/src/test/resources/schemas/echoSchema.xsd b/core/src/test/resources/schemas/echoSchema.xsd
new file mode 100644
index 0000000..0c23824
--- /dev/null
+++ b/core/src/test/resources/schemas/echoSchema.xsd
@@ -0,0 +1,20 @@
+<xsd:schema attributeFormDefault="qualified"
+ elementFormDefault="qualified" targetNamespace="http://www.echo.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="echo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="1"
+ name="echo" nillable="true" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="echoResponse">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="1"
+ name="out" nillable="true" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
http://git-wip-us.apache.org/repos/asf/cxf/blob/9cb5b21d/core/src/test/resources/schemas/logSchema.xsd
----------------------------------------------------------------------
diff --git a/core/src/test/resources/schemas/logSchema.xsd b/core/src/test/resources/schemas/logSchema.xsd
new file mode 100644
index 0000000..e970a37
--- /dev/null
+++ b/core/src/test/resources/schemas/logSchema.xsd
@@ -0,0 +1,15 @@
+<xsd:schema attributeFormDefault="qualified"
+ elementFormDefault="qualified" targetNamespace="http://www.log.org"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="log">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element maxOccurs="1" minOccurs="1"
+ name="message" nillable="true" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="logResponse">
+ <xsd:complexType />
+ </xsd:element>
+</xsd:schema>
http://git-wip-us.apache.org/repos/asf/cxf/blob/9cb5b21d/core/src/test/resources/schemas/schemaWithImports.xsd
----------------------------------------------------------------------
diff --git a/core/src/test/resources/schemas/schemaWithImports.xsd b/core/src/test/resources/schemas/schemaWithImports.xsd
new file mode 100644
index 0000000..33b3488
--- /dev/null
+++ b/core/src/test/resources/schemas/schemaWithImports.xsd
@@ -0,0 +1,4 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:import namespace="http://www.log.org" schemaLocation="logSchema.xsd"/>
+ <xsd:import namespace="http://www.echo.org" schemaLocation="echoSchema.xsd"/>
+</xsd:schema>
\ No newline at end of file
[2/2] cxf git commit: [CXF-7489] Use StaxUtils to parse,
fix compile errors This closes #308
Posted by dk...@apache.org.
[CXF-7489] Use StaxUtils to parse, fix compile errors
This closes #308
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/09aacad7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/09aacad7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/09aacad7
Branch: refs/heads/master
Commit: 09aacad7d26f7135ff829dd665f880120d44cba9
Parents: 9cb5b21
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Aug 30 18:14:52 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Aug 30 18:14:52 2017 -0400
----------------------------------------------------------------------
.../staxutils/validation/Stax2ValidationUtils.java | 17 ++++++-----------
.../validation/Stax2ValidationUtilsTest.java | 2 +-
2 files changed, 7 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/09aacad7/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java b/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
index 6418b0b..a2ea01c 100644
--- a/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
+++ b/core/src/main/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtils.java
@@ -25,8 +25,6 @@ import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
@@ -34,6 +32,8 @@ import javax.xml.stream.XMLStreamWriter;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+
import org.apache.cxf.common.i18n.Message;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.endpoint.Endpoint;
@@ -41,6 +41,7 @@ import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.service.model.ServiceInfo;
import org.apache.cxf.staxutils.DepthXMLStreamReader;
+import org.apache.cxf.staxutils.StaxUtils;
import org.apache.ws.commons.schema.XmlSchema;
import org.apache.ws.commons.schema.XmlSchemaExternal;
import org.codehaus.stax2.XMLStreamReader2;
@@ -185,15 +186,9 @@ class Stax2ValidationUtils {
}
private Element getElement(String path) throws XMLStreamException {
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- try {
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(path);
- return doc.getDocumentElement();
- } catch (Exception e) {
- throw new XMLStreamException("There was an error trying to get external schemas " + e.getMessage());
- }
-
+ InputSource in = new InputSource(path);
+ Document doc = StaxUtils.read(in);
+ return doc.getDocumentElement();
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/09aacad7/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java b/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
index 703592d..e21bbf9 100644
--- a/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
+++ b/core/src/test/java/org/apache/cxf/staxutils/validation/Stax2ValidationUtilsTest.java
@@ -105,7 +105,7 @@ public class Stax2ValidationUtilsTest {
@Parameterized.Parameters
public static Collection<String[]> data() {
- List<String[]> parameters = new ArrayList();
+ List<String[]> parameters = new ArrayList<>();
parameters.add(new String[]{VALID_MESSAGE_ECHO, INVALID_MESSAGE_ECHO, ECHO_ERROR_MESSAGE, MULTI_IMPORT_SCHEMA});
parameters.add(new String[]{VALID_MESSAGE_LOG, INVALID_MESSAGE_LOG, LOG_ERROR_MESSAGE, MULTI_IMPORT_SCHEMA});
parameters.add(new String[]{VALID_MESSAGE_ECHO, INVALID_MESSAGE_ECHO, ECHO_ERROR_MESSAGE, ECHO_SCHEMA});