001: /*
002: * JFolder, Copyright 2001-2006 Gary Steinmetz
003: *
004: * Distributable under LGPL license.
005: * See terms of license at gnu.org.
006: */
007:
008: package org.jfolder.console.web.base;
009:
010: //base classes
011: import java.io.IOException;
012: import java.io.InputStream;
013: import java.io.OutputStream;
014: import java.util.ArrayList;
015: import java.util.Enumeration;
016: import java.util.StringTokenizer;
017: import javax.servlet.ServletException;
018: import javax.servlet.http.HttpServlet;
019: import javax.servlet.http.HttpServletRequest;
020: import javax.servlet.http.HttpServletResponse; //import javax.xml.soap.MessageFactory;
021: //import javax.xml.soap.MimeHeaders;
022: //import javax.xml.soap.SOAPException;
023: //import javax.xml.soap.SOAPMessage;
024:
025: //project specific classes
026: import org.jfolder.common.UnexpectedSystemException;
027: import org.jfolder.common.tagging.RootConceptTagHolder;
028: import org.jfolder.common.utils.misc.MiscHelper;
029: import org.jfolder.dms.model.DocumentFileSystemRoot;
030: import org.jfolder.dms.model.DocumentFileSystemRootUpdates;
031: import org.jfolder.engines.call.GovernorCall;
032: import org.jfolder.engines.call.GovernorCallHelper;
033: import org.jfolder.services.dms.DMSService;
034: import org.jfolder.services.dms.DMSServiceCallerFactory;
035:
036: //other classes
037:
038: public class GovernorServiceServlet extends HttpServlet {
039:
040: public GovernorServiceServlet() {
041: }
042:
043: public void service(HttpServletRequest inRequest,
044: HttpServletResponse inResponse) throws IOException,
045: ServletException {
046: //
047: throw UnexpectedSystemException.notImplemented();
048: }
049: /*
050: public void service(HttpServletRequest inRequest,
051: HttpServletResponse inResponse) throws IOException, ServletException {
052:
053: try {
054:
055: //
056: MimeHeaders mh = new MimeHeaders();
057: Enumeration headerEnum = inRequest.getHeaderNames();
058: while (headerEnum.hasMoreElements()) {
059: String headerName = (String)headerEnum.nextElement();
060: String headerVal = inRequest.getHeader(headerName);
061: StringTokenizer st = new StringTokenizer(headerVal, ",");
062: while (st.hasMoreTokens()){
063: mh.addHeader(headerName, st.nextToken().trim());
064: }
065: }
066:
067: //
068: InputStream is = inRequest.getInputStream();
069: //SOAPFactory soapFactory = SOAPFactory.newInstance();
070: MessageFactory mf = MessageFactory.newInstance();
071: SOAPMessage gcRequests = mf.createMessage(mh, is);
072: is.close();
073:
074: //
075: ArrayList gsRequestList = GovernorCallHelper.extractGovernorCalls(
076: gcRequests);
077:
078: //
079: ArrayList gcResponseList = new ArrayList();
080: for (int i = 0; i < gsRequestList.size(); i++) {
081:
082: //
083: RootConceptTagHolder nextRequestRcth =
084: (RootConceptTagHolder)gsRequestList.get(i);
085: GovernorCall nextGcRequest =
086: (GovernorCall)nextRequestRcth.getFirstChildConceptTag();
087:
088: //
089: RootConceptTagHolder nextResponseRcth =
090: GovernorCallHelper.createGovernorResponse(nextGcRequest);
091: GovernorCall nextGcResponse =
092: (GovernorCall)nextResponseRcth.getFirstChildConceptTag();
093: processCall(nextGcRequest, nextGcResponse);
094: gcResponseList.add(nextResponseRcth);
095: }
096:
097: //
098: SOAPMessage gcResponses = GovernorCallHelper.prepareMessage(
099: gcResponseList);
100: //
101: inResponse.setHeader("Content-Type", "text/xml");
102: OutputStream os = inResponse.getOutputStream();
103: gcResponses.writeTo(os);
104: os.flush();
105: os.close();
106:
107: }
108: catch (RuntimeException re) {
109: MiscHelper.writeMessage(this, re);
110: throw re;
111: }
112: catch (SOAPException se) {
113: throw new UnexpectedSystemException(se);
114: }
115: }
116:
117: private final static void processCall(
118: GovernorCall inRequest, GovernorCall inResponse) {
119: //
120:
121: //
122: //MiscHelper.println(
123: // "RECEIVED::CALL-TYPE = " + inRequest.isCallRequest());
124: //MiscHelper.println(
125: // "RECEIVED::SERVICE-TYPE = "
126: // + inRequest.getServiceType());
127: //MiscHelper.println(
128: // "RECEIVED::CALL-NAME = " + inRequest.getCallName());
129:
130: String serviceType = inRequest.getServiceType();
131: String callName = inRequest.getCallName();
132:
133: if (inRequest == null || inResponse == null) {
134: throw UnexpectedSystemException.unknownState();
135: }
136: else if (serviceType.equals(DMSService.DMS_SERVICE)) {
137: if (callName.equals(DMSService.ACCESS_DOCUMENT_SYSTEM)) {
138: //
139: String section = inRequest.getArgumentAsLString(0);
140: String subSection = inRequest.getArgumentAsLString(1);
141: //
142: DMSService ds = DMSServiceCallerFactory.getDMSService();
143: //
144: DocumentFileSystemRoot dsr = ds.accessDocumentSystem(
145: inResponse.addPrepareArgumentAsSEntity(), 0,
146: section, subSection);
147: }
148: else if (callName.equals(DMSService.SAVE_DOCUMENT_SYSTEM)) {
149: //
150: DMSService ds = DMSServiceCallerFactory.getDMSService();
151: //
152: Object o = inRequest.getArgumentAsSEntity(0);
153: DocumentFileSystemRootUpdates dsru =
154: (DocumentFileSystemRootUpdates)o;
155: ds.saveDocumentSystem(dsru);
156: }
157: else {
158: throw UnexpectedSystemException.unknownState();
159: }
160: }
161: else {
162: throw UnexpectedSystemException.unknownState();
163: }
164: }
165: */
166: }
|