public override void HandleUpdate(bool isBaseEventType, RevisionStateMerge revisionState, RevisionEventBeanMerge revisionEvent, RevisionTypeDesc typesDesc) { EventBean underlyingEvent = revisionEvent.UnderlyingFullOrDelta; NullableObject <Object>[] changeSetValues = revisionState.Overlays; if (changeSetValues == null) // optimization - the full event sets it to null, deltas all get a new one { changeSetValues = new NullableObject <Object> [spec.ChangesetPropertyNames.Length]; } else { changeSetValues = ArrayCopy(changeSetValues); // preserve the last revisions } // apply all properties of the delta event int[] indexes = typesDesc.ChangesetPropertyIndex; EventPropertyGetter[] getters = typesDesc.ChangesetPropertyGetters; for (int i = 0; i < indexes.Length; i++) { int index = indexes[i]; if (!getters[i].IsExistsProperty(underlyingEvent)) { continue; } Object value = getters[i].Get(underlyingEvent); changeSetValues[index] = new NullableObject <Object>(value); } revisionState.Overlays = changeSetValues; }
/// <summary>Array copy. </summary> /// <param name="array">to copy</param> /// <returns>copied array</returns> internal static NullableObject <T>[] ArrayCopy <T>(NullableObject <T>[] array) { if (array == null) { return(null); } NullableObject <T>[] result = new NullableObject <T> [array.Length]; Array.Copy(array, 0, result, 0, array.Length); return(result); }
private EventBean GetPreprocessedEvent(EventBean theEvent, ExprEvaluatorContext exprEvaluatorContext) { NullableObject <InternalEventRouterPreprocessor> processor = _preprocessors.Get(theEvent.EventType); if (processor == null) { lock (this) { processor = Initialize(theEvent.EventType); _preprocessors.Put(theEvent.EventType, processor); } } if (processor.Value == null) { return(theEvent); } else { return(processor.Value.Process(theEvent, exprEvaluatorContext)); } }
public static object GetNullableValue(this FieldInfo field, object target) { return NullableObject.GetField(target, field); }
public override void HandleUpdate(bool isBaseEventType, RevisionStateMerge revisionState, RevisionEventBeanMerge revisionEvent, RevisionTypeDesc typesDesc) { EventBean underlyingEvent = revisionEvent.UnderlyingFullOrDelta; // Previously-seen full event if (isBaseEventType) { // If delta types don't add properties, simply set the overlay to null NullableObject <Object>[] changeSetValues; if (!spec.IsDeltaTypesAddProperties) { changeSetValues = null; } // If delta types do add properties, set a new overlay else { changeSetValues = revisionState.Overlays; if (changeSetValues == null) // optimization - the full event sets it to null, deltas all get a new one { changeSetValues = new NullableObject <Object> [spec.ChangesetPropertyNames.Length]; } else { changeSetValues = ArrayCopy(changeSetValues); // preserve the last revisions } // reset properties not contributed by any delta, leaving all delta-contributed properties in place bool[] changesetPropertyDeltaContributed = spec.ChangesetPropertyDeltaContributed; for (int i = 0; i < changesetPropertyDeltaContributed.Length; i++) { // if contributed then leave the value, else override if (!changesetPropertyDeltaContributed[i]) { changeSetValues[i] = null; } } } revisionState.Overlays = changeSetValues; revisionState.BaseEventUnderlying = underlyingEvent; } // Delta event to existing full event merge else { NullableObject <Object>[] changeSetValues = revisionState.Overlays; if (changeSetValues == null) // optimization - the full event sets it to null, deltas all get a new one { changeSetValues = new NullableObject <Object> [spec.ChangesetPropertyNames.Length]; } else { changeSetValues = ArrayCopy(changeSetValues); // preserve the last revisions } // apply all properties of the delta event int[] indexes = typesDesc.ChangesetPropertyIndex; EventPropertyGetter[] getters = typesDesc.ChangesetPropertyGetters; for (int i = 0; i < indexes.Length; i++) { int index = indexes[i]; Object value = getters[i].Get(underlyingEvent); changeSetValues[index] = new NullableObject <Object>(value); } revisionState.Overlays = changeSetValues; } }
protected ResponseOut(Toutput result) { this.Error = NullableObject <ErrorOut> .EmptyResult(); this.Result = result; }
protected ResponseOut(ErrorOut error) { this.Error = NullableObject <ErrorOut> .FromResult(error); }
public void AllocateVariableState( string deploymentId, string variableName, int agentInstanceId, bool recovery, NullableObject<object> initialValue, EventBeanTypedEventFactory eventBeanTypedEventFactory) { var entry = DeploymentsWithVariables.Get(deploymentId); if (entry == null) { throw new ArgumentException("Failed to find variable deployment id '" + deploymentId + "'"); } var variable = entry.GetVariable(variableName); if (variable == null) { throw new ArgumentException("Failed to find variable '" + variableName + "'"); } // Check current state - see if the variable exists in the state handler object initialState; if (initialValue != null) { initialState = initialValue.Value; } else { initialState = variable.MetaData.ValueWhenAvailable; } if (variable.MetaData.EventType != null && initialState != null && !(initialState is EventBean)) { initialState = eventBeanTypedEventFactory.AdapterForTypedObject( initialState, variable.MetaData.EventType); } if (OptionalStateHandler != null && !variable.MetaData.IsConstant) { var priorValue = OptionalStateHandler.GetHasState(variable, agentInstanceId); if (recovery) { if (priorValue != null) { initialState = priorValue.Value; } } else { if (priorValue == null) { // we do not already have a value OptionalStateHandler.SetState(variable, agentInstanceId, initialState); } else { initialState = priorValue.Value; } } } // create new holder for versions var timestamp = timeProvider.Time; var valuePerVersion = new VersionedValueList<object>( variableName, currentVersionNumber, initialState, timestamp, millisecondLifetimeOldVersions, ReadWriteLock.ReadLock, HIGH_WATERMARK_VERSIONS, false); IDictionary<int, VariableReader> cps = variableVersionsPerCP[variable.VariableNumber]; var reader = new VariableReader(variable, versionThreadLocal, valuePerVersion); cps.Put(agentInstanceId, reader); }
protected ValidationResult() { this.Error = NullableObject <ErrorOut> .EmptyResult(); }
protected ValidationResult(ErrorOut error) { this.Error = NullableObject <ErrorOut> .FromResult(error); }