Alon Bar-Lev has uploaded a new change for review.

Change subject: extapi: support serializable interfaces
......................................................................

extapi: support serializable interfaces

we may need to manage serializable form of the entities for ejb and
other technologies that enforce serialization.

Change-Id: I79e29ec5067b87687024c7426f54625a2f89ca35
Signed-off-by: Alon Bar-Lev <[email protected]>
---
M 
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtKey.java
M 
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtMap.java
M 
backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtUUID.java
3 files changed, 29 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/27390/1

diff --git 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtKey.java
 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtKey.java
index c70a021..5f91ecd 100644
--- 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtKey.java
+++ 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtKey.java
@@ -1,16 +1,34 @@
 package org.ovirt.engine.api.extensions;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
 import java.util.UUID;
 
 /**
  * Extension map key.
  * Provides type safe mapping between key and value.
  */
-public class ExtKey implements Cloneable {
+public class ExtKey implements Cloneable, Serializable {
 
-    private Class type;
+    private static final long serialVersionUID = 7373830750276947742L;
+
+    private transient Class type;
+    private String typeName;
     private ExtUUID uuid;
     private boolean sensitive;
+
+    private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        try {
+            type = Class.forName(typeName);
+        } catch(ClassNotFoundException e) {
+            throw new IOException(
+                String.format("Cannot resolve ExtKey type '%s'", typeName),
+                e
+            );
+        }
+    }
 
     /**
      * Constructor.
@@ -22,6 +40,8 @@
         this.type = type;
         this.uuid = uuid;
         this.sensitive = sensitive;
+
+        this.typeName = this.type.getName();
     }
 
     /**
diff --git 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtMap.java
 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtMap.java
index 43c7c46..2ca4b63 100644
--- 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtMap.java
+++ 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtMap.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.api.extensions;
 
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
@@ -11,7 +12,9 @@
  * Keys are bundle of uuid and type, each value added is checked against key
  * type.
  */
-public class ExtMap implements ConcurrentMap<ExtKey, Object>, Cloneable {
+public class ExtMap implements ConcurrentMap<ExtKey, Object>, Cloneable, 
Serializable {
+
+    private static final long serialVersionUID = 4065309872012801647L;
 
     /**
      * Wrapped map.
diff --git 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtUUID.java
 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtUUID.java
index 77ea663..8e85a10 100644
--- 
a/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtUUID.java
+++ 
b/backend/manager/modules/extensions-api-root/extensions-api/src/main/java/org/ovirt/engine/api/extensions/ExtUUID.java
@@ -9,7 +9,9 @@
  * Extension UUID.
  * Provides named GUID.
  */
-public class ExtUUID implements Comparable<ExtUUID>, Cloneable {
+public class ExtUUID implements Comparable<ExtUUID>, Cloneable, Serializable {
+
+    private static final long serialVersionUID = -1381185377164713737L;
 
     private String name;
     private UUID uuid;


-- 
To view, visit http://gerrit.ovirt.org/27390
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I79e29ec5067b87687024c7426f54625a2f89ca35
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alon Bar-Lev <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to