/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.rest.converters; import java.io.IOException; import org.geoserver.catalog.StyleHandler; import org.geoserver.catalog.Styles; import org.geotools.styling.Style; import org.geotools.styling.StyledLayerDescriptor; import org.geotools.util.Version; import org.springframework.http.HttpInputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageNotReadableException; import org.xml.sax.EntityResolver; /** * Read {@link Style} using provided mimeType and handler. */ public class StyleReaderConverter extends BaseMessageConverter<Style> { private final Version version; private final StyleHandler handler; private final EntityResolver entityResolver; public StyleReaderConverter(String mimeType, Version version, StyleHandler handler, EntityResolver entityResolver) { super(MediaType.valueOf(mimeType)); this.handler = handler; this.version = version; this.entityResolver = entityResolver; } @Override protected boolean supports(Class<?> clazz) { return Style.class.isAssignableFrom(clazz); } // // reading // @Override public Style readInternal(Class<? extends Style> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException { StyledLayerDescriptor sld = handler.parse(inputMessage.getBody(), version, null, entityResolver); return Styles.style(sld); } // // writing // @Override protected boolean canWrite(MediaType mediaType) { return false; } }