/** * Returns the default headers to be returned for the given {@link PersistentEntityResource}. Will set {@link ETag} * and {@code Last-Modified} headers if applicable. * * @param resource can be {@literal null}. * @return */ public HttpHeaders prepareHeaders(Optional<PersistentEntityResource> resource) { return resource// .map(it -> prepareHeaders(it.getPersistentEntity(), it.getContent()))// .orElseGet(() -> new HttpHeaders()); }
/** * Creates a new {@link ETag} for the given {@link PersistentEntityResource}. * * @param resource must not be {@literal null}. * @return */ public static ETag from(PersistentEntityResource resource) { Assert.notNull(resource, "PersistentEntityResource must not be null!"); return from(resource.getPersistentEntity(), resource.getContent()); }
@Override public void serialize(final PersistentEntityResource resource, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonGenerationException { LOG.debug("Serializing PersistentEntity {}.", resource.getPersistentEntity()); Object content = resource.getContent(); if (hasScalarSerializer(content, provider)) { provider.defaultSerializeValue(content, jgen); return; } Links links = getLinks(resource); if (TargetAware.class.isInstance(content)) { TargetAware targetAware = (TargetAware) content; provider.defaultSerializeValue(new ProjectionResource(targetAware, links), jgen); return; } Resource<Object> resourceToRender = new Resource<Object>(resource.getContent(), links) { @JsonUnwrapped public Iterable<?> getEmbedded() { return resource.getEmbeddeds(); } }; provider.defaultSerializeValue(resourceToRender, jgen); }
/** * Returns the default headers to be returned for the given {@link PersistentEntityResource}. Will set {@link ETag} * and {@code Last-Modified} headers if applicable. * * @param resource can be {@literal null}. * @return */ public HttpHeaders prepareHeaders(Optional<PersistentEntityResource> resource) { return resource// .map(it -> prepareHeaders(it.getPersistentEntity(), it.getContent()))// .orElseGet(() -> new HttpHeaders()); }
/** * Creates a new {@link ETag} for the given {@link PersistentEntityResource}. * * @param resource must not be {@literal null}. * @return */ public static ETag from(PersistentEntityResource resource) { Assert.notNull(resource, "PersistentEntityResource must not be null!"); return from(resource.getPersistentEntity(), resource.getContent()); }
@Override public void serialize(final PersistentEntityResource resource, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonGenerationException { LOG.debug("Serializing PersistentEntity {}.", resource.getPersistentEntity()); Object content = resource.getContent(); if (hasScalarSerializer(content, provider)) { provider.defaultSerializeValue(content, jgen); return; } Links links = getLinks(resource); if (TargetAware.class.isInstance(content)) { TargetAware targetAware = (TargetAware) content; provider.defaultSerializeValue(new ProjectionResource(targetAware, links), jgen); return; } Resource<Object> resourceToRender = new Resource<Object>(resource.getContent(), links) { @JsonUnwrapped public Iterable<?> getEmbedded() { return resource.getEmbeddeds(); } }; provider.defaultSerializeValue(resourceToRender, jgen); }