rpms/qpid-cpp/devel bz538355.patch, NONE, 1.1 db4.patch, NONE, 1.1 qmf.patch, NONE, 1.1 qpid-cpp.spec, NONE, 1.1 qpidd.pp, NONE, 1.1 so_number.patch, NONE, 1.1 xqilla.patch, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Nuno Santos nsantos at fedoraproject.org
Thu Feb 25 20:26:37 UTC 2010


Author: nsantos

Update of /cvs/pkgs/rpms/qpid-cpp/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv8231

Modified Files:
	.cvsignore sources 
Added Files:
	bz538355.patch db4.patch qmf.patch qpid-cpp.spec qpidd.pp 
	so_number.patch xqilla.patch 
Log Message:
import of specfile and patches for renamed package

bz538355.patch:
 bindings/qmf/python/qmf.py              |    5 ---
 bindings/qmf/ruby/qmf.rb                |    3 -
 bindings/qmf/tests/agent_ruby.rb        |    4 +-
 bindings/qmf/tests/python_console.py    |   15 +++++++++
 bindings/qmf/tests/ruby_console_test.rb |   16 ++++++++--
 src/qmf/engine/ObjectIdImpl.cpp         |   51 +++++++++++++++++++++++++-------
 src/qmf/engine/ObjectIdImpl.h           |   16 +++++-----
 src/qmf/engine/ResilientConnection.cpp  |    2 -
 8 files changed, 83 insertions(+), 29 deletions(-)

--- NEW FILE bz538355.patch ---
Index: cpp/src/qmf/engine/ObjectIdImpl.cpp
===================================================================
--- cpp/src/qmf/engine/ObjectIdImpl.cpp	(revision 886044)
+++ cpp/src/qmf/engine/ObjectIdImpl.cpp	(working copy)
@@ -24,7 +24,6 @@
 using namespace qmf::engine;
 using qpid::framing::Buffer;
 
-
 void AgentAttachment::setBanks(uint32_t broker, uint32_t agent)
 {
     first =
@@ -121,28 +120,60 @@
     return repr;
 }
 
-bool ObjectIdImpl::operator==(const ObjectIdImpl& other) const
+#define ACTUAL_FIRST (agent == 0 ? first : first | agent->first)
+#define ACTUAL_OTHER (other.agent == 0 ? other.first : other.first | other.agent->first)
+
+uint8_t ObjectIdImpl::getFlags() const
 {
-    uint64_t otherFirst = agent == 0 ? other.first : other.first & 0xffff000000000000LL;
+    return (ACTUAL_FIRST & 0xF000000000000000LL) >> 60;
+}
 
-    return first == otherFirst && second == other.second;
+uint16_t ObjectIdImpl::getSequence() const
+{
+    return (ACTUAL_FIRST & 0x0FFF000000000000LL) >> 48;
 }
 
-bool ObjectIdImpl::operator<(const ObjectIdImpl& other) const
+uint32_t ObjectIdImpl::getBrokerBank() const
 {
-    uint64_t otherFirst = agent == 0 ? other.first : other.first & 0xffff000000000000LL;
+    return (ACTUAL_FIRST & 0x0000FFFFF0000000LL) >> 28;
+}
 
-    return (first < otherFirst) || ((first == otherFirst) && (second < other.second));
+uint32_t ObjectIdImpl::getAgentBank() const
+{
+    return ACTUAL_FIRST & 0x000000000FFFFFFFLL;
 }
 
-bool ObjectIdImpl::operator>(const ObjectIdImpl& other) const
+uint64_t ObjectIdImpl::getObjectNum() const
 {
-    uint64_t otherFirst = agent == 0 ? other.first : other.first & 0xffff000000000000LL;
+    return second;
+}
 
-    return (first > otherFirst) || ((first == otherFirst) && (second > other.second));
+uint32_t ObjectIdImpl::getObjectNumHi() const
+{
+    return (uint32_t) (second >> 32);
 }
 
+uint32_t ObjectIdImpl::getObjectNumLo() const
+{
+    return (uint32_t) (second & 0x00000000FFFFFFFFLL);
+}
 
+bool ObjectIdImpl::operator==(const ObjectIdImpl& other) const
+{
+    return ACTUAL_FIRST == ACTUAL_OTHER && second == other.second;
+}
+
+bool ObjectIdImpl::operator<(const ObjectIdImpl& other) const
+{
+    return (ACTUAL_FIRST < ACTUAL_OTHER) || ((ACTUAL_FIRST == ACTUAL_OTHER) && (second < other.second));
+}
+
+bool ObjectIdImpl::operator>(const ObjectIdImpl& other) const
+{
+    return (ACTUAL_FIRST > ACTUAL_OTHER) || ((ACTUAL_FIRST == ACTUAL_OTHER) && (second > other.second));
+}
+
+
 //==================================================================
 // Wrappers
 //==================================================================
Index: cpp/src/qmf/engine/ObjectIdImpl.h
===================================================================
--- cpp/src/qmf/engine/ObjectIdImpl.h	(revision 886044)
+++ cpp/src/qmf/engine/ObjectIdImpl.h	(working copy)
@@ -51,15 +51,15 @@
         void encode(qpid::framing::Buffer& buffer) const;
         void fromString(const std::string& repr);
         const std::string& asString() const;
-        uint8_t getFlags() const { return (first & 0xF000000000000000LL) >> 60; }
-        uint16_t getSequence() const { return (first & 0x0FFF000000000000LL) >> 48; }
-        uint32_t getBrokerBank() const { return (first & 0x0000FFFFF0000000LL) >> 28; }
-        uint32_t getAgentBank() const { return first & 0x000000000FFFFFFFLL; }
-        uint64_t getObjectNum() const { return second; }
-        uint32_t getObjectNumHi() const { return (uint32_t) (second >> 32); }
-        uint32_t getObjectNumLo() const { return (uint32_t) (second & 0x00000000FFFFFFFFLL); }
+        uint8_t getFlags() const;
+        uint16_t getSequence() const;
+        uint32_t getBrokerBank() const;
+        uint32_t getAgentBank() const;
+        uint64_t getObjectNum() const;
+        uint32_t getObjectNumHi() const;
+        uint32_t getObjectNumLo() const;
         bool isDurable() const { return getSequence() == 0; }
-        void setValue(uint64_t f, uint64_t s) { first = f; second = s; }
+        void setValue(uint64_t f, uint64_t s) { first = f; second = s; agent = 0; }
 
         bool operator==(const ObjectIdImpl& other) const;
         bool operator<(const ObjectIdImpl& other) const;
Index: cpp/src/qmf/engine/ResilientConnection.cpp
===================================================================
--- cpp/src/qmf/engine/ResilientConnection.cpp	(revision 886044)
+++ cpp/src/qmf/engine/ResilientConnection.cpp	(working copy)
@@ -116,9 +116,9 @@
         int delayMax;
         int delayFactor;
         qpid::sys::Condition cond;
-        qpid::sys::Thread connThread;
         deque<ResilientConnectionEventImpl> eventQueue;
         set<RCSession::Ptr> sessions;
+        qpid::sys::Thread connThread;
     };
 }
 }
Index: cpp/bindings/qmf/ruby/qmf.rb
===================================================================
--- cpp/bindings/qmf/ruby/qmf.rb	(revision 886044)
+++ cpp/bindings/qmf/ruby/qmf.rb	(working copy)
@@ -472,8 +472,7 @@
     end
 
     def ==(other)
-      return (@impl.getObjectNumHi == other.impl.getObjectNumHi) &&
-        (@impl.getObjectNumLo == other.impl.getObjectNumLo)
+      return @impl == other.impl
     end
 
     def to_s
Index: cpp/bindings/qmf/python/qmf.py
===================================================================
--- cpp/bindings/qmf/python/qmf.py	(revision 886044)
+++ cpp/bindings/qmf/python/qmf.py	(working copy)
@@ -35,7 +35,6 @@
 from qmfengine import (O_EQ, O_NE, O_LT, O_LE, O_GT, O_GE, O_RE_MATCH, O_RE_NOMATCH,
                        E_NOT, E_AND, E_OR, E_XOR)
 
-
   ##==============================================================================
   ## CONNECTION
   ##==============================================================================
@@ -561,10 +560,8 @@
 
     def __eq__(self, other):
         if not isinstance(other, self.__class__): return False
-        return (self.impl.getObjectNumHi() == other.impl.getObjectNumHi() and
-                self.impl.getObjectNumLo() == other.impl.getObjectNumLo())
+        return self.impl == other.impl
     
-    
     def __ne__(self, other):
         return not self.__eq__(other)
 
Index: cpp/bindings/qmf/tests/agent_ruby.rb
===================================================================
--- cpp/bindings/qmf/tests/agent_ruby.rb	(revision 886044)
+++ cpp/bindings/qmf/tests/agent_ruby.rb	(working copy)
@@ -83,7 +83,7 @@
 
 class App < Qmf::AgentHandler
   def get_query(context, query, userId)
