From 579ca6928fcee8d18e6988a2035cc666df7070fe Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Wed, 30 May 2012 14:32:46 +0000
Subject: [PATCH] Add JsonObject and annotate IImageTransformerFactory as
 JsonObject.

SVN: 25407
---
 .../cisd/base/annotation/JsonObject.java      | 43 +++++++++++++++++++
 .../base/image/IImageTransformerFactory.java  |  3 ++
 2 files changed, 46 insertions(+)
 create mode 100644 source/java/ch/systemsx/cisd/base/annotation/JsonObject.java

diff --git a/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java b/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java
new file mode 100644
index 00000000000..abf69e3a7fa
--- /dev/null
+++ b/source/java/ch/systemsx/cisd/base/annotation/JsonObject.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.base.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation all JSON transfered classes should be marked with. It was originally created to
+ * replace @JsonTypeName annotation which was not visible in the documentation. With @JsonTypeName
+ * annotation it would be impossible for our users to find a logical type name of a class to be sent
+ * to JSON-RPC services.
+ * 
+ * @author pkupczyk
+ */
+@Target(
+    { ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface JsonObject
+{
+    /**
+     * Logical type name for annotated type.
+     */
+    public String value();
+}
diff --git a/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java b/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java
index 5a7e61ca7f8..c0c76a2a3f6 100644
--- a/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java
+++ b/source/java/ch/systemsx/cisd/base/image/IImageTransformerFactory.java
@@ -18,12 +18,15 @@ package ch.systemsx.cisd.base.image;
 
 import java.io.Serializable;
 
+import ch.systemsx.cisd.base.annotation.JsonObject;
+
 /**
  * Factory creating an {@link IImageTransformer}. The parameters of the transformer should be
  * stored as serializable attributes of concrete implementations of this interface.
  *
  * @author Franz-Josef Elmer
  */
+@JsonObject(value="IImageTransformerFactory")
 public interface IImageTransformerFactory extends Serializable
 {
     /**
-- 
GitLab