com.google.gson.InstanceCreator的实例源码

项目:letv    文件:ConstructorConstructor.java   
public <T> ObjectConstructor<T> getConstructor(TypeToken<T> typeToken) {
    final Type type = typeToken.getType();
    Class<? super T> rawType = typeToken.getRawType();
    final InstanceCreator<T> creator = (InstanceCreator) this.instanceCreators.get(type);
    if (creator != null) {
        return new ObjectConstructor<T>() {
            public T construct() {
                return creator.createInstance(type);
            }
        };
    }
    ObjectConstructor<T> defaultConstructor = newDefaultConstructor(rawType);
    if (defaultConstructor != null) {
        return defaultConstructor;
    }
    ObjectConstructor<T> defaultImplementation = newDefaultImplementationConstructor(rawType);
    if (defaultImplementation != null) {
        return defaultImplementation;
    }
    return newUnsafeAllocator(type,rawType);
}
项目:oson    文件:NewInstanceTest.java   
@Test
public void testDeserializeAnyBeanWithCreateInstance() {
    AnyBean expected = new AnyBean("Any Name",35);
    expected.setType("Java");

    String json = oson.serialize(expected);
    String jsonExpected = "{\"name\":\"Any Name\",\"age\":35,\"type\":\"Java\"}";

    assertEquals(jsonExpected,json);

    AnyBean result = oson.setClassMappers(AnyBean.class,new ClassMapper()
    .setConstructor(new InstanceCreator(){
        @Override
        public Object createInstance(Type type) {
            return new AnyBean(null,0);
        }

    })).deserialize(json,AnyBean.class);

    assertEquals(expected.toString(),result.toString());
}
项目:thunderstorm    文件:ResultsDriftCorrection.java   
private DriftResults loadResultsFromFile(String path) throws IOException {
    BufferedReader reader = null;
    try {
        reader = new BufferedReader(new FileReader(path));

        Gson gson = new GsonBuilder().setPrettyPrinting().registerTypeAdapter(
                UnivariateFunction.class,new InstanceCreator<PolynomialSplineFunction>() {
                    @Override
                    public PolynomialSplineFunction createInstance(Type type) {
                        return new PolynomialSplineFunction(new double[]{1,2},new PolynomialFunction[]{new PolynomialFunction(new double[1])});
                    }
                }).create();
        return gson.fromJson(reader,DriftResults.class);
    } finally {
        if(reader != null) {
            reader.close();
        }
    }
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorReturnsSubTypeForTopLevelObject_add1163() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),this,"testInstanceCreatorReturnsSubTypeForTopLevelObject_add1163");
    Gson gson = new GsonBuilder().registerTypeAdapter(TestTypes.Base.class,new InstanceCreator<com.google.gson.common.TestTypes.Base>() {
        public TestTypes.Base createInstance(Type type) {
            return new TestTypes.Sub();
        }
    }).create();
    String json = "{baseName:\'Base\',subName:\'SubRevised\'}";
    TestTypes.Base base = gson.fromJson(json,TestTypes.Base.class);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1647,(base instanceof com.google.gson.common.TestTypes.Sub));
    TestTypes.Sub sub = ((TestTypes.Sub)(base));
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1649,"SubRevised",1648,"SubRevised".equals(sub.subName));
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1650,com.google.gson.common.TestTypes.Sub.SUB_NAME);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1651,sub.subName);
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
public void testInstanceCreatorReturnsSubTypeForTopLevelObject() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorReturnsSubTypeForTopLevelObject");
    Gson gson = new GsonBuilder().registerTypeAdapter(TestTypes.Base.class,new InstanceCreator<com.google.gson.common.TestTypes.Base>() {
        public TestTypes.Base createInstance(Type type) {
            return new TestTypes.Sub();
        }
    }).create();
    String json = "foo";
    TestTypes.Base base = gson.fromJson(json,sub.subName);
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorReturnsSubTypeForTopLevelObject_remove980() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorReturnsSubTypeForTopLevelObject_remove980");
    Gson gson = new GsonBuilder().registerTypeAdapter(TestTypes.Base.class,sub.subName);
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_add1155() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_add1155");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,listCreator).create();
    List<java.lang.String> list = gson.fromJson("[\"a\"]",listOfStringType);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1631,SubArrayList.class);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1633,list,1632,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_add1156() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_add1156");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_add1157() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_add1157");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
public void testInstanceCreatorForCollectionType() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
public void testInstanceCreatorForCollectionType_literalMutation1301() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_literalMutation1301");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,listCreator).create();
    List<java.lang.String> list = gson.fromJson("foo",list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_remove972() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_remove972");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_remove973() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_remove973");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@Test(timeout = 1000)
