improves testability of corpus-server-connector
diff --git a/corpus-server/corpus-server-connector/pom.xml b/corpus-server/corpus-server-connector/pom.xml
index 389cf55..d4f3028 100644
--- a/corpus-server/corpus-server-connector/pom.xml
+++ b/corpus-server/corpus-server-connector/pom.xml
@@ -102,6 +102,27 @@
 			<version>${derby.version}</version>
 			<scope>test</scope>
 		</dependency>
+
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derbytools</artifactId>
+			<version>${derby.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.slf4j</groupId>
+			<artifactId>jul-to-slf4j</artifactId>
+			<version>${slf4j.version}</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.logging.log4j</groupId>
+			<artifactId>log4j-slf4j2-impl</artifactId>
+			<version>${log4j2.version}</version>
+			<scope>test</scope>
+		</dependency>
 	</dependencies>
 	
 	<build>
diff --git a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
index 31f7741..7abe4df 100644
--- a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
+++ b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSCasWriter.java
@@ -39,8 +39,8 @@
 import org.apache.uima.cas.TypeSystem;
 import org.apache.uima.cas.impl.XmiCasSerializer;
 import org.apache.uima.resource.ResourceInitializationException;
-import org.apache.uima.util.Level;
-import org.apache.uima.util.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
 /**
@@ -48,6 +48,8 @@
  */
 public class CSCasWriter extends CasAnnotator_ImplBase {
 
+  private static final Logger LOG = LoggerFactory.getLogger(CSCasWriter.class);
+
   private String serverAddress;
   private String corpusName;
 
@@ -56,7 +58,6 @@
   
   private Type idType;
   private Feature idFeature;
-  private Logger logger;
 
   @Override
   public void initialize(UimaContext context) throws ResourceInitializationException {
@@ -64,8 +65,6 @@
 
     serverAddress = (String) context.getConfigParameterValue(CSQueueCollectionReader.SERVER_ADDRESS);
     corpusName = (String) context.getConfigParameterValue(CSQueueCollectionReader.CORPUS_NAME);
-    
-    logger = context.getLogger();
   }
 
   @Override
@@ -131,13 +130,9 @@
   private void logResponse(Response res, String casId) {
     int statusCode = res.getStatus();
     if (statusCode >= Response.Status.BAD_REQUEST.getStatusCode()) {
-      if (logger.isLoggable(Level.SEVERE)) {
-        logger.log(Level.SEVERE, "Error (" + statusCode + "), " + action + ", " + casId);
-      }
+      LOG.error("Error ({}), " + action + ", {}", statusCode, casId);
     } else {
-      if (logger.isLoggable(Level.FINE)) {
-        logger.log(Level.FINE, "OK (" + statusCode + "),  " + action + ", " + casId);
-      }
+      LOG.debug("OK ({}),  " + action + ", {}", statusCode, casId);
     }
   }
 }
diff --git a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
index f933ff8..bca229d 100644
--- a/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
+++ b/corpus-server/corpus-server-connector/src/main/java/org/apache/opennlp/corpus_server/connector/CSQueueCollectionReader.java
@@ -38,10 +38,10 @@
 import org.apache.uima.collection.CollectionException;
 import org.apache.uima.collection.CollectionReader_ImplBase;
 import org.apache.uima.resource.ResourceInitializationException;
-import org.apache.uima.util.Level;
-import org.apache.uima.util.Logger;
 import org.apache.uima.util.Progress;
 import org.glassfish.jersey.client.ClientResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A {@link org.apache.uima.collection.CollectionReader} which reads {@link CAS CASes} from a corpus
@@ -49,6 +49,8 @@
  */
 public class CSQueueCollectionReader extends CollectionReader_ImplBase {
 
+  private static final Logger LOG = LoggerFactory.getLogger(CSQueueCollectionReader.class);
+
   static final String SERVER_ADDRESS = "ServerAddress";
   
   static final String CORPUS_NAME = "CorpusName";
@@ -66,15 +68,10 @@
   
   private Iterator<String> casIds;
 
-  private Logger logger;
-
-
   @Override
   public void initialize() throws ResourceInitializationException {
     super.initialize();
     
-    logger = getLogger();
-    
     serverAddress = (String) getConfigParameterValue(SERVER_ADDRESS);
     
     // Retrieve corpus address ...
@@ -103,9 +100,7 @@
                   new RuntimeException("Failed to create queue: " + response.getStatus()));
         }
 
-        if (logger.isLoggable(Level.INFO)) {
-          logger.log(Level.INFO, "Successfully created queue: " + queueName + " for corpus: " + corpusName);
-        }
+        LOG.info("Successfully created queue: {} for corpus: {}", queueName, corpusName);
       }
     }
     
