private SIF_Event createSIF_Event(IElementDef objType) { SIF_Event evnt = new SIF_Event(); evnt.Header.SIF_SourceId = "foo"; SIF_ObjectData sod = new SIF_ObjectData(); SIF_EventObject obj = new SIF_EventObject(); obj.ObjectName = objType.Name; sod.SIF_EventObject = obj; evnt.SIF_ObjectData = sod; obj.Action = EventAction.Add.ToString(); Object eventObject = null; try { eventObject = ClassFactory.CreateInstance(objType.FQClassName); } catch (Exception cfe) { throw new AdkException("Unable to create instance of " + objType.Name, fZone, cfe); } obj.AddChild(objType, (SifElement)eventObject); return(evnt); }
/** * Sends a SIF_Event * @param zone The zone to send the sifEvent to */ public SIF_Ack SifEvent(IZone zone, Event sifEvent, String destinationId, String sifMsgId) { if (sifEvent.Data == null || sifEvent.Data.Available == false) { throw new AdkException("The sifEvent has no SIFDataObjects", zone); } SIF_ObjectData od = new SIF_ObjectData(); // Fill out the SIF_ObjectData IDataObjectInputStream inStr = sifEvent.Data; SifDataObject data = inStr.ReadDataObject(); SifVersion msgVersion = data.EffectiveSIFVersion; SIF_EventObject eo = new SIF_EventObject(); od.SIF_EventObject = eo; eo.Action = sifEvent.ActionString; eo.ObjectName = data.ElementDef.Tag(msgVersion); // Create the SIF_Event object SIF_Event msg = new SIF_Event(msgVersion); msg.SIF_ObjectData = od; SIF_Header msgHdr = msg.Header; // Assign SIF_DestinationId if applicable if (destinationId != null) { msgHdr.SIF_DestinationId = destinationId; } while (data != null) { eo.Attach(data); data = inStr.ReadDataObject(); } if (sifMsgId != null) { msgHdr.SIF_MsgId = sifMsgId; } SifContext[] contexts = sifEvent.Contexts; if (contexts == null) { contexts = new SifContext[] { SifContext.DEFAULT }; } SIF_Contexts msgContexts = new SIF_Contexts(); foreach (SifContext context in contexts) { msgContexts.AddSIF_Context(context.Name); } msgHdr.SIF_Contexts = msgContexts; return(((ZoneImpl)zone).Dispatcher.send(msg)); }
public void testSIFRetryEvent() { IElementDef objType = StudentDTD.STUDENTCONTACT; ErrorMessageHandler handler = new ErrorMessageHandler(ErrorMessageHandler.HandlerBehavior.ThrowADKRetryException); fZone.SetSubscriber(handler, objType, null); SIF_Event evnt = createSIF_Event(objType); fZone.Connect(ProvisioningFlags.Register); AssertRetryHandling(handler, evnt, fZone); }
public void testUndeliverableRetryEvent() { IElementDef objType = StudentDTD.STUDENTCONTACT; ErrorMessageHandler handler = new ErrorMessageHandler(ErrorMessageHandler.HandlerBehavior.ThrowSIFRetryException); fAgent.ErrorHandler = handler; SIF_Event evnt = createSIF_Event(objType); fZone.Connect(ProvisioningFlags.Register); AssertRetryHandling(handler, evnt, fZone); }
public void testADKRetryEvent() { IElementDef objType = StudentDTD.STUDENTCONTACT; ErrorMessageHandler handler = new ErrorMessageHandler(ErrorMessageHandler.HandlerBehavior.ThrowADKRetryException); // SifContext ctxt = SifContext.Create("SIF_SUBSCRIBE"); // SubscriptionOptions options = new SubscriptionOptions(ctxt); fZone.SetSubscriber(handler, objType, null); SIF_Event evnt = createSIF_Event(objType); fZone.Connect(ProvisioningFlags.Register); AssertRetryHandling(handler, evnt, fZone); }
public void testNormalEvent() { IElementDef objType = StudentDTD.STUDENTCONTACT; ErrorMessageHandler handler = new ErrorMessageHandler(ErrorMessageHandler.HandlerBehavior.Normal); SubscriptionOptions options = new SubscriptionOptions(); fZone.SetSubscriber(handler, objType, options); fZone.Connect(ProvisioningFlags.Register); //fZone.SetSubscriber(handler, objType, null); SIF_Event evnt = createSIF_Event(objType); assertNormalHandling(handler, evnt, fZone); }
public void ParseSectionInfoWithOverride() { // Parse the object from the file Console.WriteLine("Parsing from file..."); SifParser p = SifParser.NewInstance(); SIF_Event sifEvent = null; using (Stream inStream = GetResourceStream("SectionInfo_SchoolCourseInfoOverride.xml")) { sifEvent = (SIF_Event)p.Parse(inStream, null, SifParserFlags.None, SifVersion.SIF15r1); inStream.Close(); } Assert.IsNotNull(sifEvent); AdkObjectParseHelper.runParsingTest((SifDataObject)sifEvent.SIF_ObjectData.SIF_EventObject.GetChildList()[0], SifVersion.SIF15r1); }
public void testEventThrowsException() { IElementDef objType = StudentDTD.STUDENTCONTACT; ErrorMessageHandler handler = new ErrorMessageHandler(ErrorMessageHandler.HandlerBehavior.ThrowException); SubscriptionOptions options = new SubscriptionOptions(); fZone.SetSubscriber(handler, objType, options); fZone.Connect(ProvisioningFlags.Register); // // fZone.SetSubscriber(handler, objType, null); SIF_Event evnt = createSIF_Event(objType); AssertExceptionHandling(handler, evnt, fZone, typeof(AdkException)); }
public void EmbeddedSIFMessage() { SifElement element = null; using (Stream aStream = GetResourceStream("GetNextMessageResponse.xml")) { TextReader aReader = new StreamReader(aStream); SifParser parser = SifParser.NewInstance(); element = parser.Parse(aReader, null, SifParserFlags.ExpectInnerEnvelope, SifVersion.SIF11); aReader.Close(); aStream.Close(); } Assert.IsNotNull(element, "SIFElement was not parsed"); SIF_Ack ack = (SIF_Ack)element; SifElement messageElement = ack.SIF_Status.SIF_Data.GetChild("SIF_Message"); SIF_Event aEvent = (SIF_Event)messageElement.GetChild("SIF_Event"); SIF_EventObject eventObject = aEvent.SIF_ObjectData.SIF_EventObject; Assert.AreEqual("SchoolCourseInfo", eventObject.ObjectName, "Wrong object name"); Assert.AreEqual("Change", eventObject.Action, "Wrong Action"); Assert.IsTrue(eventObject.GetChildList()[0] is SchoolCourseInfo, "Wrong object type"); }