Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You 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.
  */
 package org.apache.tomcat.bayeux;
 
 import static org.jboss.web.CoyoteMessages.MESSAGES;
 
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
 
Common functionality and member variables for all Bayeux requests.

Author(s):
Guy A. Molinari
Filip Hanik
Version:
0.9
 
 public abstract class RequestBase implements BayeuxRequest {
     
     protected static final SimpleDateFormat timestampFmt =
         new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
     static {
         .setTimeZone(TimeZone.getTimeZone("GMT"));
     }
     //message properties, combined for all messages
     protected TomcatBayeux tomcatBayeux;
     protected String channel;
     protected String id;
     protected String clientId;
     protected String version = null;
     protected String[] suppConnTypes = null;
     protected int suppConnTypesFlag = 0;
     protected int desiredConnTypeFlag = 0;
     protected String minVersion = null;
     protected String subscription = null;
     protected String data = null;
     protected String conType = null;
     protected LinkedHashMap<StringObjectext = new LinkedHashMap<StringObject> ();
 
     
     protected HttpEvent event;
     
     protected HashMap<StringObjectresponse = null;
     
     protected int reconnectInterval = 1000;
     
     protected RequestBase(TomcatBayeux tbHttpEvent eventJSONObject jsReqthrows JSONException {
         this. = tb;
         this. = event;
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = jsReq.optString(.);
          = tb.getReconnectInterval();
         if (jsReq.has(.)) {
             JSONObject jext = jsReq.getJSONObject(.);
             for (Iterator<Stringi = jext.keys(); i.hasNext(); ) {
                 String key = i.next();
                 .put(keyjext.get(key));
             }//for
         }//end if
        
        if (jsReq.has(.)) {
            JSONArray types = jsReq.getJSONArray(.);
             = new String[types.length()];
            for (int i = 0; i < types.length(); i++) {
                [i] = types.getString(i);
                if (..equals([i]))
                     = |.;
                else if (..equals([i]))
                     = |.;
            }//for
        }//end if
        if (!=null) {
            if (..equals())
                 = .;
            else if (..equals())
                 = .;
        }//end if
        
        //due to the fact that the javascript doesn't send up a required field
        //we have to fake it
    }
    public HttpError validate() {
        HttpError result = null;
//        if (clientId == null) {
//            result = new HttpError(401,"No Client ID.", null);
//        }
        return result;
    }
    public TomcatBayeux getTomcatBayeux() {
        return ;
    }
    public String getChannel() {
        return ;
    }
    public String getId() {
        return ;
    }
    public String getClientId() {
        return ;
    }
    public LinkedHashMap getExt() {
        return ;
    }
    public HttpEvent getEvent() {
        return ;
    }
    
    protected static void deliver(HttpEvent eventClientImpl tothrows IOExceptionServletExceptionBayeuxException {
        JSONArray jarray = getJSONArray(event,true);
        if ( jarray == null ) throw new BayeuxException(.noBayeuxMessage());
        String jsonstring = jarray.toString();
        if (..isTraceEnabled()) {
            ..trace("["+Thread.currentThread().getName()+"] Delivering message to[" + to + "] message:" + jsonstring);
        }
        if (to!=null) {
            if (to.useJsonFiltered()) {
                if (!event.getHttpServletResponse().isCommitted()) event.getHttpServletResponse().setContentType("text/json-comment-filtered");
            }else {	
                if (!event.getHttpServletResponse().isCommitted()) event.getHttpServletResponse().setContentType("text/json");
            }
        }
        PrintWriter out = event.getHttpServletResponse().getWriter();
        if (to==null) {
            //do nothing
        }else if ( (to.getDesirectConnType() == 0 && to.supportsLongPoll()) || to.getDesirectConnType() == .) {
            if (to.useJsonFiltered())
                out.print("/*");
        } else if ( (to.getDesirectConnType() == 0 && to.supportsCallbackPoll()) || to.getDesirectConnType() == .) {
            String jsonp = event.getHttpServletRequest().getParameter(.);
            if (jsonp == null)
                jsonp = .;
            out.print(RequestUtil.filter(jsonp));
            out.print('(');
        } else {
            throw new BayeuxException(.noBayeuxConnectionType());
        }
        out.print(jsonstring);
        if ( to == null ) {
            //do nothing
        } else if ( (to.getDesirectConnType() == 0 && to.supportsLongPoll()) || to.getDesirectConnType() == .) {
            if (to.useJsonFiltered())
                out.print("*/");
        } else if ( (to.getDesirectConnType() == 0 && to.supportsCallbackPoll()) || to.getDesirectConnType() == .) {
            out.print(");");
        } 
        out.flush();
    }
    protected static JSONArray getJSONArray(HttpEvent eventboolean nullok) {
        synchronized(event) {
            JSONArray jarray = (JSONArrayevent.getHttpServletRequest().getAttribute();
            if (jarray == null && (!nullok)) {
                jarray = new JSONArray();
                event.getHttpServletRequest().setAttribute(jarray);
            }
            return jarray;
        }
    }
    protected JSONArray getJSONArray() {
        return getJSONArray(,false);
    }
    protected void addToDeliveryQueue(ClientImpl toJSONObject msgthrows IOExceptionServletExceptionBayeuxException {
        synchronized () {
            getJSONArray().put(msg);
        }
    }
    
    protected void flushMessages(ClientImpl clientthrows BayeuxException {
        List<Messagemsgs = client.takeMessages();
        synchronized () {
            try {
                for (Iterator<Messageit = msgs.iterator(); it.hasNext(); ){
                    MessageImpl msg = (MessageImpl)it.next();
                    Map map = new HashMap();
                    map.put(.,msg.getChannel().getId());
                    if (msg.getClient()!=nullmap.put(.,msg.getClient().getId());
                    map.put(.,msg);
                    JSONObject obj = new JSONObject(map);
                    addToDeliveryQueue(clientobj);
                }
            } catch (ServletException x) {
                throw new BayeuxException(x);
            } catch (IOException x) {
                throw new BayeuxException(x);
            }
        }
    }
    
    public int process(int prevopsthrows BayeuxException {
        return prevops;
    }
    
    public int getReconnectInterval() {
        return ;
    }
    public String getTimeStamp() {
        return .format(new Date(System.currentTimeMillis()));
    }
New to GrepCode? Check out our FAQ X