001    /*
002     * Copyright © 2008, 2009 Pedro Agulló Soliveres.
003     * 
004     * This file is part of DirectJNgine.
005     *
006     * DirectJNgine is free software: you can redistribute it and/or modify
007     * it under the terms of the GNU General Public License as published by
008     * the Free Software Foundation, either version 3 of the License.
009     *
010     * DirectJNgine is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
013     * GNU General Public License for more details.
014     *
015     * You should have received a copy of the GNU General Public License
016     * along with DirectJNgine.  If not, see <http://www.gnu.org/licenses/>.
017     * 
018     * This software uses the ExtJs library (http://extjs.com), which is 
019     * distributed under the GPL v3 license (see http://extjs.com/license).
020     */
021    
022    package com.softwarementors.extjs.djn.router;
023    
024    import java.io.IOException;
025    import java.io.Reader;
026    import java.io.Writer;
027    import java.util.List;
028    
029    import org.apache.commons.fileupload.FileItem;
030    import org.apache.commons.fileupload.FileUploadException;
031    import org.apache.log4j.Logger;
032    
033    import com.softwarementors.extjs.djn.config.Registry;
034    
035    public class RequestRouter {
036      static final Logger logger = Logger.getLogger( RequestRouter.class );
037      
038      boolean debugMode;
039      private Registry registry;
040      private Dispatcher dispatcher;
041      private PollRequestProcessor pollRequestProcessor;
042      private JsonRequestProcessor jsonRequestProcessor;
043      private UploadFormPostRequestProcessor uploadFormPostRequestProcessor;
044      private SimpleFormPostRequestProcessor simpleFormPostRequestProcessor;
045       
046      public RequestRouter( Registry registry, boolean debugMode ) {
047        assert registry != null;
048        
049        this.registry = registry;
050        this.debugMode = debugMode;
051        this.dispatcher = new Dispatcher();
052       
053        this.pollRequestProcessor = new PollRequestProcessor(this.registry, this.dispatcher, this.debugMode);
054        this.jsonRequestProcessor = new JsonRequestProcessor(this.registry, this.dispatcher, this.debugMode);
055        this.uploadFormPostRequestProcessor = new UploadFormPostRequestProcessor( this.registry, this.dispatcher, this.debugMode);
056        this.simpleFormPostRequestProcessor = new SimpleFormPostRequestProcessor( this.registry, this.dispatcher, this.debugMode);
057      }
058    
059      public void processSimpleFormPostRequest(Reader reader, Writer writer) throws IOException {
060        this.simpleFormPostRequestProcessor.process( reader, writer );
061      }
062    
063      public void processUploadFormPostRequest(List<FileItem> fileItems, Writer writer ) throws IOException {
064        this.uploadFormPostRequestProcessor.process( fileItems, writer );
065      }
066    
067      public void processJsonRequest(Reader reader, Writer writer) throws IOException {
068        this.jsonRequestProcessor.process(reader, writer);
069      }
070    
071      public void processPollRequest(Reader reader, Writer writer, String pathInfo) throws IOException {
072        this.pollRequestProcessor.process(reader, writer, pathInfo);
073      }
074    
075      public void handleFileUploadException(FileUploadException e) {
076        assert e != null;
077        
078        this.uploadFormPostRequestProcessor.handleFileUploadException(e);
079      }
080    
081    }