/******************************************************************************* * Copyright (c) 2012-2016 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.everrest.core.impl.provider.multipart; import org.everrest.core.impl.MultivaluedMapImpl; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import java.lang.reflect.Type; /** * @author andrew00x */ public class OutputItem { public static OutputItemBuilder anOutputItem() { return new OutputItemBuilder(); } private final String name; private final Object entity; private final Class<?> type; private final Type genericType; private final MediaType mediaType; private final String filename; private final MultivaluedMap<String, String> headers; public OutputItem(String name, Object entity, Class<?> type, Type genericType, MediaType mediaType, String filename) { this.name = name; this.entity = entity; this.type = type; this.genericType = genericType; this.mediaType = mediaType; this.filename = filename; headers = new MultivaluedMapImpl(); } public String getName() { return name; } public Object getEntity() { return entity; } public Class<?> getType() { return type; } public Type getGenericType() { return genericType; } public MediaType getMediaType() { return mediaType; } public String getFilename() { return filename; } public MultivaluedMap<String, String> getHeaders() { return headers; } public static class OutputItemBuilder { private String name; private Object entity; private Class<?> type; private Type genericType; private MediaType mediaType; private String filename; public OutputItemBuilder withName(String name) { this.name = name; return this; } public OutputItemBuilder withEntity(Object entity) { this.entity = entity; return this; } public OutputItemBuilder withMediaType(MediaType mediaType) { this.mediaType = mediaType; return this; } public OutputItemBuilder withFilename(String filename) { this.filename = filename; return this; } public OutputItemBuilder withType(Class<?> type) { this.type = type; return this; } public OutputItemBuilder withGenericType(Type genericType) { this.genericType = genericType; return this; } public OutputItem build() { return new OutputItem(name, entity, type == null ? entity.getClass() : type, genericType, mediaType, filename); } } }