1 /***
2 * Copyright (C) 2009 TM-Search Community.
3 *
4 * This file is part of TM-Search Services.
5 *
6 * Foobar is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * Foobar is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 package eu.europa.tmsearch.services.resources.BodyWriters;
21
22 import java.io.IOException;
23 import java.io.OutputStream;
24 import java.lang.annotation.Annotation;
25 import java.lang.reflect.Type;
26
27 import javax.ws.rs.Produces;
28 import javax.ws.rs.WebApplicationException;
29 import javax.ws.rs.core.MediaType;
30 import javax.ws.rs.core.MultivaluedMap;
31 import javax.ws.rs.ext.MessageBodyWriter;
32 import javax.ws.rs.ext.Provider;
33
34 import eu.europa.tmsearch.services.model.TradeMarkImage;
35
36 @Provider
37 @Produces("image/jpg")
38 public class TradeMarkImageBodyWriterImpl implements MessageBodyWriter<TradeMarkImage> {
39
40 public long getSize(TradeMarkImage tradeMarkImage, Class<?> type, Type genericType,
41 Annotation annotations[], MediaType mediaType) {
42 return tradeMarkImage.getImageData().length;
43 }
44
45 public boolean isWriteable(Class<?> type, Type genericType, Annotation annotations[], MediaType mediaType) {
46 return (TradeMarkImage.class.isAssignableFrom(type));
47 }
48
49 public void writeTo(TradeMarkImage image, Class<?> arg1, Type arg2, Annotation[] arg3, MediaType arg4,
50 MultivaluedMap<String, Object> arg5, OutputStream outputStream) throws IOException,
51 WebApplicationException {
52 TradeMarkImage tradeMarkImage = (TradeMarkImage) image;
53 outputStream.write(tradeMarkImage.getImageData());
54 }
55
56 }