@@ -115,7 +110,7 @@
     WebTarget r = c.target(serverAddress + "/queues/" + queueName);
 
     while (true) {
-      System.out.println("Requesting next CAS ID!");
+      LOG.info("Requesting next CAS ID!");
 
       // TODO: Make query configurable ...
       try (Response response = r.path("_nextTask").request(MediaType.APPLICATION_JSON)
@@ -123,10 +118,10 @@
 
         if (response.getStatus() == Response.Status.OK.getStatusCode()) {
             String casId = response.readEntity(String.class);
-            System.out.println("Received CAS ID: " + casId);
+            LOG.info("Received CAS ID: {}", casId);
             casIdList.add(casId);
         } else if (response.getStatus() == Response.Status.NO_CONTENT.getStatusCode()) {
-          System.out.println("##### FINISHED #####");
+          LOG.info("##### FINISHED #####");
           break;
         }
       }
@@ -161,7 +156,7 @@
     try (InputStream casIn = casResponse.getEntityStream()) {
       UimaUtil.deserializeXmiCAS(cas, casIn);
     } catch (IOException e) {
-      logger.log(Level.SEVERE,"Failed to load CAS: " +  casId + " code: " + casResponse.getStatus());
+      LOG.error("Failed to load CAS: {} code: {}", casId, casResponse.getStatus());
       throw e;
     }
 
diff --git a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/AbstractCSTest.java b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/AbstractCSTest.java
index 39c62e3..c596950 100644
--- a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/AbstractCSTest.java
+++ b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/AbstractCSTest.java
@@ -27,6 +27,14 @@
 
 public abstract class AbstractCSTest {
 
+  static {
+    // Remove existing handlers
+    org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger();
+
+    // Install SLF4J bridge
+    org.slf4j.bridge.SLF4JBridgeHandler.install();
+  }
+
   protected static final String BASE_PATH = CSCollectionReaderTest.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm();
 
   protected static void cleanTestDB() throws IOException {
diff --git a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCasWriterTest.java b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCasWriterTest.java
index 35ec15b..14b915e 100644
--- a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCasWriterTest.java
+++ b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCasWriterTest.java
@@ -35,7 +35,6 @@
 
 import static org.junit.jupiter.api.Assertions.fail;
 
-@Disabled
 class CSCasWriterTest extends AbstractCSTest {
 
   private static final String CCPATH = "/CSCasConsumerTestDescriptor.xml";
diff --git a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCollectionReaderTest.java b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCollectionReaderTest.java
index 71b481b..0ef0d8c 100644
--- a/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCollectionReaderTest.java
+++ b/corpus-server/corpus-server-connector/src/test/java/org/apache/opennlp/corpus_server/connector/CSCollectionReaderTest.java
@@ -17,9 +17,9 @@
 
 package org.apache.opennlp.corpus_server.connector;
 
-
 import org.apache.opennlp.corpus_server.impl.DerbyCorporaStore;
 import org.apache.opennlp.corpus_server.store.CorporaStore;
+import org.apache.opennlp.corpus_server.store.CorpusStore;
 import org.apache.uima.UIMAFramework;
 import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.impl.XmiCasSerializer;
@@ -46,7 +46,6 @@
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
-@Disabled
 class CSCollectionReaderTest extends AbstractCSTest {
 
   private static final String CRDPATH = "/CSCollectionReaderTestDescriptor.xml";
@@ -61,11 +60,10 @@
          ByteArrayOutputStream os = new ByteArrayOutputStream()) {
       TypeSystemDescription tsd = UimaUtil.createTypeSystemDescription(in);
       tsd.toXML(os);
-      CorporaStore corporaStore = new DerbyCorporaStore();
-
-      corporaStore.initialize(BASE_PATH.replace("file:", "").replace("/test-classes", ""));
+      CorporaStore cs = new DerbyCorporaStore();
+      cs.initialize(BASE_PATH.replace("file:", "").replace("/test-classes", ""));
       byte[] indexMapping = new byte[] {};
-      corporaStore.createCorpus("wikinews", os.toByteArray(), indexMapping);
+      cs.createCorpus("wikinews", os.toByteArray(), indexMapping);
 
       os.reset();
       CAS cas = UimaUtil.createEmptyCAS(tsd);
@@ -76,8 +74,9 @@
       a.addToIndexes();
       XmiCasSerializer.serialize(cas, os);
 
-      corporaStore.getCorpus("wikinews").addCAS("111", os.toByteArray());
-      corporaStore.getCorpus("wikinews").addCAS("222", os.toByteArray());
+      CorpusStore wikiNews = cs.getCorpus("wikinews");
+      wikiNews.addCAS("111", os.toByteArray());
+      wikiNews.addCAS("222", os.toByteArray());
     } catch (Exception e) {
       fail(e.getLocalizedMessage());
     }
@@ -85,8 +84,8 @@
 
   @Test
   @Disabled
-    // TODO Investigate why this test fails with:
-    //  No value has been assigned to the mandatory configuration parameter corpusName.
+  // TODO Investigate why this test fails with:
+  //  java.net.ConnectException: Connection refused
   void explicitCRTest() {
     try {
       XMLInputSource s = new XMLInputSource(CSCollectionReaderTest.class.getResource(CRDPATH));
@@ -102,7 +101,7 @@
       cr.getNext(cas);
       assertFalse(cr.hasNext());
     } catch (Exception e) {
-      fail(e.getLocalizedMessage());
+      fail(e.getLocalizedMessage(), e);
     }
   }
 
diff --git a/corpus-server/corpus-server-connector/src/test/resources/CSCollectionReaderTestDescriptor.xml b/corpus-server/corpus-server-connector/src/test/resources/CSCollectionReaderTestDescriptor.xml
index 5caba80..912aef5 100644
--- a/corpus-server/corpus-server-connector/src/test/resources/CSCollectionReaderTestDescriptor.xml
+++ b/corpus-server/corpus-server-connector/src/test/resources/CSCollectionReaderTestDescriptor.xml
@@ -22,12 +22,30 @@
   <implementationName>org.apache.opennlp.corpus_server.connector.CSQueueCollectionReader</implementationName>
   <processingResourceMetaData>
     <name>CSCollectionReaderDescriptor</name>
-    <description></description>
+    <description/>
     <version>1.0</version>
-    <vendor></vendor>
+    <vendor/>
     <configurationParameters>
       <configurationParameter>
-        <name>corpusName</name>
+        <name>ServerAddress</name>
+        <type>String</type>
+        <multiValued>false</multiValued>
+        <mandatory>true</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>CorpusName</name>
+        <type>String</type>
+        <multiValued>false</multiValued>
+        <mandatory>true</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>QueueName</name>
+        <type>String</type>
+        <multiValued>false</multiValued>
+        <mandatory>true</mandatory>
+      </configurationParameter>
+      <configurationParameter>
+        <name>SearchQuery</name>
         <type>String</type>
         <multiValued>false</multiValued>
         <mandatory>true</mandatory>
@@ -39,7 +57,38 @@
         <mandatory>true</mandatory>
       </configurationParameter>
     </configurationParameters>
-    <configurationParameterSettings/>
+    <configurationParameterSettings>
+      <nameValuePair>
+        <name>ServerAddress</name>
+        <value>
+          <string>http://localhost:8080</string>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>CorpusName</name>
+        <value>
+          <string>Test</string>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>QueueName</name>
+        <value>
+          <string>qn1</string>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>SearchQuery</name>
+        <value>
+          <string>sq1</string>
+        </value>
+      </nameValuePair>
+      <nameValuePair>
+        <name>casIds</name>
+        <value>
+          <array><string>Id1</string></array>
+        </value>
+      </nameValuePair>
+    </configurationParameterSettings>
     <typeSystemDescription/>
     <typePriorities/>
     <fsIndexCollection/>
diff --git a/corpus-server/corpus-server-connector/src/test/resources/log4j2.xml b/corpus-server/corpus-server-connector/src/test/resources/log4j2.xml
new file mode 100644
index 0000000..817d9ff
--- /dev/null
+++ b/corpus-server/corpus-server-connector/src/test/resources/log4j2.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   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.
+-->
+<Configuration>
+    <Appenders>
+        <Console name="STDOUT" target="SYSTEM_OUT">
+            <!--
+                The pattern can be adjusted as needed, see https://logging.apache.org/log4j/2.x/manual/layouts.html
+            -->
+            <PatternLayout pattern="%m%n"/>
+        </Console>
+    </Appenders>
+
+    <Loggers>
+        <Logger name="org.apache.opennlp.corpus_server.connector" level="info"/>
+        <Root level="WARN">
+            <AppenderRef ref="STDOUT"/>
+        </Root>
+    </Loggers>
+</Configuration>
diff --git a/corpus-server/corpus-server-impl/pom.xml b/corpus-server/corpus-server-impl/pom.xml
index 0fc030e..8d47c7f 100644
--- a/corpus-server/corpus-server-impl/pom.xml
+++ b/corpus-server/corpus-server-impl/pom.xml
@@ -70,14 +70,24 @@
 			<groupId>org.apache.uima</groupId>
 			<artifactId>uimaj-core</artifactId>
 			<version>${uimaj.version}</version>
-			<scope>compile</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derby</artifactId>
+			<version>${derby.version}</version>
 		</dependency>
 
 		<dependency>
 			<groupId>org.apache.uima</groupId>
 			<artifactId>Lucas</artifactId>
 			<version>2.3.1</version>
-			<scope>compile</scope>
+			<exclusions>
+				<exclusion>
+					<groupId>log4j</groupId>
+					<artifactId>log4j</artifactId>
+				</exclusion>
+			</exclusions>
 		</dependency>
 
 		<dependency>
@@ -94,6 +104,7 @@
 			<groupId>org.junit.jupiter</groupId>
 			<artifactId>junit-jupiter-params</artifactId>
 		</dependency>
+
 	</dependencies>
 	
 	<build>
diff --git a/corpus-server/corpus-server-impl/src/main/java/org/apache/opennlp/corpus_server/impl/DerbyCorporaStore.java b/corpus-server/corpus-server-impl/src/main/java/org/apache/opennlp/corpus_server/impl/DerbyCorporaStore.java
index 45d8f6e..815918f 100644
--- a/corpus-server/corpus-server-impl/src/main/java/org/apache/opennlp/corpus_server/impl/DerbyCorporaStore.java
+++ b/corpus-server/corpus-server-impl/src/main/java/org/apache/opennlp/corpus_server/impl/DerbyCorporaStore.java
@@ -29,10 +29,9 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import javax.sql.DataSource;
+import org.slf4j.LoggerFactory;
 
 import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
 import org.apache.derby.jdbc.EmbeddedDataSource;
@@ -42,7 +41,7 @@
 
 public class DerbyCorporaStore extends AbstractCorporaStore {
 
-  private final static Logger LOGGER = Logger.getLogger(DerbyCorporaStore.class .getName());
+  private final static org.slf4j.Logger LOGGER = LoggerFactory.getLogger(DerbyCorporaStore.class.getName());
   public static final String DB_NAME = "XmiCasDB";
 
   private DataSource dataSource = null;
@@ -118,13 +117,11 @@
       }
 
     } catch (SQLException e) {
-      if (LOGGER.isLoggable(Level.SEVERE)) {
-        LOGGER.log(Level.SEVERE, "Failed to create corpus: " + corpusName, e);
-      }
+      LOGGER.error("Failed to create corpus: {}", corpusName, e);
       throw new IOException(e);
     }
-    
-    LOGGER.info("Created new corpus: " + corpusName);
+
+    LOGGER.info("Created new corpus: {}", corpusName);
 
     for (CorporaChangeListener listener : getListeners()) {
       // TODO: Maybe optimize this, or just pass the corpus id
@@ -149,9 +146,7 @@
       }
 
     } catch (SQLException e) {
-      if (LOGGER.isLoggable(Level.SEVERE)) {
-        LOGGER.log(Level.SEVERE, "Failed to retrieve corpus ids!", e);
-      }
+      LOGGER.error("Failed to retrieve corpus ids!", e);
       throw new IOException(e);
     }
     
@@ -168,9 +163,7 @@
 
       conn.commit();
     } catch (SQLException e) {
-      if (LOGGER.isLoggable(Level.SEVERE)) {
-        LOGGER.log(Level.SEVERE, "Failed to create corpus: " + corpusName, e);
-      }
+      LOGGER.error("Failed to create corpus: {}", corpusName, e);
       throw new IOException(e);
     }
 
@@ -205,10 +198,7 @@
         }
       }
     } catch (SQLException e) {
-      if (LOGGER.isLoggable(Level.SEVERE)) {
-        LOGGER.log(Level.SEVERE, "Failed to check if corpus exists!", e);
-      }
-      
+      LOGGER.error("Failed to check if corpus exists!", e);
       return null;
     }
     
