Search in sources :

Example 1 with Writer

use of org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer in project alfresco-remote-api by Alfresco.

the class WebScriptOptionsMetaData method writeMetaData.

@Override
public void writeMetaData(OutputStream out, ResourceWithMetadata resource, Map<String, ResourceWithMetadata> allApiResources) throws IOException {
    final Object result = processResult(resource, allApiResources);
    assistant.getJsonHelper().withWriter(out, new Writer() {

        @Override
        public void writeContents(JsonGenerator generator, ObjectMapper objectMapper) throws JsonGenerationException, JsonMappingException, IOException {
            objectMapper.writeValue(generator, result);
        }
    });
}
Also used : JsonMappingException(com.fasterxml.jackson.databind.JsonMappingException) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) IOException(java.io.IOException) JsonGenerationException(com.fasterxml.jackson.core.JsonGenerationException) ResourceMetaDataWriter(org.alfresco.rest.framework.metadata.ResourceMetaDataWriter) Writer(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 2 with Writer

use of org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer in project alfresco-remote-api by Alfresco.

the class SerializeTests method writeResponse.

private String writeResponse(final Object respons) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    jsonHelper.withWriter(out, new Writer() {

        @Override
        public void writeContents(JsonGenerator generator, ObjectMapper objectMapper) throws JsonGenerationException, JsonMappingException, IOException {
            objectMapper.writeValue(generator, respons);
        }
    });
    System.out.println(out.toString());
    return out.toString();
}
Also used : JsonMappingException(com.fasterxml.jackson.databind.JsonMappingException) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) JsonGenerationException(com.fasterxml.jackson.core.JsonGenerationException) PrintWriter(java.io.PrintWriter) Writer(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 3 with Writer

use of org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer in project alfresco-remote-api by Alfresco.

the class JsonJacksonTests method testSerializeMultipleObjects.

@Test
public void testSerializeMultipleObjects() throws IOException {
    final Collection<Comment> allComments = new ArrayList<Comment>();
    Comment aComment = new Comment();
    aComment.setContent("<b>There it is</b>");
    allComments.add(aComment);
    aComment = new Comment();
    aComment.setContent("<p>I agree with the author</p>");
    allComments.add(aComment);
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    jsonHelper.withWriter(out, new Writer() {

        @Override
        public void writeContents(JsonGenerator generator, ObjectMapper objectMapper) throws JsonGenerationException, JsonMappingException, IOException {
            FilterProvider fp = new SimpleFilterProvider().addFilter(JacksonHelper.DEFAULT_FILTER_NAME, new ReturnAllBeanProperties());
            objectMapper.writer(fp).writeValue(generator, allComments);
        }
    });
    assertTrue(out.toString().contains("content\":\"<b>There it is</b>"));
    assertTrue(out.toString().contains("content\":\"<p>I agree with the author</p>"));
}
Also used : Comment(org.alfresco.rest.api.model.Comment) ArrayList(java.util.ArrayList) ByteArrayOutputStream(java.io.ByteArrayOutputStream) IOException(java.io.IOException) FilterProvider(com.fasterxml.jackson.databind.ser.FilterProvider) SimpleFilterProvider(com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider) SimpleFilterProvider(com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider) JsonMappingException(com.fasterxml.jackson.databind.JsonMappingException) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) JsonGenerationException(com.fasterxml.jackson.core.JsonGenerationException) ReturnAllBeanProperties(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.ReturnAllBeanProperties) Writer(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Test(org.junit.Test)

Example 4 with Writer

use of org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer in project alfresco-remote-api by Alfresco.

the class InfoWebScriptGet method execute.

@Override
public void execute(final Api api, WebScriptRequest req, WebScriptResponse res) throws IOException {
    ResourceDictionary resourceDic = lookupDictionary.getDictionary();
    final Map<String, ResourceWithMetadata> apiResources = resourceDic.getAllResources().get(api);
    if (apiResources == null) {
        throw new InvalidArgumentException(InvalidArgumentException.DEFAULT_INVALID_API);
    }
    assistant.getJsonHelper().withWriter(res.getOutputStream(), new Writer() {

        @Override
        public void writeContents(JsonGenerator generator, ObjectMapper objectMapper) throws JsonGenerationException, JsonMappingException, IOException {
            List<ExecutionResult> entities = new ArrayList<ExecutionResult>();
            for (ResourceWithMetadata resource : apiResources.values()) {
                entities.add(new ExecutionResult(resource.getMetaData(), null));
            }
            Collections.sort(entities, new Comparator<ExecutionResult>() {

                public int compare(ExecutionResult r1, ExecutionResult r2) {
                    return ((ResourceMetadata) r1.getRoot()).getUniqueId().compareTo(((ResourceMetadata) r2.getRoot()).getUniqueId());
                }
            });
            objectMapper.writeValue(generator, CollectionWithPagingInfo.asPaged(Paging.DEFAULT, entities));
        }
    });
}
Also used : ResourceDictionary(org.alfresco.rest.framework.core.ResourceDictionary) ExecutionResult(org.alfresco.rest.framework.jacksonextensions.ExecutionResult) IOException(java.io.IOException) Comparator(java.util.Comparator) InvalidArgumentException(org.alfresco.rest.framework.core.exceptions.InvalidArgumentException) JsonMappingException(com.fasterxml.jackson.databind.JsonMappingException) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) ArrayList(java.util.ArrayList) List(java.util.List) JsonGenerationException(com.fasterxml.jackson.core.JsonGenerationException) ResourceWithMetadata(org.alfresco.rest.framework.core.ResourceWithMetadata) Writer(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)

