openamf/src/java/org/openamf/util OpenAMFUtils.java,NONE,1.1

[email protected]
Newsgroups gmane.comp.java.openamf.cvs
Message-ID <[email protected]>
Update of /cvsroot/openamf/openamf/src/java/org/openamf/util
In directory sc8-pr-cvs1:/tmp/cvs-serv3226/src/java/org/openamf/util

Added Files:
	OpenAMFUtils.java 
Log Message:
moved some code to a new OpenAMFUtils class

--- NEW FILE: OpenAMFUtils.java ---
package org.openamf.util;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openamf.ASObject;

import com.carbonfive.flash.decoder.ActionScriptDecoder;
import com.carbonfive.flash.decoder.DecoderFactory;

public class OpenAMFUtils {

	private static final Log log = LogFactory.getLog(OpenAMFUtils.class);

	public static Object decodeParameter(Object parameter, Class parameterType) {

		if (parameter == null) {
			try {
				return parameterType.newInstance();
			} catch (Exception e) {
				log.error(e);
			}
		}

		if (parameterType.equals(java.sql.Date.class)
			&& parameter instanceof java.util.Date) {
				
			java.util.Date date = (java.util.Date) parameter;
			java.sql.Date sqlDate = new java.sql.Date(date.getTime());
			return sqlDate;
		}

		boolean setType = false;

		DecoderFactory decoderFactory = DecoderFactory.getInstance();

		if (parameter instanceof ASObject
			&& ((ASObject) parameter).getType() == null) {

			setType = true;
			((ASObject) parameter).setType(parameterType.getName());
		}

		ActionScriptDecoder decoder =
			decoderFactory.getDecoder(parameter, parameterType);
		Object decodedObject = decoder.decodeObject(parameter, parameterType);

		if (!setType
			&& decodedObject == null
			&& parameter instanceof ASObject) {
			((ASObject) parameter).setType(parameterType.getName());
			decodedObject = decoder.decodeObject(parameter, parameterType);
		}
		return decodedObject;
	}


	public static boolean typesMatch(Class parameterType, Object parameter) {

		//log.debug("expected class: " + parameterType.getName());
		//log.debug("parameter class: " + parameter.getClass().getName());

		boolean typesMatch = parameterType.isInstance(parameter);

		if (!typesMatch) {
			if (parameterType.equals(Boolean.TYPE)
				&& parameter instanceof Boolean) {
				typesMatch = true;
			} else if (
				parameterType.equals(Byte.TYPE) && parameter instanceof Byte) {
				typesMatch = true;
			} else if (
				parameterType.equals(Short.TYPE)
					&& parameter instanceof Short) {
				typesMatch = true;
			} else if (
				parameterType.equals(Integer.TYPE)
					&& parameter instanceof Integer) {
				typesMatch = true;
			} else if (
				parameterType.equals(Long.TYPE) && parameter instanceof Long) {
				typesMatch = true;
			} else if (
				parameterType.equals(Float.TYPE)
					&& parameter instanceof Float) {
				typesMatch = true;
			} else if (
				parameterType.equals(Double.TYPE)
					&& parameter instanceof Double) {
				typesMatch = true;
			}
		}

		return typesMatch;
	}

}




-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100006ave/direct;at.asp_061203_01/01
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.