Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright (c) xsocket.org, 2006 - 2008. All rights reserved.
   *
   *  This library is free software; you can redistribute it and/or
   *  modify it under the terms of the GNU Lesser General Public
   *  License as published by the Free Software Foundation; either
   *  version 2.1 of the License, or (at your option) any later version.
   *
   *  This library is distributed in the hope that it will be useful,
  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  *  Lesser General Public License for more details.
  *
  *  You should have received a copy of the GNU Lesser General Public
  *  License along with this library; if not, write to the Free Software
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  * Please refer to the LGPL license at: http://www.gnu.org/copyleft/lesser.txt
  * The latest copy of this software may be found on http://www.xsocket.org/
  */
 package org.xsocket.connection.multiplexed;
 
 import java.util.Map;
 
 
utility class

Author(s):
grro@xsocket.org
 
 final class MultiplexedUtils {
 	
 	private static final Logger LOG = Logger.getLogger(MultiplexedUtils.class.getName());
 	
 
 	@SuppressWarnings("unchecked")
 	private static final Map<ClassHandlerInfohandlerInfoCache = ConnectionUtils.newMapCache(25);
 
 
 	private static String implementationVersion = null;
 	private static String implementationDate = null;
 	
 
 	
 	private MultiplexedUtils() { }




Deprecated:
use getImplementationVersion() instead
 
 	public static String getVersionInfo() {
 	}


get the implementation version

Returns:
the implementation version
 
 	public static String getImplementationVersion() {
 		
 		if ( == null) {
 		}
 		
 	}


get the implementation date

Returns:
the implementation date
	public static String getImplementationDate() {
		if (== null) {
		}
	}
	private static void readVersionFile() {
		 = "<unknown>";
		 = "<unknown>";
		InputStreamReader isr = null;
		LineNumberReader lnr = null;
		try {
			isr = new InputStreamReader(ConnectionUtils.class.getResourceAsStream("/org/xsocket/connection/multiplexed/version.txt"));
			if (isr != null) {
				lnr = new LineNumberReader(isr);
				String line = null;
				do {
					line = lnr.readLine();
					if (line != null) {
						if (line.startsWith("Implementation-Version=")) {
							 = line.substring("Implementation-Version=".length(), line.length()).trim();
else if (line.startsWith("Implementation-Date=")) {
							 = line.substring("Implementation-Date=".length(), line.length()).trim();
						}
					}
while (line != null);
				lnr.close();
			}
catch (IOException ioe) { 
				.fine("Error occured by reading version file " + ioe.toString());
			}
finally {
			try {
				if (lnr != null) {
					lnr.close();
				}
				if (isr != null) {
					isr.close();
				}
catch (IOException ioe) {
					.fine("exception occured by closing version.txt file stream " + ioe.toString());
				}
			}
	}
	static void injectServerField(IServer serverObject handler) {
		Field[] fields = handler.getClass().getDeclaredFields();
		for (Field field : fields) {
			if (field.isAnnotationPresent(Resource.class)) {
				Resource res = field.getAnnotation(Resource.class);
				if ((field.getType() == IServer.class) || (res.type() == IServer.class)) {
					field.setAccessible(true);
					try {
						field.set(handlerserver);
catch (IllegalAccessException iae) {
						.warning("could not inject server for attribute " + field.getName() + ". Reason " + iae.toString());
					}
				}
			}
		}
	}
	static ObjectName exportMbean(MBeanServer mbeanServerObjectName objectnameObject handler) {
		try {
			String namespace = objectname.getDomain();
			objectname = new ObjectName(namespace + ":type=HttpRequestHandler, name=" + handler.getClass().getSimpleName());
			mbeanServer.registerMBean(new IntrospectionBasedDynamicMBean(handler), objectname);
catch (JMException mbe) {
				.fine("error could not register handlers mbean. reason: " + mbe.toString());
			}
		}
		return objectname;
	}
	static HandlerInfo getHandlerInfo(IHandler handler) {
		HandlerInfo handlerInfo = .get(handler.getClass());
		if (handlerInfo == null) {
			handlerInfo = new  HandlerInfo(handler);
			.put(handler.getClass(), handlerInfo);
		}
		return handlerInfo;
	}
	private static boolean isHandlerMultithreaded(IHandler handler) {
		Execution execution = handler.getClass().getAnnotation(Execution.class);
		if (execution != null) {
			if(execution.value() == .) {
				return false;
else {
				return true;
			}
else {
			return true;
		}
	}
	@SuppressWarnings("unchecked")
	private static boolean isThreaded(Class clazzString methodnameboolean dfltClass... paramClass) {
		try {
			Method meth = clazz.getMethod(methodnameparamClass);
			Execution execution = meth.getAnnotation(Execution.class);
			if (execution != null) {
				if(execution.value() == .) {
					return false;
else {
					return true;
				}
else {
				return dflt;
			}
catch (NoSuchMethodException nsme) {
			return dflt;
		}
	}
	static final class HandlerInfo {
		private boolean isConnectHandler = false
		private boolean isPipelineConnectHandler = false;
		private boolean isConnectHandlerMultithreaded = false;
		private boolean isDataHandler = false;
		private boolean isPipelineDataHandler = false;
		private boolean isDataHandlerMultithreaded = false;
		private boolean isDisconnectHandler = false;
		private boolean isPipelineDisconnectHandler = false;
		private boolean isDisconnectHandlerMultithreaded = false;
		private boolean isIdleTimeoutHandler = false;
		private boolean isPipelineIdleTimeoutHandler = false;
		private boolean isIdleTimeoutHandlerMultithreaded = false;
		private boolean isConnectionTimeoutHandler = false;
		private boolean isPipelineConnectionTimeoutHandler = false;
		private boolean isConnectionTimeoutHandlerMultithreaded = false;
		private boolean isLifeCycle = false;
		private boolean isConnectionScoped = false;
		private boolean isHandlerMultithreaded = false;
		private boolean isNonThreaded = false;
		HandlerInfo(IHandler handler) {
			 = (handler instanceof IConnectHandler);
			 = (handler instanceof IDataHandler);
			 = (handler instanceof IDisconnectHandler);
			 = (handler instanceof IIdleTimeoutHandler);
			 = (handler instanceof ILifeCycle);
			 = (handler instanceof IConnectionScoped);
			 = MultiplexedUtils.isHandlerMultithreaded(handler);
			}
			if (handler instanceof IConnectHandler) {
			}
			if (handler instanceof IDataHandler) {
				 = true;
			}
			if (handler instanceof IDisconnectHandler) {
			}
			if (handler instanceof IIdleTimeoutHandler) {
			}
			if (handler instanceof IConnectionTimeoutHandler) {
			}
			if (handler instanceof IPipelineConnectHandler) {
			}
			if (handler instanceof IPipelineDisconnectHandler) {
			}
			if (handler instanceof IPipelineDataHandler) {
				 = true;
			}
			if (handler instanceof IPipelineIdleTimeoutHandler) {
			}
			if (handler instanceof IPipelineConnectionTimeoutHandler) {
			}
			 = (handler instanceof IConnectionScoped);				
			 = (handler instanceof ILifeCycle);
			                ! && ! &&
		}
		public boolean isPipelineConnectHandler() {
		}
		public boolean isConnectHandler() {
		}
		public boolean isDataHandler() {
		}
		public boolean isPipelineDataHandler() {
		}
		public boolean isDisconnectHandler() {
		}
		public boolean isPipelineDisconnectHandler() {
		}
		public boolean isIdleTimeoutHandler() {
		}
		public boolean isPipelineIdleTimeoutHandler() {
		}
		public boolean isConnectionTimeoutHandler() {
		}
		}
		public boolean isLifeCycle() {
			return 
		}
		public boolean isConnectionScoped() {
		}
		public boolean isNonthreaded() {
		}
		public boolean isHandlerMultithreaded() {
		}
		public boolean isConnectHandlerMultithreaded() {
		}
		public boolean isDataHandlerMultithreaded() {
		}
		}
		}
		}
	}
New to GrepCode? Check out our FAQ X