diff --git a/corpus-server/pom.xml b/corpus-server/pom.xml
index 88d734e..9b4b35a 100644
--- a/corpus-server/pom.xml
+++ b/corpus-server/pom.xml
@@ -41,10 +41,10 @@
 	</modules>
 
   <properties>
-    <derby.version>10.17.1.0</derby.version>
     <!-- A minimum JDK version of 21 is required for modern Derby versions -->
     <maven.compiler.source>21</maven.compiler.source>
     <maven.compiler.target>21</maven.compiler.target>
+    <derby.version>10.17.1.0</derby.version>
   </properties>
 
   <dependencyManagement>
@@ -120,7 +120,10 @@
           <configuration>
             <source>${maven.compiler.source}</source>
             <target>${maven.compiler.target}</target>
-            <compilerArgument>-Xlint</compilerArgument>
+            <showWarnings>true</showWarnings>
+            <compilerArgs>
+              <arg>-Xlint:-options</arg>
+            </compilerArgs>
           </configuration>
         </plugin>
       </plugins>
diff --git a/pom.xml b/pom.xml
index 9e75a34..c4f5ef3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -565,7 +565,6 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.14.0</version>
                 <configuration>
                     <release>${java.version}</release>
                     <compilerArgument>-Xlint</compilerArgument>