001    package railo.runtime.util;
002    
003    import railo.runtime.exp.PageException;
004    import railo.runtime.net.amf.CFMLProxy;
005    import railo.runtime.op.Caster;
006    import flex.messaging.FlexContext;
007    import flex.messaging.MessageException;
008    import flex.messaging.config.ConfigMap;
009    import flex.messaging.messages.Message;
010    import flex.messaging.messages.RemotingMessage;
011    import flex.messaging.services.ServiceAdapter;
012    
013    public class BlazeDSImpl implements BlazeDS {
014            
015    
016            private ConfigMap properties;
017    
018    
019            public Object invoke(ServiceAdapter serviceAdapter, Message message){
020                    
021                    
022            //RemotingDestination remotingDestination = (RemotingDestination)serviceAdapter.getDestination();
023            RemotingMessage remotingMessage = (RemotingMessage)message;
024            //FactoryInstance factoryInstance = remotingDestination.getFactoryInstance();
025            /*
026            print.out("className:"+remotingMessage.getSource());
027            print.out("methodName:"+remotingMessage.getOperation());
028            print.out("params:");
029            print.out(remotingMessage.getParameters().toArray());
030             */      
031            try {
032                            Object rtn = new CFMLProxy().invokeBody(
033                                            null,properties, 
034                                            FlexContext.getServletContext(),
035                                            FlexContext.getServletConfig(), 
036                                            FlexContext.getHttpRequest(), 
037                                            FlexContext.getHttpResponse(), 
038                                            remotingMessage.getSource(), 
039                                            remotingMessage.getOperation(), 
040                                            remotingMessage.getParameters());
041                            
042                    return rtn;
043                    } 
044            catch (Exception e) {
045                    e.printStackTrace();// TODO
046                    String msg=e.getMessage();
047                    
048                    MessageException me = new MessageException(Caster.toClassName(e) + " : " + msg);
049                    me.setRootCause(e);
050                me.setCode("Server.Processing");
051                me.setRootCause(e);
052                
053                if(e instanceof PageException){
054                    PageException pe=(PageException) e;
055                    me.setDetails(pe.getDetail());
056                    me.setMessage(pe.getMessage());
057                    me.setCode(pe.getErrorCode());
058                }
059                
060                throw me;
061                    }
062        }
063    
064    
065            /**
066             * @see railo.runtime.util.BlazeDS#init(flex.messaging.config.ConfigMap)
067             */
068            public void init(ConfigMap properties) {
069                    this.properties=properties;
070            }
071    }