-#   puts "Query: user=#{userId} context=#{context} class=#{query.class_name} object_num=#{query.object_id.object_num_low if query.object_id}"
+#    puts "Query: user=#{userId} context=#{context} class=#{query.class_name} object_num=#{query.object_id if query.object_id}"
     if query.class_name == 'parent'
         @agent.query_response(context, @parent)
     elsif query.object_id == @parent_oid
@@ -93,7 +93,7 @@
   end
 
   def method_call(context, name, object_id, args, userId)
-#    puts "Method: user=#{userId} context=#{context} method=#{name} object_num=#{object_id.object_num_low if object_id} args=#{args}"
+#    puts "Method: user=#{userId} context=#{context} method=#{name} object_num=#{object_id if object_id} args=#{args}"
     
     retCode = 0
     retText = "OK"
Index: cpp/bindings/qmf/tests/ruby_console_test.rb
===================================================================
--- cpp/bindings/qmf/tests/ruby_console_test.rb	(revision 886044)
+++ cpp/bindings/qmf/tests/ruby_console_test.rb	(working copy)
@@ -214,9 +214,21 @@
     fail("Didn't find a non-broker agent")
   end
 
+  def test_E_filter_by_object_id
+    mgmt_exchange = @qmfc.object(:class => "exchange", 'name' => "qpid.management")
+    assert(mgmt_exchange, "No Management Exchange")
+
+    bindings = @qmfc.objects(:class => "binding", 'exchangeRef' => mgmt_exchange.object_id)
+    if bindings.size == 0
+      fail("No bindings found on management exchange")
+    end
+
+    bindings.each do |binding|
+      assert_equal(binding.exchangeRef, mgmt_exchange.object_id)
+    end
+  end
+
 end
 
 app = ConsoleTest.new
 
-
-
Index: cpp/bindings/qmf/tests/python_console.py
===================================================================
--- cpp/bindings/qmf/tests/python_console.py	(revision 886044)
+++ cpp/bindings/qmf/tests/python_console.py	(working copy)
@@ -151,6 +151,21 @@
         newList = qmf.getObjects(_objectId=parent.getObjectId())
         self.assertEqual(len(newList), 1)
 
+    def test_E_filter_by_object_id(self):
+        self.startQmf()
+        qmf = self.qmf
+
+        list = qmf.getObjects(_class="exchange", name="qpid.management")
+        self.assertEqual(len(list), 1, "No Management Exchange")
+        mgmt_exchange = list[0]
+
+        bindings = qmf.getObjects(_class="binding", exchangeRef=mgmt_exchange.getObjectId())
+        if len(bindings) == 0:
+            self.fail("No bindings found on management exchange")
+
+        for binding in bindings:
+            self.assertEqual(binding.exchangeRef, mgmt_exchange.getObjectId())
+
     def getProperty(self, msg, name):
         for h in msg.headers:
             if hasattr(h, name): return getattr(h, name)

db4.patch:
 configure.ac |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

--- NEW FILE db4.patch ---
--- rhm-0.5.3684/configure.ac	2009-08-14 15:00:10.000000000 -0400
+++ rhm-0.5.3684/configure.ac	2010-02-08 14:31:52.415778607 -0500
@@ -177,17 +177,17 @@
 AC_SUBST([LIB_DLOPEN])
 LIBS=$gl_saved_libs
 
-# Require libdb_cxx (any version between 4.2 and 4.7), for the library, and for db_cxx.h.
+# Require libdb_cxx (any version between 4.2 and 4.8), for the library, and for db_cxx.h.
 db4_devel_fail=0
 AC_CHECK_HEADER([db_cxx.h], ,[db4_devel_fail=1])
 test $db4_devel_fail == 1 && \
   AC_MSG_ERROR([db4-devel package missing. Please ensure both db4 and db4-devel are installed. (hint: "yum install db4-devel" should do it...)])
 
 gl_saved_libs=$LIBS
