You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by re...@apache.org on 2021/10/22 09:36:22 UTC

[uima-uimaj] branch bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main created (now 11f2861)

This is an automated email from the ASF dual-hosted git repository.

rec pushed a change to branch bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git.


      at 11f2861  Merge branch 'bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context' into bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main

This branch includes the following new commits:

     new d1ff8b3  [UIMA-6390] NPE when trying to access config names of fresh context
     new 11f2861  Merge branch 'bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context' into bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


[uima-uimaj] 01/02: [UIMA-6390] NPE when trying to access config names of fresh context

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git

commit d1ff8b3fa9a0671c50c19a0f77068dd412579487
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Fri Oct 22 11:07:52 2021 +0200

    [UIMA-6390] NPE when trying to access config names of fresh context
    
    - Add test
    - Fix NPE when no parameter declarations have been made for a context
---
 .../org/apache/uima/impl/UimaContext_ImplBase.java | 36 +++++++++++++---------
 .../apache/uima/resource/ConfigurationManager.java |  2 +-
 .../org/apache/uima/impl/UimaContext_implTest.java |  9 ++++++
 3 files changed, 32 insertions(+), 15 deletions(-)

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..af2fdfc 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.ResourceConfigurationException;
 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;
@@ -579,17 +580,19 @@ public abstract class UimaContext_ImplBase implements UimaContextAdmin {
    */
   @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);
   }
 
   /*
@@ -658,15 +661,17 @@ public abstract class UimaContext_ImplBase implements UimaContextAdmin {
     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 +689,9 @@ public abstract class UimaContext_ImplBase implements UimaContextAdmin {
     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 +858,16 @@ public abstract class UimaContext_ImplBase implements UimaContextAdmin {
       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/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 @@ public interface ConfigurationManager {
    * @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/test/java/org/apache/uima/impl/UimaContext_implTest.java b/uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java
index bd77169..b567cbd 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;
@@ -295,6 +296,14 @@ public class UimaContext_implTest {
   }
 
   @Test
+  public void thatGetConfigParameterNamesWorksWhenNoParametersHaveBeenDeclared() {
+    UimaContext emptyContext = UIMAFramework.newUimaContext(UIMAFramework.getLogger(),
+            UIMAFramework.newDefaultResourceManager(), UIMAFramework.newConfigurationManager());
+
+    assertThat(emptyContext.getConfigParameterNames()).isEmpty();
+  }
+
+  @Test
   public void testGetConfigParameterNamesString() {
     String[] names = mContext2.getConfigParameterNames("en");
     Assert.assertEquals(4, names.length);

[uima-uimaj] 02/02: Merge branch 'bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context' into bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rec pushed a commit to branch bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main
in repository https://gitbox.apache.org/repos/asf/uima-uimaj.git

commit 11f2861d956bd9378f66c3e56e21cef286fc443a
Merge: d1ff8b3 c1b1682
Author: Richard Eckart de Castilho <re...@apache.org>
AuthorDate: Fri Oct 22 11:36:16 2021 +0200

    Merge branch 'bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context' into bugfix/UIMA-6390-NPE-when-trying-to-access-config-names-of-fresh-context-main
    
    * bugfix/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
    
    % Conflicts:
    %	uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
    %	uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java

 .../org/apache/uima/impl/UimaContext_ImplBase.java | 42 ++++++++++++----------
 .../org/apache/uima/impl/UimaContext_implTest.java |  1 +
 2 files changed, 24 insertions(+), 19 deletions(-)

diff --cc uimaj-core/src/main/java/org/apache/uima/impl/UimaContext_ImplBase.java
index af2fdfc,3f214ca..f1faadf
--- 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
@@@ -602,30 -595,34 +602,34 @@@ public abstract class UimaContext_ImplB
     */
    @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());
-         }
+     }
+ 
 -      List<String> names = new ArrayList<>();
++    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());
 -        }
++    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());
-         }
++    }
+ 
 -      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());
 -        }
++    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;
 +    }
+ 
+     return names.toArray(new String[names.size()]);
    }
  
    /**
diff --cc uimaj-core/src/test/java/org/apache/uima/impl/UimaContext_implTest.java
index b567cbd,a384983..a85c31b
--- 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
@@@ -301,9 -305,9 +301,10 @@@ public class UimaContext_implTest 
              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);