IDEA-104500 Gradle: Allow to reuse common logic for other external systems
authorDenis.Zhdanov <Denis.Zhdanov@jetbrains.com>
Wed, 8 May 2013 18:55:24 +0000 (22:55 +0400)
committerDenis.Zhdanov <Denis.Zhdanov@jetbrains.com>
Wed, 8 May 2013 18:55:24 +0000 (22:55 +0400)
Don't wrap target data class because that causes problems on deserialization when the class is unknown to the system classloader

platform/external-system-api/src/com/intellij/openapi/externalSystem/model/Key.java

index 2d5344d6ab869d10ab8d99d3070792f2d1f7ba34..b065741606534e0b3a9a7258dd88f2782a2f7aa9 100644 (file)
@@ -20,7 +20,12 @@ import org.jetbrains.annotations.NotNull;
 import java.io.Serializable;
 
 /**
- * // TODO den add doc
+ * The basic design of external system integration assumes that target project info if represented as a generic graph
+ * of {@link DataNode} objects where every {@link DataNode} content type is identified by an instance of this class.
+ * <p/>
+ * That makes it possible to register custom {@link DataNode} processor per-{@link Key}
+ * <p/>
+ * Thread-safe.
  * 
  * @author Denis Zhdanov
  * @since 4/12/13 11:49 AM
@@ -30,20 +35,15 @@ public class Key<T> implements Serializable {
 
   private static final long serialVersionUID = 1L;
   
-  @NotNull private final Class<T> myDataClass;
+  @NotNull private final String myDataClass;
 
-  public Key(@NotNull Class<T> dataClass) {
+  public Key(@NotNull String dataClass) {
     myDataClass = dataClass;
   }
 
   @NotNull
   public static <T> Key<T> create(@NotNull Class<T> dataClass) {
-    return new Key<T>(dataClass);
-  }
-
-  @NotNull
-  public Class<T> getDataClass() {
-    return myDataClass;
+    return new Key<T>(dataClass.getName());
   }
 
   @Override
@@ -65,6 +65,6 @@ public class Key<T> implements Serializable {
 
   @Override
   public String toString() {
-    return myDataClass.getSimpleName();
+    return myDataClass;
   }
 }