本文整理匯總了Java中com.fasterxml.jackson.databind.BeanDescription.findProperties方法的典型用法代碼示例。如果您正苦於以下問題:Java BeanDescription.findProperties方法的具體用法?Java BeanDescription.findProperties怎麽用?Java BeanDescription.findProperties使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類com.fasterxml.jackson.databind.BeanDescription
的用法示例。
在下文中一共展示了BeanDescription.findProperties方法的7個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: getSerialisedFields
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
@SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Need to wrap all runtime exceptions before they are given to the user")
@Override
public Set<String> getSerialisedFields(final String className) {
final Class<?> clazz;
try {
clazz = Class.forName(className);
} catch (final Exception e) {
throw new IllegalArgumentException("Class name was not recognised: " + className, e);
}
final ObjectMapper mapper = new ObjectMapper();
final JavaType type = mapper.getTypeFactory().constructType(clazz);
final BeanDescription introspection = mapper.getSerializationConfig().introspect(type);
final List<BeanPropertyDefinition> properties = introspection.findProperties();
final Set<String> fields = new HashSet<>();
for (final BeanPropertyDefinition property : properties) {
fields.add(property.getName());
}
return fields;
}
示例2: getSerialisedFields
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
@SuppressFBWarnings(value = "REC_CATCH_EXCEPTION", justification = "Need to wrap all runtime exceptions before they are given to the user")
@Override
public Response getSerialisedFields(final String className) {
final Class<?> clazz;
try {
clazz = Class.forName(className);
} catch (final Exception e) {
throw new IllegalArgumentException("Class name was not recognised: " + className, e);
}
final ObjectMapper mapper = new ObjectMapper();
final JavaType type = mapper.getTypeFactory().constructType(clazz);
final BeanDescription introspection = mapper.getSerializationConfig()
.introspect(type);
final List<BeanPropertyDefinition> properties = introspection.findProperties();
final Set<String> fields = new HashSet<>();
for (final BeanPropertyDefinition property : properties) {
fields.add(property.getName());
}
return Response.ok(fields)
.header(GAFFER_MEDIA_TYPE_HEADER, GAFFER_MEDIA_TYPE)
.build();
}
示例3: getResourceSchema
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
@Override
public ResourceSchema getResourceSchema(TypeToken<?> type, ApiConfig config) {
ResourceSchema schema = super.getResourceSchema(type, config);
if (schema != null) {
return schema;
}
ObjectMapper objectMapper =
ObjectMapperUtil.createStandardObjectMapper(config.getSerializationConfig());
JavaType javaType = objectMapper.getTypeFactory().constructType(type.getRawType());
BeanDescription beanDescription = objectMapper.getSerializationConfig().introspect(javaType);
ResourceSchema.Builder schemaBuilder = ResourceSchema.builderForType(type.getRawType());
Set<String> genericDataFieldNames = getGenericDataFieldNames(type);
for (BeanPropertyDefinition definition : beanDescription.findProperties()) {
TypeToken<?> propertyType = getPropertyType(type, toMethod(definition.getGetter()),
toMethod(definition.getSetter()), definition.getField(), config);
String name = definition.getName();
if (genericDataFieldNames == null || genericDataFieldNames.contains(name)) {
if (hasUnresolvedType(propertyType)) {
logger.warning("skipping field '" + name + "' of type '" + propertyType
+ "' because it is unresolved.");
continue;
}
if (propertyType != null) {
schemaBuilder.addProperty(name, ResourcePropertySchema.of(propertyType));
} else {
logger.warning("No type found for property '" + name + "' on class '" + type + "'.");
}
} else {
logger.fine("skipping field '" + name + "' because it's not a Java client model field.");
}
}
return schemaBuilder.build();
}
示例4: findBeanProperties
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
protected List<BeanPropertyWriter> findBeanProperties(SerializerProvider paramSerializerProvider, BeanDescription paramBeanDescription, BeanSerializerBuilder paramBeanSerializerBuilder)
{
List localList = paramBeanDescription.findProperties();
SerializationConfig localSerializationConfig = paramSerializerProvider.getConfig();
removeIgnorableTypes(localSerializationConfig, paramBeanDescription, localList);
if (localSerializationConfig.isEnabled(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS))
removeSetterlessGetters(localSerializationConfig, paramBeanDescription, localList);
if (localList.isEmpty())
return null;
boolean bool = usesStaticTyping(localSerializationConfig, paramBeanDescription, null);
PropertyBuilder localPropertyBuilder = constructPropertyBuilder(localSerializationConfig, paramBeanDescription);
ArrayList localArrayList = new ArrayList(localList.size());
TypeBindings localTypeBindings = paramBeanDescription.bindingsForBeanType();
Iterator localIterator = localList.iterator();
while (localIterator.hasNext())
{
BeanPropertyDefinition localBeanPropertyDefinition = (BeanPropertyDefinition)localIterator.next();
AnnotatedMember localAnnotatedMember = localBeanPropertyDefinition.getAccessor();
if (localBeanPropertyDefinition.isTypeId())
{
if (localAnnotatedMember != null)
{
if (localSerializationConfig.canOverrideAccessModifiers())
localAnnotatedMember.fixAccess();
paramBeanSerializerBuilder.setTypeId(localAnnotatedMember);
}
}
else
{
AnnotationIntrospector.ReferenceProperty localReferenceProperty = localBeanPropertyDefinition.findReferenceType();
if ((localReferenceProperty == null) || (!localReferenceProperty.isBackReference()))
if ((localAnnotatedMember instanceof AnnotatedMethod))
localArrayList.add(_constructWriter(paramSerializerProvider, localBeanPropertyDefinition, localTypeBindings, localPropertyBuilder, bool, (AnnotatedMethod)localAnnotatedMember));
else
localArrayList.add(_constructWriter(paramSerializerProvider, localBeanPropertyDefinition, localTypeBindings, localPropertyBuilder, bool, (AnnotatedField)localAnnotatedMember));
}
}
return localArrayList;
}
示例5: serialize
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void serialize(ExecutionResult value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
SerializationConfig config = provider.getConfig();
Object rootObj = value.getRoot();
if (rootObj == null)
{
provider.getDefaultNullValueSerializer().serialize(null, jgen, provider);
}
else
{
Class<?> cls = rootObj.getClass();
Map toBeSerialized = new HashMap(); //create an untyped map, add the contents of the root + the embeds.
BeanPropertiesFilter filter = value.getFilter();
if (filter == null) filter = BeanPropertiesFilter.ALLOW_ALL;
if (Map.class.isAssignableFrom(cls))
{
// Its a map so
Map rootAsaMap = (Map) rootObj;
toBeSerialized.putAll(rootAsaMap);
}
else
{
JavaType classType = config.constructType(cls);
BeanDescription beanDesc = provider.getConfig().introspect(classType);
List<BeanPropertyDefinition> props = beanDesc.findProperties();
for (BeanPropertyDefinition beanProperty : props)
{
if (beanProperty.couldSerialize() && filter.isAllowed(beanProperty.getName()))
{
Object propertyValue = ResourceInspectorUtil.invokeMethod(beanProperty.getGetter().getAnnotated(), rootObj);
if (propertyValue != null)
{
if((propertyValue instanceof String))
{
if(((String)propertyValue).trim().length() > 0)
{
toBeSerialized.put(beanProperty.getName(), propertyValue);
}
}
else
{
toBeSerialized.put(beanProperty.getName(), propertyValue);
}
}
}
}
}
//Add embedded
for (Entry<String, Object> embedded : value.getEmbedded().entrySet())
{
if (filter == null || filter.isAllowed(embedded.getKey()))
{
toBeSerialized.put(embedded.getKey(),embedded.getValue());
}
}
//if its an embedded entity then render the properties (not as an "entry:")
if (value.isAnEmbeddedEntity())
{
jgen.writeObject(toBeSerialized);
}
else
{
jgen.writeStartObject();
jgen.writeObjectField("entry", toBeSerialized);
if (value.getRelated() != null && !value.getRelated().isEmpty())
{
jgen.writeObjectField("relations", value.getRelated());
}
jgen.writeEndObject();
}
}
}
示例6: deserialize
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
@Override
public T deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
Entity result;
try {
result = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException ex) {
throw new IOException("Error deserializing JSON!");
}
// need to make subclass of this class for every Entity subclass with custom field to get expected class!!!
BeanDescription beanDescription = ctxt.getConfig().introspect(ctxt.constructType(clazz));
ObjectMapper mapper = (ObjectMapper) parser.getCodec();
JsonNode obj = (JsonNode) mapper.readTree(parser);
List<BeanPropertyDefinition> properties = beanDescription.findProperties();
Iterator<Map.Entry<String, JsonNode>> i = obj.fields();
// First check if we know all properties that are present.
if (ctxt.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)) {
for (; i.hasNext();) {
Map.Entry<String, JsonNode> next = i.next();
String fieldName = next.getKey();
JsonNode field = next.getValue();
Optional<BeanPropertyDefinition> findFirst = properties.stream().filter(p -> p.getName().equals(fieldName)).findFirst();
if (!findFirst.isPresent()) {
throw new UnrecognizedPropertyException(parser, "Unknown field: " + fieldName, parser.getCurrentLocation(), clazz, fieldName, null);
}
}
}
for (BeanPropertyDefinition classProperty : properties) {
if (obj.has(classProperty.getName())) {
// property is present in class and json
Annotation annotation = classProperty.getAccessor().getAnnotation(CustomSerialization.class);
if (annotation != null) {
// property has custom annotation
// check if encoding property is also present in json (and also in class itself for sanity reasons)
CustomSerialization customAnnotation = (CustomSerialization) annotation;
Optional<BeanPropertyDefinition> encodingClassProperty = properties.stream().filter(p -> p.getName().equals(customAnnotation.encoding())).findFirst();
if (!encodingClassProperty.isPresent()) {
throw new IOException("Error deserializing JSON as class '" + clazz.toString() + "' \n"
+ "Reason: field '" + customAnnotation.encoding() + "' specified by annotation as encoding field is not defined in class!");
}
String customEncoding = null;
if (obj.has(customAnnotation.encoding())) {
customEncoding = obj.get(customAnnotation.encoding()).asText();
}
Object customDeserializedValue = CustomDeserializationManager.getInstance()
.getDeserializer(customEncoding)
.deserialize(mapper.writeValueAsString(obj.get(classProperty.getName())));
classProperty.getMutator().setValue(result, customDeserializedValue);
} else {
// TODO type identificatin is not safe beacuase may ne be backed by field. Rather do multiple checks
Object value = mapper.readValue(mapper.writeValueAsString(obj.get(classProperty.getName())), classProperty.getField().getType());
classProperty.getMutator().setValue(result, value);
}
}
}
return (T) result;
}
示例7: getProperties
import com.fasterxml.jackson.databind.BeanDescription; //導入方法依賴的package包/類
private static List<BeanPropertyDefinition> getProperties(JavaType type, SerializationConfig config) {
ClassIntrospector classIntrospector = config.getClassIntrospector();
BeanDescription description = classIntrospector.forSerialization(config, type, config);
return description.findProperties();
}