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 Lesser General Public License as published by
008     * the Free Software Foundation, either version 3 of the License.
009     *
010     * Commercial use is permitted to the extent that the code/component(s)
011     * do NOT become part of another Open Source or Commercially developed
012     * licensed development library or toolkit without explicit permission.
013     *
014     * DirectJNgine is distributed in the hope that it will be useful,
015     * but WITHOUT ANY WARRANTY; without even the implied warranty of
016     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
017     * GNU Lesser General Public License for more details.
018     *
019     * You should have received a copy of the GNU Lesser General Public License
020     * along with DirectJNgine.  If not, see <http://www.gnu.org/licenses/>.
021     * 
022     * This software uses the ExtJs library (http://extjs.com), which is 
023     * distributed under the GPL v3 license (see http://extjs.com/license).
024     */
025    
026    package com.softwarementors.extjs.djn.router.processor.standard.json;
027    
028    import com.softwarementors.extjs.djn.router.processor.ResponseData;
029    
030    import edu.umd.cs.findbugs.annotations.NonNull;
031    
032    public class DefaultJsonRequestProcessorThread implements JsonRequestProcessorThread {
033    
034      @NonNull private JsonRequestProcessor processor;
035      @NonNull private JsonRequestData request;
036      private int requestNumber;
037      
038      public DefaultJsonRequestProcessorThread() {
039        // Do nothing
040      }
041    
042      public void initialize(JsonRequestProcessor processor, JsonRequestData request, int requestNumber) {
043        this.processor = processor;
044        this.request = request;
045        this.requestNumber = requestNumber;
046      }
047      
048      // @Override
049      public final ResponseData call() throws Exception {
050        /*
051        NDC.push( "thread=" + Thread.currentThread().getId() );
052        try {
053        */
054        /*
055          WebContextManager.attachWebContextToCurrentThread(this.webContext);
056          try {
057        */
058         return processRequest();
059        /*
060          }
061          finally {
062            WebContextManager.detachFromCurrentThread();
063          }
064        */
065        /*
066        }
067        finally {
068          NDC.pop();
069        }
070        */
071      }
072    
073      public ResponseData processRequest() {
074        return this.processor.processIndividualRequest( this.request, true, this.requestNumber  );
075      }
076    }