public void testInstanceCreatorForCollectionType_remove974() {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForCollectionType_remove974");
    @SuppressWarnings(value = "serial")
    class SubArrayList<T> extends ArrayList<T> {        }
    InstanceCreator<java.util.List<java.lang.String>> listCreator = new InstanceCreator<java.util.List<java.lang.String>>() {
        public List<java.lang.String> createInstance(Type type) {
            return new SubArrayList<java.lang.String>();
        }
    };
    Type listOfStringType = new TypeToken<java.util.List<java.lang.String>>() {        }.getType();
    Gson gson = new GsonBuilder().registerTypeAdapter(listOfStringType,list.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@SuppressWarnings(value = { "unchecked","rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_add1158() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_add1158");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,sortedSetCreator).create();
    Type sortedSetType = new TypeToken<java.util.SortedSet<java.lang.String>>() {        }.getType();
    SortedSet<java.lang.String> set = gson.fromJson("[\"a\"]",sortedSetType);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1635,set,1634,set.first());
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1636,SubTreeSet.class);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1638,1637,set.getClass());
    set = gson.fromJson("[\"b\"]",SortedSet.class);
    fr.inria.diversify.testamplification.logger.Logger.logAssertArgument(Thread.currentThread(),1640,1639,1641,1643,1642,set.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@SuppressWarnings(value = { "unchecked","rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_add1159() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_add1159");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_add1160() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_add1160");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,set.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:sosiefier    文件:InstanceCreatorTest.java   
@SuppressWarnings(value = { "foo","rawtypes" })
public void testInstanceCreatorForParametrizedType() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"foo" })
public void testInstanceCreatorForParametrizedType_literalMutation1303() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_literalMutation1303");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"rawtypes" })
public void testInstanceCreatorForParametrizedType_literalMutation1304() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_literalMutation1304");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"rawtypes" })
public void testInstanceCreatorForParametrizedType_literalMutation1305() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_literalMutation1305");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,sortedSetCreator).create();
    Type sortedSetType = new TypeToken<java.util.SortedSet<java.lang.String>>() {        }.getType();
    SortedSet<java.lang.String> set = gson.fromJson("foo","rawtypes" })
public void testInstanceCreatorForParametrizedType_literalMutation1306() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_literalMutation1306");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,set.getClass());
    set = gson.fromJson("foo","rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_remove975() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_remove975");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_remove976() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_remove976");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,"rawtypes" })
