/** * Actual dispatch handling for servlet requests */ void executeRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException { if (LOG.isLoggable(Level.FINEST)) { LOG.finest("Handling restful request for " + servletRequest.getPathInfo()); } setCharacterEncodings(servletRequest, servletResponse); SecurityToken token = getSecurityToken(servletRequest); if (token == null) { sendSecurityError(servletResponse); return; } HttpUtil.setCORSheader(servletResponse, containerConfig.<String>getList(token.getContainer(), "gadgets.parentOrigins")); BeanConverter converter = getConverterForRequest(servletRequest); handleSingleRequest(servletRequest, servletResponse, token, converter); }
@Override protected void doPut(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException { try { ContentTypes.checkContentTypes(ALLOWED_CONTENT_TYPES, servletRequest.getContentType()); executeRequest(servletRequest, servletResponse); } catch (ContentTypes.InvalidContentTypeException icte) { sendError(servletResponse, new ResponseItem(HttpServletResponse.SC_BAD_REQUEST, icte.getMessage())); } }
public BeanConverter getConverterForRequest(@Nullable String contentType, String format) { if (StringUtils.isNotBlank(contentType)) { return getConverterForContentType(contentType); } else { return getConverterForFormat(format); } }
@Before public void abstractLargeRestfulBefore() throws Exception { injector = Guice.createInjector(new SocialApiTestsGuiceModule()); servlet = new DataServiceServlet(); HandlerRegistry dispatcher = injector.getInstance(HandlerRegistry.class); dispatcher.addHandlers(injector.getInstance(Key.get(new TypeLiteral<Set<Object>>(){}, Names.named("org.apache.shindig.handlers")))); servlet.setHandlerRegistry(dispatcher); ContainerConfig containerConfig = EasyMock.createMock(ContainerConfig.class); EasyMock.expect(containerConfig.<String>getList(null, "gadgets.parentOrigins")).andReturn(Collections.<String>singletonList("*")).anyTimes(); EasyMock.replay(containerConfig); servlet.setContainerConfig(containerConfig); servlet.setJSONPAllowed(true); servlet.setBeanConverters(new BeanJsonConverter(injector), new BeanXStreamConverter(new XStream081Configuration(injector)), new BeanXStreamAtomConverter(new XStream081Configuration(injector))); res = EasyMock.createMock(HttpServletResponse.class); NamespaceContext ns = new SimpleNamespaceContext(ImmutableMap.of("", "http://ns.opensocial.org/2008/opensocial")); XMLUnit.setXpathNamespaceContext(ns); xp = XMLUnit.newXpathEngine(); }
RestHandler handler = getRestHandler(servletRequest); BeanConverter requestConverter = getConverterForRequest(contentType, format); BeanConverter responseConverter = getConverterForFormat(format); Map<String, String[]> parameterMap = servletRequest.getParameterMap(); Future<?> future = handler.execute(parameterMap, bodyReader, token, requestConverter); ResponseItem responseItem = getResponseItem(future); if (callback != null) writer.write(");\n"); } else { sendError(servletResponse, responseItem);
private void verifyHandlerWasFoundForPathInfo(String pathInfo, String actualMethod, String overrideMethod) throws Exception { setupRequest(pathInfo, actualMethod, overrideMethod); String method = Strings.isNullOrEmpty(overrideMethod) ? actualMethod : overrideMethod; EasyMock.expect(jsonConverter.convertToString( ImmutableMap.of("entry", TestHandler.REST_RESULTS.get(method)))) .andReturn("{ 'entry' : " + TestHandler.REST_RESULTS.get(method) + " }"); PrintWriter writerMock = EasyMock.createMock(PrintWriter.class); EasyMock.expect(res.getWriter()).andReturn(writerMock); writerMock.write(TestHandler.GET_RESPONSE); EasyMock.expectLastCall(); res.setCharacterEncoding("UTF-8"); res.setContentType(ContentTypes.OUTPUT_JSON_CONTENT_TYPE); mockControl.replay(); servlet.service(req, res); mockControl.verify(); mockControl.reset(); }
RestHandler handler = getRestHandler(servletRequest); Future<?> future = handler.execute(parameterMap, bodyReader, token, converter); ResponseItem responseItem = getResponseItem(future); if (callback != null) writer.write(");\n"); } else { sendError(servletResponse, responseItem);
@Override protected void doDelete(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException { executeRequest(servletRequest, servletResponse); }
private void assertConverterForContentType(BeanConverter converter, String contentType) { EasyMock.expect(req.getContentType()).andReturn(contentType); EasyMock.replay(req); assertEquals(converter, servlet.getConverterForRequest(req)); EasyMock.verify(req); EasyMock.reset(req); } }
private void assertConverterForContentType(BeanConverter converter, String contentType) { assertEquals(converter, servlet.getConverterForContentType(contentType)); } }
private void assertConverterForFormat(BeanConverter converter, String format) { assertEquals(converter, servlet.getConverterForFormat(format)); }
@Before public void abstractLargeRestfulBefore() throws Exception { injector = Guice.createInjector(new SocialApiTestsGuiceModule()); servlet = new DataServiceServlet(); HandlerRegistry dispatcher = injector.getInstance(HandlerRegistry.class); dispatcher.addHandlers(injector.getInstance(Key.get(new TypeLiteral<Set<Object>>(){}, Names.named("org.apache.shindig.handlers")))); servlet.setHandlerRegistry(dispatcher); ContainerConfig containerConfig = EasyMock.createMock(ContainerConfig.class); EasyMock.expect(containerConfig.<String>getList(null, "gadgets.parentOrigins")).andReturn(Collections.<String>singletonList("*")).anyTimes(); EasyMock.replay(containerConfig); servlet.setContainerConfig(containerConfig); servlet.setJSONPAllowed(true); servlet.setBeanConverters(new BeanJsonConverter(injector), new BeanXStreamConverter(new XStream081Configuration(injector)), new BeanXStreamAtomConverter(new XStream081Configuration(injector))); res = EasyMock.createMock(HttpServletResponse.class); NamespaceContext ns = new SimpleNamespaceContext(ImmutableMap.of("", "http://ns.opensocial.org/2008/opensocial")); XMLUnit.setXpathNamespaceContext(ns); xp = XMLUnit.newXpathEngine(); }
RestHandler handler = getRestHandler(servletRequest); BeanConverter requestConverter = getConverterForRequest(contentType, format); BeanConverter responseConverter = getConverterForFormat(format); Map<String, String[]> parameterMap = servletRequest.getParameterMap(); Future<?> future = handler.execute(parameterMap, bodyReader, token, requestConverter); ResponseItem responseItem = getResponseItem(future); if (callback != null) writer.write(");\n"); } else { sendError(servletResponse, responseItem);
private void verifyHandlerWasFoundForPathInfo(String pathInfo, String actualMethod, String overrideMethod) throws Exception { setupRequest(pathInfo, actualMethod, overrideMethod); String method = StringUtils.isEmpty(overrideMethod) ? actualMethod : overrideMethod; EasyMock.expect(jsonConverter.convertToString( ImmutableMap.of("entry", TestHandler.REST_RESULTS.get(method)))) .andReturn("{ 'entry' : " + TestHandler.REST_RESULTS.get(method) + " }"); PrintWriter writerMock = EasyMock.createMock(PrintWriter.class); EasyMock.expect(res.getWriter()).andReturn(writerMock); writerMock.write(TestHandler.GET_RESPONSE); EasyMock.expectLastCall(); res.setCharacterEncoding("UTF-8"); res.setContentType(ContentTypes.OUTPUT_JSON_CONTENT_TYPE); mockControl.replay(); servlet.service(req, res); mockControl.verify(); mockControl.reset(); }
RestHandler handler = getRestHandler(servletRequest); Future<?> future = handler.execute(parameterMap, bodyReader, token, converter); ResponseItem responseItem = getResponseItem(future); if (callback != null) writer.write(");\n"); } else { sendError(servletResponse, responseItem);
@Override protected void doDelete(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException { executeRequest(servletRequest, servletResponse); }
private void assertConverter(BeanConverter converter, String format) { EasyMock.expect(req.getParameter(ApiServlet.FORMAT_PARAM)) .andReturn(format); EasyMock.replay(req); assertEquals(converter, servlet.getConverterForRequest(req)); EasyMock.verify(req); EasyMock.reset(req); }
private void assertConverterForContentType(BeanConverter converter, String contentType) { assertEquals(converter, servlet.getConverterForContentType(contentType)); } }
private void assertConverterForFormat(BeanConverter converter, String format) { assertEquals(converter, servlet.getConverterForFormat(format)); }
/** * Gets the data service servlet. * * @param injector the injector * * @return the data service servlet */ public static DataServiceServlet getDataServiceServlet(Injector injector) { // Set data service servlet again to use JPA guice dependencies DataServiceServlet servlet = new DataServiceServlet(); HandlerRegistry registry = injector.getInstance(HandlerRegistry.class); registry.addHandlers( ImmutableSet.<Object>of(ActivityHandler.class, AppDataHandler.class, PersonHandler.class, MessageHandler.class)); servlet.setHandlerRegistry(registry); servlet.setBeanConverters(new BeanJsonConverter(injector), new BeanXStreamConverter(new XStream081Configuration(injector)), new BeanXStreamAtomConverter(new XStream081Configuration(injector))); ContainerConfig containerConfig = EasyMock.createMock(ContainerConfig.class); EasyMock.expect(containerConfig.<String>getList(null, "gadgets.parentOrigins")).andReturn(Collections.<String>singletonList("*")).anyTimes(); EasyMock.replay(containerConfig); servlet.setContainerConfig(containerConfig); return servlet; }