类com.google.gson.InstanceCreator源码实例Demo

下面列出了怎么用com.google.gson.InstanceCreator的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: 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);
}
 
源代码2 项目: 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();
        }
    }
}
 
源代码3 项目: gson   文件: InstanceCreatorTest.java
public void testInstanceCreatorReturnsSubTypeForTopLevelObject() {
  Gson gson = new GsonBuilder()
  .registerTypeAdapter(Base.class, new InstanceCreator<Base>() {
    @Override 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);
}
 
源代码4 项目: gson   文件: InstanceCreatorTest.java
@SuppressWarnings({ "unchecked", "rawtypes" })
public void testInstanceCreatorForParametrizedType() throws Exception {
  @SuppressWarnings("serial")
  class SubTreeSet<T> extends TreeSet<T> {}
  InstanceCreator<SortedSet> sortedSetCreator = new InstanceCreator<SortedSet>() {
    @Override 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());
}
 
源代码5 项目: extentreports-java   文件: JsonConfigLoader.java
private void init(T instance) {
    this.instance = instance;
    creator = new InstanceCreator<T>() {
        @Override
        public T createInstance(Type type) {
            return instance;
        }
    };
}
 
源代码6 项目: 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);
}
 
源代码7 项目: 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);
}
 
源代码8 项目: 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, new InstanceCreator<Location>() {
			@Override
			public Location createInstance(Type type) {
				return new Location(positionProvider);
			}
		}).create();
	}
	return gson.fromJson(json, NavTreeResponse.class);
}
 
源代码9 项目: MiBandDecompiled   文件: h.java
h(ConstructorConstructor constructorconstructor, InstanceCreator instancecreator, Type type)
{
    c = constructorconstructor;
    a = instancecreator;
    b = type;
    super();
}
 
源代码10 项目: MiBandDecompiled   文件: ConstructorConstructor.java
public ObjectConstructor get(TypeToken typetoken)
{
    Type type = typetoken.getType();
    Class class1 = typetoken.getRawType();
    InstanceCreator instancecreator = (InstanceCreator)a.get(type);
    Object obj;
    if (instancecreator != null)
    {
        obj = new d(this, instancecreator, type);
    } else
    {
        InstanceCreator instancecreator1 = (InstanceCreator)a.get(class1);
        if (instancecreator1 != null)
        {
            return new h(this, instancecreator1, type);
        }
        obj = a(class1);
        if (obj == null)
        {
            obj = a(type, class1);
            if (obj == null)
            {
                return b(type, class1);
            }
        }
    }
    return ((ObjectConstructor) (obj));
}
 
源代码11 项目: gson   文件: 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 = gson.fromJson(json, MyMap.class);
  assertEquals("1", map.get("a"));
  assertEquals("2", map.get("b"));
}
 
源代码12 项目: gson   文件: 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 = gson.fromJson(json, Base.class);
  assertEquals("BaseRevised", base.baseName);
}
 
源代码13 项目: gson   文件: InstanceCreatorTest.java
public void testInstanceCreatorReturnsSubTypeForField() {
  Gson gson = new GsonBuilder()
  .registerTypeAdapter(Base.class, new InstanceCreator<Base>() {
    @Override public Base createInstance(Type type) {
      return new Sub();
    }
  })
  .create();
  String json = "{base:{baseName:'Base',subName:'SubRevised'}}";
  ClassWithBaseField target = gson.fromJson(json, ClassWithBaseField.class);
  assertTrue(target.base instanceof Sub);
  assertEquals(Sub.SUB_NAME, ((Sub)target.base).subName);
}
 
源代码14 项目: gson   文件: 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 = gson.fromJson("[\"a\"]", listOfStringType);
  assertEquals(SubArrayList.class, list.getClass());
}
 
源代码15 项目: gson   文件: 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 = gson.fromJson(json, Parent.Child.class);
  assertEquals(3, c.value2);
}
 
源代码16 项目: gson   文件: GraphAdapterBuilder.java
public GraphAdapterBuilder addType(Type type, InstanceCreator<?> instanceCreator) {
  if (type == null || instanceCreator == null) {
    throw new NullPointerException();
  }
  instanceCreators.put(type, instanceCreator);
  return this;
}
 
源代码17 项目: gson   文件: 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);
  }
}
 
源代码18 项目: gson   文件: 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;
}
 
源代码19 项目: streamsx.topology   文件: Element.java
private Gson refresher() {
    if (refreshJson == null) {
        refreshJson = refreshBuilder.registerTypeAdapter(getClass(),
            new InstanceCreator<Object>() {
                @Override
                public Object createInstance(Type arg0) {
                    return Element.this;
                }}).create();
    }
    return refreshJson;
}
 