@Test(timeout = 1000)
public void testInstanceCreatorForParametrizedType_remove977() throws Exception {
    fr.inria.diversify.testamplification.logger.Logger.writeTestStart(Thread.currentThread(),"testInstanceCreatorForParametrizedType_remove977");
    @SuppressWarnings(value = "serial")
    class SubTreeSet<T> extends TreeSet<T> {        }
    InstanceCreator<java.util.SortedSet> sortedSetCreator = new InstanceCreator<java.util.SortedSet>() {
        public SortedSet createInstance(Type type) {
            return new SubTreeSet();
        }
    };
    Gson gson = new GsonBuilder().registerTypeAdapter(SortedSet.class,set.getClass());
    fr.inria.diversify.testamplification.logger.Logger.writeTestFinish(Thread.currentThread());
}
项目:gson    文件:InstanceCreatorTest.java   
public void testInstanceCreatorReturnsSubTypeForTopLevelObject() {
  Gson gson = new GsonBuilder()
  .registerTypeAdapter(Base.class,new InstanceCreator<Base>() {
    public Base createInstance(Type type) {
      return new Sub();
    }
  })
  .create();

  String json = "{baseName:'Base',subName:'SubRevised'}";
  Base base = gson.fromJson(json,Base.class);
  assertTrue(base instanceof Sub);

  Sub sub = (Sub) base;
  assertFalse("SubRevised".equals(sub.subName));
  assertEquals(Sub.SUB_NAME,sub.subName);
}
项目:gson    文件:InstanceCreatorTest.java   
@SuppressWarnings("unchecked")
public void testInstanceCreatorForParametrizedType() throws Exception {
  class SubTreeSet<T> extends TreeSet<T> {}
  InstanceCreator<SortedSet> sortedSetCreator = new InstanceCreator<SortedSet>() {
    public SortedSet createInstance(Type type) {
      return new SubTreeSet();
    }
  };
  Gson gson = new GsonBuilder()
      .registerTypeAdapter(SortedSet.class,sortedSetCreator)
      .create();

  Type sortedSetType = new TypeToken<SortedSet<String>>() {}.getType();
  SortedSet<String> set = gson.fromJson("[\"a\"]",sortedSetType);
  assertEquals(set.first(),"a");
  assertEquals(SubTreeSet.class,set.getClass());

  set = gson.fromJson("[\"b\"]",SortedSet.class);
  assertEquals(set.first(),"b");
  assertEquals(SubTreeSet.class,set.getClass());
}
项目:wwmmo    文件:Configuration.java   
/** Loads the {@link Configuration} from the given file and sets it to {@code Configuration.i}. */
public void load() throws IOException {
  String fileName = System.getProperty("ConfigFile");
  if (fileName == null) {
    // just try whatever in the current directory
    fileName = "config.json";
  }

  log.info("Loading config from: %s",fileName);
  Gson gson = new GsonBuilder()
      .registerTypeAdapter(Configuration.class,(InstanceCreator<Configuration>) type -> i)
      .create();
  JsonReader jsonReader = new JsonReader(new FileReader(fileName));
  jsonReader.setLenient(true); // allow comments (and a few other things)
  gson.fromJson(jsonReader,Configuration.class);
}
项目:boohee_v5.6    文件:ConstructorConstructor.java   
public <T> ObjectConstructor<T> get(TypeToken<T> typeToken) {
    final Type type = typeToken.getType();
    Class<? super T> rawType = typeToken.getRawType();
    final InstanceCreator<T> typeCreator = (InstanceCreator) this.instanceCreators.get(type);
    if (typeCreator != null) {
        return new ObjectConstructor<T>() {
            public T construct() {
                return typeCreator.createInstance(type);
            }
        };
    }
    final InstanceCreator<T> rawTypeCreator = (InstanceCreator) this.instanceCreators.get
            (rawType);
    if (rawTypeCreator != null) {
        return new ObjectConstructor<T>() {
            public T construct() {
                return rawTypeCreator.createInstance(type);
            }
        };
    }
    ObjectConstructor<T> defaultConstructor = newDefaultConstructor(rawType);
    if (defaultConstructor != null) {
        return defaultConstructor;
    }
    ObjectConstructor<T> defaultImplementation = newDefaultImplementationConstructor(type,rawType);
    if (defaultImplementation != null) {
        return defaultImplementation;
    }
    return newUnsafeAllocator(type,rawType);
}
项目:Jerkoff    文件:GraphAdapterBuilder.java   
public GraphAdapterBuilder addType(Type type,InstanceCreator<?> instanceCreator) {
    if (type == null || instanceCreator == null) {
        throw new NullPointerException();
    }
    instanceCreators.put(type,instanceCreator);
    return this;
}
项目:Jerkoff    文件:GraphAdapterBuilder.java   
public void registerOn(GsonBuilder gsonBuilder) {
    Factory factory = new Factory(instanceCreators);
    gsonBuilder.registerTypeAdapterFactory(factory);
    for (Map.Entry<Type,InstanceCreator<?>> entry : instanceCreators.entrySet()) {
        gsonBuilder.registerTypeAdapter(entry.getKey(),factory);
    }
}
项目:Jerkoff    文件:GraphAdapterBuilder.java   
/**
 * Hook for the graph adapter to get a reference to a deserialized value
 * before that value is fully populated. This is useful to deserialize
 * values that directly or indirectly reference themselves: we can hand
 * out an instance before read() returns.
 *
 * <p>
 * Gson should only ever call this method when we're expecting it to;
 * that is only when we've called back into Gson to deserialize a tree.
 */