-AC_SEARCH_LIBS([__db_open], [db_cxx-4.7 db_cxx-4.6 db_cxx-4.5 db_cxx-4.4 db_cxx-4.3 db_cxx-4.2],
+AC_SEARCH_LIBS([__db_open], [db_cxx-4.8 db_cxx-4.7 db_cxx-4.6 db_cxx-4.5 db_cxx-4.4 db_cxx-4.3 db_cxx-4.2],
 		 [test "$ac_cv_search___db_open" = "none required" ||
 		  LIB_BERKELEY_DB=$ac_cv_search___db_open],
-		  AC_MSG_ERROR([Couldn't find required library in range db_cxx-4.2 through db_cxx-4.6]))
+		  AC_MSG_ERROR([Couldn't find required library in range db_cxx-4.2 through db_cxx-4.8]))
 AC_SUBST([LIB_BERKELEY_DB])
 LIBS=$gl_saved_libs
 

qmf.patch:
 bindings/qmf/ruby/qmf.rb                |    4 +--
 src/qmf/engine/ObjectImpl.h             |    2 -
 src/qpid/management/ManagementAgent.cpp |   34 +++++++++++++++++++++++++++++---
 src/qpid/management/ManagementAgent.h   |    3 ++
 4 files changed, 37 insertions(+), 6 deletions(-)

--- NEW FILE qmf.patch ---
Index: cpp/src/qmf/engine/ObjectImpl.h
===================================================================
--- cpp/src/qmf/engine/ObjectImpl.h	(revision 831913)
+++ cpp/src/qmf/engine/ObjectImpl.h	(working copy)
@@ -56,7 +56,7 @@
 
         void destroy();
         const ObjectId* getObjectId() const { return objectId.get(); }
-        void setObjectId(ObjectId* oid) { objectId.reset(oid); }
+        void setObjectId(ObjectId* oid) { objectId.reset(new ObjectId(*oid)); }
         const SchemaObjectClass* getClass() const { return objectClass; }
         Value* getValue(const std::string& key) const;
         void invokeMethod(const std::string& methodName, const Value* inArgs, void* context) const;
Index: cpp/src/qpid/management/ManagementAgent.h
===================================================================
--- cpp/src/qpid/management/ManagementAgent.h	(revision 831913)
+++ cpp/src/qpid/management/ManagementAgent.h	(working copy)
@@ -113,11 +113,13 @@
     //
     struct RemoteAgent : public Manageable
     {
+        ManagementAgent&  agent;
         uint32_t          brokerBank;
         uint32_t          agentBank;
         std::string       routingKey;
         ObjectId          connectionRef;
         qmf::org::apache::qpid::broker::Agent*    mgmtObject;
+        RemoteAgent(ManagementAgent& _agent) : agent(_agent) {}
         ManagementObject* GetManagementObject (void) const { return mgmtObject; }
         virtual ~RemoteAgent ();
     };
@@ -212,6 +214,7 @@
 
     void writeData ();
     void periodicProcessing (void);
+    void deleteObjectNowLH(const ObjectId& oid);
     void encodeHeader       (framing::Buffer& buf, uint8_t  opcode, uint32_t  seq = 0);
     bool checkHeader        (framing::Buffer& buf, uint8_t *opcode, uint32_t *seq);
     void sendBuffer         (framing::Buffer&             buf,
Index: cpp/src/qpid/management/ManagementAgent.cpp
===================================================================
--- cpp/src/qpid/management/ManagementAgent.cpp	(revision 831913)
+++ cpp/src/qpid/management/ManagementAgent.cpp	(working copy)
@@ -44,9 +44,11 @@
 
 ManagementAgent::RemoteAgent::~RemoteAgent ()
 {
-    if (mgmtObject != 0)
+    QPID_LOG(trace, "Remote Agent removed bank=[" << brokerBank << "." << agentBank << "]");
+    if (mgmtObject != 0) {
         mgmtObject->resourceDestroy();
-    QPID_LOG(trace, "Remote Agent removed bank=[" << brokerBank << "." << agentBank << "]");
+        agent.deleteObjectNowLH(mgmtObject->getObjectId());
+    }
 }
 
 ManagementAgent::ManagementAgent () :
@@ -443,6 +445,32 @@
     }
 }
 
+void ManagementAgent::deleteObjectNowLH(const ObjectId& oid)
+{
+    ManagementObjectMap::iterator iter = managementObjects.find(oid);
+    if (iter == managementObjects.end())
+        return;
+    ManagementObject* object = iter->second;
+    if (!object->isDeleted())
+        return;
+
+#define DNOW_BUFSIZE 2048
+    char     msgChars[DNOW_BUFSIZE];
+    uint32_t contentSize;
+    Buffer   msgBuffer(msgChars, DNOW_BUFSIZE);
+
+    encodeHeader(msgBuffer, 'c');
+    object->writeProperties(msgBuffer);
+    contentSize = msgBuffer.getPosition();
+    msgBuffer.reset();
+    stringstream key;
+    key << "console.obj.1.0." << object->getPackageName() << "." << object->getClassName();
+    sendBuffer(msgBuffer, contentSize, mExchange, key.str());
+    QPID_LOG(trace, "SEND Immediate(delete) ContentInd to=" << key.str());
+
+    managementObjects.erase(oid);
+}
+
 void ManagementAgent::sendCommandComplete (string replyToKey, uint32_t sequence,
                                             uint32_t code, string text)
 {
@@ -871,7 +899,7 @@
 
     assignedBank = assignBankLH(requestedAgentBank);
 
-    RemoteAgent* agent = new RemoteAgent;
+    RemoteAgent* agent = new RemoteAgent(*this);
     agent->brokerBank = brokerBank;
     agent->agentBank  = assignedBank;
     agent->routingKey = replyToKey;
Index: cpp/bindings/qmf/ruby/qmf.rb
===================================================================
--- cpp/bindings/qmf/ruby/qmf.rb	(revision 831913)
+++ cpp/bindings/qmf/ruby/qmf.rb	(working copy)
@@ -456,7 +456,7 @@
     attr_reader :impl, :agent_key
     def initialize(impl=nil)
       if impl
-        @impl = impl
+        @impl = Qmfengine::ObjectId.new(impl)
       else
         @impl = Qmfengine::ObjectId.new
       end
@@ -594,7 +594,7 @@
     attr_reader :impl
     def initialize(kwargs = {})
       if kwargs.include?(:impl)
-        @impl = kwargs[:impl]
+        @impl = Qmfengine::Query.new(kwargs[:impl])
       else
         package = ''
         if kwargs.include?(:key)


--- NEW FILE qpid-cpp.spec ---

%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%{!?ruby_sitelib: %global ruby_sitelib %(ruby -rrbconfig  -e 'puts Config::CONFIG["sitelibdir"]')}
%{!?ruby_sitearch: %global ruby_sitearch %(ruby -rrbconfig -e 'puts Config::CONFIG["sitearchdir"]')}

%global qpid_svnrev 829175
%global rhm_svnrev 3684

Name:          qpid-cpp
Version:       0.5.%{qpid_svnrev}
Release:       4%{?dist}
Summary:       Libraries for Qpid C++ client applications
Group:         System Environment/Libraries
License:       ASL 2.0 and LGPLv2
URL:           http://qpid.apache.org
Source0:       qpidc-%{version}.tar.gz
Source1:       rhm-0.5.%{rhm_svnrev}.tar.gz
Source2:       qpidd.pp
Patch0:        so_number.patch
Patch1:        qmf.patch
Patch2:        bz538355.patch
Patch3:        xqilla.patch
Patch4:        db4.patch

BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: boost-devel
BuildRequires: boost-program-options
BuildRequires: boost-filesystem
BuildRequires: doxygen
BuildRequires: e2fsprogs-devel
BuildRequires: libuuid-devel
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: ruby
BuildRequires: ruby-devel
BuildRequires: python
BuildRequires: python-devel
BuildRequires: cyrus-sasl-devel
BuildRequires: cyrus-sasl-lib
BuildRequires: cyrus-sasl
BuildRequires: libibverbs-devel
BuildRequires: librdmacm-devel
BuildRequires: nss-devel
BuildRequires: nspr-devel
BuildRequires: xqilla-devel
BuildRequires: xerces-c-devel
BuildRequires: corosynclib-devel >= 1.0.0-1
BuildRequires: clusterlib-devel >= 3.0.0-20
BuildRequires: swig

%ifarch i386 i586 i686 x86_64
#RHM
BuildRequires: db4-devel
BuildRequires: libaio-devel
#/RHM
%endif

%description
Run-time libraries for AMQP client applications developed using Qpid
C++. Clients exchange messages with an AMQP message broker using
the AMQP protocol.

%package client
Summary: Libraries for Qpid C++ client applications
Requires: boost
Obsoletes: qpidc < %{version}-4
Provides: qpidc = %{version}-4
License: ASL 2.0

Requires(post):/sbin/chkconfig
Requires(preun):/sbin/chkconfig
Requires(preun):/sbin/service
Requires(postun):/sbin/service

%description client
Run-time libraries for AMQP client applications developed using Qpid
C++. Clients exchange messages with an AMQP message broker using
the AMQP protocol.

%package client-devel
Summary: Header files and documentation for developing Qpid C++ clients
Group: Development/System
Requires: qpid-cpp-client = %{version}-%{release}
Requires: boost-devel
Requires: boost-program-options
Requires: boost-filesystem
Requires: e2fsprogs-devel
Requires: libuuid-devel
Requires: python
Obsoletes: qpidc-devel < %{version}-4
Provides: qpidc-devel = %{version}-4
License: ASL 2.0

%description client-devel
Libraries, header files and documentation for developing AMQP clients
in C++ using Qpid.  Qpid implements the AMQP messaging specification.

%package client-devel-docs
Summary: AMQP client development documentation
Group: Documentation
BuildArch: noarch
Obsoletes: qpidc-devel-docs < %{version}-4
Provides: qpidc-devel-docs = %{version}-4
License: ASL 2.0

%description client-devel-docs
This package includes the AMQP clients development documentation in HTML
format for easy browsing.

%package server
Summary: An AMQP message broker daemon
Group: System Environment/Daemons
Requires: qpid-cpp-client = %{version}-%{release}
Requires: cyrus-sasl
Obsoletes: qpidd < %{version}-4
Provides: qpidd = %{version}-4
Requires(post): policycoreutils
Requires(post): selinux-policy-minimum
Requires(post): /usr/sbin/semodule
Requires(postun): /usr/sbin/semodule
License: ASL 2.0

%description server
A message broker daemon that receives stores and routes messages using
the open AMQP messaging protocol.

%package server-devel
Summary: Libraries and header files for developing Qpid broker extensions
Group: Development/System
Requires: qpid-cpp-client-devel = %{version}-%{release}
Requires: qpid-cpp-server = %{version}-%{release}
Requires: boost-devel
Requires: boost-program-options
Requires: boost-filesystem
Obsoletes: qpidd-devel < %{version}-4
Provides: qpidd-devel = %{version}-4
License: ASL 2.0

%description server-devel
Libraries and header files for developing extensions to the
Qpid broker daemon.

%package -n qmf
Summary: The QPID Management Framework
Group: System Environment/Daemons
Requires: qpid-cpp-client = %{version}-%{release}
License: ASL 2.0

%description -n qmf
An extensible managememt framework layered on QPID messaging.

%package -n qmf-devel
Summary: Header files and tools for developing QMF extensions
Group: Development/System
Requires: qmf = %{version}-%{release}
Requires: qpid-cpp-client-devel = %{version}-%{release}
License: ASL 2.0

%description -n qmf-devel
Header files and code-generation tools needed for developers of QMF-managed
components.

%package -n ruby-qmf
Summary: The QPID Management Framework bindings for ruby
Group: System Environment/Libraries
Requires: qpid-cpp-client = %{version}-%{release}
License: ASL 2.0

%description -n ruby-qmf
An extensible managememt framework layered on QPID messaging, bindings
for ruby.

%package server-acl
Summary: ACL based security for the Qpid daemon
Group: System Environment/Libraries
Requires: qpid-cpp-server = %{version}-%{release}
Obsoletes: qpidd-acl < %{version}-4
Provides: qpidd-acl = %{version}-4
License: ASL 2.0

%description server-acl
A Qpid daemon plugin to support ACL-based access control.

%package client-rdma
Summary: RDMA Protocol support (including Infiniband) for Qpid clients
Group: System Environment/Libraries
Requires: qpid-cpp-client = %{version}-%{release}
Obsoletes: qpidc-rdma < %{version}-4
Provides: qpidc-rdma = %{version}-4
License: ASL 2.0

%description client-rdma
A client plugin and support library to support RDMA protocols (including
Infiniband) as the transport for Qpid messaging.

%package server-rdma
Summary: RDMA Protocol support (including Infiniband) for the Qpid daemon
Group: System Environment/Libraries
Requires: qpid-cpp-server = %{version}-%{release}
Requires: qpid-cpp-client-rdma = %{version}-%{release}
Obsoletes: qpidd-rdma < %{version}-4
Provides: qpidd-rdma = %{version}-4
License: ASL 2.0

%description server-rdma
A Qpid daemon plugin to support RDMA protocols (including Infiniband) as the
transport for AMQP messaging.

%package client-ssl  
Summary: SSL support for Qpid clients
Group: System Environment/Libraries
Requires: qpid-cpp-client = %{version}-%{release}
Obsoletes: qpidc-ssl < %{version}-4
Provides: qpidc-ssl = %{version}-4
License: ASL 2.0

%description client-ssl
A client plugin and support library to support SSL as the transport
for Qpid messaging.

%package server-ssl
Summary: SSL support for the Qpid daemon
Group: System Environment/Libraries
Requires: qpid-cpp-server = %{version}-%{release}
Requires: qpid-cpp-client-ssl = %{version}-%{release}
Obsoletes: qpidd-ssl < %{version}-4
Provides: qpidd-ssl = %{version}-4
License: ASL 2.0

%description server-ssl
A Qpid daemon plugin to support SSL as the transport for AMQP
messaging.

%package server-xml
Summary: XML extensions for the Qpid daemon
Group: System Environment/Libraries
Requires: qpid-cpp-server = %{version}-%{release}
Requires: xqilla
Requires: xerces-c
Obsoletes: qpidd-xml < %{version}-4
Provides: qpidd-xml = %{version}-4
License: ASL 2.0

%description server-xml
A Qpid daemon plugin to support extended XML-based routing of AMQP
messages.

%package server-cluster
Summary: Cluster support for the Qpid daemon
Group: System Environment/Daemons
Requires: qpid-cpp-server = %{version}-%{release}
Requires: qpid-cpp-client = %{version}-%{release}
Requires: corosync >= 1.0.0-1
Requires: clusterlib >= 3.0.0-20
Obsoletes: qpidd-cluster < %{version}-4
Provides: qpidd-cluster = %{version}-4
License: ASL 2.0

%description server-cluster
A Qpid daemon plugin enabling broker clustering using openais

%package perftest
Summary: Simple benchmarking tools
Group: System Environment/Tools
Requires: qpid-cpp-client = %{version}-%{release}
Obsoletes: qpidc-perftest < %{version}-4
Provides: qpidc-perftest = %{version}-4
License: ASL 2.0

%description perftest
Tools for performing testing and benchmarking of MRG-Messaging

%ifarch i386 i586 i686 x86_64
#RHM
%package server-store
Summary: Red Hat persistence extension to the Qpid messaging system
Group: System Environment/Libraries
Requires: qpid-cpp-server = %{version}-%{release}
Requires: db4
Obsoletes: rhm < 0.5.%{rhm_svnrev}-4
Provides: rhm = 0.5.%{rhm_svnrev}-4
License: LGPLv2

%description server-store
Red Hat persistence extension to the Qpid AMQP broker: persistent message
storage using either a libaio-based asynchronous journal, or synchronously
with Berkeley DB.
#/RHM
%endif

%pre server
getent group qpidd >/dev/null || groupadd -r qpidd
getent passwd qpidd >/dev/null || \
  useradd -r -M -g qpidd -d %{_localstatedir}/lib/qpidd -s /sbin/nologin \
    -c "Owner of Qpidd Daemons" qpidd
exit 0

%prep
%setup -q -n qpidc-%{version}
%patch0
%patch1
%patch2
%patch3 -p1
install -d selinux
install %{SOURCE2} selinux

%setup -q -T -D -b 1 -n rhm-0.5.%{rhm_svnrev}
%patch4 -p1

# fix spurious-executable-perm warnings
find ../ \( -name '*.h' -o -name '*.cpp' \) -executable | xargs chmod a-x

%global perftests "perftest topic_listener topic_publisher latencytest client_test txtest"

%build
pushd ../qpidc-0.5.829175/cpp
./bootstrap
CXXFLAGS="%{optflags} -DNDEBUG -O3" \
%configure --disable-static --with-cpg --without-graphviz --without-help2man
ECHO=echo make #%{?_smp_mflags}

# Make perftest utilities
pushd src/tests
for ptest in %{perftests}; do
  ECHO=echo make $ptest
done
popd
popd

%ifarch i386 i586 i686 x86_64
#RHM
pushd ../rhm-0.5.%{rhm_svnrev}
export CXXFLAGS="%{optflags} -DNDEBUG" 
./bootstrap
%configure --disable-static --disable-rpath --disable-dependency-tracking --with-qpid-checkout=%{_builddir}/qpidc-%{version}
make dist
make #%{?_smp_mflags}
popd
#/RHM
%endif

%install
rm -rf %{buildroot}
mkdir -p -m0755 %{buildroot}/%_bindir
pushd %{_builddir}/qpidc-%{version}/cpp
make install DESTDIR=%{buildroot}
install -Dp -m0755 etc/qpidd %{buildroot}%{_initrddir}/qpidd
install -d -m0755 %{buildroot}%{_localstatedir}/lib/qpidd
install -d -m0755 %{buildroot}%{_libdir}/qpidd
install -d -m0755 %{buildroot}/var/run/qpidd
# Install perftest utilities
pushd src/tests/
for ptest in %{perftests}; do
  libtool --mode=install install -m755 $ptest %{buildroot}/%_bindir
done
popd
pushd docs/api
make html
popd
rm -f %{buildroot}%_libdir/*.a
rm -f %{buildroot}%_libdir/*.l
rm -f %{buildroot}%_libdir/*.la
rm -f %{buildroot}%_libdir/librdmawrap.so
rm -f %{buildroot}%_libdir/libsslcommon.so
rm -f %{buildroot}%_libdir/qpid/client/*.la
rm -f %{buildroot}%_libdir/qpid/daemon/*.la

# disable auth by default
echo "auth=no" >> %{buildroot}/etc/qpidd.conf

install -d %{buildroot}%{_datadir}/selinux/packages
install -m 644 %{_builddir}/qpidc-%{version}/selinux/qpidd.pp %{buildroot}%{_datadir}/selinux/packages
install -pm 644 %{_builddir}/qpidc-%{version}/cpp/bindings/qmf/ruby/qmf.rb %{buildroot}%{ruby_sitelib}
install -pm 755 %{_builddir}/qpidc-%{version}/cpp/bindings/qmf/ruby/.libs/qmfengine.so %{buildroot}%{ruby_sitearch}

rm -f %{buildroot}%_libdir/_*
rm -fr %{buildroot}%_libdir/qpid/tests
rm -fr %{buildroot}%_libexecdir/qpid/tests
rm -f %{buildroot}%{ruby_sitearch}/qmfengine.la
popd

%ifarch i386 i586 i686 x86_64
#RHM
pushd %{_builddir}/rhm-0.5.%{rhm_svnrev}
make install DESTDIR=%{buildroot}
install -d -m0775 %{buildroot}%{_localstatedir}/rhm
install -d -m0755 %{buildroot}%{_libdir}/qpid/daemon
rm -f %{buildroot}%_libdir/qpid/daemon/*.a
rm -f %{buildroot}%_libdir/qpid/daemon/*.la
rm -f %{buildroot}%_libdir/*.a
rm -f %{buildroot}%_libdir/*.la
rm %{buildroot}%_sysconfdir/rhmd.conf
popd
#/RHM
%endif

%clean
rm -rf %{buildroot}

%check
#pushd %{_builddir}/%{name}-%{version}/cpp
# LANG=C needs to be in the environment to deal with a libtool issue
# temporarily disabling make check due to libtool issues
# needs to be re-enabled asap
#LANG=C ECHO=echo make check
#popd

%ifarch i386 i586 i686 x86_64
#RHM
#pushd %{_builddir}/rhm-0.5.%{rhm_svnrev}
#make check
#popd
#/RHM
%endif

%files client
%defattr(-,root,root,-)
%doc ../qpidc-%{version}/cpp/LICENSE
%doc ../qpidc-%{version}/cpp/NOTICE
%doc ../qpidc-%{version}/cpp/README 
%doc ../qpidc-%{version}/cpp/INSTALL
%doc ../qpidc-%{version}/cpp/RELEASE_NOTES 
%doc ../qpidc-%{version}/cpp/DESIGN
%_libdir/libqpidcommon.so.3
%_libdir/libqpidcommon.so.3.0.0
%_libdir/libqpidclient.so.3
%_libdir/libqpidclient.so.3.0.0
%dir %_libdir/qpid
%dir %_libdir/qpid/client
%dir %_sysconfdir/qpid
%config(noreplace) %_sysconfdir/qpid/qpidc.conf

%files client-devel
%defattr(-,root,root,-)
%dir %_includedir/qpid
%_includedir/qpid/*.h
%_includedir/qpid/amqp_0_10
%_includedir/qpid/client
%_includedir/qpid/console
%_includedir/qpid/framing
%_includedir/qpid/sys
%_includedir/qpid/log
%_includedir/qpid/management
%_includedir/qpid/messaging
%_includedir/qpid/agent
%_includedir/qmf
%_libdir/libqpidcommon.so
%_libdir/libqpidclient.so
%_datadir/qpidc/examples

%files server
%defattr(-,root,root,-)
%_datadir/selinux/packages/qpidd.pp
%_libdir/libqpidbroker.so.3
%_libdir/libqpidbroker.so.3.0.0
%_libdir/qpid/daemon/replicating_listener.so
%_libdir/qpid/daemon/replication_exchange.so
%_libdir/qpid/daemon/watchdog.so
%_sbindir/qpidd
%_libexecdir/qpid/qpidd_watchdog
%config(noreplace) %_sysconfdir/qpidd.conf
%config(noreplace) %_sysconfdir/sasl2/qpidd.conf
%{_initrddir}/qpidd
%dir %_libdir/qpid/daemon
%attr(755, qpidd, qpidd) %_localstatedir/lib/qpidd
%attr(755, qpidd, qpidd) /var/run/qpidd
# qpidd.sasldb contains sasl credentials, needs to be readable only by root
%attr(600, qpidd, qpidd) %config(noreplace) %_localstatedir/lib/qpidd/qpidd.sasldb
%doc %_mandir/man1/qpidd.*

%files server-devel
%defattr(-,root,root,-)
%defattr(-,root,root,-)
%_libdir/libqpidbroker.so
%_includedir/qpid/broker

%files -n qmf
%defattr(-,root,root,-)
%_libdir/libqmf.so.1
%_libdir/libqmf.so.1.0.0
%_libdir/libqmfengine.so.1
%_libdir/libqmfengine.so.1.0.1
%_libdir/libqmfconsole.so.3
%_libdir/libqmfconsole.so.3.0.0

%files -n qmf-devel
%defattr(-,root,root,-)
%_libdir/libqmf.so
%_libdir/libqmfengine.so
%_libdir/libqmfconsole.so
%_bindir/qmf-gen
%{python_sitelib}/qmfgen

%files -n ruby-qmf
%defattr(-,root,root,-)
%{ruby_sitelib}/qmf.rb
%{ruby_sitearch}/qmfengine.so

%files server-acl
%defattr(-,root,root,-)
%_libdir/qpid/daemon/acl.so

%files client-rdma
%defattr(-,root,root,-)
%_libdir/librdmawrap.so.0
%_libdir/librdmawrap.so.0.0.0
%_libdir/qpid/client/rdmaconnector.so
%config(noreplace) %_sysconfdir/qpid/qpidc.conf

%files server-rdma
%defattr(-,root,root,-)
%_libdir/qpid/daemon/rdma.so

%files client-ssl
%defattr(-,root,root,-)
%_libdir/libsslcommon.so.3
%_libdir/libsslcommon.so.3.0.0
%_libdir/qpid/client/sslconnector.so

%files server-ssl
%defattr(-,root,root,-)
%_libdir/qpid/daemon/ssl.so

%files server-xml
%defattr(-,root,root,-)
%_libdir/qpid/daemon/xml.so

%files server-cluster
%defattr(-,root,root,-)
%_libdir/qpid/daemon/cluster.so

%files perftest
%defattr(755,root,root,-)
%_bindir/perftest
%_bindir/topic_listener
%_bindir/topic_publisher
%_bindir/latencytest
%_bindir/client_test
%_bindir/txtest

%files client-devel-docs
%defattr(-,root,root,-)
%doc ../qpidc-%{version}/cpp/docs/api/html

%ifarch i386 i586 i686 x86_64
%files server-store
%defattr(-,root,root,-)
%doc ../rhm-0.5.%{rhm_svnrev}/README 
%{_libdir}/qpid/daemon/msgstore.so*
# /var/rhm needs to be group writable so that journal files can be updated properly
%attr(0775,qpidd,qpidd) %dir %_localstatedir/rhm
%endif

%post client -p /sbin/ldconfig

%postun client -p /sbin/ldconfig

%post server
# This adds the proper /etc/rc*.d links for the script
/sbin/chkconfig --add qpidd
/sbin/ldconfig
/usr/sbin/semodule -i %_datadir/selinux/packages/qpidd.pp

%preun server
# Check that this is actual deinstallation, not just removing for upgrade.
if [ $1 = 0 ]; then
        /sbin/service qpidd stop >/dev/null 2>&1 || :
        /sbin/chkconfig --del qpidd
fi

%postun server
if [ "$1" -ge "1" ]; then
        /sbin/service qpidd condrestart >/dev/null 2>&1 || :
fi
/sbin/ldconfig

/usr/sbin/semodule -r qpidd

%post client-rdma -p /sbin/ldconfig

%postun client-rdma -p /sbin/ldconfig

%post client-ssl -p /sbin/ldconfig

%postun client-ssl -p /sbin/ldconfig

%post -n qmf -p /sbin/ldconfig

%postun -n qmf -p /sbin/ldconfig

%changelog
* Mon Feb  8 2010 Nuno Santos <nsantos at nsantos-laptop> - 0.5.829175-4
- Package rename

* Wed Dec  2 2009 Nuno Santos <nsantos at redhat.com> - 0.5.829175-3
- Patch for BZ538355

* Tue Nov  3 2009 Nuno Santos <nsantos at redhat.com> - 0.5.829175-2
- Add patch for qmf fixes

* Fri Oct 23 2009 Nuno Santos <nsantos at redhat.com> - 0.5.829175-1
- Rebased to svn rev 829175

* Thu Oct 15 2009 Nuno Santos <nsantos at redhat.com> - 0.5.825677-1
- Rebased to svn rev 825677

* Tue Sep 29 2009 Nuno Santos <nsantos at redhat.com> - 0.5.819819-1
- Rebased to svn rev 819819 for F12 beta

* Thu Sep 24 2009 Nuno Santos <nsantos at redhat.com> - 0.5.818599-1
- Rebased to svn rev 818599
- rhm-cpp-server-store obsoletes rhm top-level package

* Fri Sep 19 2009 Nuno Santos <nsantos at redhat.com> - 0.5.817349
- Rebased to svn rev 817349

* Wed Jul 29 2009 Fabio M. Di Nitto <fdinitto at redhat.com> - 0.5.790661-3
- Update BuildRequires and Requires to use latest stable versions of
  corosync and clusterlib.
- Unbreak perftests define (and fix vim spec syntax coloring).

* Sun Jul 26 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.5.790661-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild

* Thu Jul  2 2009 Nuno Santos <nsantos at redhat.com> - 0.5.790661-1
- Rebased to svn rev 790661; .so lib numbers bumped

* Fri Jun 26 2009 Nuno Santos <nsantos at redhat.com> - 0.5.788782-1
- Rebased to svn rev 788782

* Mon Jun 22 2009 Nuno Santos <nsantos at redhat.com> - 0.5.787286-1
- Rebased to svn rev 787286

* Wed Jun 10 2009 Fabio M. Di Nitto <fdinitto at redhat.com> - 0.5.752600-8
- update BuildRequires to use corosynclib-devel in correct version.
- update BuildRequires to use clusterlib-devel instead of the obsoleted
  cmanlib-devel.
- drop Requires on cmanlib. This should come in automatically as part
  of the rpm build process.
- re-align package version to -8. -7 didn't have a changelog entry?
- add patch to port Cluster/Cpg to newest Cpg code.
- change patch tag to use patch0.

* Mon May  4 2009 Nuno Santos <nsantos at redhat.com> - 0.5.752600-5
- patch for SASL credentials refresh

* Wed Apr  1 2009 Michael Schwendt <mschwendt at fedoraproject.org> - 0.5.752600-5
- Fix unowned examples directory in -devel pkg.

* Mon Mar 16 2009 Nuno Santos <nsantos at localhost.localdomain> - 0.5.752600-4
- BZ483925 - split docs into a separate noarch subpackage

* Mon Mar 16 2009 Nuno Santos <nsantos at redhat.com> - 0.5.752600-3
- Disable auth by default; fix selinux requires

* Wed Mar 11 2009 Nuno Santos <nsantos at redhat.com> - 0.5.752600-1
- Rebased to svn rev 752600

* Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.4.738618-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Wed Feb 25 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.4.738618-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild

* Wed Jan 28 2009 Nuno Santos <nsantos at redhat.com> - 0.4.738618-2
- Rebased to svn rev 738618

* Tue Jan 20 2009 Nuno Santos <nsantos at redhat.com> - 0.4.734452-3
- BZ474614 and BZ474613 - qpidc/rhm unowned directories

* Thu Jan 15 2009 Nuno Santos <nsantos at redhat.com> - 0.4.734452-1
- Rebased to svn rev 734452

* Tue Dec 23 2008 Nuno Santos <nsantos at redhat.com> - 0.4.728142-1
- Rebased to svn rev 728142
- Re-enable cluster, now using corosync

* Tue Dec  2 2008 Nuno Santos <nsantos at redhat.com> - 0.3.722557-1
- Rebased to svn rev 722557
- Temporarily disabled cluster due to openais version incompatibility

* Wed Nov 26 2008 Nuno Santos <nsantos at redhat.com> - 0.3.720979-1
- Rebased to svn rev 720979

* Fri Nov 21 2008  Mick Goulish <mgoulish at redhat.com>
- updated to 719552

* Thu Nov 20 2008  Mick Goulish <mgoulish at redhat.com>
- updated to 719323
- For subpackage qpidd-cluster, added dependency to cman-devel.
- For subpackage qpidd-cluster, added dependency to qpidc.
- added BuildRequires cman-devel

* Fri Nov 14 2008 Justin Ross <jross at redhat.com> - 0.3.714072-1
- Update to svn rev 714072
- Enable building --with-cpg

* Wed Nov 12 2008 Justin Ross <jross at redhat.com> - 0.3.713378-1
- Update to svn rev 713378

* Fri Nov  7 2008 Justin Ross <jross at redhat.com> - 0.3.712127-1
- Update to svn rev 712127

* Thu Nov  6 2008 Nuno Santos <nsantos at redhat.com> - 0.3.711915-2
- Removed extraneous openais-devel dependency

* Thu Nov  6 2008 Justin Ross <jross at redhat.com> - 0.3.711915-1
- Update to svn rev 711915

* Tue Nov  4 2008 Nuno Santos <nsantos at redhat.com> - 0.3.709187-2
- Remove extraneous dependency

* Thu Oct 30 2008 Nuno Santos <nsantos at redhat.com> - 0.3.709187-1
- Rebsed to svn rev 709187

* Tue Oct 28 2008 Nuno Santos <nsantos at redhat.com> - 0.3.708576-1
- Rebased to svn rev 708576

* Mon Oct 27 2008 Nuno Santos <nsantos at redhat.com> - 0.3.708210-1
- Rebased to svn rev 708210; address make check libtool issue

* Fri Oct 24 2008 Justin Ross <jross at redhat.com> - 0.3.707724-1
- Update to revision 707724

* Thu Oct 23 2008 Justin Ross <jross at redhat.com> - 0.3.707468-1
- Don't use silly idenity defines
- Add new ssl and rdma subpackages
- Move cluster and xml plugins into their own subpackages
- Reflect new naming of plugins

* Wed Aug 21 2008 Justin Ross <jross at redhat.com> - 0.2.687156-1
- Update to source revision 687156 of the qpid.0-10 branch

* Wed Aug 14 2008 Justin Ross <jross at redhat.com> - 0.2.685273-1
- Update to source revision 685273 of the qpid.0-10 branch

* Wed Aug  6 2008 Justin Ross <jross at redhat.com> - 0.2.683301-1
- Update to source revision 683301 of the qpid.0-10 branch

* Thu Jul 15 2008 Justin Ross <jross at redhat.com> - 0.2.676581-1
- Update to source revision 676581 of the qpid.0-10 branch
- Work around home dir creation problem
- Use a license string that rpmlint likes

* Thu Jul 10 2008 Nuno Santos <nsantos at redhat.com> - 0.2.667603-3
- BZ453818: added additional tests to -perftest

* Thu Jun 13 2008 Justin Ross <jross at redhat.com> - 0.2.667603-1
- Update to source revision 667603

* Thu Jun 12 2008 Justin Ross <jross at redhat.com> - 0.2.667253-1
- Update to source revision 667253

* Thu Jun 12 2008 Nuno Santos <nsantos at redhat.com> - 0.2.666138-5
- add missing doc files

* Wed Jun 11 2008 Justin Ross <jross at redhat.com> - 0.2.666138-3
- Added directories for modules and pid files to install script

* Wed May 28 2008 David Sommerseth <dsommers at redhat.com> - 0.2.663761-1
- Added perftest utilities

* Thu May 22 2008 Nuno Santos <nsantos at redhat.com> - 0.2.656926-4
- Additional build flags for i686

* Tue May 20 2008 Nuno Santos <nsantos at redhat.com> - 0.2.656926-3
- BZ 432872: remove examples, which are being packaged separately

* Tue May 20 2008 Justin Ross <jross at redhat.com> -0.2.656926-2
- Drop build requirements for graphviz and help2man

* Wed May 14 2008 Nuno Santos <nsantos at redhat.com> - 0.2-34
- Bumped for Beta 4 release

* Fri May  9 2008 Matthew Farrellee <mfarrellee at redhat> - 0.2-33
- Moved qpidd.conf from qpidc package to qpidd package
- Added BuildRequires xqilla-devel and xerces-c-devel to qpidd for XML Exchange
- Added BuildRequires openais-devel to qpidd for CPG
- Added missing Requires xqilla-devel to qpidd-devel

* Thu May  8 2008 Matthew Farrellee <mfarrellee at redhat> - 0.2-32
- Added sasl2 config file for qpidd
- Added cyrus-sasl dependencies

* Wed May  7 2008 Matthew Farrellee <mfarrellee at redhat> - 0.2-31
- Added python dependency, needed by managementgen

* Wed May  7 2008 Matthew Farrellee <mfarrellee at redhat> - 0.2-30
- Added management-types.xml to qpidc-devel package

* Tue May  6 2008 Matthew Farrellee <mfarrellee at redhat> - 0.2-29
- Added managementgen to the qpidc-devel package

* Mon Apr 14 2008 Nuno Santos <nsantos at redhat.com> - 0.2-28
 - Fix home dir permissions
 - Bumped for Fedora 9

* Mon Mar 31 2008 Nuno Santos <nsantos at redhat.com> - 0.2-25
- Create user qpidd, start qpidd service as qpidd

* Mon Feb 18 2008 Rafael Schloming <rafaels at redhat.com> - 0.2-24
- Bug fix for TCK issue in Beta 3

* Thu Feb 14 2008 Rafael Schloming <rafaels at redhat.com> - 0.2-23
- Bumped to pull in fixes for Beta 3

* Tue Feb 12 2008 Alan Conway <aconway at redhat.com> - 0.2-22
- Added -g to compile flags for debug symbols.

* Tue Feb 12 2008 Alan Conway <aconway at redhat.com> - 0.2-21
- Create /var/lib/qpidd correctly.

* Mon Feb 11 2008 Rafael Schloming <rafaels at redhat.com> - 0.2-20
- bumped for Beta 3

* Mon Jan 21 2008 Gordon Sim <gsim at redhat.com> - 0.2-18
- bump up rev for recent changes to plugin modules & mgmt

* Thu Jan 03 2008 Nuno Santos <nsantos at redhat.com> - 0.2-17
- add missing header file SessionManager.h

* Thu Jan 03 2008 Nuno Santos <nsantos at redhat.com> - 0.2-16
- limit builds to i386 and x86_64 archs

* Thu Jan 03 2008 Nuno Santos <nsantos at redhat.com> - 0.2-15
- add ruby as a build dependency

* Tue Dec 18 2007 Nuno Santos <nsantos at redhat.com> - 0.2-14
- include fixes from Gordon Sim (fragmentation, lazy-loading, staging) 
  and Alan Conway (exception handling in the client).

* Thu Dec 6 2007 Alan Conway <aconway at redhat.com> - 0.2-13
- installcheck target to build examples in installation.

* Thu Nov 8 2007 Alan Conway <aconway at redhat.com> - 0.2-10
- added examples to RPM package.

* Thu Oct 9 2007 Alan Conway <aconway at redhat.com> - 0.2-9
- added config(noreplace) for qpidd.conf

* Thu Oct 4 2007 Alan Conway <aconway at redhat.com> - 0.2-8
- Added qpidd.conf configuration file.
- Updated man page to detail configuration options.

* Thu Sep 20 2007 Alan Conway <aconway at redhat.com> - 0.2-7
- Removed apr dependency.

* Wed Aug 1 2007 Alan Conway <aconway at redhat.com> - 0.2-6
- added --disable-cluster flag

* Tue Apr 17 2007 Alan Conway <aconway at redhat.com> - 0.2-5
- Add missing Requires: e2fsprogs-devel for qpidc-devel.

* Tue Apr 17 2007 Alan Conway <aconway at redhat.com> - 0.2-4
- longer broker_start timeout to avoid failures in plague builds.

* Tue Apr 17 2007 Alan Conway <aconway at redhat.com> - 0.2-3
- Add missing Requires: apr in qpidc.

* Mon Apr 16 2007 Alan Conway <aconway at redhat.com> - 0.2-2
- Bugfix for memory errors on x86_64.

* Thu Apr 12 2007 Alan Conway <aconway at redhat.com> - 0.2-1
- Bumped version number for rhm dependencies.

* Wed Apr 11 2007 Alan Conway <aconway at redhat.com> - 0.1-5
- Add qpidd-devel sub-package.

* Mon Feb 19 2007 Jim Meyering <meyering at redhat.com> - 0.1-4
- Address http://bugzilla.redhat.com/220630:
- Remove redundant "cppunit" build-requires.
- Add --disable-static.

* Thu Jan 25 2007 Alan Conway <aconway at redhat.com> - 0.1-3
- Applied Jim Meyerings fixes from http://mail-archives.apache.org/mod_mbox/incubator-qpid-dev/200701.mbox/<87hcugzmyp.fsf@rho.meyering.net>

* Mon Dec 22 2006 Alan Conway <aconway at redhat.com> - 0.1-1
- Fixed all rpmlint complaints (with help from David Lutterkort)
- Added qpidd --daemon behaviour, fix init.rc scripts

* Fri Dec  8 2006 David Lutterkort <dlutter at redhat.com> - 0.1-1
- Initial version based on Jim Meyering's sketch and discussions with Alan
  Conway


--- NEW FILE qpidd.pp ---
ÿ|ù         ÌB  ÿ|ù   SE Linux Module                   qpidd   1.0        -   -          $             netlink_audit_socket      nlmsg_relay   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_readpriv      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read
                    tcp_socket   
   append      bind      connect      create      write      relabelfrom
      acceptfrom	      connectto      ioctl	      name_bind	      node_bind      newconn      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      name_connect      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen          
   
       msgq	      associate      create      write	      unix_read      destroy      getattr      setattr      read   
   enqueue
   	   unix_write                    dir      rmdir   
   append      create      execute      write      relabelfrom      link      unlink      ioctl      remove_name      getattr      setattr      add_name      reparent      read   
   rename      search      lock	   	   relabelto      mounton      quotaon      swapon                    blk_file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl      getattr      setattr      read   
   rename      lock	   	   relabelto      mounton      quotaon      swapon       
             chr_file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl
      entrypoint      getattr      setattr      execmod      read   
   rename      lock	   	   relabelto      execute_no_trans      mounton      quotaon      swapon          	   	       ipc	      associate      create      write	      unix_read      destroy      getattr      setattr      read
   	   unix_write       	             lnk_file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl      getattr      setattr      read   
   rename      lock	   	   relabelto      mounton      quotaon      swapon                    process      getcap      setcap      sigstop      sigchld      share      execheap
      setcurrent      setfscreate      setkeycreate      siginh
      dyntransition
      transition      fork
      getsession
      noatsecure      sigkill      signull	      setrlimit      getattr   	   getsched      setexec   
   setsched      getpgid   
   setpgid      ptrace	      execstack	      rlimitinh
      setsockcreate      signal      execmem                    fd      use       *             packet      flow_out      send      recv	      relabelto      flow_in                    socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen	       
             fifo_file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl      getattr      setattr      read   
   rename      lock	   	   relabelto      mounton      quotaon      swapon                    file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl
      entrypoint      getattr      setattr      execmod      read   
   rename      lock	   	   relabelto      execute_no_trans      mounton      quotaon      swapon          	   	       node
      rawip_recv      tcp_recv      udp_recv
      rawip_send      tcp_send      udp_send	      dccp_recv	   	   dccp_send      enforce_dest       !             netlink_nflog_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen       +             key      create      write      view      link      setattr      read      search                     netlink_tcpdiag_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read                    unix_stream_socket   
   append      bind      connect      create      write      relabelfrom
      acceptfrom	      connectto      ioctl	      name_bind      newconn      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen                    netlink_route_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read          
   
       shm	      associate      create      write	      unix_read      destroy      getattr      setattr      read   
   lock
   	   unix_write       #             netlink_selinux_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
                    capability   	   setpcap      fowner      sys_boot      sys_tty_config      net_raw	      sys_admin
      sys_chroot
      sys_module	      sys_rawio      dac_override	      ipc_owner      kill      dac_read_search	      sys_pacct
      net_broadcast      net_bind_service      sys_nice      sys_time      fsetid      mknod      setgid      setuid      lease	   
   net_admin      audit_write   
   linux_immutable
      sys_ptrace
      audit_control      ipc_lock      sys_resource      chown       %             netlink_ip6fw_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read       ,             dccp_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind	      node_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      name_connect      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen                    netlink_firewall_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read	                    sock_file   
   append      create      execute      write      relabelfrom      link      unlink      ioctl      getattr      setattr      read   
   rename      lock	   	   relabelto      mounton      quotaon      swapon                    unix_dgram_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen       (             netlink_kobject_uevent_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
          
   
       filesystem	      associate   
   quotaget      relabelfrom
      transition      getattr   	   quotamod      mount      remount      unmount	      relabelto       "             netlink_xfrm_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      nlmsg_write      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
      nlmsg_read       &             netlink_dnrt_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
                    key_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen                    netif
      rawip_recv      tcp_recv      udp_recv
      rawip_send      tcp_send      udp_send	      dccp_recv	      dccp_send
                    packet_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen
       -             memprotect	      mmap_zero                    msg      send      receive
                    udp_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind	      node_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen       )             appletalk_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen                    rawip_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind	      node_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen       '             association
      setcontext      sendto      recvfrom      polmatch                    netlink_socket   
   append      bind      connect      create      write      relabelfrom      ioctl	      name_bind      sendto      recv_msg      send_msg      getattr      setattr      accept      getopt      read      setopt      shutdown      recvfrom      lock	   	   relabelto   
   listen          	   	       sem	      associate      create      write	      unix_read      destroy      getattr      setattr      read
   	   unix_write                    system      ipc_info      syslog_read      syslog_console
      syslog_mod                    security      compute_member      compute_user      compute_create
      setenforce
      check_context      setcheckreqprot      compute_relabel   	   setbool      load_policy   
   setsecparam
      compute_av            object_r@           @           @                     system_r@   @                 @           @                                  @           initrc_t             @           ccs_t             @           tmpfs_t                             s0   @                           c0          c1023                           @   @                 @               @   @                 @                               @   @                 @               @   @                 @                     W         @   @                 @               @   @                 @                     ô         @   @                 @               @   @                 @                     ô        @   @                 @               @           @                      €              @           @   @          ÿÿÿÿÿ  @   @                 @   @                 @           @           @   @   
               @   @                 -   @   @          ÿ      @   @          ÿÿÿ?    @   @                 @   @          ÿÿÿ    @   @          ÿ      @   @          ÿÿ     @   @          ÿÿ?     @   @                 @   @          ÿÿ     @   @          ÿÿ     @   @          ÿÿ     @   @          ÿÿ     @   @          ÿÿ     @   @          ÿÿ?     @   @          ÿÿÿ    @   @          ÿÿ     @   @          ÿÿ     @   @          ÿ      @   @          ÿ       @   @          ÿÿ?     @   @          ÿÿ?     @   @          ÿÿ?     @   @          ÿÿÿ    @   @          ÿÿ?     @   @          ÿ      @   @                 @   @          ÿ      @   @          ÿ      @   @          ÿ      @   @          ÿÿÿ     @   @          ÿÿÿ     @   @          ÿÿÿ     @   @          ÿÿ?     @   @          ÿÿÿ     @   @          ÿÿ?     @   @          ÿÿÿ    @   @          ÿÿÿ     @   @          ÿÿ?     @   @                 @   @   
        ÿÿ?     @   @          ÿÿ?     @   @                 @   @                 @   @          ÿÿÿ     @   @                 @           @           @           @           @           @           @           @                                                                                   -      netlink_audit_socket         
   tcp_socket            msgq            dir            blk_file            chr_file            ipc            lnk_file            process            fd            packet            socket         	   fifo_file            file            node            netlink_nflog_socket            key            netlink_tcpdiag_socket            unix_stream_socket            netlink_route_socket            shm            netlink_selinux_socket         
   capability            netlink_ip6fw_socket            dccp_socket            netlink_firewall_socket         	   sock_file            unix_dgram_socket            netlink_kobject_uevent_socket         
   filesystem            netlink_xfrm_socket            netlink_dnrt_socket         
   key_socket            netif         
   packet_socket         
   memprotect            msg         
   udp_socket            appletalk_socket            rawip_socket            association            netlink_socket            sem            system            security               object_r            system_r               initrc_t            ccs_t            tmpfs_t                       s0               c0            c1023             ÿ|ù
































































#
# Directory patterns (dir)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. directory type
#




























#
# Regular file patterns (file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#






























#
# Symbolic link patterns (lnk_file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#


























#
# (Un)named Pipes/FIFO patterns (fifo_file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#


























#
# (Un)named sockets patterns (sock_file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#
























#
# Block device node patterns (blk_file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#


























#
# Character device node patterns (chr_file)
#
# Parameters:
# 1. domain type
# 2. container (directory) type
# 3. file type
#


























#
# File type_transition patterns
#
# pattern(domain,dirtype,newtype,class(es))
#



#
# unix domain socket patterns
#



########################################
#
# Macros for switching between source policy
# and loadable policy module support
#

##############################
#
# For adding the module statement
#


##############################
#
# For use in interfaces, to optionally insert a require block
#


# helper function, since m4 wont expand macros
# if a line is a comment (#):

##############################
#
# In the future interfaces should be in loadable modules
#
# template(name,rules)
#


##############################
#
# In the future interfaces should be in loadable modules
#
# interface(name,rules)
#




##############################
#
# Optional policy handling
#


##############################
#
# Determine if we should use the default
# tunable value as specified by the policy
# or if the override value should be used
#


##############################
#
# Extract booleans out of an expression.
# This needs to be reworked so expressions
# with parentheses can work.



##############################
#
# Tunable declaration
#


##############################
#
# Tunable policy handling
#


########################################
#
# Helper macros
#

#
# shiftn(num,list...)
#
# shift the list num times
#


#
# ifndef(expr,true_block,false_block)
#
# m4 does not have this.
#


#
# __endline__
#
# dummy macro to insert a newline.  used for 
# errprint, so the close parentheses can be
# indented correctly.
#


########################################
#
# refpolwarn(message)
#
# print a warning message
#


########################################
#
# refpolerr(message)
#
# print an error message.  does not
# make anything fail.
#


########################################
#
# gen_user(username, prefix, role_set, mls_defaultlevel, mls_range, [mcs_categories])
#


########################################
#
# gen_context(context,mls_sensitivity,[mcs_categories])
#

########################################
#
# can_exec(domain,executable)
#


########################################
#
# gen_bool(name,default_value)
#



#
# Specified domain transition patterns
#


# compatibility:




#
# Automatic domain transition patterns
#


# compatibility:




#
# Other process permissions
#



########################################
#
# gen_cats(N)
#
# declares categores c0 to c(N-1)
#




########################################
#
# gen_sens(N)
#
# declares sensitivites s0 to s(N-1) with dominance
# in increasing numeric order with s0 lowest, s(N-1) highest
#






########################################
#
# gen_levels(N,M)
#
# levels from s0 to (N-1) with categories c0 to (M-1)
#




########################################
#
# Basic level names for system low and high
#





########################################
# 
# Support macros for sets of object classes and permissions
#
# This file should only have object class and permission set macros - they
# can only reference object classes and/or permissions.

#
# All directory and file classes
#


#
# All non-directory file classes.
#


#
# Non-device file classes.
#


#
# Device file classes.
#


#
# All socket classes.
#



#
# Datagram socket classes.
# 


#
# Stream socket classes.
#


#
# Unprivileged socket classes (exclude rawip, netlink, packet).
#


########################################
# 
# Macros for sets of permissions
#

# 
# Permissions for getting file attributes.
#


# 
# Permissions for executing files.
#


# 
# Permissions for reading files and their attributes.
#


# 
# Permissions for reading and executing files.
#


# 
# Permissions for reading and appending to files.
#


#
# Permissions for linking, unlinking and renaming files.
# 


#
# Permissions for creating lnk_files.
#


#
# Permissions for creating and using files.
# 


# 
# Permissions for reading directories and their attributes.
#


# 
# Permissions for reading and writing directories and their attributes.
#


# 
# Permissions for reading and adding names to directories.
#



#
# Permissions for creating and using directories.
# 


#
# Permissions to mount and unmount file systems.
#


#
# Permissions for using sockets.
# 


#
# Permissions for creating and using sockets.
# 


#
# Permissions for using stream sockets.
# 


#
# Permissions for creating and using stream sockets.
# 


#
# Permissions for creating and using sockets.
# 


#
# Permissions for creating and using sockets.
# 



#
# Permissions for creating and using netlink sockets.
# 


#
# Permissions for using netlink sockets for operations that modify state.
# 


#
# Permissions for using netlink sockets for operations that observe state.
# 


#
# Permissions for sending all signals.
#


#
# Permissions for sending and receiving network packets.
#


#
# Permissions for using System V IPC
#










########################################
#
# New permission sets
#

#
# Directory
#








#
# File
#









#
# Use (read and write) terminals
#


#
# Sockets
#



########################################
#
# New permission sets
#

#
# Directory (dir)
#












#
# Regular file (file)
#















#
# Symbolic link (lnk_file)
#












#
# (Un)named Pipes/FIFOs (fifo_file)
#













#
# (Un)named Sockets (sock_file)
#












#
# Block device nodes (blk_file)
#














#
# Character device nodes (chr_file)
#














########################################
#
# Special permission sets
#

#
# Use (read and write) terminals
#


#
# Sockets
#












so_number.patch:
 configure.ac |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE so_number.patch ---
--- cpp/configure.ac	2009-09-02 10:32:57.000000000 -0400
+++ cpp/configure.ac	2009-09-29 10:27:07.393678846 -0400
@@ -112,7 +112,7 @@
 LIBS=$gl_saved_libs
 
 # Set the argument to be used in "libtool -version-info ARG".
-QPID_CURRENT=2
+QPID_CURRENT=3
 QPID_REVISION=0
 QPID_AGE=0
 LIBTOOL_VERSION_INFO_ARG=$QPID_CURRENT:$QPID_REVISION:$QPID_AGE

xqilla.patch:
 XmlExchange.cpp |   44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

--- NEW FILE xqilla.patch ---
--- qpidc-0.5.819819/cpp/src/qpid/xml/XmlExchange.cpp	2010-02-08 10:08:03.000000000 +0000
+++ qpidc-0.5.819819/cpp/src/qpid/xml/XmlExchange.cpp	2010-02-08 10:17:33.000000000 +0000
@@ -38,6 +38,8 @@ 
 
 #include <xqilla/context/ItemFactory.hpp>
 #include <xqilla/xqilla-simple.hpp>
+#include <xqilla/utils/XPath2Utils.hpp>
+#include <xqilla/exceptions/XPath2TypeMatchException.hpp>
 
 #include <iostream>
 #include <sstream>
@@ -133,6 +135,46 @@ 
     }
 }
 
+namespace
+{
+	static bool getEffectiveBooleanValueInternal(const Item::Ptr &first, const Item::Ptr &second, DynamicContext* context, const LocationInfo *info)
+	{
+	  // If its operand is a singleton value ...
+	  if(second == NULLRCP && first->isAtomicValue()) {
+		const AnyAtomicType::Ptr atom=first;
+		// ... of type xs:boolean or derived from xs:boolean, fn:boolean returns the value of its operand unchanged.
+		if(atom->getPrimitiveTypeIndex() == AnyAtomicType::BOOLEAN)
+			return ((const ATBooleanOrDerived::Ptr)atom)->isTrue();
+
+		// ... of type xs:string, xdt:untypedAtomic, or a type derived from one of these, fn:boolean returns false 
+		// if the operand value has zero length; otherwise it returns true.
+		if((atom->getPrimitiveTypeIndex() == AnyAtomicType::STRING || 
+			atom->getPrimitiveTypeIndex() == AnyAtomicType::ANY_URI || 
+			atom->getPrimitiveTypeIndex() == AnyAtomicType::UNTYPED_ATOMIC))
+		  return !XPath2Utils::equals(atom->asString(context), XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgZeroLenString);
+
+		// ... of any numeric type or derived from a numeric type, fn:boolean returns false if the operand value is 
+		// NaN or is numerically equal to zero; otherwise it returns true.
+		if(atom->isNumericValue()) {
+		  const Numeric::Ptr number=atom;
+		  return (!number->isZero() && !number->isNaN());
+		}
+	  }
+
+	  // In all other cases, fn:boolean raises a type error. 
+	  XQThrow3(XPath2TypeMatchException,X("ResultImpl::getEffectiveBooleanValue"), X("Effective Boolean Value cannot be extracted from this type [err:FORG0006]"), info);
+	  return true;
+	}
+
+	bool getEffectiveBooleanValue(Result &result, DynamicContext* context, const LocationInfo *info)
+	{
+	  const Item::Ptr first = result->next(context);
+	  if(first == NULLRCP) return false;
+	  if(first->isNode()) return true;
+	  return getEffectiveBooleanValueInternal(first, result->next(context), context, info);
+	}
+}
+
 bool XmlExchange::matches(Query& query, Deliverable& msg, const qpid::framing::FieldTable* args, bool parse_message_content) 
 {
   string msgContent;
@@ -179,7 +221,7 @@ 
       }
 
       Result result = query->execute(context.get());
-      return result->getEffectiveBooleanValue(context.get(), 0);
+      return getEffectiveBooleanValue(result, context.get(), 0);
   }
   catch (XQException& e) {
       QPID_LOG(warning, "Could not parse XML content (or message headers):" << msgContent);


Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/qpid-cpp/devel/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- .cvsignore	25 Feb 2010 18:52:23 -0000	1.1
+++ .cvsignore	25 Feb 2010 20:26:37 -0000	1.2
@@ -0,0 +1,2 @@
+qpidc-0.5.829175.tar.gz
+rhm-0.5.3684.tar.gz


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/qpid-cpp/devel/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- sources	25 Feb 2010 18:52:23 -0000	1.1
+++ sources	25 Feb 2010 20:26:37 -0000	1.2
@@ -0,0 +1,2 @@
+38777aa2e3e9597111423213a879cb73  qpidc-0.5.829175.tar.gz
+18b1134366efd0e22ac87d0dcd423443  rhm-0.5.3684.tar.gz



More information about the scm-commits mailing list