001 /** 002 * Implements the CFML Function UnserializeJava 003 */ 004 package railo.runtime.functions.dynamicEvaluation; 005 006 import java.io.ByteArrayInputStream; 007 import java.io.InputStream; 008 009 import railo.commons.io.IOUtil; 010 import railo.runtime.PageContext; 011 import railo.runtime.converter.JavaConverter; 012 import railo.runtime.exp.PageException; 013 import railo.runtime.ext.function.Function; 014 import railo.runtime.op.Caster; 015 import railo.runtime.op.Decision; 016 017 public final class EvaluateJava implements Function { 018 019 private static final long serialVersionUID = 2665025287805145492L; 020 021 public static Object call(PageContext pc , Object stringOrBinary) throws PageException { 022 // Binary 023 if(Decision.isBinary(stringOrBinary)){ 024 InputStream is=null; 025 try { 026 is=new ByteArrayInputStream(Caster.toBinary(stringOrBinary)); 027 return JavaConverter.deserialize(is); 028 } 029 catch (Exception e) { 030 throw Caster.toPageException(e); 031 } 032 finally { 033 IOUtil.closeEL(is); 034 } 035 } 036 037 // STring 038 try { 039 return JavaConverter.deserialize(Caster.toString(stringOrBinary)); 040 } catch (Exception e) { 041 throw Caster.toPageException(e); 042 } 043 } 044 }