@SuppressWarnings("unchecked")
public Object createInstance(Type type) {
    Graph graph = graphThreadLocal.get();
    if (graph == null || graph.nextCreate == null) {
        throw new IllegalStateException("Unexpected call to createInstance() for " + type);
    }
    InstanceCreator<?> creator = instanceCreators.get(type);
    Object result = creator.createInstance(type);
    graph.nextCreate.value = result;
    graph.nextCreate = null;
    return result;
}
项目:oson    文件:Oson.java   
private InstanceCreator getTypeAdapter(Class type) {
    ClassMapper classMapper = getClassMapper(type);

    if (classMapper == null || classMapper.ignore()) {
        return null;
    }

    return classMapper.constructor;
}
项目:oson    文件:MapTest.java   
public void testMapSubclassDeserialization() {
  Gson gson = new GsonBuilder().registerTypeAdapter(MyMap.class,new InstanceCreator<MyMap>() {
    public MyMap createInstance(Type type) {
      return new MyMap();
    }
  }).create();
  String json = "{\"a\":1,\"b\":2}";
  MyMap map = oson.fromJson(json,MyMap.class);
  assertEquals(1,map.get("a"));
  assertEquals(2,map.get("b"));
}
项目:oson    文件:InstanceCreatorTest.java   
public void testInstanceCreatorReturnsBaseType() {
  Gson gson = new GsonBuilder()
    .registerTypeAdapter(Base.class,new InstanceCreator<Base>() {
      @Override public Base createInstance(Type type) {
       return new Base();
     }
    })
    .create();
  String json = "{baseName:'BaseRevised',subName:'Sub'}";
  Base base = oson.fromJson(json,Base.class);
  assertEquals("BaseRevised",base.baseName);
}
项目:oson    文件:InstanceCreatorTest.java   
public void testInstanceCreatorForCollectionType() {
  @SuppressWarnings("serial")
  class SubArrayList<T> extends ArrayList<T> {}
  InstanceCreator<List<String>> listCreator = new InstanceCreator<List<String>>() {
    @Override public List<String> createInstance(Type type) {
      return new SubArrayList<String>();
    }
  };
  Type listOfStringType = new TypeToken<List<String>>() {}.getType();
  Gson gson = new GsonBuilder()
      .registerTypeAdapter(listOfStringType,listCreator)
      .create();
  List<String> list = oson.fromJson("[\"a\"]",SubArrayList.class);
  //assertEquals(SubArrayList.class,list.getClass());
}
项目:oson    文件:ObjectTest.java   
public void testInnerClassDeserialization() {
  final Parent p = new Parent();
  Gson gson = new GsonBuilder().registerTypeAdapter(
      Parent.Child.class,new InstanceCreator<Parent.Child>() {
    public Parent.Child createInstance(Type type) {
      return p.new Child();
    }
  }).create();

  String json = "{'value2':3}";
  Parent.Child c = oson.setDefaultValue(Parent.Child.class,p.new Child()).fromJson(json,Parent.Child.class);
  assertEquals(3,c.value2);
}
项目:typescript.java    文件:CompletionsRequest.java   
@Override
public Response<List<CompletionEntry>> parseResponse(JsonObject json) {
    String fileName = super.getArguments().getFile();
    int line = super.getArguments().getLine();
    int offset = super.getArguments().getOffset();
    Gson gson = new GsonBuilder()
            .registerTypeAdapter(CompletionEntry.class,new InstanceCreator<CompletionEntry>() {
                @Override
                public CompletionEntry createInstance(Type type) {
                    return factory.create(matcherProvider.getMatcher(),fileName,line,offset,client);
                }
            }).create();
    return gson.fromJson(json,CompletionsResponse.class);
}
项目:typescript.java    文件:NavBarRequest.java   
@Override
public Response<List<NavigationBarItem>> parseResponse(JsonObject json) {
    Gson gson = GsonHelper.DEFAULT_GSON;
    if (positionProvider != null) {
        gson = new GsonBuilder().registerTypeAdapter(Location.class,new InstanceCreator<Location>() {
            @Override
            public Location createInstance(Type type) {
                return new Location(positionProvider);
            }
        }).create();
    }
    return gson.fromJson(json,NavBarResponse.class);
}
项目:typescript.java    文件:NavTreeRequest.java   
@Override
public Response<NavigationBarItem> parseResponse(JsonObject json) {
    Gson gson = GsonHelper.DEFAULT_GSON;
    if (positionProvider != null) {
        gson = new GsonBuilder().registerTypeAdapter(Location.class,NavTreeResponse.class);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


com.google.gson.internal.bind.ArrayTypeAdapter的实例源码
com.google.gson.JsonSyntaxException的实例源码
com.google.gson.JsonDeserializer的实例源码
com.google.gson.internal.ConstructorConstructor的实例源码
com.google.gson.JsonPrimitive的实例源码
com.google.gson.LongSerializationPolicy的实例源码
com.google.gson.internal.GsonInternalAccess的实例源码
com.google.gson.JsonIOException的实例源码
com.google.gson.internal.StringMap的实例源码
com.google.gson.JsonObject的实例源码
com.google.gson.internal.bind.TimeTypeAdapter的实例源码
com.google.gson.FieldAttributes的实例源码
com.google.gson.internal.bind.TreeTypeAdapter的实例源码
com.google.gson.internal.LinkedHashTreeMap的实例源码
com.google.gson.TypeAdapterFactory的实例源码
com.google.gson.JsonSerializer的实例源码
com.google.gson.FieldNamingPolicy的实例源码
com.google.gson.JsonElement的实例源码
com.google.gson.internal.JsonReaderInternalAccess的实例源码
com.google.gson.TypeAdapter的实例源码