Example 5 with Writer

use of org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer in project alfresco-remote-api by Alfresco.

the class NetworkWebScriptGet method execute.

@Override
public void execute(final Api api, final WebScriptRequest req, final WebScriptResponse res) throws IOException {
    try {
        transactionService.getRetryingTransactionHelper().doInTransaction(new RetryingTransactionCallback<Void>() {

            @Override
            public Void execute() throws Throwable {
                // apply content type
                res.setContentType(Format.JSON.mimetype() + ";charset=UTF-8");
                assistant.getJsonHelper().withWriter(res.getOutputStream(), new Writer() {

                    @Override
                    public void writeContents(JsonGenerator generator, ObjectMapper objectMapper) throws JsonGenerationException, JsonMappingException, IOException {
                        String personId = AuthenticationUtil.getFullyAuthenticatedUser();
                        String networkId = TenantUtil.getCurrentDomain();
                        PersonNetwork networkMembership = networks.getNetwork(personId, networkId);
                        if (networkMembership != null) {
                            // TODO this is not ideal, but the only way to populate the embedded network entities (this would normally be
                            // done automatically by the api framework).
                            Object wrapped = helper.processAdditionsToTheResponse(res, Api.ALFRESCO_PUBLIC, NetworksEntityResource.NAME, Params.valueOf(personId, null, req), networkMembership);
                            objectMapper.writeValue(generator, wrapped);
                        } else {
                            throw new EntityNotFoundException(networkId);
                        }
                    }
                });
                return null;
            }
        }, true, true);
    } catch (ApiException | WebScriptException apiException) {
        renderException(apiException, res, assistant);
    } catch (RuntimeException runtimeException) {
        renderException(runtimeException, res, assistant);
    }
}
Also used : EntityNotFoundException(org.alfresco.rest.framework.core.exceptions.EntityNotFoundException) WebScriptException(org.springframework.extensions.webscripts.WebScriptException) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) PersonNetwork(org.alfresco.rest.api.model.PersonNetwork) ResponseWriter(org.alfresco.rest.framework.tools.ResponseWriter) Writer(org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ApiException(org.alfresco.rest.framework.core.exceptions.ApiException)

Aggregations

JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)9 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)9 Writer (org.alfresco.rest.framework.jacksonextensions.JacksonHelper.Writer)9 JsonGenerationException (com.fasterxml.jackson.core.JsonGenerationException)7 JsonMappingException (com.fasterxml.jackson.databind.JsonMappingException)7 IOException (java.io.IOException)7 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 FilterProvider (com.fasterxml.jackson.databind.ser.FilterProvider)3 SimpleFilterProvider (com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider)3 ArrayList (java.util.ArrayList)3 Comment (org.alfresco.rest.api.model.Comment)3 ReturnAllBeanProperties (org.alfresco.rest.framework.jacksonextensions.JacksonHelper.ReturnAllBeanProperties)3 Test (org.junit.Test)3 PersonNetwork (org.alfresco.rest.api.model.PersonNetwork)2 ApiException (org.alfresco.rest.framework.core.exceptions.ApiException)2 ResponseWriter (org.alfresco.rest.framework.tools.ResponseWriter)2 WebScriptException (org.springframework.extensions.webscripts.WebScriptException)2 PrintWriter (java.io.PrintWriter)1 Comparator (java.util.Comparator)1 List (java.util.List)1