Merge branch 'main' into feature/UIMA-6266-Clean-JSON-Wire-Format-for-CAS
* main:
[UIMA-6390] NPE when trying to access config names of fresh context
[UIMA-6390] NPE when trying to access config names of fresh context
[UIMA-6390] NPE when trying to access config names of fresh context
[UIMA-6390] NPE when trying to access config names of fresh context
[UIMA-6389] Logger_common_impl swallows exception
[UIMA-6389] Logger_common_impl swallows exception
[UIMA-6389] Logger_common_impl swallows exception
[UIMA-6389] Logger_common_impl swallows exception
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java
index 7d96233..dda4dfd 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java
@@ -512,9 +512,9 @@
final TypeSystemImpl ts = this.sii.tsi;
// **********************************************
- // for each type in the TypeSystem,
- // create a list of iicp's
- // each one corresponding to a defined index
+ // for each type in the TypeSystem,
+ // create a list of iicp's
+ // each one corresponding to a defined index
// **********************************************
final int numTypes = ts.getNumberOfTypes() + 1; // Type counting starts at 1.
// Can't instantiate arrays of generic types, but this is ok for ArrayList.
@@ -527,7 +527,7 @@
}
// ***************
- // Create indexes
+ // Create indexes
// ***************
/**
@@ -1250,7 +1250,7 @@
// }
// *****************************************
- // Adding/removing FS to/from the index
+ // Adding/removing FS to/from the index
// *****************************************
public void addFS(int fsRef) {
ll_addFS(fsRef);
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
index a09af5c..033615e 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
@@ -285,7 +285,7 @@
}
// ***********************
- // Index Add Remove
+ // Index Add Remove
// ***********************
/**
@@ -344,7 +344,7 @@
}
// *******************************
- // IDs and Type
+ // IDs and Type
// *******************************
/**
* NOTE: Possible name collision
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/SelectFSs_impl.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/SelectFSs_impl.java
index d6e0956..67e9420 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/SelectFSs_impl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/SelectFSs_impl.java
@@ -139,7 +139,6 @@
private AnnotationFS boundingFs = null;
private boolean noResult = false;
-
//@formatter:off
/* **********************************************
* Constructors
@@ -1369,7 +1368,7 @@
}
// *******************************************
- // The methods below are alternatives
+ // The methods below are alternatives
// to the methods above, that combine
// frequently used patterns into more
// concise forms using positional arguments
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
index f3bdcc2..dea297b 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java
@@ -50,9 +50,9 @@
public class Serialization {
// *************************************************************
- // These methods convert a CAS to / from a serializable object *
- // and vice-versa. *
- // Some also handle type system and index definitions *
+ // These methods convert a CAS to / from a serializable object *
+ // and vice-versa. *
+ // Some also handle type system and index definitions *
// *************************************************************
/**
@@ -171,7 +171,7 @@
// *****************************************************************************
// Methods from here on do some form of custom serialization / deserialization *
- // with data streams, byte arrays, etc. *
+ // with data streams, byte arrays, etc. *
// *****************************************************************************
/**
@@ -225,7 +225,7 @@
}
// *****************************************************************************
- // Methods from here on use some form of compression *
+ // Methods from here on use some form of compression *
// *****************************************************************************
/**
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java
index 0b610aa..b5b6b53 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java
@@ -148,9 +148,9 @@
private final List<FeatureImpl> staticMergedFeaturesIntroducedByThisType = new ArrayList<>(0);
/**
- * Map from adjusted offset in int features to feature.
+ * Map from adjusted offset in int features to feature.
*
- * Corrects for Long/Double values taking 2 int slots.
+ * Corrects for Long/Double values taking 2 int slots.
*
* Set at commit time
*/
diff --git a/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java b/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
index 9ae5bd6..3ec3e1e 100644
--- a/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
+++ b/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
@@ -188,7 +188,7 @@
// map incoming _indexed values
/**
- * Map external SofaNum -> internal sofaNum
+ * Map external SofaNum -> internal sofaNum
*
* internal sofaNums also used to index indexRepositories -> ref to FsIndexRepositoryImpl
*/
diff --git a/uimaj-core/src/main/java/org/apache/uima/examples/SourceDocumentInformation.java b/uimaj-core/src/main/java/org/apache/uima/examples/SourceDocumentInformation.java
index 576a811..cce1450 100644
--- a/uimaj-core/src/main/java/org/apache/uima/examples/SourceDocumentInformation.java
+++ b/uimaj-core/src/main/java/org/apache/uima/examples/SourceDocumentInformation.java
@@ -204,5 +204,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/main/java/org/apache/uima/flow/impl/FixedFlowController.java b/uimaj-core/src/main/java/org/apache/uima/flow/impl/FixedFlowController.java
index 52996fc..43f191a 100644
--- a/uimaj-core/src/main/java/org/apache/uima/flow/impl/FixedFlowController.java
+++ b/uimaj-core/src/main/java/org/apache/uima/flow/impl/FixedFlowController.java
@@ -75,7 +75,7 @@
private static final int ACTION_DROP = 2;
private static final int ACTION_DROP_IF_NEW_CAS_PRODUCED = 3;
-
+
//@formatter:off
// make final to work better in multi-thread case UIMA-2373
// working assumption:
@@ -94,7 +94,7 @@
// -- this has the added "benefit" (maybe eventually) of having better semantics for letting existing
// Flow objects continue to use the "old" settings, and only the new ones picking up the new ones.
//@formatter:on
- final private List<String> mSequence = new CopyOnWriteArrayList<>(); //UIMA-4013
+ final private List<String> mSequence = new CopyOnWriteArrayList<>(); // UIMA-4013
private int mActionAfterCasMultiplier;
diff --git a/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java b/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
index 8c9d74c..750c216 100644
--- a/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
+++ b/uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
@@ -56,6 +56,7 @@
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.metadata.ConfigurationGroup;
import org.apache.uima.resource.metadata.ConfigurationParameter;
+import org.apache.uima.resource.metadata.ConfigurationParameterDeclarations;
import org.apache.uima.util.Level;
import org.apache.uima.util.Logger;
import org.apache.uima.util.Settings;
@@ -557,19 +558,23 @@
*/
@Override
public String[] getConfigurationGroupNames() {
- ConfigurationGroup[] groups = getConfigurationManager()
- .getConfigParameterDeclarations(getQualifiedContextName()).getConfigurationGroups();
+ ConfigurationParameterDeclarations paramDecls = getConfigurationManager()
+ .getConfigParameterDeclarations(getQualifiedContextName());
+ if (paramDecls == null) {
+ return Constants.EMPTY_STRING_ARRAY;
+ }
+
+ ConfigurationGroup[] groups = paramDecls.getConfigurationGroups();
if (groups == null) {
return Constants.EMPTY_STRING_ARRAY;
- } else {
- Set<String> names = new TreeSet<>();
- for (int i = 0; i < groups.length; i++) {
- names.addAll(Arrays.asList(groups[i].getNames()));
- }
- String[] nameArray = new String[names.size()];
- names.toArray(nameArray);
- return nameArray;
}
+
+ Set<String> names = new TreeSet<>();
+ for (int i = 0; i < groups.length; i++) {
+ names.addAll(Arrays.asList(groups[i].getNames()));
+ }
+
+ return names.toArray(new String[names.size()]);
}
/*
@@ -579,17 +584,18 @@
*/
@Override
public String[] getConfigParameterNames() {
- ConfigurationParameter[] params = getConfigurationManager()
- .getConfigParameterDeclarations(getQualifiedContextName()).getConfigurationParameters();
- if (params == null) {
+ ConfigurationParameterDeclarations paramDecls = getConfigurationManager()
+ .getConfigParameterDeclarations(getQualifiedContextName());
+ if (paramDecls == null) {
return Constants.EMPTY_STRING_ARRAY;
- } else {
- String[] names = new String[params.length];
- for (int i = 0; i < params.length; i++) {
- names[i] = params[i].getName();
- }
- return names;
}
+
+ ConfigurationParameter[] params = paramDecls.getConfigurationParameters();
+ if (params == null || params.length == 0) {
+ return Constants.EMPTY_STRING_ARRAY;
+ }
+
+ return Arrays.stream(params).map(ConfigurationParameter::getName).toArray(String[]::new);
}
/*
@@ -599,30 +605,33 @@
*/
@Override
public String[] getConfigParameterNames(String aGroup) {
- ConfigurationGroup[] groups = getConfigurationManager()
- .getConfigParameterDeclarations(getQualifiedContextName())
- .getConfigurationGroupDeclarations(aGroup);
+ ConfigurationParameterDeclarations paramDecls = getConfigurationManager()
+ .getConfigParameterDeclarations(getQualifiedContextName());
+ if (paramDecls == null) {
+ return Constants.EMPTY_STRING_ARRAY;
+ }
+
+ ConfigurationGroup[] groups = paramDecls.getConfigurationGroupDeclarations(aGroup);
if (groups.length == 0) {
return Constants.EMPTY_STRING_ARRAY;
- } else {
- List<String> names = new ArrayList<>();
- ConfigurationParameter[] commonParams = getConfigurationManager()
- .getConfigParameterDeclarations(getQualifiedContextName()).getCommonParameters();
- if (commonParams != null) {
- for (int i = 0; i < commonParams.length; i++) {
- names.add(commonParams[i].getName());
- }
- }
- for (int i = 0; i < groups.length; i++) {
- ConfigurationParameter[] groupParams = groups[i].getConfigurationParameters();
- for (int j = 0; j < groupParams.length; j++) {
- names.add(groupParams[j].getName());
- }
- }
- String[] nameArray = new String[names.size()];
- names.toArray(nameArray);
- return nameArray;
}
+
+ List<String> names = new ArrayList<>();
+ ConfigurationParameter[] commonParams = paramDecls.getCommonParameters();
+ if (commonParams != null) {
+ for (int i = 0; i < commonParams.length; i++) {
+ names.add(commonParams[i].getName());
+ }
+ }
+
+ for (int i = 0; i < groups.length; i++) {
+ ConfigurationParameter[] groupParams = groups[i].getConfigurationParameters();
+ for (int j = 0; j < groupParams.length; j++) {
+ names.add(groupParams[j].getName());
+ }
+ }
+
+ return names.toArray(new String[names.size()]);
}
/**
@@ -658,15 +667,17 @@
String absoluteSofaName = null;
if (index < 0) {
absoluteSofaName = mSofaMappings.get(nameToMap);
- if (absoluteSofaName == null)
+ if (absoluteSofaName == null) {
absoluteSofaName = nameToMap;
+ }
} else {
nameToMap = aSofaName.substring(0, index);
String rest = aSofaName.substring(index);
String absoluteRoot = mSofaMappings.get(nameToMap);
- if (absoluteRoot == null)
+ if (absoluteRoot == null) {
absoluteRoot = nameToMap;
+ }
absoluteSofaName = absoluteRoot + rest;
}
SofaID sofaid = new SofaID_impl();
@@ -684,8 +695,9 @@
String componentSofaName = aSofaID;
SofaID[] sofaArr = getSofaMappings();
for (int i = 0; i < sofaArr.length; i++) {
- if (aSofaID.equals(sofaArr[i].getSofaID()))
+ if (aSofaID.equals(sofaArr[i].getSofaID())) {
return sofaArr[i].getComponentSofaName();
+ }
}
return componentSofaName;
}
@@ -852,14 +864,16 @@
String absoluteSofaName = null;
if (index < 0) {
absoluteSofaName = mSofaMappings.get(nameToMap);
- if (absoluteSofaName == null)
+ if (absoluteSofaName == null) {
absoluteSofaName = nameToMap;
+ }
} else {
nameToMap = aSofaName.substring(0, index);
String rest = aSofaName.substring(index);
String absoluteRoot = mSofaMappings.get(nameToMap);
- if (absoluteRoot == null)
+ if (absoluteRoot == null) {
absoluteRoot = nameToMap;
+ }
absoluteSofaName = absoluteRoot + rest;
}
return absoluteSofaName;
diff --git a/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java b/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java
index a02aca7..0671822 100644
--- a/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java
+++ b/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java
@@ -52,7 +52,7 @@
// ***************************************************
// These methods to make this class easily usable by *
- // FsIterator_bag *
+ // FsIterator_bag *
// ***************************************************
/**
diff --git a/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/Int2IntRBT.java b/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/Int2IntRBT.java
index dc721e5..429a7dd 100644
--- a/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/Int2IntRBT.java
+++ b/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/Int2IntRBT.java
@@ -389,7 +389,7 @@
// }
/**
- * Fast version of findKey Keeps the last node referenced
+ * Fast version of findKey Keeps the last node referenced
*
* *** NOT THREAD SAFE ***
*
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/JCasRegistry.java b/uimaj-core/src/main/java/org/apache/uima/jcas/JCasRegistry.java
index b19e62b..7679f42 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/JCasRegistry.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/JCasRegistry.java
@@ -130,7 +130,7 @@
}
/**
- * NOT CURRENTLY USED
+ * NOT CURRENTLY USED
*
* Gets the number of cover classes that have been registered.
*
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArrayList.java b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArrayList.java
index d65447b..5f6a60d 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArrayList.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArrayList.java
@@ -1112,5 +1112,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java
index 4bcf055..76fbf6f 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSHashSet.java
@@ -550,5 +550,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSLinkedHashSet.java b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSLinkedHashSet.java
index 96e9b90..28e3707 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSLinkedHashSet.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSLinkedHashSet.java
@@ -107,5 +107,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java
index 64c9d52..fd4e606 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArrayList.java
@@ -564,5 +564,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMapSubMap.java b/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMapSubMap.java
index fc2cfc2..f47a0c3 100644
--- a/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMapSubMap.java
+++ b/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMapSubMap.java
@@ -28,7 +28,7 @@
import org.apache.uima.util.IteratorNvc;
/**
- * Part of the JCasHashMap.
+ * Part of the JCasHashMap.
*
* There are multiple instances of this class, one per concurrancy level
*/
diff --git a/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java b/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java
index 6e242e2..ad61d8a 100644
--- a/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java
+++ b/uimaj-core/src/main/java/org/apache/uima/resource/ConfigurationManager.java
@@ -146,7 +146,7 @@
* @param aContextName
* the name for which to get the parameter declarations
*
- * @return parameter declarations for the context
+ * @return parameter declarations for the context or {@code null} if there are no declarations.
*/
ConfigurationParameterDeclarations getConfigParameterDeclarations(String aContextName);
diff --git a/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java b/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java
index b893404..209d0a3 100644
--- a/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/resource/metadata/impl/MetaDataObject_impl.java
@@ -222,7 +222,7 @@
}
/**
- * Information, kept globally (by thread) for one serialization
+ * Information, kept globally (by thread) for one serialization
*
* Inherited by some custom impls, e.g. TypeOrFeature_impl
*/
diff --git a/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java b/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java
index 01df4fb..f3ce874 100644
--- a/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java
+++ b/uimaj-core/src/main/java/org/apache/uima/util/CasPool.java
@@ -174,7 +174,7 @@
}
/**
- * Creates a new CasPool.
+ * Creates a new CasPool.
*
* TODO: do we need this method AND the one that takes a CasManager?
*
diff --git a/uimaj-core/src/main/java/org/apache/uima/util/Settings.java b/uimaj-core/src/main/java/org/apache/uima/util/Settings.java
index 9e3367a..1ca892b 100644
--- a/uimaj-core/src/main/java/org/apache/uima/util/Settings.java
+++ b/uimaj-core/src/main/java/org/apache/uima/util/Settings.java
@@ -69,7 +69,7 @@
* them with the value for key. Recursively evaluate the value to be substituted. NOTE: infinite
* loops not detected! If the key variable has not been defined, an exception is thrown. To avoid
* evaluation and get ${key} in the output escape the $ or { Arrays are returned as a
- * comma-separated string, e.g. "[elem1,elem2]"
+ * comma-separated string, e.g. "[elem1,elem2]"
*
* Note: escape characters are not removed as they may affect array separators.
*
diff --git a/uimaj-core/src/main/java/org/apache/uima/util/impl/SerializationMeasures.java b/uimaj-core/src/main/java/org/apache/uima/util/impl/SerializationMeasures.java
index 06935f2..2988b20 100644
--- a/uimaj-core/src/main/java/org/apache/uima/util/impl/SerializationMeasures.java
+++ b/uimaj-core/src/main/java/org/apache/uima/util/impl/SerializationMeasures.java
@@ -306,7 +306,7 @@
Slot_StrOffset, //
Slot_StrLength, //
Slot_StrChars, //
- Slot_Long_High,//
+ Slot_Long_High, //
Slot_Long_Low, //
Slot_Float_Mantissa_Sign, //
Slot_Float_Exponent, //
diff --git a/uimaj-core/src/main/java/org/apache/uima/util/impl/Slf4jLogger_impl.java b/uimaj-core/src/main/java/org/apache/uima/util/impl/Slf4jLogger_impl.java
index e4b83f8..9136e9e 100644
--- a/uimaj-core/src/main/java/org/apache/uima/util/impl/Slf4jLogger_impl.java
+++ b/uimaj-core/src/main/java/org/apache/uima/util/impl/Slf4jLogger_impl.java
@@ -1,434 +1,445 @@
-/*
- * 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.uima.util.impl;
-
-import java.text.MessageFormat;
-
-import org.apache.uima.internal.util.Misc;
-import org.apache.uima.util.Level;
-import org.apache.uima.util.Logger;
-import org.slf4j.Marker;
-import org.slf4j.spi.LocationAwareLogger;
-
-/**
- * UIMA Logging interface implementation for SLF4j
- *
- * This design gets a logger in static initialization, in order to see what the back end is. If it
- * is JUL or Log4j, it sets flags so that subsequent calls to getInstance gets those UIMA logger
- * impls, not this one, in order to slightly reduce indirection at run time.
- *
- */
-public class Slf4jLogger_impl extends Logger_common_impl {
-
- public static final String DEFAULT_JUL = "uima.use_jul_as_default_uima_logger";
- public static final boolean IS_DEFAULT_JUL = Misc.getNoValueSystemProperty(DEFAULT_JUL);
-
- static final boolean isJul;
- static final boolean isLog4j;
-
- static {
- Class<?> staticLoggerBinderClass = null;
- try {
- staticLoggerBinderClass = Class.forName("org.slf4j.impl.StaticLoggerBinder");
- } catch (Exception e) {
- // empty on purpose, if class not present, no back end logger, and staticLoggerBinderClass is
- // left as null
- }
-
- if (null == staticLoggerBinderClass) {
- if (IS_DEFAULT_JUL) {
- isJul = true;
- isLog4j = false;
- } else {
- isJul = false;
- isLog4j = false;
- }
- } else {
- // have some backend binding
- boolean tb;
- org.slf4j.Logger tempLogger = org.slf4j.LoggerFactory.getLogger("org.apache.uima");
- try { // for jdk14 impl
- Class<?> clazz = Class.forName("org.slf4j.impl.JDK14LoggerAdapter");
- tb = clazz != null && clazz.isAssignableFrom(tempLogger.getClass());
- } catch (ClassNotFoundException e1) {
- tb = false;
- }
- isJul = tb;
-
- tb = false;
- if (!isJul) {
- try { // for log4j 2 impl
- Class<?> clazz = Class.forName("org.apache.logging.slf4j.Log4jLogger");
- tb = null != clazz && clazz.isAssignableFrom(tempLogger.getClass());
- } catch (ClassNotFoundException e1) {
- tb = false;
- }
- }
- isLog4j = tb;
- }
- }
-
- /**
- * logger object from the underlying Slf4j logging framework
- */
- final private org.slf4j.Logger logger;
- final private boolean isLocationCapable; // the slf4j simple logger is not
-
- /**
- * create a new LogWrapper class for the specified source class
- *
- * @param component
- * specified source class
- */
- private Slf4jLogger_impl(Class<?> component) {
- super(component);
- final String loggerName = (component != null) ? component.getName() : "org.apache.uima";
-
- logger = org.slf4j.LoggerFactory.getLogger(loggerName);
- isLocationCapable = logger instanceof org.slf4j.spi.LocationAwareLogger;
- }
-
- private Slf4jLogger_impl(Slf4jLogger_impl l, int limit) {
- super(l, limit);
- this.logger = l.logger;
- isLocationCapable = logger instanceof org.slf4j.spi.LocationAwareLogger;
- }
-
- /**
- * creates a new Logger instance for the specified source class
- *
- * @param component
- * current source class
- *
- * @return Logger - returns the Logger object for the specified class
- */
- public static synchronized Logger getInstance(Class<?> component) {
- if (isJul) {
- return JSR47Logger_impl.getInstance(component);
- }
- if (isLog4j) {
- return Log4jLogger_impl.getInstance(component);
- }
- return new Slf4jLogger_impl(component);
- }
-
- /**
- * creates a new Logger instance using default name "org.apache.uima"
- *
- * @return Logger - returns the Logger object for the specified class
- */
- public static synchronized Logger getInstance() {
- return getInstance(null);
- }
-
- @Override
- public Slf4jLogger_impl getLimitedLogger(int aLimit) {
- if (aLimit == Integer.MAX_VALUE || aLimit == this.limit_common) {
- return this;
- }
- return new Slf4jLogger_impl(this, aLimit);
- }
-
- public static int getSlf4jLevel(Level level) {
- switch (level.toInteger()) {
- case Level.SEVERE_INT:
- return LocationAwareLogger.ERROR_INT;
- case Level.WARNING_INT:
- return LocationAwareLogger.WARN_INT;
- case Level.INFO_INT:
- return LocationAwareLogger.INFO_INT;
- case Level.CONFIG_INT:
- return LocationAwareLogger.INFO_INT;
- case Level.FINE_INT:
- return LocationAwareLogger.DEBUG_INT;
- case Level.FINER_INT:
- return LocationAwareLogger.TRACE_INT;
- case Level.FINEST_INT:
- return LocationAwareLogger.TRACE_INT;
- }
- Misc.internalError();
- return LocationAwareLogger.ERROR_INT; // ignored, just here for compile error avoidance
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.uima.util.Logger#isLoggable(org.apache.uima.util.Level)
- */
- @Override
- public boolean isLoggable(Level level) {
- switch (level.toInteger()) {
- case org.apache.uima.util.Level.OFF_INT:
- return false;
- case org.apache.uima.util.Level.SEVERE_INT:
- return logger.isErrorEnabled();
- case org.apache.uima.util.Level.WARNING_INT:
- return logger.isWarnEnabled();
- case org.apache.uima.util.Level.INFO_INT:
- return logger.isInfoEnabled();
- case org.apache.uima.util.Level.CONFIG_INT:
- return logger.isDebugEnabled(UIMA_MARKER_CONFIG);
- case org.apache.uima.util.Level.FINE_INT:
- return logger.isDebugEnabled();
- case org.apache.uima.util.Level.FINER_INT:
- return logger.isTraceEnabled();
- case org.apache.uima.util.Level.FINEST_INT:
- return logger.isTraceEnabled(UIMA_MARKER_FINEST);
- default: // for Level.ALL return false, that's what jul logger does
- return false;
- }
- }
-
- @Override
- public boolean isLoggable(Level level, Marker marker) {
- switch (level.toInteger()) {
- case org.apache.uima.util.Level.OFF_INT:
- return false;
- case org.apache.uima.util.Level.SEVERE_INT:
- return logger.isErrorEnabled(marker);
- case org.apache.uima.util.Level.WARNING_INT:
- return logger.isWarnEnabled(marker);
- case org.apache.uima.util.Level.INFO_INT:
- return logger.isInfoEnabled(marker);
- case org.apache.uima.util.Level.CONFIG_INT:
- return logger.isInfoEnabled(marker);
- case org.apache.uima.util.Level.FINE_INT:
- return logger.isDebugEnabled(marker);
- case org.apache.uima.util.Level.FINER_INT:
- return logger.isTraceEnabled(marker);
- case org.apache.uima.util.Level.FINEST_INT:
- return logger.isTraceEnabled(marker);
- default: // for Level.ALL return false, that's what jul logger does
- return false;
- }
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.uima.util.Logger#setLevel(org.apache.uima.util.Level)
- */
- @Override
- public void setLevel(Level level) {
- // allow nop operation
- }
-
- // does the uima-logger style of message formatting
- @Override
- public void log(Marker m, String aFqcn, Level level, String message, Object[] args,
- Throwable thrown) {
- log(m, aFqcn, level, MessageFormat.format(message, args), thrown);
- }
-
- @Override
- public void log(Marker m, String aFqcn, Level level, String msg_with_params, Throwable thrown) {
- m = (m == null) ? getMarkerForLevel(level) : m;
-
- if (isLocationCapable) { // slf4j simple logger is not
- ((org.slf4j.spi.LocationAwareLogger) logger).log(m, aFqcn, getSlf4jLevel(level),
- msg_with_params, null, thrown);
- } else {
- switch (level.toInteger()) {
- case Level.SEVERE_INT:
- // all of these calls to MessageFormat are to the java.text.MessageFormat
- // to do {n} style format substitution
- logger.error(m, msg_with_params, thrown);
- break;
- case Level.WARNING_INT:
- logger.warn(m, msg_with_params, thrown);
- break;
- case Level.INFO_INT:
- logger.info(m, msg_with_params, thrown);
- break;
- case Level.CONFIG_INT:
- logger.info(m, msg_with_params, thrown);
- break;
- case Level.FINE_INT:
- logger.debug(m, msg_with_params, thrown);
- break;
- case Level.FINER_INT:
- logger.trace(m, msg_with_params, thrown);
- break;
- case Level.FINEST_INT:
- logger.trace(m, msg_with_params, thrown);
- break;
- default:
- Misc.internalError();
- }
- }
-
- }
-
- // does the slf4j style of message formatting
- @Override
- public void log2(Marker m, String aFqcn, Level level, String message, Object[] args,
- Throwable thrown) {
- m = (m == null) ? getMarkerForLevel(level) : m;
-
- if (isLocationCapable) { // slf4j simple logger is not
- ((org.slf4j.spi.LocationAwareLogger) logger).log(m, aFqcn, getSlf4jLevel(level), message,
- args, thrown);
- } else {
- if (thrown != null) {
- Object[] args1 = (args == null) ? new Object[1] : new Object[args.length + 1];
- if (args != null) {
- System.arraycopy(args, 0, args1, 0, args.length);
- }
- args1[args1.length - 1] = thrown;
- args = args1;
- }
- switch (level.toInteger()) {
- case Level.SEVERE_INT:
- logger.error(m, message, args);
- break;
- case Level.WARNING_INT:
- logger.warn(m, message, args);
- break;
- case Level.INFO_INT:
- logger.info(m, message, args);
- break;
- case Level.CONFIG_INT:
- logger.info(m, message, args);
- break;
- case Level.FINE_INT:
- logger.debug(m, message, args);
- break;
- case Level.FINER_INT:
- logger.trace(m, message, args);
- break;
- case Level.FINEST_INT:
- logger.trace(m, message, args);
- break;
- default:
- Misc.internalError();
- }
- }
- }
-
- /**
- * @return the logger name
- * @see org.slf4j.Logger#getName()
- */
- @Override
- public String getName() {
- return logger.getName();
- }
-
- /**
- * @return -
- * @see org.slf4j.Logger#isTraceEnabled()
- */
- @Override
- public boolean isTraceEnabled() {
- return logger.isTraceEnabled();
- }
-
- /**
- * @param marker
- * -
- * @return true if trace is enabled for this marker
- * @see org.slf4j.Logger#isTraceEnabled(org.slf4j.Marker)
- */
- @Override
- public boolean isTraceEnabled(Marker marker) {
- return logger.isTraceEnabled(marker);
- }
-
- /**
- * @return -
- * @see org.slf4j.Logger#isDebugEnabled()
- */
- @Override
- public boolean isDebugEnabled() {
- return logger.isDebugEnabled();
- }
-
- /**
- * @param marker
- * -
- * @return true if is enabled for this marker
- * @see org.slf4j.Logger#isDebugEnabled(org.slf4j.Marker)
- */
- @Override
- public boolean isDebugEnabled(Marker marker) {
- return logger.isDebugEnabled(marker);
- }
-
- /**
- * @return -
- * @see org.slf4j.Logger#isInfoEnabled()
- */
- @Override
- public boolean isInfoEnabled() {
- return logger.isInfoEnabled();
- }
-
- /**
- * @param marker
- * -
- * @return true if is enabled for this marker
- * @see org.slf4j.Logger#isInfoEnabled(org.slf4j.Marker)
- */
- @Override
- public boolean isInfoEnabled(Marker marker) {
- return logger.isInfoEnabled(marker);
- }
-
- /**
- * @return -
- * @see org.slf4j.Logger#isWarnEnabled()
- */
- @Override
- public boolean isWarnEnabled() {
- return logger.isWarnEnabled();
- }
-
- /**
- * @param marker
- * -
- * @return true if is enabled for this marker
- * @see org.slf4j.Logger#isWarnEnabled(org.slf4j.Marker)
- */
- @Override
- public boolean isWarnEnabled(Marker marker) {
- return logger.isWarnEnabled(marker);
- }
-
- /**
- * @return -
- * @see org.slf4j.Logger#isErrorEnabled()
- */
- @Override
- public boolean isErrorEnabled() {
- return logger.isErrorEnabled();
- }
-
- /**
- * @param marker
- * -
- * @return true if is enabled for this marker
- * @see org.slf4j.Logger#isErrorEnabled(org.slf4j.Marker)
- */
- @Override
- public boolean isErrorEnabled(Marker marker) {
- return logger.isErrorEnabled(marker);
- }
-
-}
+/*
+ * 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.uima.util.impl;
+
+import java.text.MessageFormat;
+
+import org.apache.uima.internal.util.Misc;
+import org.apache.uima.util.Level;
+import org.apache.uima.util.Logger;
+import org.slf4j.Marker;
+import org.slf4j.spi.LocationAwareLogger;
+
+/**
+ * UIMA Logging interface implementation for SLF4j
+ *
+ * This design gets a logger in static initialization, in order to see what the back end is. If it
+ * is JUL or Log4j, it sets flags so that subsequent calls to getInstance gets those UIMA logger
+ * impls, not this one, in order to slightly reduce indirection at run time.
+ *
+ */
+public class Slf4jLogger_impl extends Logger_common_impl {
+
+ public static final String DEFAULT_JUL = "uima.use_jul_as_default_uima_logger";
+ public static final boolean IS_DEFAULT_JUL = Misc.getNoValueSystemProperty(DEFAULT_JUL);
+
+ static final boolean isJul;
+ static final boolean isLog4j;
+
+ static {
+ Class<?> staticLoggerBinderClass = null;
+ try {
+ staticLoggerBinderClass = Class.forName("org.slf4j.impl.StaticLoggerBinder");
+ } catch (Exception e) {
+ // empty on purpose, if class not present, no back end logger, and staticLoggerBinderClass is
+ // left as null
+ }
+
+ if (null == staticLoggerBinderClass) {
+ if (IS_DEFAULT_JUL) {
+ isJul = true;
+ isLog4j = false;
+ } else {
+ isJul = false;
+ isLog4j = false;
+ }
+ } else {
+ // have some backend binding
+ boolean tb;
+ org.slf4j.Logger tempLogger = org.slf4j.LoggerFactory.getLogger("org.apache.uima");
+ try { // for jdk14 impl
+ Class<?> clazz = Class.forName("org.slf4j.impl.JDK14LoggerAdapter");
+ tb = clazz != null && clazz.isAssignableFrom(tempLogger.getClass());
+ } catch (ClassNotFoundException e1) {
+ tb = false;
+ }
+ isJul = tb;
+
+ tb = false;
+ if (!isJul) {
+ try { // for log4j 2 impl
+ Class<?> clazz = Class.forName("org.apache.logging.slf4j.Log4jLogger");
+ tb = null != clazz && clazz.isAssignableFrom(tempLogger.getClass());
+ } catch (ClassNotFoundException e1) {
+ tb = false;
+ }
+ }
+ isLog4j = tb;
+ }
+ }
+
+ /**
+ * logger object from the underlying Slf4j logging framework
+ */
+ final private org.slf4j.Logger logger;
+ final private boolean isLocationCapable; // the slf4j simple logger is not
+
+ /**
+ * create a new LogWrapper class for the specified source class
+ *
+ * @param component
+ * specified source class
+ */
+ Slf4jLogger_impl(Class<?> component) {
+ super(component);
+ final String loggerName = (component != null) ? component.getName() : "org.apache.uima";
+
+ logger = org.slf4j.LoggerFactory.getLogger(loggerName);
+ isLocationCapable = logger instanceof org.slf4j.spi.LocationAwareLogger;
+ }
+
+ private Slf4jLogger_impl(Slf4jLogger_impl l, int limit) {
+ super(l, limit);
+ this.logger = l.logger;
+ isLocationCapable = logger instanceof org.slf4j.spi.LocationAwareLogger;
+ }
+
+ /**
+ * creates a new Logger instance for the specified source class
+ *
+ * @param component
+ * current source class
+ *
+ * @return Logger - returns the Logger object for the specified class
+ */
+ public static synchronized Logger getInstance(Class<?> component) {
+ if (isJul) {
+ return JSR47Logger_impl.getInstance(component);
+ }
+ if (isLog4j) {
+ return Log4jLogger_impl.getInstance(component);
+ }
+ return new Slf4jLogger_impl(component);
+ }
+
+ /**
+ * creates a new Logger instance using default name "org.apache.uima"
+ *
+ * @return Logger - returns the Logger object for the specified class
+ */
+ public static synchronized Logger getInstance() {
+ return getInstance(null);
+ }
+
+ @Override
+ public Slf4jLogger_impl getLimitedLogger(int aLimit) {
+ if (aLimit == Integer.MAX_VALUE || aLimit == this.limit_common) {
+ return this;
+ }
+ return new Slf4jLogger_impl(this, aLimit);
+ }
+
+ public static int getSlf4jLevel(Level level) {
+ switch (level.toInteger()) {
+ case Level.SEVERE_INT:
+ return LocationAwareLogger.ERROR_INT;
+ case Level.WARNING_INT:
+ return LocationAwareLogger.WARN_INT;
+ case Level.INFO_INT:
+ return LocationAwareLogger.INFO_INT;
+ case Level.CONFIG_INT:
+ return LocationAwareLogger.INFO_INT;
+ case Level.FINE_INT:
+ return LocationAwareLogger.DEBUG_INT;
+ case Level.FINER_INT:
+ return LocationAwareLogger.TRACE_INT;
+ case Level.FINEST_INT:
+ return LocationAwareLogger.TRACE_INT;
+ }
+ Misc.internalError();
+ return LocationAwareLogger.ERROR_INT; // ignored, just here for compile error avoidance
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.util.Logger#isLoggable(org.apache.uima.util.Level)
+ */
+ @Override
+ public boolean isLoggable(Level level) {
+ switch (level.toInteger()) {
+ case org.apache.uima.util.Level.OFF_INT:
+ return false;
+ case org.apache.uima.util.Level.SEVERE_INT:
+ return logger.isErrorEnabled();
+ case org.apache.uima.util.Level.WARNING_INT:
+ return logger.isWarnEnabled();
+ case org.apache.uima.util.Level.INFO_INT:
+ return logger.isInfoEnabled();
+ case org.apache.uima.util.Level.CONFIG_INT:
+ return logger.isDebugEnabled(UIMA_MARKER_CONFIG);
+ case org.apache.uima.util.Level.FINE_INT:
+ return logger.isDebugEnabled();
+ case org.apache.uima.util.Level.FINER_INT:
+ return logger.isTraceEnabled();
+ case org.apache.uima.util.Level.FINEST_INT:
+ return logger.isTraceEnabled(UIMA_MARKER_FINEST);
+ default: // for Level.ALL return false, that's what jul logger does
+ return false;
+ }
+ }
+
+ @Override
+ public boolean isLoggable(Level level, Marker marker) {
+ switch (level.toInteger()) {
+ case org.apache.uima.util.Level.OFF_INT:
+ return false;
+ case org.apache.uima.util.Level.SEVERE_INT:
+ return logger.isErrorEnabled(marker);
+ case org.apache.uima.util.Level.WARNING_INT:
+ return logger.isWarnEnabled(marker);
+ case org.apache.uima.util.Level.INFO_INT:
+ return logger.isInfoEnabled(marker);
+ case org.apache.uima.util.Level.CONFIG_INT:
+ return logger.isInfoEnabled(marker);
+ case org.apache.uima.util.Level.FINE_INT:
+ return logger.isDebugEnabled(marker);
+ case org.apache.uima.util.Level.FINER_INT:
+ return logger.isTraceEnabled(marker);
+ case org.apache.uima.util.Level.FINEST_INT:
+ return logger.isTraceEnabled(marker);
+ default: // for Level.ALL return false, that's what jul logger does
+ return false;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.uima.util.Logger#setLevel(org.apache.uima.util.Level)
+ */
+ @Override
+ public void setLevel(Level level) {
+ // allow nop operation
+ }
+
+ // does the uima-logger style of message formatting
+ @Override
+ public void log(Marker m, String aFqcn, Level level, String message, Object[] args,
+ Throwable thrown) {
+ log(m, aFqcn, level, MessageFormat.format(message, args), thrown);
+ }
+
+ @Override
+ public void log(Marker m, String aFqcn, Level level, String msg_with_params, Throwable thrown) {
+ m = (m == null) ? getMarkerForLevel(level) : m;
+
+ if (isLocationCapable) { // slf4j simple logger is not
+ ((org.slf4j.spi.LocationAwareLogger) logger).log(m, aFqcn, getSlf4jLevel(level),
+ msg_with_params, null, thrown);
+ } else {
+ switch (level.toInteger()) {
+ case Level.SEVERE_INT:
+ // all of these calls to MessageFormat are to the java.text.MessageFormat
+ // to do {n} style format substitution
+ logger.error(m, msg_with_params, thrown);
+ break;
+ case Level.WARNING_INT:
+ logger.warn(m, msg_with_params, thrown);
+ break;
+ case Level.INFO_INT:
+ logger.info(m, msg_with_params, thrown);
+ break;
+ case Level.CONFIG_INT:
+ logger.info(m, msg_with_params, thrown);
+ break;
+ case Level.FINE_INT:
+ logger.debug(m, msg_with_params, thrown);
+ break;
+ case Level.FINER_INT:
+ logger.trace(m, msg_with_params, thrown);
+ break;
+ case Level.FINEST_INT:
+ logger.trace(m, msg_with_params, thrown);
+ break;
+ default:
+ Misc.internalError();
+ }
+ }
+
+ }
+
+ // does the slf4j style of message formatting
+ @Override
+ public void log2(Marker m, String aFqcn, Level level, String message, Object[] args,
+ Throwable thrown) {
+ m = (m == null) ? getMarkerForLevel(level) : m;
+
+ if (isLocationCapable) { // slf4j simple logger is not
+ // Work around LOG4J2-3177 by pulling a throwable from the args and providing it as thrown
+ // to the logger
+ Throwable actualThrown = thrown;
+ Object[] actualArgs = args;
+ if (actualThrown == null && args != null && args.length > 0
+ && args[args.length - 1] instanceof Throwable) {
+ actualThrown = (Throwable) args[args.length - 1];
+ actualArgs = new Object[args.length - 1];
+ System.arraycopy(args, 0, actualArgs, 0, actualArgs.length);
+ }
+
+ ((org.slf4j.spi.LocationAwareLogger) logger).log(m, aFqcn, getSlf4jLevel(level), message,
+ actualArgs, actualThrown);
+ } else {
+ if (thrown != null) {
+ Object[] args1 = (args == null) ? new Object[1] : new Object[args.length + 1];
+ if (args != null) {
+ System.arraycopy(args, 0, args1, 0, args.length);
+ }
+ args1[args1.length - 1] = thrown;
+ args = args1;
+ }
+ switch (level.toInteger()) {
+ case Level.SEVERE_INT:
+ logger.error(m, message, args);
+ break;
+ case Level.WARNING_INT:
+ logger.warn(m, message, args);
+ break;
+ case Level.INFO_INT:
+ logger.info(m, message, args);
+ break;
+ case Level.CONFIG_INT:
+ logger.info(m, message, args);
+ break;
+ case Level.FINE_INT:
+ logger.debug(m, message, args);
+ break;
+ case Level.FINER_INT:
+ logger.trace(m, message, args);
+ break;
+ case Level.FINEST_INT:
+ logger.trace(m, message, args);
+ break;
+ default:
+ Misc.internalError();
+ }
+ }
+ }
+
+ /**
+ * @return the logger name
+ * @see org.slf4j.Logger#getName()
+ */
+ @Override
+ public String getName() {
+ return logger.getName();
+ }
+
+ /**
+ * @return -
+ * @see org.slf4j.Logger#isTraceEnabled()
+ */
+ @Override
+ public boolean isTraceEnabled() {
+ return logger.isTraceEnabled();
+ }
+
+ /**
+ * @param marker
+ * -
+ * @return true if trace is enabled for this marker
+ * @see org.slf4j.Logger#isTraceEnabled(org.slf4j.Marker)
+ */
+ @Override
+ public boolean isTraceEnabled(Marker marker) {
+ return logger.isTraceEnabled(marker);
+ }
+
+ /**
+ * @return -
+ * @see org.slf4j.Logger#isDebugEnabled()
+ */
+ @Override
+ public boolean isDebugEnabled() {
+ return logger.isDebugEnabled();
+ }
+
+ /**
+ * @param marker
+ * -
+ * @return true if is enabled for this marker
+ * @see org.slf4j.Logger#isDebugEnabled(org.slf4j.Marker)
+ */
+ @Override
+ public boolean isDebugEnabled(Marker marker) {
+ return logger.isDebugEnabled(marker);
+ }
+
+ /**
+ * @return -
+ * @see org.slf4j.Logger#isInfoEnabled()
+ */
+ @Override
+ public boolean isInfoEnabled() {
+ return logger.isInfoEnabled();
+ }
+
+ /**
+ * @param marker
+ * -
+ * @return true if is enabled for this marker
+ * @see org.slf4j.Logger#isInfoEnabled(org.slf4j.Marker)
+ */
+ @Override
+ public boolean isInfoEnabled(Marker marker) {
+ return logger.isInfoEnabled(marker);
+ }
+
+ /**
+ * @return -
+ * @see org.slf4j.Logger#isWarnEnabled()
+ */
+ @Override
+ public boolean isWarnEnabled() {
+ return logger.isWarnEnabled();
+ }
+
+ /**
+ * @param marker
+ * -
+ * @return true if is enabled for this marker
+ * @see org.slf4j.Logger#isWarnEnabled(org.slf4j.Marker)
+ */
+ @Override
+ public boolean isWarnEnabled(Marker marker) {
+ return logger.isWarnEnabled(marker);
+ }
+
+ /**
+ * @return -
+ * @see org.slf4j.Logger#isErrorEnabled()
+ */
+ @Override
+ public boolean isErrorEnabled() {
+ return logger.isErrorEnabled();
+ }
+
+ /**
+ * @param marker
+ * -
+ * @return true if is enabled for this marker
+ * @see org.slf4j.Logger#isErrorEnabled(org.slf4j.Marker)
+ */
+ @Override
+ public boolean isErrorEnabled(Marker marker) {
+ return logger.isErrorEnabled(marker);
+ }
+
+}
diff --git a/uimaj-core/src/test/java/aa/AbstractType.java b/uimaj-core/src/test/java/aa/AbstractType.java
index 9de7a7f..b9fa400 100644
--- a/uimaj-core/src/test/java/aa/AbstractType.java
+++ b/uimaj-core/src/test/java/aa/AbstractType.java
@@ -127,5 +127,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/aa/ConcreteType.java b/uimaj-core/src/test/java/aa/ConcreteType.java
index 7f1660c..c06e2ae 100644
--- a/uimaj-core/src/test/java/aa/ConcreteType.java
+++ b/uimaj-core/src/test/java/aa/ConcreteType.java
@@ -126,5 +126,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/aa/MissingFeatureInCas.java b/uimaj-core/src/test/java/aa/MissingFeatureInCas.java
index 45ac3c7..383f253 100644
--- a/uimaj-core/src/test/java/aa/MissingFeatureInCas.java
+++ b/uimaj-core/src/test/java/aa/MissingFeatureInCas.java
@@ -171,5 +171,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/aa/MissingInCas.java b/uimaj-core/src/test/java/aa/MissingInCas.java
index 0cbd8f3..6decfe3 100644
--- a/uimaj-core/src/test/java/aa/MissingInCas.java
+++ b/uimaj-core/src/test/java/aa/MissingInCas.java
@@ -105,5 +105,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/aa/Root.java b/uimaj-core/src/test/java/aa/Root.java
index b61a374..7906300 100644
--- a/uimaj-core/src/test/java/aa/Root.java
+++ b/uimaj-core/src/test/java/aa/Root.java
@@ -477,5 +477,3 @@
((DoubleArray)(_getFeatureValueNc(wrapGetIntCatchException(_FH_arrayDouble)))).set(i, v);
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/aa/T.java b/uimaj-core/src/test/java/aa/T.java
index 74a3eee..115f06a 100644
--- a/uimaj-core/src/test/java/aa/T.java
+++ b/uimaj-core/src/test/java/aa/T.java
@@ -112,5 +112,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java b/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java
index 07982f0..6d21211 100644
--- a/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java
+++ b/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java
@@ -153,5 +153,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/impl/AnnotationIteratorTest.java b/uimaj-core/src/test/java/org/apache/uima/cas/impl/AnnotationIteratorTest.java
index d724d10..364e1a8 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/impl/AnnotationIteratorTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/impl/AnnotationIteratorTest.java
@@ -384,22 +384,21 @@
// a.getBegin(), a.getEnd());
// }
- assertThat(annotIndex.subiterator(bigBound, true, false)).toIterable()
- .containsExactly( //
- ann[58], ann[11], ann[12], //
- ann[76], ann[13], ann[14], ann[15], //
- ann[59], ann[16], //
- ann[69], ann[17], ann[18], ann[19], ann[20], //
- ann[60], ann[21], ann[22], //
- ann[70], ann[23], ann[24], //
- ann[71], ann[25], //
- ann[61], ann[26], ann[27], ann[28], ann[29], ann[30], //
- ann[62], ann[31], //
- ann[72], ann[32], ann[33], ann[34], ann[35], //
- ann[63], ann[36], ann[37], //
- ann[73], ann[38], ann[39], //
- ann[74], ann[40], //
- ann[64], ann[41], ann[42]);
+ assertThat(annotIndex.subiterator(bigBound, true, false)).toIterable().containsExactly( //
+ ann[58], ann[11], ann[12], //
+ ann[76], ann[13], ann[14], ann[15], //
+ ann[59], ann[16], //
+ ann[69], ann[17], ann[18], ann[19], ann[20], //
+ ann[60], ann[21], ann[22], //
+ ann[70], ann[23], ann[24], //
+ ann[71], ann[25], //
+ ann[61], ann[26], ann[27], ann[28], ann[29], ann[30], //
+ ann[62], ann[31], //
+ ann[72], ann[32], ann[33], ann[34], ann[35], //
+ ann[63], ann[36], ann[37], //
+ ann[73], ann[38], ann[39], //
+ ann[74], ann[40], //
+ ann[64], ann[41], ann[42]);
assertThat(annotIndex.subiterator(bigBound, true, false)).toIterable()
.extracting(a -> asList(ann).indexOf(a), a -> a.getType(), a -> a.getBegin(),
a -> a.getEnd())
@@ -437,18 +436,16 @@
AnnotationFS sent = cas.getAnnotationIndex(this.sentenceType).iterator().get();
assertThat(annotIndex.subiterator(sent, false, true)).toIterable()
.as("Subiterator over annot unambiguous strict")
- .extracting(a -> a.getType(), a -> a.getBegin(), a -> a.getEnd())
- .containsExactly( //
- tuple(tokenType, 0, 5), //
+ .extracting(a -> a.getType(), a -> a.getBegin(), a -> a.getEnd()).containsExactly( //
+ tuple(tokenType, 0, 5), //
tuple(tokenType, 5, 10));
assertCount("Subiterator over annot unambiguous strict", 2,
annotIndex.subiterator(sent, false, true));
assertThat(annotIndex.select().nonOverlapping().coveredBy(sent).asList())
.as("Subiterator select over annot unambiguous strict")
- .extracting(a -> a.getType(), a -> a.getBegin(), a -> a.getEnd())
- .containsExactly( //
- tuple(tokenType, 0, 5), //
+ .extracting(a -> a.getType(), a -> a.getBegin(), a -> a.getEnd()).containsExactly( //
+ tuple(tokenType, 0, 5), //
tuple(tokenType, 5, 10));
assertCount("Subiterator select over annot unambiguous strict", 2,
annotIndex.select().nonOverlapping().coveredBy(sent));
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTest.java b/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTest.java
index 1bc5380..d7acd28 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTest.java
@@ -507,7 +507,7 @@
ftg2.set(i, v == (featsToInclude2 & v));
}
}
-
+
// @formatter:off
/**
* Type system called to initialize the type system.
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java b/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java
index 0f16cfa..cb342d8 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java
@@ -331,7 +331,7 @@
@Test
public void testMultipleSofas() throws Exception {
- //@formatter:off
+ //@formatter:off
/*************************************************
* Make CAS with 2 sofas, initial and OtherSofa *
* *
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_BINARY_TSI_Test.java b/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_BINARY_TSI_Test.java
index 22226ca..7277ae7 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_BINARY_TSI_Test.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_BINARY_TSI_Test.java
@@ -66,7 +66,8 @@
}
private static List<DesSerTestScenario> roundTripDesSerScenarios() throws Exception {
- return SerDesCasIOTestUtils.roundTripDesSerScenariosComparingFileContents(desSerCycles, CAS_FILE_NAME);
+ return SerDesCasIOTestUtils.roundTripDesSerScenariosComparingFileContents(desSerCycles,
+ CAS_FILE_NAME);
}
private static List<SerDesTestScenario> serDesScenarios() {
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_SERIALIZED_TSI_Test.java b/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_SERIALIZED_TSI_Test.java
index 1640b24..d4b8863 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_SERIALIZED_TSI_Test.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/serdes/CasSerializationDeserialization_SERIALIZED_TSI_Test.java
@@ -65,7 +65,8 @@
}
private static List<DesSerTestScenario> roundTripDesSerScenarios() throws Exception {
- return SerDesCasIOTestUtils.roundTripDesSerScenariosComparingFileContents(desSerCycles, CAS_FILE_NAME);
+ return SerDesCasIOTestUtils.roundTripDesSerScenariosComparingFileContents(desSerCycles,
+ CAS_FILE_NAME);
}
private static List<SerDesTestScenario> serDesScenarios() {
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java
index 56d5431..06f24e6 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java
@@ -139,5 +139,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/EnrichedEntity.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/EnrichedEntity.java
index 85bc61e..26b020e 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/EnrichedEntity.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/EnrichedEntity.java
@@ -142,5 +142,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureRecord.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureRecord.java
index e623f26..cb9c43c 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureRecord.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureRecord.java
@@ -154,5 +154,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_1.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_1.java
index b02d2e2..5123db2 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_1.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_1.java
@@ -131,5 +131,3 @@
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_2.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_2.java
index 9881c25..ef6d131 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_2.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_2.java
@@ -88,5 +88,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_3.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_3.java
index 4133d03..327c594 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_3.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_3.java
@@ -88,5 +88,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_4.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_4.java
index b52ae1f..b347ed8 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_4.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_4.java
@@ -88,5 +88,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_5.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_5.java
index 277908f..9f3b12b 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_5.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_5.java
@@ -88,5 +88,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_6.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_6.java
index 80253d4..33191b9 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_6.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Level_6.java
@@ -88,5 +88,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java
index 5c213af..4cfce49 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java
@@ -99,5 +99,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java
index 7fa588c..7553c47 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java
@@ -139,5 +139,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java b/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java
index ab06a59..5478737 100644
--- a/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java
+++ b/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java
@@ -99,5 +99,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java b/uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java
index bd77169..57f277a 100644
--- a/uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java
@@ -19,6 +19,7 @@
package org.apache.uima.impl;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
@@ -52,6 +53,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+
public class UimaContext_implTest {
protected final String TEST_DATAPATH = JUnitExtension.getFile("AnnotatorContextTest").getPath()
+ System.getProperty("path.separator") + JUnitExtension.getFile("ResourceTest");
@@ -273,6 +275,14 @@
}
@Test
+ public void thatGetConfigurationGroupNamesWorksWhenNoParametersHaveBeenDeclared() {
+ UimaContext emptyContext = UIMAFramework.newUimaContext(UIMAFramework.getLogger(),
+ UIMAFramework.newDefaultResourceManager(), UIMAFramework.newConfigurationManager());
+
+ assertThat(emptyContext.getConfigurationGroupNames()).isEmpty();
+ }
+
+ @Test
public void testGetConfigParameterNames() {
String[] names = mContext.getConfigParameterNames();
Assert.assertEquals(6, names.length);
@@ -295,6 +305,15 @@
}
@Test
+ public void thatGetConfigParameterNamesWorksWhenNoParametersHaveBeenDeclared() {
+ UimaContext emptyContext = UIMAFramework.newUimaContext(UIMAFramework.getLogger(),
+ UIMAFramework.newDefaultResourceManager(), UIMAFramework.newConfigurationManager());
+
+ assertThat(emptyContext.getConfigParameterNames()).isEmpty();
+ assertThat(emptyContext.getConfigParameterNames("blah")).isEmpty();
+ }
+
+ @Test
public void testGetConfigParameterNamesString() {
String[] names = mContext2.getConfigParameterNames("en");
Assert.assertEquals(4, names.length);
diff --git a/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfShorts.java b/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfShorts.java
index e4687da..d959a47 100644
--- a/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfShorts.java
+++ b/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfShorts.java
@@ -157,5 +157,3 @@
((ShortArray)(_getFeatureValueNc(wrapGetIntCatchException(_FH_f1Shorts)))).set(i, v);
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfStrings.java b/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfStrings.java
index 14f0c9e..5cc6ec3 100644
--- a/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfStrings.java
+++ b/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfStrings.java
@@ -157,5 +157,3 @@
((StringArray)(_getFeatureValueNc(wrapGetIntCatchException(_FH_f1Strings)))).set(i, v);
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/JSR47Logger_implTest.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/JSR47Logger_implTest.java
index 369bab8..9ca1ad3 100644
--- a/uimaj-core/src/test/java/org/apache/uima/util/impl/JSR47Logger_implTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/JSR47Logger_implTest.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.uima.util.impl;
import java.util.HashMap;
@@ -24,6 +23,7 @@
import org.apache.uima.util.Level;
import org.junit.Assert;
+
import org.junit.jupiter.api.Test;
/**
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JLogger_implCapturingTest.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JLogger_implCapturingTest.java
new file mode 100644
index 0000000..9693487
--- /dev/null
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JLogger_implCapturingTest.java
@@ -0,0 +1,186 @@
+/*
+ * 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.uima.util.impl;
+
+import static java.lang.System.arraycopy;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.tuple;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.Level;
+import org.apache.uima.util.Logger;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class Log4JLogger_implCapturingTest {
+
+ private final Exception ex = new IllegalArgumentException("boom");
+
+ private Logger sut;
+
+ @BeforeEach
+ public void setup() {
+ sut = Log4jLogger_impl.getInstance(null);
+ }
+
+ @Test
+ public void thatSimpleMessageIsLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("test", ex);
+ sut.debug("test", ex);
+ sut.info("test", ex);
+ sut.warn("test", ex);
+ sut.error("test", ex);
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "test", ex), //
+ tuple(Level.DEBUG, "test", ex), //
+ tuple(Level.INFO, "test", ex), //
+ tuple(Level.WARN, "test", ex), //
+ tuple(Level.ERROR, "test", ex));
+ }
+ }
+
+ @Test
+ public void thatThrowableIsLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.debug("test", ex);
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple("test", ex));
+ }
+ }
+
+ @Test
+ public void thatMultipleParametersAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ for (int paramCount = 1; paramCount < 5; paramCount++) {
+ List<String> placeholders = new ArrayList<>();
+ List<String> values = new ArrayList<>();
+ for (int i = 0; i < paramCount; i++) {
+ placeholders.add("{}");
+ values.add(Integer.toString(i));
+ }
+ sut.debug(String.join(" ", placeholders), values.toArray());
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(String.join(" ", values), null));
+ }
+ }
+ }
+
+ @Test
+ public void thatOneParameterAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.debug("{}", "1", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple("1", ex));
+ }
+ }
+
+ @Test
+ public void thatTwoParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("{} {}", "1", "2", ex);
+ sut.debug("{} {}", "1", "2", ex);
+ sut.info("{} {}", "1", "2", ex);
+ sut.warn("{} {}", "1", "2", ex);
+ sut.error("{} {}", "1", "2", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "1 2", ex), //
+ tuple(Level.DEBUG, "1 2", ex), //
+ tuple(Level.INFO, "1 2", ex), //
+ tuple(Level.WARN, "1 2", ex), //
+ tuple(Level.ERROR, "1 2", ex));
+ }
+ }
+
+ @Test
+ public void thatThreeParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("{} {} {}", "1", "2", "3", ex);
+ sut.debug("{} {} {}", "1", "2", "3", ex);
+ sut.info("{} {} {}", "1", "2", "3", ex);
+ sut.warn("{} {} {}", "1", "2", "3", ex);
+ sut.error("{} {} {}", "1", "2", "3", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "1 2 3", ex), //
+ tuple(Level.DEBUG, "1 2 3", ex), //
+ tuple(Level.INFO, "1 2 3", ex), //
+ tuple(Level.WARN, "1 2 3", ex), //
+ tuple(Level.ERROR, "1 2 3", ex));
+ }
+ }
+
+ @Test
+ public void thatMultipleParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ for (int paramCount = 1; paramCount < 5; paramCount++) {
+ List<String> placeholders = new ArrayList<>();
+ List<String> values = new ArrayList<>();
+ for (int i = 0; i < paramCount; i++) {
+ placeholders.add("{}");
+ values.add(Integer.toString(i));
+ }
+
+ Object[] valuesPlusEx = new Object[paramCount + 1];
+ arraycopy(values.toArray(), 0, valuesPlusEx, 0, paramCount);
+ valuesPlusEx[paramCount] = ex;
+ sut.debug(String.join(" ", placeholders), valuesPlusEx);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(String.join(" ", values), ex));
+ }
+ }
+ }
+}
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JMessageCapture.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JMessageCapture.java
new file mode 100644
index 0000000..39bd6c6
--- /dev/null
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4JMessageCapture.java
@@ -0,0 +1,79 @@
+/*
+ * 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.uima.util.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.core.Filter;
+import org.apache.logging.log4j.core.LogEvent;
+import org.apache.logging.log4j.core.appender.ConsoleAppender;
+import org.apache.logging.log4j.core.filter.AbstractFilter;
+import org.apache.uima.util.AutoCloseableNoException;
+
+public class Log4JMessageCapture implements AutoCloseableNoException {
+
+ private final List<LogEvent> events = new ArrayList<>();
+ private final List<LogEvent> latestEvents = new ArrayList<>();
+ private final Filter filter;
+ private final ConsoleAppender app;
+
+ public Log4JMessageCapture() {
+ // Tell the logger to log everything
+ org.apache.logging.log4j.core.Logger rootLogger = (org.apache.logging.log4j.core.Logger) org.apache.logging.log4j.LogManager
+ .getRootLogger();
+ rootLogger.get().setLevel(org.apache.logging.log4j.Level.ALL);
+ rootLogger.getContext().updateLoggers();
+
+ filter = makeCapturingFilter();
+
+ app = (ConsoleAppender) rootLogger.get().getAppenders().values().stream().findFirst().get();
+ app.addFilter(filter);
+ }
+
+ private Filter makeCapturingFilter() {
+ return new AbstractFilter() {
+ @Override
+ public Result filter(LogEvent event) {
+ StackTraceElement ste = event.getSource();
+ System.out.printf("[%s:%s] %s%n", ste.getFileName(), ste.getLineNumber(),
+ event.getMessage().getFormattedMessage());
+ LogEvent immutableEvent = event.toImmutable();
+ events.add(immutableEvent);
+ latestEvents.add(immutableEvent);
+ return Result.DENY;
+ }
+ };
+ }
+
+ public List<LogEvent> getAndClearLatestEvents() {
+ List<LogEvent> result = new ArrayList<>(latestEvents);
+ latestEvents.clear();
+ return result;
+ }
+
+ public List<LogEvent> getAllEvents() {
+ return events;
+ }
+
+ @Override
+ public void close() {
+ app.removeFilter(filter);
+ }
+}
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4jLogger_implTest.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4jLogger_implTest.java
index be5a011..e0cc918 100644
--- a/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4jLogger_implTest.java
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/Log4jLogger_implTest.java
@@ -184,46 +184,7 @@
@Test
public void testMessageLogMethods() throws Exception {
- // final List<LoggingEvent> records = new ArrayList<LoggingEvent>();
- final int[] nbrcalls = new int[1];
- nbrcalls[0] = 0;
-
- // Tell the logger to log everything
- // long start = System.nanoTime();
- org.apache.logging.log4j.core.Logger rootLogger = (org.apache.logging.log4j.core.Logger) org.apache.logging.log4j.LogManager
- .getRootLogger();
- // System.out.format("debug time to init logger is %f%n ", ((double)(System.nanoTime() - start))
- // / 1000000000.0d);
- rootLogger.get().setLevel(org.apache.logging.log4j.Level.ALL);
- rootLogger.getContext().updateLoggers();
- // Configurator.setLevel(null, org.apache.logging.log4j.Level.ALL);
- // final LoggerContext loggerContext = LoggerContext.getContext(false);
- // final LoggerConfig loggerConfig = loggerContext.getConfiguration().getRootLogger();
- //
- // Appender appender = (Appender) rootLogger.getAllAppenders().nextElement();
- // Capture the logging output without actually logging it
- // ConsoleAppender app = (ConsoleAppender)
- // rootLogger.getAppenders().values().stream().findFirst().get();
- // add the filter to the shared Logger Context appender
- ConsoleAppender app = (ConsoleAppender) rootLogger.get().getAppenders().values().stream()
- .findFirst().get();
- Filter filter = new AbstractFilter() {
- @Override
- public Result filter(LogEvent event) {
- nbrcalls[0]++;
- StackTraceElement ste = event.getSource();
- System.out.printf("[%s:%s] %s%n", ste.getFileName(), ste.getLineNumber(),
- event.getMessage().getFormattedMessage());
- assertEquals(Log4jLogger_implTest.this.getClass().getName(), ste.getClassName());
- return Result.DENY;
- }
- };
-
- app.addFilter(filter);
-
- try {
- // create Logger
- // debug
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
org.apache.uima.util.Logger tempLogger = null;
try {
tempLogger = Log4jLogger_impl.getInstance(getClass());
@@ -233,18 +194,9 @@
System.err.println("debug finished stacktrace");
throw e;
}
+
final org.apache.uima.util.Logger logger = tempLogger;
- // reset log level to INFO
logger.setLevel(Level.INFO);
- // Configurator.setLevel("Console", org.apache.logging.log4j.Level.INFO);
-
- // File file = File.createTempFile("LoggingTest","log");
- // file.deleteOnExit();
-
- // change output temporary file
- // logger.setOutputStream(new PrintStream(new FileOutputStream(file)));
-
- // log test with method log(Level,String)
logger.log(Level.INFO, "My first test message");
logger.log(Level.INFO, "");
@@ -293,16 +245,13 @@
logger.logException(ex);
logger.logException(null);
- assertEquals(16, nbrcalls[0]); // all calls except those with null or "" msgs (including
- // non-null throwable/exception)
+ // all calls except those with null or "" msgs (including non-null throwable/exception)
+ assertEquals(16, capture.getAllEvents().size());
+
// https://issues.apache.org/jira/browse/UIMA-5719
logger.logrb(Level.WARNING, "testClass", "testMethod", "org.apache.uima.impl.log_messages",
"UIMA_external_override_ignored__CONFIG", new Object[] { "n1", "${abc}" });
-
- } finally {
- app.removeFilter(filter);
}
-
}
@Test
diff --git a/uimaj-core/src/test/java/org/apache/uima/util/impl/Slf4jLogger_implCapturingTest.java b/uimaj-core/src/test/java/org/apache/uima/util/impl/Slf4jLogger_implCapturingTest.java
new file mode 100644
index 0000000..038160b
--- /dev/null
+++ b/uimaj-core/src/test/java/org/apache/uima/util/impl/Slf4jLogger_implCapturingTest.java
@@ -0,0 +1,186 @@
+/*
+ * 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.uima.util.impl;
+
+import static java.lang.System.arraycopy;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.tuple;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.logging.log4j.Level;
+import org.apache.uima.util.Logger;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class Slf4jLogger_implCapturingTest {
+
+ private final Exception ex = new IllegalArgumentException("boom");
+
+ private Logger sut;
+
+ @BeforeEach
+ public void setup() {
+ sut = new Slf4jLogger_impl(null);
+ }
+
+ @Test
+ public void thatSimpleMessageIsLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("test", ex);
+ sut.debug("test", ex);
+ sut.info("test", ex);
+ sut.warn("test", ex);
+ sut.error("test", ex);
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "test", ex), //
+ tuple(Level.DEBUG, "test", ex), //
+ tuple(Level.INFO, "test", ex), //
+ tuple(Level.WARN, "test", ex), //
+ tuple(Level.ERROR, "test", ex));
+ }
+ }
+
+ @Test
+ public void thatThrowableIsLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.debug("test", ex);
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple("test", ex));
+ }
+ }
+
+ @Test
+ public void thatMultipleParametersAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ for (int paramCount = 1; paramCount < 5; paramCount++) {
+ List<String> placeholders = new ArrayList<>();
+ List<String> values = new ArrayList<>();
+ for (int i = 0; i < paramCount; i++) {
+ placeholders.add("{}");
+ values.add(Integer.toString(i));
+ }
+ sut.debug(String.join(" ", placeholders), values.toArray());
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(String.join(" ", values), null));
+ }
+ }
+ }
+
+ @Test
+ public void thatOneParameterAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.debug("{}", "1", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple("1", ex));
+ }
+ }
+
+ @Test
+ public void thatTwoParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("{} {}", "1", "2", ex);
+ sut.debug("{} {}", "1", "2", ex);
+ sut.info("{} {}", "1", "2", ex);
+ sut.warn("{} {}", "1", "2", ex);
+ sut.error("{} {}", "1", "2", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "1 2", ex), //
+ tuple(Level.DEBUG, "1 2", ex), //
+ tuple(Level.INFO, "1 2", ex), //
+ tuple(Level.WARN, "1 2", ex), //
+ tuple(Level.ERROR, "1 2", ex));
+ }
+ }
+
+ @Test
+ public void thatThreeParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ sut.trace("{} {} {}", "1", "2", "3", ex);
+ sut.debug("{} {} {}", "1", "2", "3", ex);
+ sut.info("{} {} {}", "1", "2", "3", ex);
+ sut.warn("{} {} {}", "1", "2", "3", ex);
+ sut.error("{} {} {}", "1", "2", "3", ex);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getLevel(), //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(Level.TRACE, "1 2 3", ex), //
+ tuple(Level.DEBUG, "1 2 3", ex), //
+ tuple(Level.INFO, "1 2 3", ex), //
+ tuple(Level.WARN, "1 2 3", ex), //
+ tuple(Level.ERROR, "1 2 3", ex));
+ }
+ }
+
+ @Test
+ public void thatMultipleParametersAndThrowableAreLogged() throws Exception {
+ try (Log4JMessageCapture capture = new Log4JMessageCapture()) {
+ for (int paramCount = 1; paramCount < 5; paramCount++) {
+ List<String> placeholders = new ArrayList<>();
+ List<String> values = new ArrayList<>();
+ for (int i = 0; i < paramCount; i++) {
+ placeholders.add("{}");
+ values.add(Integer.toString(i));
+ }
+
+ Object[] valuesPlusEx = new Object[paramCount + 1];
+ arraycopy(values.toArray(), 0, valuesPlusEx, 0, paramCount);
+ valuesPlusEx[paramCount] = ex;
+ sut.debug(String.join(" ", placeholders), valuesPlusEx);
+
+ assertThat(capture.getAndClearLatestEvents()) //
+ .extracting( //
+ e -> e.getMessage().getFormattedMessage(), //
+ e -> e.getThrown()) //
+ .containsExactly( //
+ tuple(String.join(" ", values), ex));
+ }
+ }
+ }
+}
diff --git a/uimaj-core/src/test/java/sofa/test/CrossAnnotation.java b/uimaj-core/src/test/java/sofa/test/CrossAnnotation.java
index faa3e40..8780a19 100644
--- a/uimaj-core/src/test/java/sofa/test/CrossAnnotation.java
+++ b/uimaj-core/src/test/java/sofa/test/CrossAnnotation.java
@@ -138,5 +138,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/EndOfSentence.java b/uimaj-core/src/test/java/x/y/z/EndOfSentence.java
index 638f770..6965b00 100644
--- a/uimaj-core/src/test/java/x/y/z/EndOfSentence.java
+++ b/uimaj-core/src/test/java/x/y/z/EndOfSentence.java
@@ -82,5 +82,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/Sentence.java b/uimaj-core/src/test/java/x/y/z/Sentence.java
index 73a5822..0f25a48 100644
--- a/uimaj-core/src/test/java/x/y/z/Sentence.java
+++ b/uimaj-core/src/test/java/x/y/z/Sentence.java
@@ -121,5 +121,3 @@
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/Separator.java b/uimaj-core/src/test/java/x/y/z/Separator.java
index d0d8fe8..c72b4a0 100644
--- a/uimaj-core/src/test/java/x/y/z/Separator.java
+++ b/uimaj-core/src/test/java/x/y/z/Separator.java
@@ -86,5 +86,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/Token.java b/uimaj-core/src/test/java/x/y/z/Token.java
index fcfaf0f..363f9a9 100644
--- a/uimaj-core/src/test/java/x/y/z/Token.java
+++ b/uimaj-core/src/test/java/x/y/z/Token.java
@@ -205,5 +205,3 @@
((StringArray)(_getFeatureValueNc(wrapGetIntCatchException(_FH_lemmaList)))).set(i, v);
}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/TokenType.java b/uimaj-core/src/test/java/x/y/z/TokenType.java
index 449d518..593658d 100644
--- a/uimaj-core/src/test/java/x/y/z/TokenType.java
+++ b/uimaj-core/src/test/java/x/y/z/TokenType.java
@@ -87,5 +87,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file
diff --git a/uimaj-core/src/test/java/x/y/z/Word.java b/uimaj-core/src/test/java/x/y/z/Word.java
index 655094b..fec1301 100644
--- a/uimaj-core/src/test/java/x/y/z/Word.java
+++ b/uimaj-core/src/test/java/x/y/z/Word.java
@@ -86,5 +86,3 @@
private void readObject() {/*default - does nothing empty block */}
}
-
-
\ No newline at end of file