All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.primefaces.push.PrimeAtmosphereHandler Maven / Gradle / Ivy

Go to download

PrimeFaces is one of the most popular UI libraries in Java EE Ecosystem and widely used by software companies, world renowned brands, banks, financial institutions, insurance companies, universities and more.

There is a newer version: 14.0.0-RC3
Show newest version
/**
 * Copyright 2009-2018 PrimeTek.
 *
 * Licensed 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.primefaces.push;

import org.atmosphere.cpr.AtmosphereRequest;
import org.atmosphere.cpr.AtmosphereResource;
import org.atmosphere.handler.AbstractReflectorAtmosphereHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.List;

/**
 * Simple {@link org.atmosphere.cpr.AtmosphereHandler} who delegate HTTP METHOD GET to {@link PushRule}. See the
 * {@link DefaultPushRule}
 * 
* If your application needs to support POST for whatever reason, extends the {@link #onRequest(org.atmosphere.cpr.AtmosphereResource)} * method and add your logic there. * This AtmosphereHandler doesn't invoke the {@link org.atmosphere.cpr.AtmosphereResource#suspend()}. * The {@link org.atmosphere.interceptor.AtmosphereResourceLifecycleInterceptor} is taking care of it * * @deprecated */ public class PrimeAtmosphereHandler extends AbstractReflectorAtmosphereHandler { private final Logger logger = LoggerFactory.getLogger(PrimeAtmosphereHandler.class); private final List rules; public PrimeAtmosphereHandler(List rules) { this.rules = rules; } //@Override public void onRequest(AtmosphereResource resource) throws IOException { AtmosphereRequest r = resource.getRequest(); // We only handle GET. POST are supported by PrimeFaces directly via the Broadcaster. if (r.getMethod().equalsIgnoreCase("GET")) { applyRules(resource); } else { StringBuilder stringBuilder = read(resource); resource.getAtmosphereConfig().metaBroadcaster().broadcastTo("/*", stringBuilder.toString()); } } protected void applyRules(AtmosphereResource resource) { boolean ok; for (PushRule r : rules) { ok = r.apply(resource); if (!ok) { return; } } } public StringBuilder read(AtmosphereResource r) { StringBuilder stringBuilder = new StringBuilder(); BufferedReader bufferedReader = null; try { try { InputStream inputStream = r.getRequest().getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); } } catch (IllegalStateException ex) { logger.trace("", ex); Reader reader = r.getRequest().getReader(); if (reader != null) { bufferedReader = new BufferedReader(reader); } } if (bufferedReader != null) { char[] charBuffer = new char[8192]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { stringBuilder.append(charBuffer, 0, bytesRead); } } else { stringBuilder.append(""); } } catch (IOException ex) { logger.warn("", ex); } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException ex) { logger.warn("", ex); } } } return stringBuilder; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy