This is an automated email from the ASF dual-hosted git repository.
seanfinan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ctakes.git
The following commit(s) were added to refs/heads/main by this push:
new 567b0cb Use default parameter values if a user-declared piper
$variable is not defined.
567b0cb is described below
commit 567b0cbba544729d3f2243aec549f663d6fd9204
Author: Sean Finan <[email protected]>
AuthorDate: Fri Dec 20 10:18:01 2024 -0500
Use default parameter values if a user-declared piper $variable is not
defined.
---
.../ctakes/core/pipeline/CliOptionalsHandler.java | 8 ++++-
.../ctakes/core/pipeline/PiperFileReader.java | 28 +++++++++++----
.../apache/ctakes/core/util/PropertyAeFactory.java | 41 ++++++++++++++--------
3 files changed, 55 insertions(+), 22 deletions(-)
diff --git
a/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/CliOptionalsHandler.java
b/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/CliOptionalsHandler.java
index 57da199..e373e5d 100644
---
a/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/CliOptionalsHandler.java
+++
b/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/CliOptionalsHandler.java
@@ -15,9 +15,15 @@ final public class CliOptionalsHandler {
static private final Logger LOGGER = LoggerFactory.getLogger(
"CliOptionalsHandler" );
+ static public final String NO_CLI_VALUE = "NO_CLI_VALUE";
+
private CliOptionalsHandler() {
}
+ static public boolean noCliValue( final Object value ) {
+ return NO_CLI_VALUE.equals( value );
+ }
+
/**
* Brute force method to get option values
*
@@ -169,7 +175,7 @@ final public class CliOptionalsHandler {
}
}
LOGGER.warn( "No value specified on command line for parameter \"{}\"",
name );
- return "";
+ return NO_CLI_VALUE;
}
}
diff --git
a/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
b/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
index e4f2441..df3a9a8 100644
---
a/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
+++
b/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
@@ -435,7 +435,8 @@ final public class PiperFileReader {
pairList.add( text.substring( matcher.start(), matcher.end() ) );
}
final String[] pairs = pairList.toArray( new String[ pairList.size() ] );
- final Object[] keysAndValues = new Object[ pairs.length * 2 ];
+// final Object[] keysAndValues = new Object[ pairs.length * 2 ];
+ final List<Object> keyValueList = new ArrayList<>();
int i = 0;
for ( String pair : pairs ) {
// final String[] keyAndValue = KEY_VALUE_PATTERN.split( pair );
@@ -445,19 +446,32 @@ final public class PiperFileReader {
kvList.add( pair.substring( kv_matcher.start(), kv_matcher.end() )
);
}
final String[] keyAndValue = kvList.toArray( new String[
kvList.size() ] );
- keysAndValues[ i ] = keyAndValue[ 0 ];
+// keysAndValues[ i ] = keyAndValue[ 0 ];
if ( keyAndValue.length == 1 ) {
- keysAndValues[ i + 1 ] = "";
- i += 2;
+// keysAndValues[ i + 1 ] = "";
+// i += 2;
+ keyValueList.add( keyAndValue[ 0 ] );
+ keyValueList.add( "" );
continue;
} else if ( keyAndValue.length > 2 ) {
LOGGER.warn( "Multiple parameter values, using first of {}", pair
);
}
- keysAndValues[ i + 1 ] = getValueObject( CliOptionalsHandler
+ final Object value = getValueObject( CliOptionalsHandler
.getCliOptionalValue( _cliOptionals, keyAndValue[ 1 ] ) );
- i += 2;
+ if ( CliOptionalsHandler.noCliValue( value ) ) {
+ continue;
+ }
+// keysAndValues[ i + 1 ] = getValueObject( CliOptionalsHandler
+// .getCliOptionalValue( _cliOptionals, keyAndValue[ 1 ] ) );
+// i += 2;
+ keyValueList.add( keyAndValue[ 0 ] );
+ keyValueList.add( value );
}
- return keysAndValues;
+ if ( keyValueList.isEmpty() ) {
+ return EMPTY_OBJECT_ARRAY;
+ }
+ return keyValueList.toArray();
+// return keysAndValues;
}
/**
diff --git
a/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
b/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
index 17d9672..e6392a5 100644
---
a/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
+++
b/ctakes-core/src/main/java/org/apache/ctakes/core/util/PropertyAeFactory.java
@@ -14,7 +14,9 @@ import
org.apache.uima.fit.factory.TypeSystemDescriptionFactory;
import org.apache.uima.resource.ResourceInitializationException;
import org.apache.uima.resource.metadata.TypeSystemDescription;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
/**
@@ -34,6 +36,7 @@ public enum PropertyAeFactory {
static private final Logger LOGGER = LoggerFactory.getLogger(
"PropertyAeFactory" );
+ static private final String NO_SUBSTITUTION_VALUE = "NO_SUBSTITUTION_VALUE";
// Use a single hashmap so that multiple properties files can be used
final private Map<String, Object> _properties = new HashMap<>();
@@ -44,7 +47,7 @@ public enum PropertyAeFactory {
_typeSystemDescription =
TypeSystemDescriptionFactory.createTypeSystemDescription();
} catch ( ResourceInitializationException riE ) {
LoggerFactory.getLogger( "PropertyAeFactory" )
- .error( "Could not initialize cTAKES Type System\n{}",
riE.getMessage() );
+ .error( "Could not initialize cTAKES Type System\n{}.",
riE.getMessage() );
System.exit( -1 );
}
}
@@ -56,7 +59,7 @@ public enum PropertyAeFactory {
*/
synchronized public void addParameters( final Object... parameters ) {
if ( parameters.length == 0 ) {
- LOGGER.warn( "No parameters specified." );
+// LOGGER.warn( "No parameters specified." );
return;
}
if ( parameters.length % 2 != 0 ) {
@@ -73,7 +76,7 @@ public enum PropertyAeFactory {
*/
synchronized public void addIfEmptyParameters( final Object... parameters )
{
if ( parameters.length == 0 ) {
- LOGGER.warn( "No parameters specified." );
+// LOGGER.warn( "No parameters specified." );
return;
}
if ( parameters.length % 2 != 0 ) {
@@ -101,19 +104,28 @@ public enum PropertyAeFactory {
* @return array of Objects representing name value pairs
*/
static private Object[] createParameters( final Map<String, Object>
parameterMap ) {
- final Object[] parameters = new Object[ parameterMap.size() * 2 ];
- int i = 0;
+// final Object[] parameters = new Object[ parameterMap.size() * 2 ];
+ final List<Object> parameterList = new ArrayList<>();
+// int i = 0;
for ( Map.Entry<String, Object> entry : parameterMap.entrySet() ) {
- parameters[ i ] = entry.getKey();
+// parameters[ i ] = entry.getKey();
final Object value = subVariableParameter( entry.getValue(),
parameterMap );
if ( !value.equals( entry.getValue() ) ) {
- LOGGER.info( "Substituting Parameter Value \"{}\" for \"{}\" on
Parameter \"{}\"", value, entry.getValue(),
- entry.getKey() );
+ if ( value.equals( NO_SUBSTITUTION_VALUE ) ) {
+ LOGGER.warn( "No value for variable {} on parameter {}, default
value will be used.", entry.getValue(), entry.getKey() );
+ continue;
+ } else {
+ LOGGER.info( "Substituting Parameter Value \"{}\" for \"{}\" on
Parameter \"{}\".", value, entry.getValue(),
+ entry.getKey() );
+ }
}
- parameters[ i + 1 ] = value;
- i += 2;
+ parameterList.add( entry.getKey() );
+ parameterList.add( value );
+// parameters[ i + 1 ] = value;
+// i += 2;
}
- return parameters;
+// return parameters;
+ return parameterList.toArray();
}
/**
@@ -152,8 +164,9 @@ public enum PropertyAeFactory {
if ( envValue != null ) {
return envValue;
}
- LOGGER.warn( "No value for unknown substitution variable ${}",
varName );
- return parameterValue;
+// LOGGER.warn( "No value for unknown substitution variable ${}",
varName );
+// return parameterValue;
+ return NO_SUBSTITUTION_VALUE;
}
return subValue;
}
@@ -247,7 +260,7 @@ public enum PropertyAeFactory {
if ( parameters[ i ] instanceof String ) {
map.put( (String) parameters[ i ], parameters[ i + 1 ] );
} else {
- LOGGER.warn( "Parameter {} not a String, using {}", i, parameters[
i ].toString() );
+ LOGGER.warn( "Parameter {} not a String, using {}.", i,
parameters[ i ].toString() );
map.put( parameters[ i ].toString(), parameters[ i + 1 ] );
}
}