Provide Entity.as_dict()

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/reclass/datatypes/entity.py b/reclass/datatypes/entity.py
index ed10e0d..727b828 100644
--- a/reclass/datatypes/entity.py
+++ b/reclass/datatypes/entity.py
@@ -72,3 +72,9 @@
         return "%s(%r, %r, %r, %r)" % (self.__class__.__name__,
                                          self.classes, self.applications,
                                          self.parameters, self.name)
+
+    def as_dict(self):
+        return {'classes': self._classes.as_list(),
+                'applications': self._applications.as_list(),
+                'parameters': self._parameters.as_dict()
+               }
diff --git a/reclass/datatypes/tests/test_entity.py b/reclass/datatypes/tests/test_entity.py
index fdfb8f4..50e5669 100644
--- a/reclass/datatypes/tests/test_entity.py
+++ b/reclass/datatypes/tests/test_entity.py
@@ -104,5 +104,16 @@
         e1.merge(e2)
         self.assertEqual(e1.name, newname)
 
+    def test_as_dict(self, **types):
+        instances = self._make_instances(**types)
+        entity = Entity(*instances, name='test')
+        comp = {}
+        comp['classes'] = instances[0].as_list()
+        comp['applications'] = instances[1].as_list()
+        comp['parameters'] = instances[2].as_dict()
+        d = entity.as_dict()
+        self.assertDictEqual(d, comp)
+
+
 if __name__ == '__main__':
     unittest.main()