JAL-4199 Fix slivka client to parse feature fileters
[jalview.git] / src / jalview / ws2 / client / slivka / SlivkaParamStoreFactory.java
index 6ac21df..fba6d2b 100644 (file)
@@ -1,7 +1,5 @@
 package jalview.ws2.client.slivka;
 
-import static java.util.Objects.requireNonNullElse;
-
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -13,6 +11,7 @@ import java.util.Map;
 import com.stevesoft.pat.NotImplementedError;
 
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.ws.params.ArgumentI;
 import jalview.ws.params.ParamDatastoreI;
 import jalview.ws.params.ParamManager;
@@ -30,6 +29,7 @@ import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
 class SlivkaParamStoreFactory
 {
   private final SlivkaService service;
+
   private final ParamManager manager;
 
   SlivkaParamStoreFactory(SlivkaService service, ParamManager manager)
@@ -37,7 +37,7 @@ class SlivkaParamStoreFactory
     this.service = service;
     this.manager = manager;
   }
-  
+
   ParamDatastoreI createParamDatastore()
   {
     URL url = null;
@@ -46,7 +46,7 @@ class SlivkaParamStoreFactory
       url = service.getUrl().toURL();
     } catch (MalformedURLException e)
     {
-      Cache.log.warn("Invalid service url " + service.getUrl(), e);
+      Console.warn("Invalid service url " + service.getUrl(), e);
     }
     List<WsParamSetI> presets = new ArrayList<>(service.getPresets().size());
     for (var preset : service.getPresets())
@@ -56,7 +56,7 @@ class SlivkaParamStoreFactory
     List<ArgumentI> arguments = createPresetArguments(Collections.emptyMap());
     return new SimpleParamDatastore(url, arguments, presets, manager);
   }
-  
+
   WsParamSetI createPreset(SlivkaService.Preset preset)
   {
     var builder = SimpleParamSet.newBuilder();
@@ -96,7 +96,11 @@ class SlivkaParamStoreFactory
       else if (param instanceof Parameter.ChoiceParameter)
       {
         Object ovalue = values.get(param.getId());
-        List<String> lvalue = param.isArray() ? (List<String>) ovalue : List.of((String) ovalue);
+        List<String> lvalue = null;
+        if (param.isArray())
+          lvalue = (List<String>) ovalue;
+        else if (ovalue != null)
+          lvalue = List.of((String) ovalue);
         args.addAll(createChoiceOptions((Parameter.ChoiceParameter) param, lvalue));
       }
       else if (param instanceof Parameter.FileParameter)
@@ -151,7 +155,7 @@ class SlivkaParamStoreFactory
 
   private List<Option> createChoiceOptions(Parameter.ChoiceParameter param, List<String> value)
   {
-    value = requireNonNullElse(value, Collections.emptyList());
+    value = value != null ? value : Collections.emptyList();
     if (param.isArray())
     {
       /*
@@ -159,8 +163,9 @@ class SlivkaParamStoreFactory
        * Use multiple boolean checkboxes to represent the value.
        */
       List<Option> options = new ArrayList<>();
-      List<?> selected = requireNonNullElse(
-          (List<?>) param.getDefault(), Collections.emptyList());
+      List<?> selected = param.getDefault() != null
+              ? (List<?>) param.getDefault()
+              : Collections.emptyList();
       int i = 0;
       var builder = BooleanOption.newBuilder();
       setCommonProperties(param, builder);
@@ -218,7 +223,7 @@ class SlivkaParamStoreFactory
       builder.setDetailsUrl(service.getUrl().toURL());
     } catch (MalformedURLException e)
     {
-      Cache.log.warn("invalid service url " + service.getUrl(), e);
+      Console.warn("invalid service url " + service.getUrl(), e);
     }
   }
 }
\ No newline at end of file