コード例 #1
0
        /**
         *  Factory
         *  @param mpp payment processor model
         *  @param mp payment model
         *  @return initialized PaymentProcessor or null
         */
        public static PaymentProcessor Create(MPaymentProcessor mpp, MPayment mp)
        {
            _log.Info("create for " + mpp);
            String className = mpp.GetPayProcessorClass();

            if (className == null || className.Length == 0)
            {
                _log.Log(Level.SEVERE, "No PaymentProcessor class name in " + mpp);
                return(null);
            }
            //
            PaymentProcessor myProcessor = null;

            try
            {
                //Class ppClass = Class.forName(className);
                //if (ppClass != null)
                //    myProcessor = (PaymentProcessor)ppClass.newInstance();

                Type ppClass = Type.GetType(className);
                if (ppClass != null)
                {
                    myProcessor = (PaymentProcessor)Activator.CreateInstance(ppClass);
                }
            }
            //catch (Error e1)    //  NoClassDefFound
            //{
            //    _log.Log(Level.SEVERE, className + " - Error=" + e1.Message);
            //    return null;
            //}
            catch (Exception e2)
            {
                _log.Log(Level.SEVERE, className, e2);
                return(null);
            }
            if (myProcessor == null)
            {
                _log.Log(Level.SEVERE, "no class");
                return(null);
            }

            //  Initialize
            myProcessor._mpp = mpp;
            myProcessor._mp  = mp;
            //
            return(myProcessor);
        }