package org.restdoc.server.impl; /* * #%L Java Server implementation %% Copyright (C) 2012 RestDoc org %% Licensed 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. #L% */ import java.io.IOException; import java.net.URLDecoder; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.restdoc.api.GlobalHeader; import org.restdoc.server.ext.oauth2.OAuth2Extension; /** * */ public class MyRestFilter implements Filter { private RestDocGenerator generator; /** * @param args */ public static void main(final String[] args) { try { final MyRestFilter filter = new MyRestFilter(); filter.init(null); final String doc = filter.generator.getRestDocStringForPath("/"); System.out.println(doc); final String doc2 = filter.generator.getRestDocStringForPath("/v1/api/{id}"); System.out.println(doc2); } catch (final Exception e) { e.printStackTrace(); } } @Override public void init(final FilterConfig filterConfig) throws ServletException { this.generator = new RestDocGenerator(); final OAuth2Extension oauth = new OAuth2Extension("tokenURL", "authURL", "code", "password"); oauth.setClientaccess("tweet me!"); // Enable to test RestDoc extensibility this.generator.registerGeneratorExtension(new MyExt()); this.generator.registerGeneratorExtension(oauth); final Class<?>[] classes = new Class[] {MyRSBean.class, MyCrudBean.class, MyResourceBean.class}; final GlobalHeader globalHeader = new GlobalHeader(); globalHeader.request("X-Auth", "The Auth Key. See http://www.foo.bar/auth", false); this.generator.init(classes, globalHeader, "/v1"); } @Override public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { if (request instanceof HttpServletRequest) { final HttpServletRequest httpRequest = (HttpServletRequest) request; if (httpRequest.getMethod().equals("OPTIONS")) { final String requestURI = httpRequest.getRequestURI(); final String docString = this.generator.getRestDocStringForPath(URLDecoder.decode(requestURI, "UTF-8")); response.getWriter().write(docString); } else { chain.doFilter(request, response); } } else { chain.doFilter(request, response); } } @Override public void destroy() { // Auto-generated method stub } }