List of usage examples for org.springframework.data.rest.webmvc.json JacksonMetadata JacksonMetadata
public JacksonMetadata(ObjectMapper mapper, Class<?> type)
From source file:org.moserp.common.json_schema.factories.BasicPropertyFactoryTest.java
@Before public void setupBasicMocks() { jacksonMetadata = new JacksonMetadata(new ObjectMapperBuilder().build(), SimpleClass.class); persistentProperty = mock(PersistentProperty.class); persistentEntity = mock(PersistentEntity.class); when(persistentEntity.getType()).thenReturn(SimpleClass.class); when(persistentProperty.getOwner()).thenReturn(persistentEntity); }
From source file:org.springframework.data.rest.webmvc.json.JacksonMetadataUnitTests.java
/** * @see DATAREST-644//from w w w .j av a 2 s. c o m */ @Test public void detectsReadOnlyProperty() { JacksonMetadata metadata = new JacksonMetadata(mapper, User.class); PersistentEntity<?, ?> entity = context.getPersistentEntity(User.class); PersistentProperty<?> property = entity.getPersistentProperty("username"); assertThat(metadata.isExported(property), is(true)); assertThat(metadata.isReadOnly(property), is(true)); }
From source file:org.moserp.common.json_schema.JsonSchemaBuilder.java
private void populateProperties(Class<?> domainType, BusinessEntity entity) { Map<String, EntityProperty> properties = new HashMap<>(); final PersistentEntity<?, ?> persistentEntity = persistentEntities.getPersistentEntity(domainType); JacksonMetadata jacksonMetadata = new JacksonMetadata(objectMapper, domainType); for (BeanPropertyDefinition definition : jacksonMetadata) { PersistentProperty<?> persistentProperty = persistentEntity .getPersistentProperty(definition.getInternalName()); PropertyFactoryContext context = new PropertyFactoryContext(definition, jacksonMetadata, persistentProperty);//from w ww . j a va 2 s. co m PropertyFactory factory = getFactoryFor(context); if (factory != null) { EntityProperty property = factory.create(context); properties.put(definition.getInternalName(), property); if (property.isRequired()) { entity.getRequired().add(definition.getInternalName()); } } } entity.setProperties(properties); }
From source file:org.springframework.data.rest.webmvc.json.JacksonMetadataUnitTests.java
/** * @see DATAREST-644//from w w w . j a v a 2s . co m */ @Test public void reportsConstructorArgumentAsJacksonWritable() { JacksonMetadata metadata = new JacksonMetadata(mapper, Value.class); PersistentEntity<?, ?> entity = context.getPersistentEntity(Value.class); PersistentProperty<?> property = entity.getPersistentProperty("value"); assertThat(metadata.isReadOnly(property), is(false)); }
From source file:org.moserp.common.structure.ApplicationStructureBuilder.java
private List<EntityProperty> buildProperties(Class<?> domainType) { List<EntityProperty> properties = new ArrayList<>(); final PersistentEntity<?, ?> persistentEntity = persistentEntities.getPersistentEntity(domainType); JacksonMetadata jacksonMetadata = new JacksonMetadata(objectMapper, domainType); for (BeanPropertyDefinition definition : jacksonMetadata) { PersistentProperty<?> persistentProperty = persistentEntity .getPersistentProperty(definition.getInternalName()); PropertyFactoryContext context = new PropertyFactoryContext(definition, jacksonMetadata, persistentProperty);/* w w w .java 2 s.c o m*/ PropertyFactory factory = getFactoryFor(context); if (factory != null) { properties.add(factory.create(context)); } } return properties; }
From source file:org.springframework.data.rest.webmvc.json.JacksonMetadataUnitTests.java
/** * @see DATAREST-644/*w w w .j a v a2s .c o m*/ */ @Test public void detectsCustomSerializerFortType() { JsonSerializer<?> serializer = new JacksonMetadata(new ObjectMapper(), SomeBean.class) .getTypeSerializer(SomeBean.class); assertThat(serializer, is(instanceOf(SomeBeanSerializer.class))); }
From source file:org.springframework.data.rest.webmvc.json.PersistentEntityToJsonSchemaConverter.java
private List<AbstractJsonSchemaProperty<?>> getPropertiesFor(Class<?> type, final ResourceMetadata metadata, final Definitions definitions) { final PersistentEntity<?, ?> entity = entities.getPersistentEntity(type); final JacksonMetadata jackson = new JacksonMetadata(objectMapper, type); if (entity == null) { return Collections.<AbstractJsonSchemaProperty<?>>emptyList(); }/*from ww w. java2 s .c o m*/ JsonSchemaPropertyRegistrar registrar = new JsonSchemaPropertyRegistrar(jackson); for (BeanPropertyDefinition definition : jackson) { PersistentProperty<?> persistentProperty = entity.getPersistentProperty(definition.getInternalName()); // First pass, early drops to avoid unnecessary calculation if (persistentProperty != null) { if (persistentProperty.isIdProperty() && !configuration.isIdExposedFor(type)) { continue; } if (persistentProperty.isVersionProperty()) { continue; } if (!definition.couldSerialize()) { continue; } } AnnotatedMember primaryMember = definition.getPrimaryMember(); if (primaryMember == null) { continue; } TypeInformation<?> propertyType = persistentProperty == null ? ClassTypeInformation.from(primaryMember.getRawType()) : persistentProperty.getTypeInformation(); TypeInformation<?> actualPropertyType = propertyType.getActualType(); Class<?> rawPropertyType = propertyType.getType(); JsonSchemaFormat format = configuration.getMetadataConfiguration().getSchemaFormatFor(rawPropertyType); ResourceDescription description = persistentProperty == null ? jackson.getFallbackDescription(metadata, definition) : getDescriptionFor(persistentProperty, metadata); JsonSchemaProperty property = getSchemaProperty(definition, propertyType, description); boolean isSyntheticProperty = persistentProperty == null; boolean isNotWritable = !isSyntheticProperty && !persistentProperty.isWritable(); boolean isJacksonReadOnly = !isSyntheticProperty && jackson.isReadOnly(persistentProperty); if (isSyntheticProperty || isNotWritable || isJacksonReadOnly) { property = property.withReadOnly(); } if (format != null) { // Types with explicitly registered format -> value object with format registrar.register(property.withFormat(format), actualPropertyType); continue; } Pattern pattern = configuration.getMetadataConfiguration().getPatternFor(rawPropertyType); if (pattern != null) { registrar.register(property.withPattern(pattern), actualPropertyType); continue; } if (jackson.isValueType()) { registrar.register(property.with(STRING_TYPE_INFORMATION), actualPropertyType); continue; } if (persistentProperty == null) { registrar.register(property, actualPropertyType); continue; } if (configuration.isLookupType(persistentProperty.getActualType())) { registrar.register(property.with(propertyType), actualPropertyType); } else if (associations.isLinkableAssociation(persistentProperty)) { registrar.register(property.asAssociation(), null); } else { if (persistentProperty.isEntity()) { if (!definitions.hasDefinitionFor(propertyType)) { definitions.addDefinition(propertyType, new Item(propertyType, getNestedPropertiesFor(persistentProperty, definitions))); } registrar.register(property.with(propertyType, Definitions.getReference(propertyType)), actualPropertyType); } else { registrar.register(property.with(propertyType), actualPropertyType); } } } return registrar.getProperties(); }
From source file:org.springframework.data.rest.webmvc.alps.RootResourceInformationToAlpsDescriptorConverter.java
private List<Descriptor> createJacksonDescriptor(String name, Class<?> type) { List<Descriptor> descriptors = new ArrayList<Descriptor>(); for (BeanPropertyDefinition definition : new JacksonMetadata(mapper, type)) { AnnotatedMethod getter = definition.getGetter(); Description description = getter.getAnnotation(Description.class); ResourceDescription fallback = SimpleResourceDescription .defaultFor(String.format("%s.%s", name, definition.getName())); ResourceDescription resourceDescription = description == null ? null : new AnnotationBasedResourceDescription(description, fallback); descriptors.add(// descriptor().// name(definition.getName()).// type(Type.SEMANTIC).// doc(getDocFor(resourceDescription)).// build());//from ww w. j a v a2 s .c o m } return descriptors; }
From source file:org.springframework.data.rest.webmvc.alps.RootResourceInformationToAlpsDescriptorConverter.java
private List<Descriptor> buildPropertyDescriptors(final Class<?> type, String baseRel) { final PersistentEntity<?, ?> entity = persistentEntities.getPersistentEntity(type); final List<Descriptor> propertyDescriptors = new ArrayList<Descriptor>(); final JacksonMetadata jackson = new JacksonMetadata(mapper, type); final ResourceMetadata metadata = associations.getMetadataFor(entity.getType()); entity.doWithProperties(new SimplePropertyHandler() { @Override//from w w w. j a v a2 s . c o m public void doWithPersistentProperty(PersistentProperty<?> property) { BeanPropertyDefinition propertyDefinition = jackson.getDefinitionFor(property); ResourceMapping propertyMapping = metadata.getMappingFor(property); if (propertyDefinition != null) { if (property.isIdProperty() && !configuration.isIdExposedFor(property.getOwner().getType())) { return; } propertyDescriptors.add(// descriptor(). // type(Type.SEMANTIC).// name(propertyDefinition.getName()).// doc(getDocFor(propertyMapping.getDescription(), property)).// build()); } } }); entity.doWithAssociations(new SimpleAssociationHandler() { @Override public void doWithAssociation(Association<? extends PersistentProperty<?>> association) { PersistentProperty<?> property = association.getInverse(); if (!jackson.isExported(property) || !associations.isLinkableAssociation(property)) { return; } ResourceMapping mapping = metadata.getMappingFor(property); DescriptorBuilder builder = descriptor().// name(mapping.getRel()).doc(getDocFor(mapping.getDescription())); ResourceMetadata targetTypeMetadata = associations.getMetadataFor(property.getActualType()); String href = ProfileController.getPath(configuration, targetTypeMetadata) + "#" + getRepresentationDescriptorId(targetTypeMetadata); Link link = new Link(href).withSelfRel(); builder.// type(Type.SAFE).// rt(link.getHref()); propertyDescriptors.add(builder.build()); } }); return propertyDescriptors; }