View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.util.ajax;
20  
21  import java.util.Collection;
22  import java.util.Collections;
23  import java.util.Map;
24  
25  import org.eclipse.jetty.util.Loader;
26  
27  public class JSONCollectionConvertor implements JSON.Convertor
28  {
29      public void toJSON(Object obj, JSON.Output out)
30      {
31          out.addClass(obj.getClass());
32          out.add("list", ((Collection)obj).toArray());
33      }
34  
35      public Object fromJSON(Map object)
36      {
37          try
38          {
39              Collection result = (Collection)Loader.loadClass(getClass(), (String)object.get("class")).newInstance();
40              Collections.addAll(result, (Object[])object.get("list"));
41              return result;
42          }
43          catch (Exception x)
44          {
45              if (x instanceof RuntimeException)
46                  throw (RuntimeException)x;
47              throw new RuntimeException(x);
48          }
49      }
50  }