Author: rombert Date: Wed Oct 7 19:38:44 2015 New Revision: 1707367 URL: http://svn.apache.org/viewvc?rev=1707367&view=rev Log: SLING-2721 - Integration test for JAXB marhsalling
Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/JaxbMarshallingTest.java sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/JaxbServlet.java Added: sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/JaxbMarshallingTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/JaxbMarshallingTest.java?rev=1707367&view=auto ============================================================================== --- sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/JaxbMarshallingTest.java (added) +++ sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/jaxb/JaxbMarshallingTest.java Wed Oct 7 19:38:44 2015 @@ -0,0 +1,39 @@ +/* + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.sling.launchpad.webapp.integrationtest.jaxb; + +import java.io.IOException; + +import org.apache.sling.commons.testing.integration.HttpTestBase; + +/** + * The <tt>JaxbMarshallingTest</tt> verifies that a simple JAXB entity can be marshalled by a Sling servlet + * + */ +public class JaxbMarshallingTest extends HttpTestBase { + + + public void testJaxbEntityIsMarshalled() throws IOException { + + String content = getContent(HTTP_BASE_URL + "/bin/jaxb.xml", CONTENT_TYPE_XML); + + assertTrue("Response did not start with an XML declaration:\n" + content, content.startsWith("<?xml")); + } + +} Added: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/JaxbServlet.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/JaxbServlet.java?rev=1707367&view=auto ============================================================================== --- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/JaxbServlet.java (added) +++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/servlets/JaxbServlet.java Wed Oct 7 19:38:44 2015 @@ -0,0 +1,75 @@ +/* + * 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 + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.sling.launchpad.testservices.servlets; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlValue; + +import org.apache.felix.scr.annotations.sling.SlingServlet; +import org.apache.sling.api.SlingHttpServletRequest; +import org.apache.sling.api.SlingHttpServletResponse; +import org.apache.sling.api.servlets.SlingAllMethodsServlet; + +/** + * The <tt>JaxbServlet</tt> serializes a basic JAXB-annotated class + * + */ +@SlingServlet(paths = "/bin/jaxb", extensions = "xml") +public class JaxbServlet extends SlingAllMethodsServlet { + + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) + throws ServletException, IOException { + + Entity entity = new Entity(); + entity.setName("entity-name"); + + try { + JAXBContext context = JAXBContext.newInstance(Entity.class); + + response.setHeader("Content-Type", "application/xml"); + context.createMarshaller().marshal(entity, response.getOutputStream()); + + } catch (JAXBException e) { + throw new ServletException(e); + } + } + + @XmlRootElement + public static class Entity { + + private String name; + + public void setName(String name) { + this.name = name; + } + + @XmlValue + public String getName() { + return name; + } + } +}