public void Sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { if (handler is SyncTokenResultsHandler) { ((SyncTokenResultsHandler)handler).HandleResult(GetLatestSyncToken(objectClass)); } }
/// <summary> /// Implementation of SynOp.Sync /// </summary> /// <param name="objClass">Object class</param> /// <param name="token">Sync token</param> /// <param name="handler">Sync results handler</param> /// <param name="options">Operation options</param> public void Sync( ObjectClass oclass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { const string operation = "Sync"; ExchangeUtility.NullCheck(oclass, "oclass", this._configuration); LOG.Info("Exchange.Sync method; oclass = {0}, token = {1}", oclass, token); SyncOpContext context = new SyncOpContext() { Connector = this, ConnectorConfiguration = _configuration, ObjectClass = oclass, OperationName = operation, Options = options, SyncToken = token, SyncResultsHandler = handler }; try { _scripting.ExecutePowerShell(context, Scripting.Position.BeforeMain); if (!_scripting.ExecutePowerShell(context, Scripting.Position.InsteadOfMain)) { SyncMain(context); } _scripting.ExecutePowerShell(context, Scripting.Position.AfterMain); } catch (Exception e) { LOG.Error(e, "Exception while executing Sync operation: {0}"); throw; } // TODO what about executing a script on each returned item? }
public virtual void SyncAllCallFailPattern() { TestCallPattern(new TestOperationPattern() { MakeCall = facade => { // create an empty results handler.. SyncResultsHandler rh = new SyncResultsHandler() { Handle = obj => { return(true); } }; // call the sync method.. var builder = new OperationOptionsBuilder(); builder.Options["FAIL_DELETE"] = true; facade.Sync(ObjectClass.ALL, new SyncToken(1), rh, builder.Build()); }, CheckCalls = calls => { Assert.AreEqual("Sync", GetAndRemoveMethodName(calls)); } }); }
public void Sync(ObjectClass objClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { ((SyncApiOp)this.GetOperationCheckSupported(SafeType <APIOperation> .Get <SyncApiOp>())) .Sync(objClass, token, handler, options); }
public void Sync(ObjectClass objClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { int remaining = _config.numResults; for (int i = 0; i < _config.numResults; i++) { ConnectorObjectBuilder obuilder = new ConnectorObjectBuilder(); obuilder.SetUid(i.ToString()); obuilder.SetName(i.ToString()); obuilder.ObjectClass = (objClass); SyncDeltaBuilder builder = new SyncDeltaBuilder(); builder.Object = (obuilder.Build()); builder.DeltaType = (SyncDeltaType.CREATE_OR_UPDATE); builder.Token = (new SyncToken("mytoken")); SyncDelta rv = builder.Build(); if (handler.Handle(rv)) { remaining--; } else { break;; } } if (handler is SyncTokenResultsHandler) { ((SyncTokenResultsHandler)handler).HandleResult(new SyncToken(remaining)); } }
public void Sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { Assert.IsNotNull(objectClass); Assert.IsNotNull(token); Assert.IsNotNull(handler); Assert.IsNotNull(options); AddCall("Sync", objectClass, token, handler, options); }
/// <summary> /// Implementation of SynOp.Sync /// </summary> /// <param name="objClass">Object class</param> /// <param name="token">Syncronization token</param> /// <param name="handler">Handler for syncronization results</param> /// <param name="options">Operation options, can be null</param> public override void Sync( ObjectClass objClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { // TODO: implement Sync base.Sync(objClass, token, handler, options); }
/// <summary> /// Implementation of SynOp.Sync /// </summary> /// <param name="objClass">Object class</param> /// <param name="token">Sync token</param> /// <param name="handler">Sync results handler</param> /// <param name="options">Operation options</param> public override void Sync( ObjectClass objClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { ExchangeUtility.NullCheck(objClass, "oclass", this.configuration); // we handle accounts only if (!objClass.Is(ObjectClass.ACCOUNT_NAME)) { base.Sync(objClass, token, handler, options); return; } ICollection <string> attsToGet = null; if (options != null && options.AttributesToGet != null) { attsToGet = CollectionUtil.NewSet(options.AttributesToGet); } // delegate to get the exchange attributes if requested SyncResultsHandler xchangeHandler = delegate(SyncDelta delta) { if (delta.DeltaType == SyncDeltaType.DELETE) { return(handler(delta)); } // replace the ad attributes with exchange one and add recipient type ConnectorObject updated = ExchangeUtility.ReplaceAttributes(delta.Object, attsToGet, AttMapFromAD); updated = this.AddExchangeAttributes(objClass, updated, attsToGet); if (updated != delta.Object) { // build new sync delta, cause we changed the object SyncDeltaBuilder deltaBuilder = new SyncDeltaBuilder { DeltaType = delta.DeltaType, Token = delta.Token, Uid = delta.Uid, Object = updated }; delta = deltaBuilder.Build(); } return(handler(delta)); }; // call AD sync, use xchangeHandler base.Sync(objClass, token, xchangeHandler, options); }
protected void ExecuteSync(String scriptName, ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { var arguments = new Dictionary <String, Object> { { Result, new MsPowerShellSyncResults(objectClass, handler) } }; if (token != null) { arguments.Add(Token, token.Value); } ExecuteScript(GetScript(scriptName), CreateBinding(arguments, OperationType.SYNC, objectClass, null, null, options)); }
public void Sync(SyncOpContext context) { ExchangeConnector exconn = (ExchangeConnector)context.Connector; ActiveDirectoryConnector adconn = exconn.ActiveDirectoryConnector; ICollection <string> attsToGet = null; if (context.Options != null && context.Options.AttributesToGet != null) { attsToGet = CollectionUtil.NewSet(context.Options.AttributesToGet); } // delegate to get the exchange attributes if requested SyncResultsHandler xchangeHandler = new SyncResultsHandler() { Handle = delta => { if (delta.DeltaType == SyncDeltaType.DELETE) { return(context.SyncResultsHandler.Handle(delta)); } // replace the ad attributes with exchange ones and add recipient type and database (if requested) ConnectorObject updated = ExchangeUtility.ConvertAdAttributesToExchange(delta.Object); //updated = this.AddExchangeAttributes(exconn, context.ObjectClass, updated, attsToGet); if (updated != delta.Object) { // build new sync delta, cause we changed the object SyncDeltaBuilder deltaBuilder = new SyncDeltaBuilder { DeltaType = delta.DeltaType, Token = delta.Token, Uid = delta.Uid, Object = updated }; delta = deltaBuilder.Build(); } return(context.SyncResultsHandler.Handle(delta)); } }; // call AD sync, use xchangeHandler adconn.SyncInternal(context.ObjectClass, context.SyncToken, xchangeHandler, context.Options, GetAdAttributesToReturn(adconn, context.ObjectClass, context.Options)); }
public virtual void Sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { if (ObjectClass.ALL.Equals(objectClass)) { // } else if (ObjectClass.ACCOUNT.Equals(objectClass)) { var builder = new ConnectorObjectBuilder(); builder.SetUid("3f50eca0-f5e9-11e3-a3ac-0800200c9a66"); builder.SetName("Foo"); builder.AddAttribute(ConnectorAttributeBuilder.BuildEnabled(true)); var deltaBuilder = new SyncDeltaBuilder { Object = builder.Build(), DeltaType = SyncDeltaType.CREATE, Token = new SyncToken(10) }; foreach (SyncDelta connectorObject in CollectionUtil.NewSet(deltaBuilder.Build())) { if (!handler.Handle(connectorObject)) { // Stop iterating because the handler stopped processing break; } } } else { Trace.TraceWarning("Sync of type {0} is not supported", _configuration.ConnectorMessages.Format(objectClass.GetDisplayNameKey(), objectClass.GetObjectClassValue())); throw new NotSupportedException("Sync of type" + objectClass.GetObjectClassValue() + " is not supported"); } ((SyncTokenResultsHandler)handler).HandleResult(new SyncToken(10)); }
public virtual void SyncAllCallPattern() { TestCallPattern(new TestOperationPattern() { MakeCall = facade => { // create an empty results handler.. SyncResultsHandler rh = new SyncResultsHandler() { Handle = obj => { return(true); } }; // call the sync method.. facade.Sync(ObjectClass.ALL, new SyncToken(1), rh, null); }, CheckCalls = calls => { Assert.AreEqual("Sync", GetAndRemoveMethodName(calls)); } }); }
public virtual void Sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { Trace.TraceInformation("Invoke Sync ObjectClass:{0}->{1}", objectClass.GetObjectClassValue(), token); try { ExecuteSync(_configuration.SyncScriptFileName, objectClass, token, handler, options); Trace.TraceInformation("Sync ok"); } catch (ConnectorException) { throw; } catch (Exception e) { if (e.InnerException != null) { throw e.InnerException; } throw; } }
public void Sync(ObjectClass objectClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { Assert.IsNotNull(objectClass); Assert.IsNotNull(token); Assert.IsNotNull(handler); Assert.IsNotNull(options); AddCall("Sync", objectClass, token, handler, options); if (ObjectClass.ALL.Equals(objectClass)) { if (null != CollectionUtil.GetValue(options.Options, "FAIL_DELETE", null)) { //Require ObjectClass when delta is 'delete' var builder = new SyncDeltaBuilder(); builder.DeltaType = SyncDeltaType.DELETE; builder.Uid = new Uid("DELETED"); builder.Token = new SyncToken(99); handler.Handle(builder.Build()); } else { ((SyncTokenResultsHandler)handler).HandleResult(new SyncToken(100)); } } }
public void Sync(ObjectClass objClass, SyncToken token, SyncResultsHandler handler, OperationOptions options) { for (int i = 0; i < _config.numResults; i++) { ConnectorObjectBuilder obuilder = new ConnectorObjectBuilder(); obuilder.SetUid(i.ToString()); obuilder.SetName(i.ToString()); obuilder.ObjectClass = (objClass); SyncDeltaBuilder builder = new SyncDeltaBuilder(); builder.Object = (obuilder.Build()); builder.DeltaType = (SyncDeltaType.CREATE_OR_UPDATE); builder.Token = (new SyncToken("mytoken")); SyncDelta rv = builder.Build(); if (!handler(rv)) { break; } } }
public void PostSyncResults(IRequest request, Feed <FeedEntry> feed) { SyncResultsHandler handler = new SyncResultsHandler(request); handler.LogResults(feed); }
public MsPowerShellSyncResults(ObjectClass objectClass, SyncResultsHandler handler) { _objectClass = objectClass; _handler = handler; }