From: <jos...@us...> - 2009-08-12 15:19:12
|
Revision: 4889 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=4889&view=rev Author: josegar74 Date: 2009-08-12 15:19:04 +0000 (Wed, 12 Aug 2009) Log Message: ----------- GaapGetService class and config Modified Paths: -------------- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/webapp/WEB-INF/web.xml Added Paths: ----------- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/java/org/geonetwork/gaap/web/GaapGetService.java Added: sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/java/org/geonetwork/gaap/web/GaapGetService.java =================================================================== --- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/java/org/geonetwork/gaap/web/GaapGetService.java (rev 0) +++ sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/java/org/geonetwork/gaap/web/GaapGetService.java 2009-08-12 15:19:04 UTC (rev 4889) @@ -0,0 +1,174 @@ +package org.geonetwork.gaap.web; + +import org.geonetwork.gaap.web.util.RequestUtil; +import org.geonetwork.gaap.services.GroupService; +import org.geonetwork.gaap.services.UserService; +import org.geonetwork.gaap.services.exception.GaapServiceException; +import org.geonetwork.gaap.domain.user.User; +import org.geonetwork.gaap.domain.group.Group; +import org.geonetwork.gaap.domain.web.response.ResponseReport; +import org.geonetwork.gaap.domain.web.response.ResponseStatusCode; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; +import org.jibx.runtime.IBindingFactory; +import org.jibx.runtime.BindingDirectory; +import org.jibx.runtime.IMarshallingContext; +import org.jibx.runtime.JiBXException; + +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; +import javax.servlet.ServletContext; +import java.io.IOException; +import java.io.Writer; +import java.io.BufferedWriter; +import java.io.OutputStreamWriter; + +/** + * Gaap GET interface + * + * @author Jose + */ +public class GaapGetService extends HttpServlet { + private static final String REQUEST_PARAM = "request"; + private static final String UUID_PARAM = "uuid"; + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String requestedOperation = RequestUtil.getParameter(request, REQUEST_PARAM); + + if (requestedOperation.equalsIgnoreCase("deletegroup")) { + handleDeleteGroup(request, response); + } else if (requestedOperation.equalsIgnoreCase("deleteuser")) { + handleDeleteUser(request, response); + } else if (requestedOperation.equals("getuser")) { + handleGetUser(request, response); + } else if (requestedOperation.equals("getgroup")) { + handleGetGroup(request, response); + } else { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException("Request " + requestedOperation + " is not valid"); + outputResponse(er, response); + } + } + + private void handleDeleteGroup(HttpServletRequest request, HttpServletResponse response) throws ServletException { + String groupUuid = RequestUtil.getParameter(request, UUID_PARAM); + + ServletContext servletContext = this.getServletConfig().getServletContext(); + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + + GroupService groupService = (GroupService) waco.getBean("groupService"); + try { + groupService.deleteGroup(groupUuid); + + ResponseReport er = new ResponseReport(ResponseStatusCode.OK); + outputResponse(er, response); + + } catch (GaapServiceException e) { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException(e.getMessage()); + outputResponse(er, response); + } + } + + private void handleDeleteUser(HttpServletRequest request, HttpServletResponse response) throws ServletException { + String userUuid = RequestUtil.getParameter(request, UUID_PARAM); + + ServletContext servletContext = this.getServletConfig().getServletContext(); + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + + UserService userService = (UserService) waco.getBean("userService"); + try { + userService.deleteUser(userUuid); + + ResponseReport er = new ResponseReport(ResponseStatusCode.OK); + outputResponse(er, response); + + } catch (GaapServiceException e) { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException(e.getMessage()); + outputResponse(er, response); + } + } + + private void handleGetUser(HttpServletRequest request, HttpServletResponse response) throws ServletException { + String userUuid = RequestUtil.getParameter(request, UUID_PARAM); + + ServletContext servletContext = this.getServletConfig().getServletContext(); + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + + UserService userService = (UserService) waco.getBean("userService"); + try { + User user = userService.retrieveUser(userUuid); + + if (user != null) { + // set up JiBX marshalling context + IBindingFactory bfact = BindingDirectory.getFactory(User.class); + IMarshallingContext marshallingContext = bfact.createMarshallingContext(); + // marshal to servlet response outputstream + response.setContentType("application/xml"); + Writer writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); + marshallingContext.setIndent(3); + marshallingContext.setOutput(writer); + marshallingContext.marshalDocument(user, "UTF-8", null); + } else { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException("User " + userUuid + " is not valid"); + outputResponse(er, response); + } + } catch (Exception e) { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException(e.getMessage()); + outputResponse(er, response); + } + } + + private void handleGetGroup(HttpServletRequest request, HttpServletResponse response) throws ServletException { + String groupUuid = RequestUtil.getParameter(request, UUID_PARAM); + + ServletContext servletContext = this.getServletConfig().getServletContext(); + WebApplicationContext waco = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + + GroupService groupService = (GroupService) waco.getBean("groupService"); + try { + Group group = groupService.retrieveGroup(groupUuid); + + if (group != null) { + // set up JiBX marshalling context + IBindingFactory bfact = BindingDirectory.getFactory(Group.class); + IMarshallingContext marshallingContext = bfact.createMarshallingContext(); + // marshal to servlet response outputstream + response.setContentType("application/xml"); + Writer writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); + marshallingContext.setIndent(3); + marshallingContext.setOutput(writer); + marshallingContext.marshalDocument(group, "UTF-8", null); + } else { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException("Group " + groupUuid + " is not valid"); + outputResponse(er, response); + } + } catch (Exception e) { + ResponseReport er = new ResponseReport(ResponseStatusCode.ERROR); + er.addException(e.getMessage()); + outputResponse(er, response); + } + } + + private void outputResponse(ResponseReport er, HttpServletResponse response) throws ServletException { + try { + IBindingFactory bfact = BindingDirectory.getFactory(ResponseReport.class); + IMarshallingContext marshallingContext = bfact.createMarshallingContext(); + + // marshal to servlet response outputstream + response.setContentType("application/xml"); + Writer writer = new BufferedWriter(new OutputStreamWriter(response.getOutputStream())); + marshallingContext.setIndent(3); + marshallingContext.setOutput(writer); + marshallingContext.marshalDocument(er , "UTF-8", null); + } catch (Exception e) { + throw new ServletException(e); + } + } +} Modified: sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/webapp/WEB-INF/web.xml =================================================================== --- sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/webapp/WEB-INF/web.xml 2009-08-12 15:18:06 UTC (rev 4888) +++ sandbox/3.0.x/geonetwork-gaap/geonetwork-gaap-web/src/main/webapp/WEB-INF/web.xml 2009-08-12 15:19:04 UTC (rev 4889) @@ -1,7 +1,40 @@ <!DOCTYPE web-app PUBLIC - "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" - "http://java.sun.com/dtd/web-app_2_3.dtd" > + "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> - <display-name>Archetype Created Web Application</display-name> + <display-name>Gaap Web Application</display-name> + + <context-param> + <param-name>contextConfigLocation</param-name> + <param-value> + classpath:/applicationContext-gn-web-gaap.xml, + classpath:/applicationContext-gn-persistence-gaap.xml, + classpath:/applicationContext-gn-services-gaap.xml + </param-value> + </context-param> + + <filter> + <filter-name>OpenSessionInViewFilter</filter-name> + <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> + </filter> + <filter-mapping> + <filter-name>OpenSessionInViewFilter</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <listener> + <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> + </listener> + + + <servlet> + <servlet-name>GaapGETService</servlet-name> + <display-name>Gaap</display-name> + <servlet-class>org.geonetwork.gaap.web.GaapGetService</servlet-class> + </servlet> + <servlet-mapping> + <servlet-name>GaapGETService</servlet-name> + <url-pattern>/gaap</url-pattern> + </servlet-mapping> </web-app> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |