From 80ca4f8412e4f80bfa67edae2efb1b1262a69d9d Mon Sep 17 00:00:00 2001
From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com>
Date: Wed, 13 Sep 2017 21:29:02 -0400
Subject: [PATCH] fix: fixed a bug where item's data wasnt stored properly in
 graph.

---
 .../graphdb/GraphDbAetherMudStorage.java      |  7 +-----
 .../storage/graphdb/model/ItemData.java       | 24 ++++++++++++-------
 2 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java
index 52a38866..db263242 100644
--- a/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java
+++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/GraphDbAetherMudStorage.java
@@ -76,12 +76,7 @@ public class GraphDbAetherMudStorage implements AetherMudStorage {
     @Override
     public ItemData saveItem(Item item) {
         ItemData itemData = framedGraph.addFramedVertex(ItemData.class);
-        try {
-            PropertyUtils.copyProperties(itemData, item);
-        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
-            throw new IllegalStateException("Could not copy beans", e);
-        }
-        itemData.setItemTriggers(item.getItemTriggers());
+        ItemData.copyItem(itemData, item);
         return itemData;
     }
 
diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java
index 6db2519c..570bf14a 100644
--- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java
+++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java
@@ -257,11 +257,15 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame {
     public static void copyItem(ItemData dest, Item src) {
         try {
             PropertyUtils.copyProperties(dest, src);
-            StatData.copyStats(dest.createItemApplyStatData(), src.getItemApplyStats());
-            LootData.copyLoot(dest.createLoottData(), src.getLoot());
-            EquipmentData.copyEquipment(dest.createEquipmentData(), src.getEquipment());
-            for(Effect effect : src.getEffects())
-                EffectData.copyEffect(dest.createEffectData(), effect);
+            if( src.getItemApplyStats() != null )
+                StatData.copyStats(dest.createItemApplyStatData(), src.getItemApplyStats());
+            if(src.getLoot() != null )
+                LootData.copyLoot(dest.createLoottData(), src.getLoot());
+            if( src.getEquipment() != null )
+                EquipmentData.copyEquipment(dest.createEquipmentData(), src.getEquipment());
+            if( src.getEffects() != null )
+                for(Effect effect : src.getEffects())
+                    EffectData.copyEffect(dest.createEffectData(), effect);
         } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
             throw new IllegalStateException("Could not copy properties", e);
         }
@@ -284,10 +288,12 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame {
             if( applyStats != null )
                 retVal.setItemApplyStats(StatData.copyStats(applyStats));
 
-            Set<Effect> effects = new HashSet<>();
-            for(EffectData effect : src.getEffectDatas())
-                effects.add(EffectData.copyEffect(effect));
-            retVal.setEffects(Collections.unmodifiableSet(effects));
+            if( src.getEffectDatas() != null ) {
+                Set<Effect> effects = new HashSet<>();
+                for (EffectData effect : src.getEffectDatas())
+                    effects.add(EffectData.copyEffect(effect));
+                retVal.setEffects(Collections.unmodifiableSet(effects));
+            }
 
         } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
             throw new IllegalStateException("Could not copy properties", e);
-- 
GitLab