/// /// <summary> * get an existing message element, create it if it doesn't exist /// * </summary> /// * <param name="family"> the Message family - Query, Acknowledge, Command, Response, Registration or Signal </param> /// * <param name="i"> get the ith element </param> /// * <returns> the newly created message </returns> /// public virtual JDFMessage getCreateMessageElement(JDFMessage.EnumFamily family, JDFMessage.EnumType typ, int i) { if (family == null) { throw new JDFException("GetMessageElement: creating undefined message family"); } JDFMessage m = getMessageElement(family, typ, i); if (m == null) { m = appendMessageElement(family, typ); } return(m); }
/// /// <summary> * append a message element to <code>this</code> /// * </summary> /// * <param name="family"> the Message family - Query, Acknowledge, Command, Response, Registration or Signal </param> /// * <param name="typ"> the messages @Type value, null if unknown </param> /// * <returns> the newly created message </returns> /// public virtual JDFMessage appendMessageElement(JDFMessage.EnumFamily family, JDFMessage.EnumType typ) { if (family == null) { throw new JDFException("appendMessageElement: creating undefined message family"); } string sFamily = family.getName(); JDFMessage m = (JDFMessage)appendElement(sFamily, null); if (typ != null) { m.setType(typ); } return(m); }
/// /// <summary> * get the ith message element of family type family /// * </summary> /// * <param name="family"> the Message family - Query, Acknowledge, Command, Response, Registration or Signal </param> /// * <param name="typ"> the messages @Type value, null if unknown </param> /// * <param name="i"> the i'th message element to get, if i<0, get from back </param> /// * <returns> the matching message, null if none are found </returns> /// public virtual JDFMessage getMessageElement(JDFMessage.EnumFamily family, JDFMessage.EnumType typ, int i) { int iLocal = i; if (iLocal < 0) // search from back { JDFMessage message = null; VElement v = getMessageVector(family, typ); if (v != null) { int siz = v.Count; iLocal = siz + iLocal; message = (JDFMessage)(iLocal >= 0 ? v[iLocal] : null); } return(message); } string typString = typ == null ? null : typ.getName(); string familyString = family == null ? null : family.getName(); KElement e = getElement(familyString, null, 0); int n = 0; while (e != null) { if (e is JDFMessage) { if (typString == null || typString.Equals(((JDFMessage)e).getType())) { if (n++ >= iLocal) { return((JDFMessage)e); } } } e = e.getNextSiblingElement(familyString, null); } return(null); }
/// /// <summary> * retrieves the queuentryid from a queue related query or command /// * </summary> /// * <param name="m"> the query or command </param> /// * <returns> String the queuentryID in Query/QueueEntryDef/@QueueEntryID </returns> /// public static string getQueueEntryIDFromMessage(JDFMessage m) { if (m == null) { return(null); } JDFQueueEntryDef def = m.getQueueEntryDef(0); if (def == null) { return(null); } string s = def.getQueueEntryID(); if (isWildCard(s)) { return(null); } return(s); }
public virtual void testCreateResponse() { JDFJMF queries = JDFJMF.createJMF(EnumFamily.Query, EnumType.Status); queries.appendCommand(EnumType.Resource); queries.appendCommand(EnumType.Resource); queries.appendRegistration(EnumType.Resource); JDFJMF responses = queries.createResponse(); VElement messageVector = queries.getMessageVector(null, null); VElement responseVector = responses.getMessageVector(null, null); Assert.AreEqual(responseVector.Count, 4); for (int i = 0; i < responseVector.Count; i++) { JDFResponse r = (JDFResponse)responseVector[i]; JDFMessage m = (JDFMessage)messageVector[i]; Assert.AreEqual(r.getrefID(), m.getID()); Assert.AreEqual(r.getType(), m.getType()); } }
/// /// <summary> * create a new response for all messages of this if the message is any message except response correctly fills /// * refId, type etc. /// * </summary> /// * <returns> the newly created JMF with multiple responses </returns> /// public virtual JDFJMF createResponse() { VElement v = getMessageVector(null, null); JDFJMF jmf = new JDFDoc("JMF").getJMFRoot(); for (int i = 0; i < v.Count; i++) { JDFMessage m = (JDFMessage)v[i]; EnumFamily family = m.getFamily(); if (family != null && EnumFamily.Response != family && EnumFamily.Acknowledge != family) { if (!m.hasAttribute(AttributeName.ID)) // in case someone sends // crappy requests... { m.appendAnchor(null); } JDFResponse r = jmf.appendResponse(); r.setQuery(m); } } return(jmf); }
public virtual void testMessage() { JDFDoc doc = new JDFDoc(ElementName.JMF); JDFJMF jmf = doc.getJMFRoot(); jmf.setSenderID("Pippi Langstrumpf"); IEnumerator it = JDFMessage.EnumFamily.iterator(); while (it.MoveNext()) { JDFMessage.EnumFamily f = (JDFMessage.EnumFamily)it.Current; if (f == null) { continue; } JDFMessage m = jmf.appendMessageElement(f, null); m.setType("KnownMessages"); if (f.Equals(JDFMessage.EnumFamily.Acknowledge)) { JDFAcknowledge a = (JDFAcknowledge)m; a.setrefID("refID"); } if (f.Equals(JDFMessage.EnumFamily.Registration)) { JDFRegistration r = (JDFRegistration)m; r.appendSubscription(); } Assert.IsTrue(jmf.getMessageVector(f, null).Count == 1, " added messages"); Assert.IsTrue(jmf.getMessageElement(f, null, 0).hasAttribute(AttributeName.XSITYPE), "xsi type"); Assert.AreEqual(f.getName() + "KnownMessages", jmf.getMessageElement(f, null, 0).getAttribute(AttributeName.XSITYPE), "xsi type"); } Assert.IsTrue(jmf.getMessageVector(null, null).Count == 6, " added messages"); Assert.IsTrue(jmf.isValid(EnumValidationLevel.Complete), "valid"); }