You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/10/26 20:35:19 UTC

[incubator-plc4x] 03/06: [plc4j-opm] fixed is-getter calls.

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

sruehl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 3a187b3c6e3c4f2b55b816afa72bb78250eca013
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Oct 26 22:09:14 2018 +0200

    [plc4j-opm] fixed is-getter calls.
---
 .../java/org/apache/plc4x/java/opm/PlcEntityManager.java  | 15 ++++++++++++---
 .../org/apache/plc4x/java/opm/PlcEntityManagerTest.java   |  5 +++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/plc4j/utils/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java b/plc4j/utils/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java
index aa51f7b..206a25e 100644
--- a/plc4j/utils/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java
+++ b/plc4j/utils/opm/src/main/java/org/apache/plc4x/java/opm/PlcEntityManager.java
@@ -234,7 +234,7 @@ public class PlcEntityManager {
             // Fetch single value
             LOGGER.trace("Invoked method {} is boolean flag method, trying to find annotated field and return requested value",
                 m.getName());
-            return fetchValueForGetter(that, m);
+            return fetchValueForIsGetter(that, m);
         }
 
         // Fetch all values, than invoke method
@@ -294,9 +294,18 @@ public class PlcEntityManager {
         }
     }
 
-    // TODO: why isn't o used?
+
+    private Object fetchValueForIsGetter(Object o, Method m) throws OPMException {
+        return fetchValueForGetter(o, m, 2);
+    }
+
     private Object fetchValueForGetter(Object o, Method m) throws OPMException {
-        String s = m.getName().substring(3);
+        return fetchValueForGetter(o, m, 3);
+    }
+
+    // TODO: why isn't o used?
+    private Object fetchValueForGetter(Object o, Method m, int prefixLength) throws OPMException {
+        String s = m.getName().substring(prefixLength);
         // First char to lower
         String variable = s.substring(0, 1).toLowerCase().concat(s.substring(1));
         LOGGER.trace("Looking for field with name {} after invokation of getter {}", variable, m.getName());
diff --git a/plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java b/plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
index d161e62..ec0dc6c 100644
--- a/plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
+++ b/plc4j/utils/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
@@ -131,6 +131,7 @@ public class PlcEntityManagerTest {
         Map<String, BaseDefaultFieldItem> map = new HashMap<>();
         map.put("getIntVar", new DefaultIntegerFieldItem(1));
         map.put("getStringVar", new DefaultStringFieldItem("Hello"));
+        map.put("isBoolVar", new DefaultBooleanFieldItem(true));
         PlcEntityManager manager = getPlcEntityManager(map);
 
         ConnectedEntity connect = manager.connect(ConnectedEntity.class);
@@ -140,6 +141,7 @@ public class PlcEntityManagerTest {
         // Call getter
         assertEquals(1, connect.getIntVar());
         assertEquals("Hello", connect.getStringVar());
+        assertEquals(true, connect.isBoolVar());
     }
 
     private PlcEntityManager getPlcEntityManager(final Map<String, BaseDefaultFieldItem> responses) throws PlcConnectionException {
@@ -320,6 +322,9 @@ public class PlcEntityManagerTest {
             // Default
         }
 
+        public boolean isBoolVar() {
+            return boolVar;
+        }
 
         public byte getByteVar() {
             return byteVar;