源代码20 项目: smarthome   文件: PropertiesTypeAdapter.java
public PropertiesTypeAdapter(Gson gson) {
    // obtain the default type adapters for String and Object classes
    keyAdapter = gson.getAdapter(String.class);
    valueAdapter = gson.getAdapter(Object.class);

    // obtain default gson objects
    constructor = new ConstructorConstructor(Collections.<Type, InstanceCreator<?>> emptyMap());
    delegate = new MapTypeAdapterFactory(constructor, false).create(new Gson(), TOKEN);
}
 
源代码21 项目: letv   文件: ConstructorConstructor.java
public ConstructorConstructor(Map<Type, InstanceCreator<?>> instanceCreators) {
    this.instanceCreators = instanceCreators;
}
 
源代码22 项目: lastaflute   文件: CollectionGsonAdaptable.java
protected CollectionTypeAdapterFactory createEmbeddedFactory() {
    final Map<Type, InstanceCreator<?>> instanceCreators = prepareInstanceCreators();
    final ConstructorConstructor constructor = createConstructorConstructor(instanceCreators);
    return newCollectionTypeAdapterFactory(constructor);
}
 
源代码23 项目: lastaflute   文件: CollectionGsonAdaptable.java
protected Map<Type, InstanceCreator<?>> prepareInstanceCreators() {
    return Collections.emptyMap();
}
 
源代码24 项目: lastaflute   文件: CollectionGsonAdaptable.java
protected ConstructorConstructor createConstructorConstructor(Map<Type, InstanceCreator<?>> instanceCreators) {
    return new ConstructorConstructor(instanceCreators);
}
 
源代码25 项目: gson   文件: ConstructorConstructor.java
public ConstructorConstructor(Map<Type, InstanceCreator<?>> instanceCreators) {
  this.instanceCreators = instanceCreators;
}
 
源代码26 项目: gson   文件: ConstructorConstructor.java
public <T> ObjectConstructor<T> get(TypeToken<T> typeToken) {
  final Type type = typeToken.getType();
  final Class<? super T> rawType = typeToken.getRawType();

  // first try an instance creator

  @SuppressWarnings("unchecked") // types must agree
  final InstanceCreator<T> typeCreator = (InstanceCreator<T>) instanceCreators.get(type);
  if (typeCreator != null) {
    return new ObjectConstructor<T>() {
      @Override public T construct() {
        return typeCreator.createInstance(type);
      }
    };
  }

  // Next try raw type match for instance creators
  @SuppressWarnings("unchecked") // types must agree
  final InstanceCreator<T> rawTypeCreator =
      (InstanceCreator<T>) instanceCreators.get(rawType);
  if (rawTypeCreator != null) {
    return new ObjectConstructor<T>() {
      @Override 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;
  }

  // finally try unsafe
  return newUnsafeAllocator(type, rawType);
}
 
源代码27 项目: gson   文件: GraphAdapterBuilder.java
public GraphAdapterBuilder() {
    this.instanceCreators = new HashMap<Type, InstanceCreator<?>>();
    this.constructorConstructor = new ConstructorConstructor(instanceCreators);
}
 
源代码28 项目: gson   文件: GraphAdapterBuilder.java
Factory(Map<Type, InstanceCreator<?>> instanceCreators) {
  this.instanceCreators = instanceCreators;
}
 
源代码29 项目: framework   文件: ConstructorConstructor.java
public ConstructorConstructor(Map<Type, InstanceCreator<?>> instanceCreators) {
  this.instanceCreators = instanceCreators;
}
 
源代码30 项目: framework   文件: ConstructorConstructor.java
public <T> ObjectConstructor<T> get(TypeToken<T> typeToken) {
  final Type type = typeToken.getType();
  final Class<? super T> rawType = typeToken.getRawType();

  // first try an instance creator

  @SuppressWarnings("unchecked") // types must agree
  final InstanceCreator<T> typeCreator = (InstanceCreator<T>) instanceCreators.get(type);
  if (typeCreator != null) {
    return new ObjectConstructor<T>() {
      public T construct() {
        return typeCreator.createInstance(type);
      }
    };
  }

  // Next try raw type match for instance creators
  @SuppressWarnings("unchecked") // types must agree
  final InstanceCreator<T> rawTypeCreator =
      (InstanceCreator<T>) 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;
  }

  // finally try unsafe
  return newUnsafeAllocator(type, rawType);
}
 
 类所在包
 同包方法