You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ga...@apache.org on 2021/11/16 03:23:07 UTC

[flink-ml] branch master updated: [FLINK-24354][FLIP-174] Updates WithParams::set(...) to throw Exception if the given param is not defined on this instance

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

gaoyunhaii pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-ml.git


The following commit(s) were added to refs/heads/master by this push:
     new acf13c6  [FLINK-24354][FLIP-174] Updates WithParams::set(...) to throw Exception if the given param is not defined on this instance
acf13c6 is described below

commit acf13c6cf138545775cc8a1f1bf1c86f7adfcd51
Author: Dong Lin <li...@gmail.com>
AuthorDate: Mon Nov 15 16:25:29 2021 +0800

    [FLINK-24354][FLIP-174] Updates WithParams::set(...) to throw Exception if the given param is not defined on this instance
    
    This closes #35.
---
 .../src/main/java/org/apache/flink/ml/param/WithParams.java  |  8 ++++++++
 .../test/java/org/apache/flink/ml/api/core/StageTest.java    | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/flink-ml-api/src/main/java/org/apache/flink/ml/param/WithParams.java b/flink-ml-api/src/main/java/org/apache/flink/ml/param/WithParams.java
index f631c8e..0a7b5c4 100644
--- a/flink-ml-api/src/main/java/org/apache/flink/ml/param/WithParams.java
+++ b/flink-ml-api/src/main/java/org/apache/flink/ml/param/WithParams.java
@@ -72,6 +72,14 @@ public interface WithParams<T> {
      */
     @SuppressWarnings("unchecked")
     default <V> T set(Param<V> param, V value) {
+        if (!getParamMap().containsKey(param)) {
+            throw new IllegalArgumentException(
+                    "Parameter "
+                            + param.name
+                            + " is not defined on the class "
+                            + getClass().getName());
+        }
+
         if (value != null && !param.clazz.isAssignableFrom(value.getClass())) {
             throw new ClassCastException(
                     "Parameter "
diff --git a/flink-ml-api/src/test/java/org/apache/flink/ml/api/core/StageTest.java b/flink-ml-api/src/test/java/org/apache/flink/ml/api/core/StageTest.java
index 9e03ddb..88b48b1 100644
--- a/flink-ml-api/src/test/java/org/apache/flink/ml/api/core/StageTest.java
+++ b/flink-ml-api/src/test/java/org/apache/flink/ml/api/core/StageTest.java
@@ -242,6 +242,18 @@ public class StageTest {
     }
 
     @Test
+    public void testSetUndefinedParam() {
+        MyStage stage = new MyStage();
+        Param<Integer> param = new IntParam("anotherIntParam", "Not defined on MyStage", 1);
+        try {
+            stage.set(param, 2);
+            Assert.fail("Expected IllegalArgumentException");
+        } catch (IllegalArgumentException e) {
+            Assert.assertTrue(e.getMessage().contains(MyStage.class.getName()));
+        }
+    }
+
+    @Test
     public void testParamSetInvalidValue() {
         MyStage stage = new MyStage();
         assertInvalidValue(stage, MyParams.INT_PARAM, 100);