コード例 #1
0
 public virtual void PersistenceUnitItemScanned(Net.Vpc.Upa.ScanEvent @event)
 {
     if (listener != null)
     {
         listener.PersistenceUnitItemScanned(@event);
     }
     Net.Vpc.Upa.PersistenceUnit persistenceUnit = @event.GetPersistenceUnit();
     System.Type contract = @event.GetContract();
     System.Type type     = @event.GetVisitedType();
     if (Net.Vpc.Upa.Impl.Config.URLAnnotationStrategySupport.IsPersistenceUnitItemDefinitionListener(contract))
     {
         object i = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <System.Type, object>(instances, type);
         if (i == null)
         {
             i = persistenceUnit.GetFactory().CreateObject <object>(type);
             instances[type] = i;
         }
         Net.Vpc.Upa.Config.Decoration at = (Net.Vpc.Upa.Config.Decoration)@event.GetUserObject();
         string _filter             = at.GetString("filter");
         bool   _trackSystemObjects = at.GetBoolean("trackSystemObjects");
         //                    Callback cb = (Callback) at.getAnnotation();
         if ((_filter).Length == 0)
         {
             persistenceUnit.AddDefinitionListener((Net.Vpc.Upa.Callbacks.DefinitionListener)i, _trackSystemObjects);
         }
         else
         {
             persistenceUnit.AddDefinitionListener(_filter, (Net.Vpc.Upa.Callbacks.DefinitionListener)i, _trackSystemObjects);
         }
     }
     else if (typeof(Net.Vpc.Upa.Callbacks.PersistenceUnitListener).Equals(contract))
     {
         object i = Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <System.Type, object>(instances, type);
         if (i == null)
         {
             i = persistenceUnit.GetFactory().CreateObject <object>(type);
             instances[type] = i;
         }
         persistenceUnit.AddPersistenceUnitListener((Net.Vpc.Upa.Callbacks.PersistenceUnitListener)i);
     }
     else if (typeof(Net.Vpc.Upa.Callbacks.EntityInterceptor).Equals(contract))
     {
         Net.Vpc.Upa.Callbacks.EntityInterceptor i = (Net.Vpc.Upa.Callbacks.EntityInterceptor)Net.Vpc.Upa.Impl.FwkConvertUtils.GetMapValue <System.Type, object>(instances, type);
         if (i == null)
         {
             try {
                 i = (Net.Vpc.Upa.Callbacks.EntityInterceptor)persistenceUnit.GetFactory().CreateObject <object>(type);
             } catch (System.Exception ex) {
                 log.TraceEvent(System.Diagnostics.TraceEventType.Error, 100, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter(null, ex));
             }
             if (i != null)
             {
                 instances[type] = i;
             }
         }
         if (i != null)
         {
             Net.Vpc.Upa.Config.Decoration at = (Net.Vpc.Upa.Config.Decoration)@event.GetUserObject();
             string _filter = at.GetString("filter");
             string _name   = at.GetString("name");
             if (Net.Vpc.Upa.Impl.Util.StringUtils.IsNullOrEmpty(_name))
             {
                 _name = (i.GetType()).Name;
             }
             bool _trackSystemObjects = at.GetBoolean("trackSystemObjects");
             //                    Callback cb = (Callback) at.getAnnotation();
             persistenceUnit.AddTrigger(_name, i, _filter, _trackSystemObjects);
         }
     }
     else if (typeof(Net.Vpc.Upa.EntityDescriptor).Equals(@event.GetContract()))
     {
         Net.Vpc.Upa.EntityDescriptor desc = (Net.Vpc.Upa.EntityDescriptor)@event.GetUserObject();
         persistenceUnit.AddEntity(desc);
     }
     else if (typeof(Net.Vpc.Upa.Function).Equals(@event.GetContract()))
     {
         Net.Vpc.Upa.Function          f = (Net.Vpc.Upa.Function)persistenceUnit.GetFactory().CreateObject <T>(@event.GetVisitedType());
         Net.Vpc.Upa.Config.Decoration d = (Net.Vpc.Upa.Config.Decoration)@event.GetUserObject();
         //                net.vpc.upa.config.FunctionDefinition d = type.getAnnotation();
         Net.Vpc.Upa.Types.DataType dt = Net.Vpc.Upa.Types.TypesFactory.ForPlatformType(d.GetType("returnType"));
         string n = d.GetString("name");
         if (Net.Vpc.Upa.Impl.Util.StringUtils.IsNullOrEmpty(n))
         {
             n = d.GetLocationType();
         }
         persistenceUnit.GetExpressionManager().AddFunction(n, dt, f);
     }
     else if (typeof(Net.Vpc.Upa.Callback).Equals(@event.GetContract()))
     {
         Net.Vpc.Upa.Callback callbackType = (Net.Vpc.Upa.Callback)persistenceUnit.GetFactory().CreateObject <T>(@event.GetVisitedType());
         persistenceUnit.AddCallback(callbackType);
     }
     else if (typeof(Net.Vpc.Upa.EntitySecurityManager).Equals(@event.GetContract()))
     {
         Net.Vpc.Upa.Config.Decoration     d    = (Net.Vpc.Upa.Config.Decoration)@event.GetUserObject();
         Net.Vpc.Upa.EntitySecurityManager secu = (Net.Vpc.Upa.EntitySecurityManager)persistenceUnit.GetFactory().CreateObject <T>(@event.GetVisitedType());
         Net.Vpc.Upa.Impl.Config.EntityConfiguratorProcessor.ConfigureOneShot(persistenceUnit, new Net.Vpc.Upa.Impl.Util.SimpleEntityFilter(new Net.Vpc.Upa.Impl.Util.EqualsStringFilter(d.GetString("entity"), false, false), true), new Net.Vpc.Upa.Impl.Config.SecurityManagerEntityConfigurator(secu));
     }
     else if (@event.GetUserObject() is Net.Vpc.Upa.Impl.Config.DecoratedMethodScan)
     {
         Net.Vpc.Upa.Impl.Config.DecoratedMethodScan dms  = (Net.Vpc.Upa.Impl.Config.DecoratedMethodScan)@event.GetUserObject();
         Net.Vpc.Upa.Config.Decoration callbackDecoration = dms.GetDecoration();
         ConfigureMethodCallback(type, dms.GetMethod(), callbackDecoration, persistenceUnit);
     }
 }
