From 8846a921377fb8b3d74f3962fad5608f98f70d9c Mon Sep 17 00:00:00 2001
From: gwen-soleil <gwenaelle.abeille@gmail.com>
Date: Mon, 27 Sep 2021 17:03:28 +0200
Subject: [PATCH] fix regression: dynamic attributes were not created

---
 .../snapextractor/SnapDynamicAttribute.java      | 16 ++++++++--------
 .../server/snapextractor/SnapExtractor.java      |  7 ++++---
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/snapextractor/src/main/java/org/tango/server/snapextractor/SnapDynamicAttribute.java b/snapextractor/src/main/java/org/tango/server/snapextractor/SnapDynamicAttribute.java
index 5c97abd..dd9d41f 100644
--- a/snapextractor/src/main/java/org/tango/server/snapextractor/SnapDynamicAttribute.java
+++ b/snapextractor/src/main/java/org/tango/server/snapextractor/SnapDynamicAttribute.java
@@ -1,7 +1,10 @@
 package org.tango.server.snapextractor;
 
-import java.lang.reflect.Array;
-
+import fr.esrf.Tango.AttrDataFormat;
+import fr.esrf.Tango.AttrWriteType;
+import fr.esrf.Tango.DevFailed;
+import fr.esrf.TangoDs.TimedAttrData;
+import fr.soleil.archiving.common.api.tools.DbData;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.tango.server.StateMachineBehavior;
@@ -11,17 +14,13 @@ import org.tango.server.attribute.AttributeValue;
 import org.tango.server.attribute.IAttributeBehavior;
 import org.tango.server.idl.TangoIDLUtil;
 
-import fr.esrf.Tango.AttrDataFormat;
-import fr.esrf.Tango.AttrWriteType;
-import fr.esrf.Tango.DevFailed;
-import fr.esrf.TangoDs.TimedAttrData;
-import fr.soleil.archiving.common.api.tools.DbData;
+import java.lang.reflect.Array;
 
 public class SnapDynamicAttribute implements IAttributeBehavior {
 
+    final TimedAttrData[] timedAttrDatas;
     private final Logger logger = LoggerFactory.getLogger(SnapDynamicAttribute.class);
     private final AttributeConfiguration config = new AttributeConfiguration();
-    final TimedAttrData[] timedAttrDatas;
     private final AttributeValue readValue;
 
     public SnapDynamicAttribute(final String name, final DbData dbData) throws DevFailed {
@@ -31,6 +30,7 @@ public class SnapDynamicAttribute implements IAttributeBehavior {
         final AttributePropertiesImpl props = new AttributePropertiesImpl();
         props.setLabel(dbData.getName());
         config.setAttributeProperties(props);
+        logger.debug("create attribute {}", config);
         timedAttrDatas = dbData.getDataAsTimedAttrData();
 
         final TimedAttrData timeData = timedAttrDatas[0];
diff --git a/snapextractor/src/main/java/org/tango/server/snapextractor/SnapExtractor.java b/snapextractor/src/main/java/org/tango/server/snapextractor/SnapExtractor.java
index dcfe2d3..cb24f1e 100644
--- a/snapextractor/src/main/java/org/tango/server/snapextractor/SnapExtractor.java
+++ b/snapextractor/src/main/java/org/tango/server/snapextractor/SnapExtractor.java
@@ -660,8 +660,10 @@ public class SnapExtractor implements DBExtractionConst {
         final String writeName = names[1];
         int writable = -1;
         for (DbData dbData : dbDatas) {
-            if ((dbData != null) && (dbData.getDataType() == TangoConst.Tango_DEV_STATE)) {
-                dbData.setDataType(TangoConst.Tango_DEV_LONG);
+            if ((dbData != null)) {
+                if ((dbData.getDataType() == TangoConst.Tango_DEV_STATE)) {
+                    dbData.setDataType(TangoConst.Tango_DEV_LONG);
+                }
                 writable = dbData.getWritable();
             }
         }
@@ -670,7 +672,6 @@ public class SnapExtractor implements DBExtractionConst {
         logger.debug("read part = {}, write part = {}", readDbData, writeDbData);
         // Create the attributes
         if (writable == AttrWriteType._READ || writable == AttrWriteType._READ_WRITE) {
-            logger.debug("create attribute {}", readName);
             dynMngt.addAttribute(new SnapDynamicAttribute(readName, readDbData));
         }
         if (writable == AttrWriteType._WRITE) {
-- 
GitLab