Hey Mark If mediatype is json then byte arrays are fine so check shouldnt use ignored blindly but mediatype only i think for this case. ---------- Message transféré ---------- De : <[email protected]> Date : 2 juil. 2017 22:48 Objet : svn commit: r1800577 - in /openwebbeans/meecrowave/branches/meecrowave-1.0.x/meecrowave-core/src: main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java test/java/org/apache/meecrowave/OctetStreamMediaTypeTest.java À : <[email protected]> Cc :
Author: struberg > Date: Sun Jul 2 20:48:04 2017 > New Revision: 1800577 > > URL: http://svn.apache.org/viewvc?rev=1800577&view=rev > Log: > MEECROWAVE-49 don't use JSON-B for byte[] content. > > This is only a temporary fix! > It will later properly get handled in Johnzon > > Added: > openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/test/java/org/apache/meecrowave/OctetStreamMediaTypeTest.java > (with props) > Modified: > openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java > > Modified: openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java > URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/ > branches/meecrowave-1.0.x/meecrowave-core/src/main/java/ > org/apache/meecrowave/cxf/MeecrowaveBus.java?rev= > 1800577&r1=1800576&r2=1800577&view=diff > ============================================================ > ================== > --- openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java > (original) > +++ openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/main/java/org/apache/meecrowave/cxf/MeecrowaveBus.java > Sun Jul 2 20:48:04 2017 > @@ -26,6 +26,7 @@ import javax.ws.rs.Consumes; > import javax.ws.rs.Produces; > import javax.ws.rs.core.MediaType; > import javax.ws.rs.ext.Provider; > +import java.util.Arrays; > import java.util.Collection; > import java.util.HashMap; > import java.util.List; > @@ -197,6 +198,10 @@ public class MeecrowaveBus implements Bu > final String binaryStrategy, > final String namingStrategy, > final String orderStrategy) { > + // ATTENTION this is only a workaround for MEECROWAVE-49 and > shall get removed after Johnzon has a fix for it! > + // We add byte[] to the ignored types. > + super(Arrays.asList("[B")); > + > ofNullable(encoding).ifPresent(this::setEncoding); > ofNullable(namingStrategy).ifPresent(this:: > setPropertyNamingStrategy); > ofNullable(orderStrategy).ifPresent(this:: > setPropertyOrderStrategy); > > Added: openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/test/java/org/apache/meecrowave/ > OctetStreamMediaTypeTest.java > URL: http://svn.apache.org/viewvc/openwebbeans/meecrowave/ > branches/meecrowave-1.0.x/meecrowave-core/src/test/java/ > org/apache/meecrowave/OctetStreamMediaTypeTest.java?rev=1800577&view=auto > ============================================================ > ================== > --- openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/test/java/org/apache/meecrowave/OctetStreamMediaTypeTest.java > (added) > +++ openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/test/java/org/apache/meecrowave/OctetStreamMediaTypeTest.java > Sun Jul 2 20:48:04 2017 > @@ -0,0 +1,105 @@ > +/** > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * <p> > + * http://www.apache.org/licenses/LICENSE-2.0 > + * <p> > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > +package org.apache.meecrowave; > + > +import org.apache.tomcat.util.http.fileupload.util.Streams; > +import org.junit.Test; > + > +import javax.enterprise.context.ApplicationScoped; > +import javax.ws.rs.GET; > +import javax.ws.rs.Path; > +import javax.ws.rs.Produces; > +import javax.ws.rs.core.MediaType; > +import javax.ws.rs.core.Response; > +import javax.ws.rs.core.StreamingOutput; > +import java.io.IOException; > +import java.io.InputStream; > +import java.net.URL; > +import java.nio.charset.StandardCharsets; > + > +import static org.junit.Assert.assertEquals; > + > +public class OctetStreamMediaTypeTest { > + @Test > + public void fields() throws IOException { > + try (final Meecrowave meecrowave = new Meecrowave(new > Meecrowave.Builder() > + .randomHttpPort() > + > .includePackages(OctetStreamMediaTypeTest.class.getName())).bake()) > { > + try (final InputStream stream = new URL( > + "http://localhost:" + > meecrowave.getConfiguration().getHttpPort() > + "/OctetStreamMediaTypeTest/response").openStream()) { > + assertEquals("resp", Streams.asString(stream, "UTF-8")); > + } > + try (final InputStream stream = new URL( > + "http://localhost:" + > meecrowave.getConfiguration().getHttpPort() > + "/OctetStreamMediaTypeTest/responseBytes").openStream()) { > + assertEquals("resp", Streams.asString(stream, "UTF-8")); > + } > + try (final InputStream stream = new URL( > + "http://localhost:" + > meecrowave.getConfiguration().getHttpPort() > + "/OctetStreamMediaTypeTest/streaming").openStream()) { > + assertEquals("stream", Streams.asString(stream, "UTF-8")); > + } > + try (final InputStream stream = new URL( > + "http://localhost:" + > meecrowave.getConfiguration().getHttpPort() > + "/OctetStreamMediaTypeTest/string").openStream()) { > + assertEquals("string", Streams.asString(stream, "UTF-8")); > + } > + try (final InputStream stream = new URL( > + "http://localhost:" + > meecrowave.getConfiguration().getHttpPort() > + "/OctetStreamMediaTypeTest/bytes").openStream()) { > + assertEquals("bytes", Streams.asString(stream, "UTF-8")); > + } > + } > + } > + > + @Path("OctetStreamMediaTypeTest") > + @ApplicationScoped > + public static class App { > + @GET > + @Path("response") > + @Produces(MediaType.APPLICATION_OCTET_STREAM) > + public Response getResponse() { > + return Response.ok("resp").build(); > + } > + > + @GET > + @Path("responseBytes") > + @Produces(MediaType.APPLICATION_OCTET_STREAM) > + public Response getResponseBytes() { > + return Response.ok("resp".getBytes()).build(); > + } > + > + @GET > + @Path("streaming") > + @Produces(MediaType.APPLICATION_OCTET_STREAM) > + public StreamingOutput getStreamingOutput() { > + return output -> output.write("stream". > getBytes(StandardCharsets.UTF_8)); > + } > + > + @GET > + @Path("string") > + @Produces(MediaType.APPLICATION_OCTET_STREAM) > + public String getString() { > + return "string"; > + } > + > + @GET > + @Path("bytes") > + @Produces(MediaType.APPLICATION_OCTET_STREAM) > + public byte[] getBytes() { > + return "bytes".getBytes(StandardCharsets.UTF_8); > + } > + } > +} > > Propchange: openwebbeans/meecrowave/branches/meecrowave-1.0.x/ > meecrowave-core/src/test/java/org/apache/meecrowave/ > OctetStreamMediaTypeTest.java > ------------------------------------------------------------ > ------------------ > svn:eol-style = native > > >
