Beispiel #1
0
        ///
        ///	 <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);
        }
Beispiel #2
0
        ///
        ///	 <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);
        }
Beispiel #3
0
        ///
        ///	 <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);
        }
Beispiel #4
0
        ///
        ///	 <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);
        }
Beispiel #5
0
        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());
            }
        }
Beispiel #6
0
        ///
        ///	 <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);
        }
Beispiel #7
0
        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");
        }