/******************************************************************************* * 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.integration; import org.everrest.core.impl.BaseTest; import org.everrest.core.impl.ContainerResponse; import org.everrest.core.impl.provider.TemplatesParser; import org.everrest.core.impl.provider.XSLTStreamingOutput; import org.everrest.core.impl.provider.XSLTTemplatesContextResolver; import org.everrest.core.tools.ByteArrayContainerResponseWriter; import org.junit.Before; import org.junit.Test; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Application; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Providers; import javax.xml.transform.stream.StreamSource; import java.util.Set; import static com.google.common.collect.Sets.newHashSet; import static javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE; import static javax.ws.rs.core.MediaType.TEXT_HTML_TYPE; import static org.junit.Assert.assertEquals; /** * @author andrew00x */ public class XSLTTransformationTest extends BaseTest { @Path("a") public static class Resource1 { @Context private Providers providers; @GET public Response m0() { ContextResolver<XSLTTemplatesContextResolver> resolverWrapper = providers.getContextResolver(XSLTTemplatesContextResolver.class, APPLICATION_XML_TYPE); XSLTTemplatesContextResolver resolver = resolverWrapper.getContext(null); return Response.ok() .type(TEXT_HTML_TYPE) .entity(new XSLTStreamingOutput(loadSource("book-in.xml"), resolver.getTemplates("template1"))) .build(); } } @Override @Before public void setUp() throws Exception { super.setUp(); XSLTTemplatesContextResolver resolver = new XSLTTemplatesContextResolver(new TemplatesParser()); resolver.addAsTemplate("template1", loadSource("xslt/book.xsl")); processor.addApplication(new Application() { @Override public Set<Object> getSingletons() { return newHashSet(resolver); } @Override public Set<Class<?>> getClasses() { return newHashSet(Resource1.class); } }); } @Test public void transformsXmlToHtml() throws Exception { ByteArrayContainerResponseWriter writer = new ByteArrayContainerResponseWriter(); ContainerResponse response = launcher.service("GET", "/a", "", null, null, writer, null); assertEquals(200, response.getStatus()); assertEquals(TEXT_HTML_TYPE, response.getContentType()); } private static StreamSource loadSource(String resource) { return new StreamSource(Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)); } }