You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2013/08/05 13:31:11 UTC

svn commit: r1510432 - in /directory/escimo/trunk: common/src/main/java/org/apache/directory/scim/json/ ldap/src/main/java/org/apache/directory/scim/json/

Author: kayyagari
Date: Mon Aug  5 11:31:10 2013
New Revision: 1510432

URL: http://svn.apache.org/r1510432
Log:
moved json serializer to common

Added:
    directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/
    directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/ResourceSerializer.java
    directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/SimpleAttributeDeSerializer.java
Removed:
    directory/escimo/trunk/ldap/src/main/java/org/apache/directory/scim/json/

Added: directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/ResourceSerializer.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/ResourceSerializer.java?rev=1510432&view=auto
==============================================================================
--- directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/ResourceSerializer.java (added)
+++ directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/ResourceSerializer.java Mon Aug  5 11:31:10 2013
@@ -0,0 +1,124 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you 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 org.apache.directory.scim.json;
+
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.directory.scim.AbstractAttribute;
+import org.apache.directory.scim.ComplexAttribute;
+import org.apache.directory.scim.MultiValAttribute;
+import org.apache.directory.scim.SimpleAttribute;
+import org.apache.directory.scim.SimpleAttributeGroup;
+import org.apache.directory.scim.User;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+
+
+/**
+ * TODO ResourceSerializer.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class ResourceSerializer
+{
+    private Gson gson = new Gson();
+
+    public static String serialize( User user )
+    {
+        JsonObject json = new JsonObject();
+
+        Map<String, List<AbstractAttribute>> attributes = user.getAttributes();
+        for ( String uri : attributes.keySet() )
+        {
+            serialize( json, attributes.get( uri ) );
+        }
+        
+        return json.toString();
+    }
+
+
+    public static void serialize( JsonObject parent, List<AbstractAttribute> attributes )
+    {
+        for ( AbstractAttribute at : attributes )
+        {
+            serializeAt( parent, at );
+        }
+    }
+
+
+    public static void serializeAt( JsonObject parent, AbstractAttribute at )
+    {
+        if ( at instanceof SimpleAttribute )
+        {
+            serializeSimpleAt( parent, ( SimpleAttribute ) at );
+        }
+        else if ( at instanceof ComplexAttribute )
+        {
+            ComplexAttribute ct = ( ComplexAttribute ) at;
+            JsonObject json = new JsonObject();
+            for( SimpleAttribute t : ct.getAtList() )
+            {
+                serializeSimpleAt( json, t );
+            }
+            
+            parent.add( ct.getName(), json );
+        }
+        else if ( at instanceof MultiValAttribute )
+        {
+            MultiValAttribute mv = ( MultiValAttribute ) at;
+            List<SimpleAttributeGroup> lstGrp = mv.getAtGroupList();
+            
+            JsonArray array = new JsonArray();
+            
+            for( SimpleAttributeGroup stg : lstGrp )
+            {
+                JsonObject json = new JsonObject();
+                for( SimpleAttribute t : stg.getAtList() )
+                {
+                    serializeSimpleAt( json, t );
+                }
+                
+                array.add( json );
+            }
+            
+            parent.add( mv.getName(), array );
+        }
+    }
+
+
+    public static void serializeSimpleAt( JsonObject parent, SimpleAttribute at )
+    {
+        Object obj = at.getValue();
+
+        if ( obj instanceof String )
+        {
+            parent.addProperty( at.getName(), ( String ) obj );
+        }
+        else if ( obj instanceof Number )
+        {
+            parent.addProperty( at.getName(), ( Number ) obj );
+        }
+    }
+}

Added: directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/SimpleAttributeDeSerializer.java
URL: http://svn.apache.org/viewvc/directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/SimpleAttributeDeSerializer.java?rev=1510432&view=auto
==============================================================================
--- directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/SimpleAttributeDeSerializer.java (added)
+++ directory/escimo/trunk/common/src/main/java/org/apache/directory/scim/json/SimpleAttributeDeSerializer.java Mon Aug  5 11:31:10 2013
@@ -0,0 +1,61 @@
+/*
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *   or more contributor license agreements.  See the NOTICE file
+ *   distributed with this work for additional information
+ *   regarding copyright ownership.  The ASF licenses this file
+ *   to you 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 org.apache.directory.scim.json;
+
+import java.lang.reflect.Type;
+import java.util.Iterator;
+import java.util.Map.Entry;
+
+import org.apache.directory.scim.SimpleAttribute;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+
+/**
+ * TODO SimpleAttributeDeSerializer.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class SimpleAttributeDeSerializer implements JsonDeserializer<SimpleAttribute>
+{
+
+    @Override
+    public SimpleAttribute deserialize( JsonElement elm, Type jsonType, JsonDeserializationContext ctx )
+        throws JsonParseException
+    {
+        JsonObject json = elm.getAsJsonObject();
+
+        Iterator<Entry<String, JsonElement>> itr = json.entrySet().iterator();
+        
+        if( itr.hasNext() )
+        {
+            Entry<String, JsonElement> entry = itr.next();
+            
+            SimpleAttribute at = new SimpleAttribute( entry.getKey(), entry.getValue().getAsString() );
+        }
+        
+        return null;
+    }
+
+}