Java 类com.fasterxml.jackson.databind.type.TypeFactory 实例源码
项目:JRediClients
文件:ConfigSupport.java
private ObjectMapper createMapper(JsonFactory mapping, ClassLoader classLoader) {
ObjectMapper mapper = new ObjectMapper(mapping);
mapper.addMixIn(MasterSlaveServersConfig.class, MasterSlaveServersConfigMixIn.class);
mapper.addMixIn(SingleServerConfig.class, SingleSeverConfigMixIn.class);
mapper.addMixIn(Config.class, ConfigMixIn.class);
mapper.addMixIn(CodecProvider.class, ClassMixIn.class);
mapper.addMixIn(ResolverProvider.class, ClassMixIn.class);
mapper.addMixIn(Codec.class, ClassMixIn.class);
mapper.addMixIn(RedissonNodeInitializer.class, ClassMixIn.class);
mapper.addMixIn(LoadBalancer.class, ClassMixIn.class);
FilterProvider filterProvider = new SimpleFilterProvider()
.addFilter("classFilter", SimpleBeanPropertyFilter.filterOutAllExcept());
mapper.setFilterProvider(filterProvider);
mapper.setSerializationInclusion(Include.NON_NULL);
if (classLoader != null) {
TypeFactory tf = TypeFactory.defaultInstance()
.withClassLoader(classLoader);
mapper.setTypeFactory(tf);
}
return mapper;
}
项目:syndesis
文件:JsonDbDao.java
@Override
public ListResult<T> fetchAll() {
try {
// get the data out..
byte[] json = jsondb.getAsByteArray(getCollectionPath());
if( json!=null && json.length > 0 ) {
// Lets use jackson to parse the map of keys to our model instances
ObjectMapper mapper = Json.mapper();
TypeFactory typeFactory = mapper.getTypeFactory();
MapType mapType = typeFactory.constructMapType(LinkedHashMap.class, String.class, getType());
LinkedHashMap<String, T> map = mapper.readValue(json, mapType);
return ListResult.of(map.values());
}
return ListResult.of(Collections.<T>emptyList());
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") RuntimeException|IOException e) {
throw SyndesisServerException.launderThrowable(e);
}
}
项目:alfresco-remote-api
文件:JacksonHelper.java
/**
* Constructs the object based on the content as a List, the JSON can be an array or just a single value without the [] symbols
* @param content Reader
* @return A collection of the specified type
*/
public <T> List<T> constructList(Reader content, Class<T> requiredType)
{
ObjectReader reader = objectMapper.readerFor(TypeFactory.defaultInstance().constructParametricType(List.class, requiredType));
try
{
List<T> toReturn = reader.readValue(content);
if (toReturn == null || toReturn.isEmpty())
{
throw new InvalidArgumentException("Could not read content from HTTP request body, the list is empty");
}
return toReturn;
}
catch (IOException error)
{
throw new InvalidArgumentException("Could not read content from HTTP request body: "+error.getMessage());
}
}
项目:smarti
文件:RestServiceConfiguration.java
private JsonDeserializer<io.redlink.smarti.model.config.Configuration > buildConfigurationDeserializer(ObjectMapper objectMapper) {
return new JsonDeserializer<io.redlink.smarti.model.config.Configuration>() {
@Override
public io.redlink.smarti.model.config.Configuration deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
final TypeFactory tf = ctxt.getTypeFactory();
final MapLikeType smartiConfigType = tf.constructMapLikeType(Map.class,
tf.constructType(String.class),
tf.constructCollectionLikeType(List.class,
ComponentConfiguration.class));
final io.redlink.smarti.model.config.Configuration configuration = new io.redlink.smarti.model.config.Configuration();
configuration.setConfig(objectMapper.readerFor(smartiConfigType).readValue(p, smartiConfigType));
return configuration;
}
};
}
项目:JavaREST-WorldHistoryTracker
文件:JacksonConverter.java
@SuppressWarnings( "unchecked" )
public static < K, V > Map< K, V > fromJsonAsMap (
String jsonToken,
Class< K > typeClassK,
Class< V > typeClassV
) {
Map< K, V > asMap = null;
try {
JavaType collectionType = TypeFactory
.defaultInstance ()
.constructMapType ( Map.class, typeClassK, typeClassV );
asMap = mapper.readValue ( jsonToken, collectionType );
} catch ( IOException e ) {
e.printStackTrace ();
}
return asMap;
}
项目:OHMS
文件:JsonUtils.java
public static <T> List<T> getBeanCollectionFromJsonString( String json, Class<T> class_name )
{
List<T> contents = null;
try
{
contents =
getDefaultMapper().readValue( json,
TypeFactory.defaultInstance().constructCollectionType( List.class,
class_name ) );
}
catch ( IOException e )
{
logger.error( "Exception in getBeanCollectionFromJsonString", e );
}
return contents;
}
项目:OHMS
文件:OdataTypeResolver.java
private JavaType tryMatchRedfishResource( String id )
{
Matcher resourceMatcher = REDFISH_RESOURCE.matcher( id );
if ( resourceMatcher.matches() )
{
try
{
String redfishResourceClassName = getClassName( resourceMatcher.group( REDFISH_RESOURCE_NAME_GROUP ) );
Class detectedClass = Class.forName( redfishResourceClassName );
return TypeFactory.defaultInstance().constructSpecializedType( baseType, detectedClass );
}
catch ( ClassNotFoundException e )
{
throw new UnsupportedOperationException(
"Could not determine class to deserialize into for \"@odata.type\": \"" + id + "\"" );
}
}
return null;
}
项目:jdbc
文件:JdbcSourceIntegrationTests.java
@Test
public void testExtraction() throws Exception {
Message<?> received = messageCollector.forChannel(source.output()).poll(10, TimeUnit.SECONDS);
assertNotNull(received);
assertThat(received.getPayload(), Matchers.instanceOf(String.class));
CollectionLikeType valueType = TypeFactory.defaultInstance()
.constructCollectionLikeType(List.class, Map.class);
List<Map<?, ?>> payload = this.objectMapper.readValue((String) received.getPayload(), valueType);
assertEquals(3, payload.size());
assertEquals(1, payload.get(0).get("ID"));
assertEquals("John", payload.get(2).get("NAME"));
}
项目:jdbc
文件:JdbcSourceIntegrationTests.java
@Test
public void testExtraction() throws Exception {
Message<?> received = messageCollector.forChannel(source.output()).poll(10, TimeUnit.SECONDS);
assertNotNull(received);
assertThat(received.getPayload(), Matchers.instanceOf(String.class));
CollectionLikeType valueType = TypeFactory.defaultInstance()
.constructCollectionLikeType(List.class, Map.class);
List<Map<?, ?>> payload = this.objectMapper.readValue((String) received.getPayload(), valueType);
assertEquals(2, payload.size());
assertEquals(1, payload.get(0).get("ID"));
assertEquals(2, payload.get(1).get("ID"));
received = messageCollector.forChannel(source.output()).poll(10, TimeUnit.SECONDS);
assertNotNull(received);
payload = this.objectMapper.readValue((String) received.getPayload(), valueType);
assertEquals(1, payload.size());
assertEquals(3, payload.get(0).get("ID"));
}
项目:OpenChatAlytics
文件:JsonHipChatDAO.java
/**
* Helper method for deserializing a chat JSON response to a collection of objects.
*
* @param jsonStr
* The chat JSON response.
* @param mapElement
* Chat JSON responses are actually maps with a single element. This argument is
* the value of the element to pull out from the map.
* @param colClassElements
* The types of objects that the collection object will contain.
* @param objMapper
* The JSON object mapper used to deserialize the JSON string.
* @return A collection of elements of type <code>colClassElements</code>.
*/
private <T> Collection<T> deserializeJsonStr(String jsonStr, String mapElement,
Class<T> colClassElements,
ObjectMapper objMapper) {
Map<String, Collection<T>> re;
try {
TypeFactory typeFactory = objMapper.getTypeFactory();
CollectionType type = typeFactory.constructCollectionType(List.class, colClassElements);
MapType thetype = typeFactory.constructMapType(HashMap.class,
typeFactory.constructType(String.class),
type);
re = objMapper.readValue(jsonStr, thetype);
} catch (IOException e) {
LOG.error("Got exception when trying to deserialize list of {}", colClassElements, e);
return Lists.newArrayListWithExpectedSize(0);
}
return re.get(mapElement);
}
项目:metrics-aggregator-daemon
文件:BaseJacksonConfiguration.java
@Override
public <T> Optional<T> getPropertyAs(final String name, final Type type) throws IllegalArgumentException {
final Optional<String> property = getProperty(name);
if (!property.isPresent()) {
return Optional.empty();
}
try {
final TypeFactory typeFactory = _objectMapper.getTypeFactory();
@SuppressWarnings("unchecked")
final Optional<T> value = Optional.ofNullable((T) _objectMapper.readValue(
property.get(),
typeFactory.constructType(type)));
return value;
} catch (final IOException e) {
throw new IllegalArgumentException(
String.format(
"Unable to construct object from configuration; name=%s, type=%s, property=%s",
name,
type,
property),
e);
}
}
项目:metrics-aggregator-daemon
文件:BaseJacksonConfiguration.java
@Override
public <T> Optional<T> getAs(final Type type) throws IllegalArgumentException {
final Optional<JsonNode> property = getJsonSource().getValue();
if (!property.isPresent()) {
return Optional.empty();
}
try {
final TypeFactory typeFactory = _objectMapper.getTypeFactory();
@SuppressWarnings("unchecked")
final Optional<T> value = Optional.ofNullable((T) _objectMapper.readValue(
_objectMapper.treeAsTokens(property.get()), typeFactory.constructType(type)));
return value;
} catch (final IOException e) {
throw new IllegalArgumentException(
String.format(
"Unable to construct object from configuration; type=%s, property=%s",
type,
property),
e);
}
}
项目:pdf-segmenter
文件:SegmenterTest.java
@Test
public void testSegmenter() throws IOException {
String[] args = { "-input", "/home/rishi/Desktop/testDoc/To check/paper 2009-Semantic interpretation and knowledge extraction.pdf",
"-format", "STDOUT" };
String heading = "Semantic interpretation and knowledge extraction ";
Params cliParams = Params.getParams(args);
ObjectMapper mapper = new ObjectMapper();
String path = cliParams.getInput();
PdfSections pdf2Xml = new PdfSections(cliParams);
pdf2Xml.processFile(path);
List<Structure> structure = mapper.readValue(pdf2Xml.generateOutput().get(0), TypeFactory.defaultInstance().constructCollectionType(List.class, Structure.class));
Assert.assertTrue(structure.get(0).getHeading().equals(heading));
}
项目:base
文件:RestServiceImpl.java
private Map<String, ContainerQuota> getChangedContainers( final String quotaContainers ) throws java.io.IOException
{
Map<String, ContainerQuota> changedContainersFiltered = new HashMap<>();
TypeFactory typeFactory = mapper.getTypeFactory();
CollectionType arrayType = typeFactory.constructCollectionType( ArrayList.class, ChangedContainerDto.class );
List<ChangedContainerDto> changedContainers = mapper.readValue( quotaContainers, arrayType );
for ( ChangedContainerDto cont : changedContainers )
{
ContainerQuotaDto containerQuotaDto = cont.getQuota();
ContainerSize containerSize = containerQuotaDto.getContainerSize();
ContainerQuota defaultQuota = ContainerSize.getDefaultContainerQuota( containerSize );
if ( containerSize == ContainerSize.CUSTOM )
{
defaultQuota = containerQuotaDto.getContainerQuota();
}
changedContainersFiltered.put( cont.getHostId(), defaultQuota );
}
return changedContainersFiltered;
}
项目:allocateme
文件:AbstractThriftDeserializer.java
/**
* Generates a {@link JavaType} that matches the target Thrift field represented by the provided
* {@code <E>} enumerated value. If the field's type includes generics, the generics will
* be added to the generated {@link JavaType} to support proper conversion.
* @param thriftInstance The Thrift-generated class instance that will be converted to/from JSON.
* @param field A {@code <E>} enumerated value that represents a field in a Thrift-based entity.
* @return The {@link JavaType} representation of the type associated with the field.
* @throws NoSuchFieldException if unable to determine the field's type.
* @throws SecurityException if unable to determine the field's type.
*/
protected JavaType generateValueType(final T thriftInstance, final E field) throws NoSuchFieldException, SecurityException {
final TypeFactory typeFactory = TypeFactory.defaultInstance();
final Field declaredField = thriftInstance.getClass().getDeclaredField(field.getFieldName());
if(declaredField.getType().equals(declaredField.getGenericType())) {
log.debug("Generating JavaType for type '{}'.", declaredField.getType());
return typeFactory.constructType(declaredField.getType());
} else {
final ParameterizedType type = (ParameterizedType)declaredField.getGenericType();
final Class<?>[] parameterizedTypes = new Class<?>[type.getActualTypeArguments().length];
for(int i=0; i<type.getActualTypeArguments().length; i++) {
parameterizedTypes[i] = (Class<?>)type.getActualTypeArguments()[i];
}
log.debug("Generating JavaType for type '{}' with generics '{}'", declaredField.getType(), parameterizedTypes);
return typeFactory.constructParametricType(declaredField.getType(), parameterizedTypes);
}
}
项目:tomoko
文件:JacksonTreeParser.java
private <T> T parse(JsonNode node, ValueType<T> valueType) throws IOException {
JavaType javaType = null;
if (valueType instanceof SimpleType) {
SimpleType simpleType = (SimpleType) valueType;
javaType = TypeFactory.defaultInstance().uncheckedSimpleType(simpleType.getBaseClass());
} else if (valueType instanceof GenericType) {
GenericType genericType = (GenericType) valueType;
javaType = TypeFactory.defaultInstance().constructParametricType(genericType.getBaseClass(), genericType.getParameterTypes());
} else if (valueType instanceof CollectionType) {
CollectionType collectionType = (CollectionType) valueType;
javaType = TypeFactory.defaultInstance().constructCollectionType(collectionType.getBaseClass(), collectionType.getElementClass());
} else if (valueType instanceof MapType) {
MapType mapType = (MapType) valueType;
javaType = TypeFactory.defaultInstance().constructMapType(mapType.getBaseClass(), mapType.getKeyClass(), mapType.getValueClass());
} else {
throw new IllegalArgumentException("Unexpected class instance encountered: " + valueType.getClass());
}
return (T) parse(node, javaType);
}
项目:haven-platform
文件:KvMapperFactory.java
<T> Map<String, T> loadProps(Class<?> clazz, Function<KvProperty, T> func) {
ImmutableMap.Builder<String, T> b = ImmutableMap.builder();
TypeFactory tf = TypeFactory.defaultInstance();
while(clazz != null && !Object.class.equals(clazz)) {
for(Field field: clazz.getDeclaredFields()) {
KvMapping mapping = field.getAnnotation(KvMapping.class);
if(mapping == null) {
continue;
}
JavaType javaType;
String typeStr = mapping.type();
if(!typeStr.isEmpty()) {
javaType = tf.constructFromCanonical(typeStr);
} else {
javaType = tf.constructType(field.getGenericType());
}
KvProperty property = new KvProperty(this, field.getName(), field, javaType);
b.put(property.getKey(), func.apply(property));
}
clazz = clazz.getSuperclass();
}
return b.build();
}
项目:syndesis-rest
文件:JsonDbDao.java
@Override
public ListResult<T> fetchAll() {
try {
// get the data out..
byte[] json = jsondb.getAsByteArray(getCollectionPath());
if( json!=null && json.length > 0 ) {
// Lets use jackson to parse the map of keys to our model instances
ObjectMapper mapper = Json.mapper();
TypeFactory typeFactory = mapper.getTypeFactory();
MapType mapType = typeFactory.constructMapType(LinkedHashMap.class, String.class, getType());
LinkedHashMap<String, T> map = mapper.readValue(json, mapType);
return ListResult.of(map.values());
}
return ListResult.of(Collections.<T>emptyList());
} catch (@SuppressWarnings("PMD.AvoidCatchingGenericException") RuntimeException|IOException e) {
throw SyndesisServerException.launderThrowable(e);
}
}
项目:Web-API
文件:WebBookServlet.java
public WebBookServlet() {
File dir = new File("webapi/data");
dir.mkdirs();
try {
File file = new File("webapi/data/webbooks.json");
if (file.exists()) {
String content = new String(Files.readAllBytes(file.toPath()));
JavaType mapType = TypeFactory.defaultInstance()
.constructMapType(ConcurrentHashMap.class, String.class, WebBook.class);
books = serializeService.deserialize(content, false, mapType, IPermissionService.permitAllNode());
}
} catch (IOException e) {
e.printStackTrace();
}
}
项目:story-inspector
文件:JsonMappingSpringConfig.java
@SuppressWarnings("unchecked")
@Override
public Analyzer<?> deserialize(final JsonParser p, final DeserializationContext ctxt) throws IOException, JsonProcessingException {
final JsonDeserializer<?> specDeserializer = ctxt
.findNonContextualValueDeserializer(TypeFactory.defaultInstance().uncheckedSimpleType(AnalyzerSpec.class));
final AnalyzerSpec spec = (AnalyzerSpec) specDeserializer.deserialize(p, ctxt);
final AnalyzerCreationResult creationResult = spec.getAnalyzerType().tryCreateAnalyzer(spec);
if (!creationResult.wasSuccessful()) {
throw new IOException(
"Could not create analyzer from spec, global result: " + creationResult.getGlobalResult() + ", parameter results: ");
}
return creationResult.getAnalyzer();
}
项目:incubator-servicecomb-java-chassis
文件:ArrayPropertyConverter.java
public static JavaType findJavaType(ClassLoader classLoader, String packageName, Swagger swagger,
Property itemProperty,
Boolean uniqueItems) {
JavaType itemJavaType = ConverterMgr.findJavaType(classLoader, packageName, swagger, itemProperty);
@SuppressWarnings("rawtypes")
Class<? extends Collection> collectionClass = List.class;
if (Boolean.TRUE.equals(uniqueItems)) {
collectionClass = Set.class;
}
return TypeFactory.defaultInstance().constructCollectionType(collectionClass, itemJavaType);
}
项目:incubator-servicecomb-java-chassis
文件:StringPropertyConverter.java
private static JavaType getOrCreateEnumByNames(ClassLoader classLoader, String packageName, List<String> enums) {
String strEnums = enums.toString();
synchronized (LOCK) {
JavaType javaType = enumMap.get(strEnums);
if (javaType != null) {
return javaType;
}
String enumClsName = packageName + ".Enum" + enumMap.size();
@SuppressWarnings("rawtypes")
Class<? extends Enum> enumCls = JavassistUtils.createEnum(classLoader, enumClsName, enums);
javaType = TypeFactory.defaultInstance().constructType(enumCls);
enumMap.put(strEnums, javaType);
return javaType;
}
}
项目:incubator-servicecomb-java-chassis
文件:MapPropertyConverter.java
public static JavaType findJavaType(ClassLoader classLoader, String packageName, Swagger swagger,
Property valueProperty) {
JavaType valueJavaType = ConverterMgr.findJavaType(classLoader, packageName, swagger, valueProperty);
return TypeFactory.defaultInstance().constructMapType(Map.class,
TypeFactory.defaultInstance().constructType(String.class),
valueJavaType);
}
项目:incubator-servicecomb-java-chassis
文件:ModelImplConverter.java
@Override
public JavaType doConvert(ClassLoader classLoader, String packageName, Swagger swagger, Object model) {
ModelImpl modelImpl = (ModelImpl) model;
JavaType javaType = ConverterMgr.findJavaType(modelImpl.getType(), modelImpl.getFormat());
if (javaType != null) {
return javaType;
}
if (modelImpl.getReference() != null) {
return ConverterMgr.findByRef(classLoader, packageName, swagger, modelImpl.getReference());
}
if (modelImpl.getAdditionalProperties() != null) {
return MapPropertyConverter.findJavaType(classLoader,
packageName,
swagger,
modelImpl.getAdditionalProperties());
}
if (ObjectProperty.TYPE.equals(modelImpl.getType())
&& modelImpl.getProperties() == null
&& modelImpl.getName() == null) {
return TypeFactory.defaultInstance().constructType(Object.class);
}
// 根据name、property动态生成class
if (packageName == null) {
throw new Error("packageName should not be null");
}
String clsName = packageName + "." + modelImpl.getName();
Class<?> cls =
ClassUtils.getOrCreateClass(classLoader, packageName, swagger, modelImpl.getProperties(), clsName);
return TypeFactory.defaultInstance().constructType(cls);
}
项目:incubator-servicecomb-java-chassis
文件:AbstractConverter.java
private JavaType getJavaTypeByVendorExtensions(ClassLoader classLoader,
Map<String, Object> vendorExtensions) {
Class<?> cls =
ClassUtils.getClassByVendorExtensions(classLoader, vendorExtensions, SwaggerConst.EXT_JAVA_CLASS);
if (cls == null) {
return null;
}
return TypeFactory.defaultInstance().constructType(cls);
}
项目:incubator-servicecomb-java-chassis
文件:BodyProcessorCreator.java
@Override
public ParamValueProcessor create(Parameter parameter, Type genericParamType) {
JavaType targetType = TypeFactory.defaultInstance().constructType(genericParamType);
boolean rawJson = ClassUtils.isRawJsonType(parameter);
if (genericParamType.getTypeName().equals(String.class.getTypeName()) && rawJson) {
return new RawJsonBodyProcessor(targetType);
}
return new BodyProcessor(targetType);
}
项目:incubator-servicecomb-java-chassis
文件:FormProcessorCreator.java
@Override
public ParamValueProcessor create(Parameter parameter, Type genericParamType) {
JavaType targetType = TypeFactory.defaultInstance().constructType(genericParamType);
if (isPart(parameter)) {
return new PartProcessor(parameter.getName(), targetType);
}
return new FormProcessor(parameter.getName(), targetType);
}
项目:incubator-servicecomb-java-chassis
文件:TestHeaderProcessor.java
@SuppressWarnings("unchecked")
@Test
public void testGetValueList() throws Exception {
new Expectations() {
{
request.getHeaders("h1");
result = Collections.enumeration(Arrays.asList("h1v"));
}
};
HeaderProcessor processor =
new HeaderProcessor("h1", TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
Object value = processor.getValue(request);
Assert.assertThat((List<String>) value, Matchers.contains("h1v"));
}
项目:incubator-servicecomb-java-chassis
文件:TestHeaderProcessor.java
@SuppressWarnings("unchecked")
@Test
public void testGetValueSet() throws Exception {
new Expectations() {
{
request.getHeaders("h1");
result = Collections.enumeration(Arrays.asList("h1v"));
}
};
HeaderProcessor processor =
new HeaderProcessor("h1", TypeFactory.defaultInstance().constructCollectionType(Set.class, String.class));
Object value = processor.getValue(request);
Assert.assertThat((Set<String>) value, Matchers.contains("h1v"));
}
项目:incubator-servicecomb-java-chassis
文件:TestFormProcessor.java
@SuppressWarnings("unchecked")
@Test
public void testGetValueList() throws Exception {
new Expectations() {
{
request.getParameterValues("name");
result = new String[] {"value"};
}
};
ParamValueProcessor processor =
new FormProcessor("name", TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
Object value = processor.getValue(request);
Assert.assertThat((List<String>) value, Matchers.contains("value"));
}
项目:incubator-servicecomb-java-chassis
文件:TestFormProcessor.java
@SuppressWarnings("unchecked")
@Test
public void testGetValueSet() throws Exception {
new Expectations() {
{
request.getParameterValues("name");
result = new String[] {"value"};
}
};
ParamValueProcessor processor =
new FormProcessor("name", TypeFactory.defaultInstance().constructCollectionType(Set.class, String.class));
Object value = processor.getValue(request);
Assert.assertThat((Set<String>) value, Matchers.contains("value"));
}
项目:incubator-servicecomb-java-chassis
文件:TestProduceJsonProcessor.java
@Test
public void testdecodeResponseNull() throws Exception {
JavaType resultType = TypeFactory.unknownType();
Object result = pp.decodeResponse(Buffer.buffer(), resultType);
Assert.assertNull(result);
ByteArrayInputStream is = new ByteArrayInputStream(new byte[] {});
result = pp.decodeResponse(is, resultType);
Assert.assertNull(result);
}
项目:incubator-servicecomb-java-chassis
文件:TestProduceTextPlainProcessor.java
@Test
public void testdecodeResponseNull() throws Exception {
JavaType resultType = TypeFactory.unknownType();
Object result = pp.decodeResponse(Buffer.buffer(), resultType);
Assert.assertNull(result);
ByteArrayInputStream is = new ByteArrayInputStream(new byte[] {});
result = pp.decodeResponse(is, resultType);
Assert.assertNull(result);
}
项目:incubator-servicecomb-java-chassis
文件:TestJavassistUtils.java
@Test
public void testField() throws Exception {
ClassConfig classConfig = new ClassConfig();
classConfig.setClassName("cse.ut.testField");
FieldConfig fieldConfig = classConfig.addField("intField", int.class);
fieldConfig.setGenGetter(true);
fieldConfig.setGenSetter(true);
fieldConfig = classConfig.addField("intArrayField", int[].class);
fieldConfig.setGenGetter(true);
fieldConfig.setGenSetter(true);
fieldConfig = classConfig.addField("listStringField",
TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
fieldConfig.setGenGetter(true);
fieldConfig.setGenSetter(true);
Class<?> cls = JavassistUtils.createClass(classConfig);
Field field = cls.getField("intField");
Assert.assertEquals(Integer.class, field.getType());
Method method = cls.getMethod("getIntField");
Assert.assertEquals(Integer.class, method.getReturnType());
field = cls.getField("intArrayField");
Assert.assertEquals(int[].class, field.getType());
method = cls.getMethod("getIntArrayField");
Assert.assertEquals(int[].class, method.getReturnType());
field = cls.getField("listStringField");
Assert.assertEquals("java.util.List<java.lang.String>", field.getGenericType().getTypeName());
method = cls.getMethod("getListStringField");
Assert.assertEquals("java.util.List<java.lang.String>", method.getGenericReturnType().getTypeName());
}
项目:incubator-servicecomb-java-chassis
文件:TestJavassistUtils.java
@Test
public void testAddParameter() {
ClassConfig classConfig = new ClassConfig();
classConfig.setIntf(true);
String intfName = "cse.ut.TestAddParameter";
classConfig.setClassName(intfName);
MethodConfig methodConfig = new MethodConfig();
methodConfig.setName("method");
methodConfig.setResult(TypeFactory.defaultInstance().constructCollectionType(List.class, String.class));
methodConfig.addParameter("map",
TypeFactory.defaultInstance().constructMapType(Map.class, String.class, String.class));
methodConfig.addParameter("set",
TypeFactory.defaultInstance().constructCollectionType(Set.class, String.class));
classConfig.addMethod(methodConfig);
Class<?> intf = JavassistUtils.createClass(classConfig);
Assert.assertEquals(intfName, intf.getName());
Method method = ReflectUtils.findMethod(intf, "method");
Assert.assertEquals("method", method.getName());
Assert.assertEquals("java.util.List<java.lang.String>", method.getGenericReturnType().getTypeName());
Type[] types = method.getGenericParameterTypes();
Assert.assertEquals("java.util.Map<java.lang.String, java.lang.String>", types[0].getTypeName());
Assert.assertEquals("java.util.Set<java.lang.String>", types[1].getTypeName());
}
项目:incubator-servicecomb-java-chassis
文件:TestJavassistUtils.java
@Test
public void singleWrapperInt() throws Exception {
ClassConfig classConfig = new ClassConfig();
classConfig.setClassName("cse.ut.single.IntWrapper");
classConfig.addField("intField", TypeFactory.defaultInstance().constructType(int.class));
JavassistUtils.genSingleWrapperInterface(classConfig);
Class<?> wrapperClass = JavassistUtils.createClass(classConfig);
SingleWrapper instance = (SingleWrapper) wrapperClass.newInstance();
instance.writeField(100);
int intFieldValue = (int) instance.readField();
Assert.assertEquals(100, intFieldValue);
}
项目:incubator-servicecomb-java-chassis
文件:TestJavassistUtils.java
@Test
public void testGetNameForGenerateCode() {
JavaType jt = TypeFactory.defaultInstance().constructType(byte[].class);
String name = JavassistUtils.getNameForGenerateCode(jt);
Assert.assertEquals("byte[]", name);
jt = TypeFactory.defaultInstance().constructType(Byte[].class);
name = JavassistUtils.getNameForGenerateCode(jt);
Assert.assertEquals("java.lang.Byte[]", name);
jt = TypeFactory.defaultInstance().constructType(Object[].class);
name = JavassistUtils.getNameForGenerateCode(jt);
Assert.assertEquals("java.lang.Object[]", name);
}
项目:incubator-servicecomb-java-chassis
文件:ProtobufSchemaUtils.java
public static WrapSchema getOrCreateSchema(Type type) {
JavaType javaType = TypeFactory.defaultInstance().constructType(type);
// List<String> -> java.util.List<java.lang.String>
// List<List<String>> -> java.util.List<java.util.List<java.lang.String>>
String key = javaType.toCanonical();
return getOrCreateSchema(key, () -> {
if (!isNeedWrap(javaType.getRawClass())) {
// 可以直接使用
Schema<?> schema = RuntimeSchema.createFrom(javaType.getRawClass());
return WrapSchemaFactory.createSchema(schema, WrapType.NOT_WRAP);
}
// 需要包装
WrapClassConfig config = new WrapClassConfig();
config.setType(WrapType.NORMAL_WRAP);
config.setClassName("gen.wrap.protobuf." + key.replaceAll("[<>]", "_").replace("[", "array_"));
if (!Void.TYPE.isAssignableFrom(javaType.getRawClass())) {
config.addField("field0", javaType);
}
JavassistUtils.genSingleWrapperInterface(config);
return createWrapSchema(config);
});
}
项目:incubator-servicecomb-java-chassis
文件:StandardResultCodec.java
@Override
public void init(ProtobufSchema schema, Type... types) {
writer = ProtobufManager.getMapper().writer(schema);
reader = ProtobufManager.getMapper().reader(schema);
// 需要考虑void场景
if (types.length == 1) {
JavaType javaType = TypeFactory.defaultInstance().constructType(types[0]);
writer = writer.forType(javaType);
reader = reader.forType(javaType);
}
}
项目:incubator-servicecomb-java-chassis
文件:StandardParamCodec.java
@Override
public void init(ProtobufSchema schema, Type... types) {
writer = ProtobufManager.getMapper().writer(schema);
reader = ProtobufManager.getMapper().reader(schema);
// 需要考虑没参数的场景
if (types.length == 1) {
JavaType javaType = TypeFactory.defaultInstance().constructType(types[0]);
writer = new StandardObjectWriter(writer.forType(javaType));
reader = new StandardObjectReader(reader.forType(javaType));
}
}