コード例 #2
0
 public static void ConfigureMethodCallback(System.Type type, System.Reflection.MethodInfo method, Net.Vpc.Upa.Config.Decoration methodDecoration, Net.Vpc.Upa.PersistenceUnit persistenceUnit)
 {
     Net.Vpc.Upa.CallbackType callbackType  = Net.Vpc.Upa.Impl.Util.PlatformUtils.GetUndefinedValue <Net.Vpc.Upa.CallbackType>(typeof(Net.Vpc.Upa.CallbackType));
     Net.Vpc.Upa.EventPhase   callbackPhase = Net.Vpc.Upa.Impl.Util.PlatformUtils.GetUndefinedValue <Net.Vpc.Upa.EventPhase>(typeof(Net.Vpc.Upa.EventPhase));
     System.Collections.Generic.IDictionary <string, object> conf = new System.Collections.Generic.Dictionary <string, object>();
     if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreAlter)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_ALTER;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnAlter)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_ALTER;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreCreate)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_CREATE;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnCreate)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_CREATE;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreDrop)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_DROP;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnDrop)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_DROP;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPrePersist)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_PERSIST;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPersist)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_PERSIST;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreUpdate)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_UPDATE;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnUpdate)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_UPDATE;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreRemove)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_REMOVE;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnRemove)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_REMOVE;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreReset)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_RESET;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnReset)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_RESET;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreInitialize)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_INITIALIZE;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnInitialize)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_INITIALIZE;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnPreUpdateFormula)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_UPDATE_FORMULAS;
         callbackPhase = Net.Vpc.Upa.EventPhase.BEFORE;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.OnUpdateFormula)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_UPDATE_FORMULAS;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         conf["trackSystemObjects"] = methodDecoration.GetBoolean("trackSystemObjects");
     }
     else if (methodDecoration.IsName(typeof(Net.Vpc.Upa.Config.Function)))
     {
         callbackType  = Net.Vpc.Upa.CallbackType.ON_EVAL;
         callbackPhase = Net.Vpc.Upa.EventPhase.AFTER;
         string      functionName = methodDecoration.GetString("name");
         System.Type returnType   = methodDecoration.GetType("returnType");
         if (!Net.Vpc.Upa.Impl.Util.StringUtils.IsNullOrEmpty(functionName))
         {
             conf["functionName"] = functionName;
         }
         if (returnType != null && !Net.Vpc.Upa.Impl.Util.PlatformUtils.IsVoid(returnType))
         {
             conf["returnType"] = returnType;
         }
     }
     if (callbackType != default(Net.Vpc.Upa.CallbackType))
     {
         object instance = null;
         if (!Net.Vpc.Upa.Impl.Util.PlatformUtils.IsStatic(method))
         {
             instance = persistenceUnit.GetFactory().GetSingleton <object>(type);
         }
         persistenceUnit.AddCallback(new Net.Vpc.Upa.CallbackConfig(instance, method, callbackType, callbackPhase, conf));
     }
 }