You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2010/03/02 02:02:33 UTC

svn commit: r917828 [2/4] - in /qpid/branches/qmf-devel0.7: ./ qpid/cpp/include/qmf/engine/ qpid/cpp/src/qmf/engine/ qpid/cpp/src/qpid/cluster/ qpid/cpp/src/qpid/management/ qpid/cpp/src/tests/ qpid/doc/book/src/ qpid/dotnet/ qpid/extras/qmf/src/py/qmf...

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/LVQ.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/LVQ.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/LVQ.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/LVQ.xml Tue Mar  2 01:02:30 2010
@@ -1,6 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : LVQ
+<!--
+ 
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+ 
+   http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ 
+-->
+
+<section><title>
+      LVQ
     </title>
 
     <section role="h2" id="LVQ-UnderstandingLVQ"><title>
@@ -338,4 +359,4 @@
 
 </programlisting>
 <!--h2--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Console-Security.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Console-Security.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Console-Security.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Console-Security.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Management Console Security
+<section><title>
+      Management Console Security
     </title><section role="h1" id="ManagementConsoleSecurity-ManagementConsoleSecurity"><title>
             Management
             Console Security
@@ -106,7 +106,7 @@
             when starting the console. This can be done at the command line,
             or alternatively an example configuration has been made within
             the console's qpidmc.ini launcher configuration file that may
-            pre-configured in advance for repeated usage. See the <xref linkend="qpid_Qpid-20JMX-20Management-20Console-20User-20Guide"/> for more
+            pre-configured in advance for repeated usage. See the <xref linkend="Qpid-JMX-Management-Console-User-Guide"/> for more
             information on this configuration process.
           </para>
 <!--h3--></section>
@@ -132,7 +132,7 @@
 	  <para>
             More information on Java's handling of SSL certificate
             verification and customizing the keystores can be found in the
-            <xref linkend="qpid_JSSERefGuide"/> .
+	    <ulink url="http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CustomizingStores">http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CustomizingStores</ulink>.
           </para>
 <!--h3--></section>
 <!--h2--></section>
@@ -183,7 +183,7 @@
           </para>
 <!--h3--></section>
 
-	  <section role="h3" id="ManagementConsoleSecurity-BrokerConfiguration"><title>
+	  <section role="h3" id="ManagementConsoleSecurity-BrokerConfiguration2"><title>
             Broker
             Configuration
           </title>
@@ -209,7 +209,7 @@
           </para>
 <!--h3--></section>
 
-	  <section role="h3" id="ManagementConsoleSecurity-JMXManagementConsoleConfiguration"><title>
+	  <section role="h3" id="ManagementConsoleSecurity-JMXManagementConsoleConfiguration-2"><title>
             JMX
             Management Console Configuration
           </title>
@@ -243,10 +243,10 @@
 	  <para>
             In order to access the management operations via JMX, users must
             have an account and have been assigned appropriate access rights.
-            See <xref linkend="qpid_Configuring-20Management-20Users"/>
+            See <xref linkend="qpid_Configuring-Management-Users"/>
           </para>
 <!--h2--></section>
 <!--h1--></section>
 
 	  
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Design-notes.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Design-notes.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Design-notes.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Management-Design-notes.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Management Design notes
+<section><title>
+      Management Design notes
     </title><section role="h2" id="ManagementDesignnotes-StatusofThisDocument"><title>
             Status
             of This Document
@@ -35,7 +35,7 @@
           </para><para>
             Development continues on the Qpid Management Framework (QMF) for
             M4. If you are using M3, this is the document you need. If you
-            are using the SVN trunk, please refer to <xref linkend="qpid_Qpid-20Management-20Framework"/> for
+            are using the SVN trunk, please refer to <xref linkend="qpid_Qpid-Management-Framework"/> for
             up-to-date information.
           </para>
 	<!--h2--></section>
@@ -70,7 +70,7 @@
           </title>
 
 	 <para>
-            <xref linkend="qpid_JMX-20Gateway"/>
+            <xref linkend="qpid_JMX-Gateway"/>
           </para>
 	<!--h3--></section>
 
@@ -2132,5 +2132,5 @@
 	   <!--h2--></section>
 
 	 
-</chapter>
+</section>
 	  

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/MessageStore-Tool.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/MessageStore-Tool.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/MessageStore-Tool.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/MessageStore-Tool.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : MessageStore Tool
+<section><title>
+      MessageStore Tool
     </title><section role="h2" id="MessageStoreTool-MessageStoreTool"><title>
             MessageStore Tool
           </title>
@@ -39,7 +39,7 @@
 
 	 <itemizedlist>
             <listitem><para>
-              <xref linkend="qpid_BDBMessageStore-20-3rd-20Party-"/>
+              <xref linkend="qpid_BDBMessageStore--3rd-Party-"/>
             </para></listitem>
             <listitem><para>
               <xref linkend="qpid_JDBCStore"/>
@@ -147,4 +147,4 @@
           </para>
 <!--h3--></section>
 <!--h2--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/NET-User-Guide.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/NET-User-Guide.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/NET-User-Guide.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/NET-User-Guide.xml Tue Mar  2 01:02:30 2010
@@ -20,7 +20,7 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
   <title>
     Apache Qpid: Open Source AMQP Messaging - .NET User Guide
   </title>
@@ -1024,7 +1024,7 @@
       <!--h3-->
     </section>    
     
-    <section role="h3" id="NETUserGuide-ReadingMessagesfromtheQueue">
+    <section role="h3" id="NETUserGuide-ReadingMessagesfromtheQueue2">
       <title>
 	Reading
 	Messages from the Queue
@@ -1380,4 +1380,4 @@
 	</section>
             
           
-      </chapter>
+      </section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/PythonBrokerTest.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/PythonBrokerTest.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/PythonBrokerTest.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/PythonBrokerTest.xml Tue Mar  2 01:02:30 2010
@@ -20,9 +20,9 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
   <title>
-    Apache Qpid : PythonBrokerTest
+    PythonBrokerTest
   </title>
   <section role="h2" id="PythonBrokerTest-PythonBrokerSystemTestSuite">
     <title>
@@ -95,4 +95,4 @@
     <!--h2-->
   </section>
 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMF-Python-Console-Tutorial.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMF-Python-Console-Tutorial.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMF-Python-Console-Tutorial.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMF-Python-Console-Tutorial.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : QMF Python Console Tutorial
+<section><title>
+      QMF Python Console Tutorial
     </title>
             <itemizedlist>
               <listitem><para>
@@ -84,7 +84,7 @@
             network. Qpid can be downloaded as source from Apache, is
             packaged with a number of Linux distributions, and can be
             purchased from commercial vendors that use Qpid. Please see
-            <xref linkend="qpid_Download"/> for
+            <xref linkend="chapter-Download"/> for
             information as to where to get Qpid Messaging.
           </para><para>
             Qpid Messaging includes a message broker (qpidd) which typically
@@ -891,4 +891,4 @@
 	  <!--h1--></section>
 
 	 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMan-Qpid-Management-bridge.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMan-Qpid-Management-bridge.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMan-Qpid-Management-bridge.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/QMan-Qpid-Management-bridge.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : QMan - Qpid Management bridge
+<section><title>
+      QMan - Qpid Management bridge
     </title><section role="h1" id="QMan-QpidManagementbridge-QMan-3AQpidManagementBridge"><title>
             QMan
             : Qpid Management Bridge
@@ -76,7 +76,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_Get-20me-20up-20and-20running"/>
+                  <xref linkend="qpid_Get-me-up-and-running"/>
                 </entry>
                 <entry>
                   How to install &amp; start QMan.
@@ -84,7 +84,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_QMan-20User-20Guide"/>
+                  <xref linkend="qpid_QMan-User-Guide"/>
                 </entry>
                 <entry>
                   QMan (WS-DM version only) Administration Console.
@@ -92,7 +92,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_JMX-20Interface-20Specification"/>
+                  <xref linkend="qpid_JMX-Interface-Specification"/>
                 </entry>
                 <entry>
                   Describes each JMX interface exposed by QMan.
@@ -100,7 +100,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_WS-DM-20Interface-20Specification"/>
+                  <xref linkend="qpid_WS-DM-Interface-Specification"/>
                 </entry>
                 <entry>
                   Describes each WS-DM interface exposed by QMan.
@@ -108,7 +108,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_QMan-20Messages-20Catalogue"/>
+                  <xref linkend="qpid_QMan-Messages-Catalogue"/>
                 </entry>
                 <entry>
                   Informational / Debug / Error / Warning messages catalogue.
@@ -142,7 +142,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_QMan-20System-20Overview"/>
+                  <xref linkend="qpid_QMan-System-Overview"/>
                 </entry>
                 <entry>
                   A short introduction about QMan deployment context.
@@ -150,7 +150,7 @@
               </row>
               <row>
                 <entry>
-                  <xref linkend="qpid_QMan-20Components-20View"/>
+                  <xref linkend="qpid_QMan-Components-View"/>
                 </entry>
                 <entry>
                   Describes QMan components, their interactions and
@@ -163,4 +163,4 @@
 <!--h2--></section>
 <!--h1--></section>
 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-ACLs.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-ACLs.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-ACLs.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-ACLs.xml Tue Mar  2 01:02:30 2010
@@ -22,7 +22,7 @@
 
 <section><title>
             ACL Formats
-          </title>Apache Qpid : Qpid ACLs
+          </title>Qpid ACLs
             This page last changed on Nov 18, 2008 by ritchiem.
           <para>
             The Qpid project has two ACL implementations. An initial version

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Interoperability-Documentation.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Interoperability-Documentation.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Interoperability-Documentation.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Interoperability-Documentation.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid Interoperability Documentation
+<chapter><title>
+      Qpid Interoperability Documentation
     </title><section role="h2" id="QpidInteroperabilityDocumentation-QpidInteroperabilityDocumentation"><title>
             Qpid Interoperability Documentation
           </title>
@@ -235,12 +235,14 @@
                 </entry>
               </row>
             </tbody>
-          </tgroup></table><para>
-            
+          </tgroup></table>
+
+	  <para id="QpidInteroperabilityDocumentation-1">        
             1: Support for these will be in M3 (currently available on
             trunk).
+	  </para>
             
-            2: C++ Broker uses <xref linkend="qpid_"/> which
+           <para id="QpidInteroperabilityDocumentation-2">2: C++ Broker uses <ulink url="http://freshmeat.net/projects/cyrussasl/">Cyrus SASL</ulink> which
             supports CRAM-MD5 and GSSAPI but these have not been tested yet
           </para>
 <!--h4--></section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-FAQ.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-FAQ.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-FAQ.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-FAQ.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid JMX Management Console FAQ
+<section><title>
+      Qpid JMX Management Console FAQ
     </title>
 <!--
 h3. {toggle-cloak:id=qManagementConsoleSecurity} How do I connect the management console to my broker using security ?
@@ -51,7 +51,7 @@
           </title>
 
 	  <para>
-            The <xref linkend="qpid_Management-20Console-20Security"/> page will give you the instructions that you should
+            The <xref linkend="qpid_Management-Console-Security"/> page will give you the instructions that you should
             use to set this up.
           </para>
 <!--h3--></section>
@@ -93,4 +93,4 @@
           </para>
 <!--h3--></section>
 <!--h2--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-User-Guide.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-User-Guide.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-User-Guide.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console-User-Guide.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid JMX Management Console User Guide
+<section id="Qpid-JMX-Management-Console-User-Guide"><title>
+      Qpid JMX Management Console User Guide
     </title><section role="h1" id="QpidJMXManagementConsoleUserGuide-QpidJMXManagementConsoleUserGuide"><title>
             Qpid JMX Management Console User Guide
           </title>
@@ -105,7 +105,8 @@
             KeyStore and matching TrustStore. This script can serve as a
             guide on how to use the Java Keytool security utility to
             manipulate your own stores, and more information can be found in
-            the JSSE Reference Guide: <xref linkend="qpid_JSSERefGuide"/>
+            the JSSE Reference Guide: 
+	    <ulink url="http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CustomizingStores">http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CustomizingStores</ulink>.
           </para><para>
             Supplying the necessary details to the console is performed by
             setting the <emphasis>javax.net.ssl.trustStore</emphasis> and
@@ -789,4 +790,4 @@
           </para>
             
 <!--h1--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-JMX-Management-Console.xml Tue Mar  2 01:02:30 2010
@@ -20,10 +20,10 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<chapter id="Qpid-JMX-Management-Console">
 
   <title>
-    Apache Qpid : Qpid JMX Management Console
+    Qpid JMX Management Console
   </title>
 
   <section role="h2" id="QpidJMXManagementConsole-QpidJMXManagementConsole">
@@ -42,12 +42,12 @@
 	JMX.
       </para>
        
-	  <xi:include href="Configuring%20Management%20Users.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-	  <xi:include href="Configuring%20Qpid%20JMX%20Management%20Console.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-          <xi:include href="Management%20Console%20Security.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-          <xi:include href="Qpid%20JMX%20Management%20Console%20FAQ.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-	  <xi:include href="Qpid%20JMX%20Management%20Console%20User%20Guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> 
-	  <xi:include href="Qpid%20Management%20Features.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+	  <xi:include href="Configuring-Management-Users.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+	  <xi:include href="Configuring-Qpid-JMX-Management-Console.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+          <xi:include href="Management-Console-Security.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+          <xi:include href="Qpid-JMX-Management-Console-FAQ.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+	  <xi:include href="Qpid-JMX-Management-Console-User-Guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> 
+	  <xi:include href="Qpid-Management-Features.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
 <!--h3--></section>
 <!--h2--></section>            
 </chapter>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Broker-Management-CLI.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Broker-Management-CLI.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Broker-Management-CLI.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Broker-Management-CLI.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid Java Broker Management CLI
+<section><title>
+      Qpid Java Broker Management CLI
     </title>
 	  <section role="h2" id="QpidJavaBrokerManagementCLI-HowtobuildApacheQpidCLI"><title>
             How to
@@ -156,4 +156,4 @@
 
 <!--h3--></section>
 <!--h2--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Build-How-To.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Build-How-To.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Build-How-To.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-Build-How-To.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid Java Build How To
+<section><title>
+      Qpid Java Build How To
     </title>
 
     <section role="h1" id="QpidJavaBuildHowTo-BuildInstructionsGeneral"><title>
@@ -353,7 +353,7 @@
             What next ?
           </title>
 	 <para>
-            If you want to run your built Qpid package, see our <xref linkend="qpid_Getting-20Started-20Guide"/> for details of
+            If you want to run your built Qpid package, see our <xref linkend="qpid_Getting-Started-Guide"/> for details of
             how to do that.
           </para><para>
             If you want to run our tests, you can use the ant test or
@@ -362,4 +362,4 @@
             
 <!--h2--></section>
 <!--h1--></section>	   
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-FAQ.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-FAQ.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-FAQ.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Java-FAQ.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid Java FAQ
+<section><title>
+      Qpid Java FAQ
     </title>
 
     <section role="h2" id="QpidJavaFAQ-Purpose">
@@ -55,7 +55,7 @@
             <listitem><para>Persistence using the high performance Berkeley DB Java
             Edition. The persistence layer is also pluggable should an
             alternative implementation be required. The BDB store is
-            available from the <xref linkend="qpid_3rd-20Party-20Libraries"/> page
+            available from the <xref linkend="qpid_3rd-Party-Libraries"/> page
             </para></listitem>
             <listitem><para>Pluggable security using SASL. Any Java SASL provider can be
             used
@@ -168,7 +168,7 @@
             manifest files to your classpath.
           </para><para>
             For more information on running the broker please see our
-            <xref linkend="qpid_Getting-20Started"/> page.
+            <xref linkend="Getting-Started"/> page.
           </para>
 <!--h3--></section>
 
@@ -178,7 +178,7 @@
           </title>
 
 	  <para>
-            Please see the <xref linkend="qpid_Connection-20URL-20Format"/> documentation.
+            Please see the <xref linkend="qpid_Connection-URL-Format"/> documentation.
           </para>
 <!--h3--></section>
 
@@ -203,7 +203,7 @@
             Queue names may consist of any mixture of digits, letters, and
             underscores.
           </para><para>
-            The <xref linkend="qpid_BindingURLFormat"/> is described in more
+            The <xref linkend="BindingURLFormat"/> is described in more
             detail on it's own page.
           </para>
 <!--h4--></section>
@@ -252,7 +252,7 @@
           </title>
 
 	  <para>
-            see <xref linkend="qpid_How-20to-20Use-20JNDI"/>
+            see <xref linkend="How-to-Use-JNDI"/>
           </para>
 <!--h3--></section>
 
@@ -262,8 +262,10 @@
           </title>
 
 	  <para>
-            Here is a donated Spring configuration file <xref linkend="qpid_2264.zip"/> which shows the
-            config for Qpid side by side with Weblogic. HtH !
+            Here is a donated Spring configuration file <ulink
+            url="http://qpid.apache.org/qpid-java-faq.data/appContext.zip">appContext.zip</ulink>
+            which shows the config for Qpid side by side with
+            Weblogic. HtH !
           </para>
 <!--h3--></section>
 
@@ -323,13 +325,13 @@
             qpid-server -c &lt;your_config_file's_path&gt;
           </para><para>
             For more detailed information on configuration, please see
-            <xref linkend="qpid_Qpid-20Design-20--20Configuration"/>
+            <xref linkend="qpid_Qpid-Design---Configuration"/>
           </para><para>
             
           </para>
 <!--h3--></section>
 
-	  <section role="h3" id="QpidJavaFAQ-Whatportsdoesthebrokeruse-3F"><title>
+	  <section role="h3" id="QpidJavaFAQ-Whatportsdoesthebrokeruse"><title>
             What ports
             does the broker use?
           </title>
@@ -371,7 +373,7 @@
             For additional details on what ports the broker uses see <xref linkend="QpidJavaFAQ-Whatportsdoesthebrokeruse"/> FAQ
             entry.
             For more detailed information on configuration, please see
-            <xref linkend="qpid_Qpid-20Design-20--20Configuration"/>
+            <xref linkend="qpid_Qpid-Design---Configuration"/>
           </para>
 <!--h3--></section>
 
@@ -586,7 +588,7 @@
 
 	  <para>
             There are a number of tuning options available, please see the
-            <xref linkend="qpid_How-20to-20Tune-20M3-20Java-20Broker-20Performance"/> page for more information.
+            <xref linkend="How-to-Tune-M3-Java-Broker-Performance"/> page for more information.
           </para>
 <!--h3--></section>
 
@@ -678,12 +680,12 @@
 
 	  <para>
             For general questions, please subscribe to the
-            users@qpid.apache.org mailing list (<xref linkend="qpid_"/>).
+            <ulink url="mailto:users@qpid.apache.org">users@qpid.apache.org</ulink> mailing list.
           </para><para>
             For development questions, please subscribe to the
-            dev@qpid.apache.org mailing list (<xref linkend="qpid_"/>).
+            <ulink url="mailto:dev@qpid.apache.org">dev@qpid.apache.org</ulink> mailing list.
           </para><para>
-            More details on these lists are available on our <xref linkend="qpid_Mailing-20Lists"/>
+            More details on these lists are available on our <xref linkend="qpid_Mailing-Lists"/>
             page.
           </para>
 <!--h3--></section>
@@ -693,7 +695,7 @@
           </title>
 
 	  <para>
-            You can do this via the <xref linkend="qpid_Qpid-20JMX-20Management-20Console"/>. To
+            You can do this via the <xref linkend="qpid_Qpid-JMX-Management-Console"/>. To
             do this simply log in to the management console as an admin user
             (you need to have created an admin account in the
             jmxremote.access file first) and then select the 'UserManagement'
@@ -705,7 +707,7 @@
             to be disconnected if they are already connected.
           </para><para>
             For more information on the Management Console please see our
-            <xref linkend="qpid_Qpid-20JMX-20Management-20Console-20User-20Guide"/>
+            <xref linkend="Qpid-JMX-Management-Console-User-Guide"/>
           </para>
 <!--h3--></section>
 
@@ -740,14 +742,15 @@
           </title>
 
 	  <para>
-            I would take a look at the testPassiveTTL in <xref linkend="qpid_TimeToLiveTest.java?revision=683950&amp;view=markup"/>
+            I would take a look at the testPassiveTTL in
+	    <ulink url="https://svn.apache.org/repos/asf/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/queue/TimeToLiveTest.java">TimeToLiveTest.java</ulink>
           </para><para>
             The setUp and tearDown methods show how to correctly start up a
             broker for InVM testing. If you write your tests using a file for
             the JNDI you can then very easily swap between running your tests
             InVM and against a real broker.
           </para><para>
-            See our <xref linkend="qpid_How-20to-20Use-20JNDI"/> on how to confgure it
+            See our <xref linkend="How-to-Use-JNDI"/> on how to confgure it
           </para><para>
             Basically though you just need to set two System Properites:
           </para><para>
@@ -771,10 +774,10 @@
             There are two possibilities here:
           </para><para>
             1) The management console can be used to interogate an active
-            broker and browse the contents of a queue.See the <xref linkend="qpid_Qpid-20JMX-20Management-20Console"/>
+            broker and browse the contents of a queue.See the <xref linkend="qpid_Qpid-JMX-Management-Console"/>
             page for further details.
           </para><para>
-            2) The <xref linkend="qpid_MessageStore-20Tool"/> can be used to inspect
+            2) The <xref linkend="qpid_MessageStore-Tool"/> can be used to inspect
             the contents of a persistent message store. Note: this can
             currently only be used when the broker is offline.
           </para>
@@ -821,7 +824,7 @@
           </para><para>
             You may also want to increase the memory allowance to the broker
             though this will only delay the exception if you are publishing
-            messages faster than you are consuming. See <xref linkend="qpid_Java-20Environment-20Variables"/> for
+            messages faster than you are consuming. See <xref linkend="qpid_Java-Environment-Variables"/> for
             details of changing the memory settings.
           </para>
 <!--h3--></section>
@@ -899,7 +902,7 @@
 
 	  <para>
             You have not configured the console's SSL trust store properly,
-            see <xref linkend="qpid_Management-20Console-20Security"/> for
+            see <xref linkend="qpid_Management-Console-Security"/> for
             more details.
           </para>
 <!--h3--></section>
@@ -923,7 +926,7 @@
             Transfer accross the network and b) to be fully written to disk.
           </para><para>
             These situations require that the default timeout value be
-            increased. A cilent <xref linkend="qpid_System-20Properties"/> 'amqj.default_syncwrite_timeout' can be set
+            increased. A cilent <xref linkend="qpid_System-Properties"/> 'amqj.default_syncwrite_timeout' can be set
             on the client to increase the wait time. The default in 0.5 is
             30000 (30s).
           </para>
@@ -935,7 +938,7 @@
           </title>
 
 	  <para>
-            See <xref linkend="qpid_Configure-20Broker-20and-20Client-20Heartbeating"/>
+            See <xref linkend="qpid_Configure-Broker-and-Client-Heartbeating"/>
           </para>
 
 <!--h3--></section>            
@@ -943,4 +946,4 @@
 
 	            
 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Features.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Features.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Features.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Features.xml Tue Mar  2 01:02:30 2010
@@ -20,12 +20,12 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
   <title>
-      Apache Qpid : Qpid Management Features
+      Qpid Management Features
     </title>
   <para>
-            <emphasis>Management tool:</emphasis> See our <xref linkend="qpid_Qpid-20JMX-20Management-20Console"/> for
+            <emphasis>Management tool:</emphasis> See our <xref linkend="qpid_Qpid-JMX-Management-Console"/> for
             details of how to use various console options with the Qpid
             management features.
           </para>
@@ -152,7 +152,7 @@
             </para></listitem>
             <listitem><para>Dropping a connection.
             </para></listitem>
-            <listitem><para>The work for <xref linkend="qpid_Network-20IO-20Interface"/> implies that
+            <listitem><para>The work for <xref linkend="qpid_Network-IO-Interface"/> implies that
             there are potentially some additional requirements
               <orderedlist>
                 <listitem><para>Alert when tcp flow control kicks in
@@ -179,8 +179,7 @@
             </para></listitem>
             <listitem><para>Creating a Queue.
             </para></listitem>
-            <listitem><para>Deleting a
-            Queue.        
+            <listitem><para>Deleting a Queue.
             </para></listitem>
           </orderedlist>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Framework.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Framework.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Framework.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Management-Framework.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Qpid Management Framework
+<section><title>
+      Qpid Management Framework
     </title>
             <itemizedlist>
               <listitem><para>
@@ -58,7 +58,7 @@
             </itemizedlist>
           
             <para>
-              Please visit the <xref linkend="qpid_QMFv2-20Project-20Page"/> for information
+              Please visit the <xref linkend="qpid_QMFv2-Project-Page"/> for information
               about the future of QMF.
             </para>
           <section role="h1" id="QpidManagementFramework-WhatIsQMF"><title>
@@ -915,10 +915,10 @@
             one another.
           </para><para>
             A description of the current version of the QMF protocol can be
-            found at <xref linkend="qpid_QMF-20Protocol"/>.
+            found at <xref linkend="qpid_QMF-Protocol"/>.
           </para><para>
             A proposal for an updated protocol based on map-messages is in
-            progress and can be found at <xref linkend="qpid_QMF-20Map-20Message-20Protocol"/>.
+            progress and can be found at <xref linkend="qpid_QMF-Map-Message-Protocol"/>.
           </para>
 <!--h1--></section>
 
@@ -928,7 +928,7 @@
           </title>
 
 	 <para>
-            Please see the <xref linkend="qpid_QMF-20Python-20Console-20Tutorial"/> for information about using the console API with
+            Please see the <xref linkend="qpid_QMF-Python-Console-Tutorial"/> for information about using the console API with
             Python.
           </para>
 <!--h1--></section>
@@ -941,4 +941,4 @@
 	  <!--h1--></section>
 
 	 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Troubleshooting-Guide.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Troubleshooting-Guide.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Troubleshooting-Guide.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Qpid-Troubleshooting-Guide.xml Tue Mar  2 01:02:30 2010
@@ -20,10 +20,10 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
 
   <title>
-      Apache Qpid : Qpid Troubleshooting Guide
+      Qpid Troubleshooting Guide
     </title>
 
           <section role="h2" id="QpidTroubleshootingGuide-I-27mgettingajava.lang.UnsupportedClassVersionErrorwhenItrytostartthebroker.Whatdoesthismean-3F"><title>
@@ -149,8 +149,8 @@
             should always be created at broker startup. If you don't want to
             use this config, then simply ensure that you consume first from
             queue before staring to publish to it. See the entry on our
-            <xref linkend="qpid_Qpid-20Java-20FAQ"/> for more details of using the virtualhosts.xml route.
+            <xref linkend="qpid_Qpid-Java-FAQ"/> for more details of using the virtualhosts.xml route.
           </para>
 <!--h2--></section>
 
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/SSL.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/SSL.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/SSL.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/SSL.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : SSL
+<section><title>
+      SSL
     </title>
 
     <section role="h1" id="SSL-SSLHowto"><title>
@@ -177,4 +177,4 @@
           </para>
 	  <!--h2--></section>
 	<!--h1--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Starting-a-cluster.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Starting-a-cluster.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Starting-a-cluster.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Starting-a-cluster.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Starting a cluster
+<section><title>
+      Starting a cluster
     </title><section role="h1" id="Startingacluster-RunningaQpiddcluster"><title>
             Running a
             Qpidd cluster
@@ -222,4 +222,4 @@
           </para>
 <!--h2--></section>
 <!--h1--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/System-Properties.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/System-Properties.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/System-Properties.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/System-Properties.xml Tue Mar  2 01:02:30 2010
@@ -20,10 +20,10 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
 
   <title>
-    Apache Qpid : System Properties
+    System Properties
   </title>
 
   <section role="h2" id="SystemProperties-ExplanationofSystempropertiesusedinQpid">
@@ -79,7 +79,7 @@
 
 
 
-	<varlistentry>
+	<varlistentry id="SystemProperties-STRICTAMQPFATAL">
 	  <term>STRICT_AMQP_FATAL</term>
 	  <listitem>
 	    <variablelist>
@@ -414,4 +414,4 @@
       </variablelist>
 </section>
 </section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Use-Priority-Queues.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Use-Priority-Queues.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Use-Priority-Queues.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Use-Priority-Queues.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Use Priority Queues
+<section><title>
+      Use Priority Queues
     </title>
 
     
@@ -111,7 +111,7 @@
 </programlisting>
           <para>
             The prefetch can be also be adjusted on a per connection basis by
-            adding a 'maxprefetch' value to the <xref linkend="qpid_Connection-20URL-20Format"/>
+            adding a 'maxprefetch' value to the <xref linkend="Connection-URL-Format"/>
           </para>
             <programlisting>
 amqp://guest:guest@client1/development?maxprefetch='1'&amp;brokerlist='tcp://localhost:5672'
@@ -135,4 +135,4 @@
           </para>
 <!--h3--></section>
 <!--h2--></section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Broker-Federation.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Broker-Federation.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Broker-Federation.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Broker-Federation.xml Tue Mar  2 01:02:30 2010
@@ -20,8 +20,8 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml"><title>
-      Apache Qpid : Using Broker Federation
+<section><title>
+      Using Broker Federation
     </title><section role="h1" id="UsingBrokerFederation-Introduction"><title>
             Introduction
           </title>
@@ -29,10 +29,12 @@
             Please note: Whereas broker federation was introduced in the M3
             milestone release, the discussion in this document is based on
             the richer capabilities of federation in the M4 release.
-          </para><para>
-            This document presents broker federation for the administrative
-            user. For design and developer information, please see <xref linkend="qpid_Federation-20Design-20Note"/>.
           </para>
+<!--
+	  <para>
+            This document presents broker federation for the administrative
+            user. For design and developer information, please see <xref linkend="qpid_Federation-Design-Note"/>.
+          </para> -->
 	<!--h1--></section>
 
 	  <section role="h1" id="UsingBrokerFederation-WhatIsBrokerFederation-3F"><title>
@@ -699,4 +701,4 @@
 	  </section>
           
 	
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Qpid-with-other-JNDI-Providers.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Qpid-with-other-JNDI-Providers.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Qpid-with-other-JNDI-Providers.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/Using-Qpid-with-other-JNDI-Providers.xml Tue Mar  2 01:02:30 2010
@@ -20,10 +20,10 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<chapter>
 
   <title>
-    Apache Qpid : Using Qpid with other JNDI Providers
+    Using Qpid with other JNDI Providers
   </title>
 
   <section role="h2" id="UsingQpidwithotherJNDIProviders-HowtouseaJNDIProvider">

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/WCF.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/WCF.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/WCF.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/WCF.xml Tue Mar  2 01:02:30 2010
@@ -20,9 +20,9 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
   <title>
-    Apache Qpid : WCF
+    WCF
   </title>
   <section role="h1" id="WCF-Introduction">
     <title>
@@ -134,4 +134,4 @@
     </programlisting>
     <!--h1-->
   </section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/queue-state-replication.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/queue-state-replication.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/queue-state-replication.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/queue-state-replication.xml Tue Mar  2 01:02:30 2010
@@ -20,9 +20,9 @@
  
 -->
 
-<chapter xmlns:html="http://www.w3.org/1999/xhtml">
+<section>
   <title>
-    Apache Qpid : queue state replication
+    queue state replication
   </title>
 
   <section role="h2" id="queuestatereplication-AsynchronousReplicationofQueueState">
@@ -330,4 +330,4 @@
     </section>
     <!--h2-->
   </section>
-</chapter>
+</section>

Modified: qpid/branches/qmf-devel0.7/qpid/doc/book/src/schemas.xml
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/doc/book/src/schemas.xml?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/doc/book/src/schemas.xml (original)
+++ qpid/branches/qmf-devel0.7/qpid/doc/book/src/schemas.xml Tue Mar  2 01:02:30 2010
@@ -21,6 +21,12 @@
 -->
 
 <locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+  <uri resource="Download.xml" typeId="DocBook"/>
+  <uri resource="Getting-Started.xml" typeId="DocBook"/>
+  <uri resource="WCF.xml" typeId="DocBook"/>
+  <uri resource="Book-Info.xml" typeId="DocBook"/>
+  <uri resource="Book-Info.xml" typeId="DocBook"/>
+  <uri resource="Book.xml" uri="../../../../../../../usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rnc"/>
   <uri resource="queue%20state%20replication.xml" typeId="DocBook"/>
   <uri resource="queue state replication.xml" typeId="DocBook"/>
   <uri resource="AMQP Ruby Messaging Client.xml" typeId="DocBook"/>

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-msbuild.bat
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Mar  2 01:02:30 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-msbuild.bat:911618-916854
+/qpid/trunk/qpid/dotnet/build-msbuild.bat:911618-917825

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant-release
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Mar  2 01:02:30 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-nant-release:911618-916854
+/qpid/trunk/qpid/dotnet/build-nant-release:911618-917825

Propchange: qpid/branches/qmf-devel0.7/qpid/dotnet/build-nant.bat
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Mar  2 01:02:30 2010
@@ -1 +1 @@
-/qpid/trunk/qpid/dotnet/build-nant.bat:911618-916854
+/qpid/trunk/qpid/dotnet/build-nant.bat:911618-917825

Modified: qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/agent.py
URL: http://svn.apache.org/viewvc/qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/agent.py?rev=917828&r1=917827&r2=917828&view=diff
==============================================================================
--- qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/agent.py (original)
+++ qpid/branches/qmf-devel0.7/qpid/extras/qmf/src/py/qmf2/agent.py Tue Mar  2 01:02:30 2010
@@ -17,10 +17,10 @@
 #
 
 import sys
-import logging
 import datetime
 import time
 import Queue
+from logging import getLogger
 from threading import Thread, RLock, currentThread, Event
 from qpid.messaging import Connection, Message, Empty, SendError
 from uuid import uuid4
@@ -32,6 +32,8 @@
 # running the agent notifier callback
 _callback_thread=None
 
+log = getLogger("qmf")
+trace = getLogger("qmf.agent")
 
 
   ##==============================================================================
@@ -83,37 +85,6 @@
   ## SUBSCRIPTIONS
   ##==============================================================================
 
-class _ConsoleHandle(object):
-    """
-    """
-    def __init__(self, handle, reply_to):
-        self.console_handle = handle
-        self.reply_to = reply_to
-
-class SubscriptionParams(object):
-    """
-    """
-    def __init__(self, console_handle, query, interval, duration, user_id):
-        self._console_handle = console_handle
-        self._query = query
-        self._interval = interval
-        self._duration = duration
-        self._user_id = user_id
-
-    def get_console_handle(self):
-        return self._console_handle
-
-    def get_query(self):
-        return self._query
-
-    def get_interval(self):
-        return self._interval
-
-    def get_duration(self):
-        return self._duration
-
-    def get_user_id(self):
-        return self._user_id
 
 class _SubscriptionState(object):
     """
@@ -128,6 +99,7 @@
         now = datetime.datetime.utcnow()
         self.next_update = now  # do an immediate update
         self.expiration = now + datetime.timedelta(seconds=duration)
+        self.last_update = None
         self.id = 0
 
     def resubscribe(self, now, _duration=None):
@@ -135,9 +107,9 @@
             self.duration = _duration
         self.expiration = now + datetime.timedelta(seconds=self.duration)
 
-    def reset_interval(self, now):
+    def published(self, now):
         self.next_update = now + datetime.timedelta(seconds=self.interval)
-
+        self.last_update = now
 
 
   ##==============================================================================
@@ -193,6 +165,9 @@
         self._subscriptions = {}
         self._next_subscribe_event = None
 
+        # prevents multiple _wake_thread() calls
+        self._noop_pending = False
+
 
     def destroy(self, timeout=None):
         """
@@ -202,10 +177,10 @@
         @type timeout: float
         @param timeout: maximum time in seconds to wait for all background threads to terminate.  Default: forever.
         """
-        logging.debug("Destroying Agent %s" % self.name)
+        trace.debug("Destroying Agent %s" % self.name)
         if self._conn:
             self.remove_connection(timeout)
-        logging.debug("Agent Destroyed")
+        trace.debug("Agent Destroyed")
 
 
     def get_name(self):
@@ -223,7 +198,7 @@
                                                        " x-properties:"
                                                        " {type:direct}}}",
                                                        capacity=self._capacity)
-        logging.debug("my direct addr=%s" % self._direct_receiver.source)
+        trace.debug("my direct addr=%s" % self._direct_receiver.source)
 
         # for sending directly addressed messages.
         self._direct_sender = self._session.sender(str(self._address.get_node()) +
@@ -232,7 +207,7 @@
                                                    " {type:topic,"
                                                    " x-properties:"
                                                    " {type:direct}}}")
-        logging.debug("my default direct send addr=%s" % self._direct_sender.target)
+        trace.debug("my default direct send addr=%s" % self._direct_sender.target)
 
         # for receiving "broadcast" messages from consoles
         default_addr = QmfAddress.topic(QmfAddress.SUBJECT_CONSOLE_IND + ".#",
@@ -242,7 +217,7 @@
                                                        " node-properties:"
                                                        " {type:topic}}",
                                                        capacity=self._capacity)
-        logging.debug("console.ind addr=%s" % self._topic_receiver.source)
+        trace.debug("console.ind addr=%s" % self._topic_receiver.source)
 
         # for sending to topic subscribers
         ind_addr = QmfAddress.topic(QmfAddress.SUBJECT_AGENT_IND,
@@ -251,7 +226,7 @@
                                                 ";{create:always,"
                                                 " node-properties:"
                                                 " {type:topic}}")
-        logging.debug("agent.ind addr=%s" % self._topic_sender.target)
+        trace.debug("agent.ind addr=%s" % self._topic_sender.target)
 
         self._running = True
         self.start()
@@ -264,22 +239,11 @@
         self._running = False
         if self.isAlive():
             # kick my thread to wake it up
-            try:
-                msg = Message(id=QMF_APP_ID,
-                              subject=self.name,
-                              properties={ "method":"request",
-                                          "qmf.opcode":OpCode.noop},
-                              content={})
-
-                # TRACE
-                #logging.error("!!! sending wakeup to myself: %s" % msg)
-                self._direct_sender.send( msg, sync=True )
-            except SendError, e:
-                logging.error(str(e))
-            logging.debug("waiting for agent receiver thread to exit")
+            self._wake_thread()
+            trace.debug("waiting for agent receiver thread to exit")
             self.join(timeout)
             if self.isAlive():
-                logging.error( "Agent thread '%s' is hung..." % self.name)
+                log.error( "Agent thread '%s' is hung..." % self.name)
         self._direct_receiver.close()
         self._direct_receiver = None
         self._direct_sender.close()
@@ -291,7 +255,7 @@
         self._session.close()
         self._session = None
         self._conn = None
-        logging.debug("agent connection removal complete")
+        trace.debug("agent connection removal complete")
 
     def register_object_class(self, schema):
         """
@@ -341,7 +305,7 @@
                                   "qmf.agent":self.name},
                       content=[qmfEvent.map_encode()])
         # TRACE
-        # logging.error("!!! Agent %s sending Event (%s)" % 
+        # log.error("!!! Agent %s sending Event (%s)" % 
         # (self.name, str(msg)))
         self._topic_sender.send(msg)
 
@@ -349,7 +313,6 @@
         """
         Register an instance of a QmfAgentData object.
         """
-        # @todo: need to update subscriptions
         # @todo: need to mark schema as "non-const"
         if not isinstance(data, QmfAgentData):
             raise TypeError("QmfAgentData instance expected")
@@ -369,6 +332,18 @@
                     self._described_data[sid][oid] = data
             else:
                 self._undescribed_data[oid] = data
+
+            # does the new object match any subscriptions?
+            now = datetime.datetime.utcnow()
+            for sid,sub in self._subscriptions.iteritems():
+                if sub.query.evaluate(data):
+                    # matched.  Mark the subscription as needing to be
+                    # serviced. The _publish() method will notice the new
+                    # object and will publish it next time it runs.
+                    sub.next_update = now
+                    self._next_subscribe_event = None
+                    # @todo: should we immediately publish?
+
         finally:
             self._lock.release()
 
@@ -387,7 +362,7 @@
         return data
 
 
-    def method_response(self, handle, _out_args=None, _error=None): 
+    def method_response(self, handle, _out_args=None, _error=None):
         """
         """
         if not isinstance(handle, _MethodCallHandle):
@@ -449,14 +424,14 @@
             #
             # Process inbound messages
             #
-            logging.debug("%s processing inbound messages..." % self.name)
+            trace.debug("%s processing inbound messages..." % self.name)
             for i in range(batch_limit):
                 try:
                     msg = self._topic_receiver.fetch(timeout=0)
                 except Empty:
                     break
                 # TRACE
-                # logging.error("!!! Agent %s: msg on %s [%s]" %
+                # log.error("!!! Agent %s: msg on %s [%s]" %
                 # (self.name, self._topic_receiver.source, msg))
                 self._dispatch(msg, _direct=False)
 
@@ -466,7 +441,7 @@
                 except Empty:
                     break
                 # TRACE
-                # logging.error("!!! Agent %s: msg on %s [%s]" %
+                # log.error("!!! Agent %s: msg on %s [%s]" %
                 # (self.name, self._direct_receiver.source, msg))
                 self._dispatch(msg, _direct=True)
 
@@ -475,7 +450,7 @@
             #
             now = datetime.datetime.utcnow()
             if now >= next_heartbeat:
-                logging.debug("%s sending heartbeat..." % self.name)
+                trace.debug("%s sending heartbeat..." % self.name)
                 ind = Message(id=QMF_APP_ID,
                               subject=QmfAddress.SUBJECT_AGENT_HEARTBEAT,
                               properties={"method":"indication",
@@ -483,73 +458,72 @@
                                           "qmf.agent":self.name},
                               content=self._makeAgentInfoBody())
                 # TRACE
-                #logging.error("!!! Agent %s sending Heartbeat (%s)" % 
+                #log.error("!!! Agent %s sending Heartbeat (%s)" % 
                 # (self.name, str(ind)))
                 self._topic_sender.send(ind)
-                logging.debug("Agent Indication Sent")
+                trace.debug("Agent Indication Sent")
                 next_heartbeat = now + datetime.timedelta(seconds = self._heartbeat_interval)
 
-
-
             #
             # Monitor Subscriptions
             #
-            if (self._next_subscribe_event is None or
-                now >= self._next_subscribe_event):
-
-                logging.debug("%s polling subscriptions..." % self.name)
-                self._next_subscribe_event = now + datetime.timedelta(seconds=
+            self._lock.acquire()
+            try:
+                now = datetime.datetime.utcnow()
+                if (self._next_subscribe_event is None or
+                    now >= self._next_subscribe_event):
+                    trace.debug("%s polling subscriptions..." % self.name)
+                    self._next_subscribe_event = now + datetime.timedelta(seconds=
                                                                       self._max_duration)
-                self._lock.acquire()
-                try:
-                    dead_ss = []
+                    dead_ss = {}
                     for sid,ss in self._subscriptions.iteritems():
                         if now >= ss.expiration:
-                            dead_ss.append(sid)
+                            dead_ss[sid] = ss
                             continue
                         if now >= ss.next_update:
-                            response = []
-                            objs = self._queryData(ss.query)
-                            if objs:
-                                for obj in objs:
-                                    response.append(obj.map_encode())
-                                logging.debug("!!! %s publishing %s!!!" % (self.name, ss.correlation_id))
-                                self._send_query_response( ContentType.data,
-                                                           ss.correlation_id,
-                                                           ss.reply_to,
-                                                           response)
-                            ss.reset_interval(now)
-
+                            self._publish(ss)
                         next_timeout = min(ss.expiration, ss.next_update)
                         if next_timeout < self._next_subscribe_event:
                             self._next_subscribe_event = next_timeout
 
-                    for sid in dead_ss:
+                    for sid,ss in dead_ss.iteritems():
                         del self._subscriptions[sid]
-                finally:
-                    self._lock.release()
+                        self._unpublish(ss)
+            finally:
+                self._lock.release()
 
             #
             # notify application of pending WorkItems
             #
-
             if self._work_q_put and self._notifier:
-                logging.debug("%s notifying application..." % self.name)
+                trace.debug("%s notifying application..." % self.name)
                 # new stuff on work queue, kick the the application...
                 self._work_q_put = False
                 _callback_thread = currentThread()
-                logging.info("Calling agent notifier.indication")
+                trace.debug("Calling agent notifier.indication")
                 self._notifier.indication()
                 _callback_thread = None
 
             #
             # Sleep until messages arrive or something times out
             #
-            next_timeout = min(next_heartbeat, self._next_subscribe_event)
-            timeout = timedelta_to_secs(next_timeout -
-                                        datetime.datetime.utcnow())
-            if timeout > 0.0:
-                logging.debug("%s sleeping %s seconds..." % (self.name,
+            now = datetime.datetime.utcnow()
+            next_timeout = next_heartbeat
+            self._lock.acquire()
+            try:
+                # the mailbox expire flag may be cleared by the
+                # app thread(s) in order to force an immediate publish
+                if self._next_subscribe_event is None:
+                    next_timeout = now
+                elif self._next_subscribe_event < next_timeout:
+                    next_timeout = self._next_subscribe_event
+            finally:
+                self._lock.release()
+
+            timeout = timedelta_to_secs(next_timeout - now)
+
+            if self._running and timeout > 0.0:
+                trace.debug("%s sleeping %s seconds..." % (self.name,
                                                              timeout))
                 try:
                     self._session.next_receiver(timeout=timeout)
@@ -557,7 +531,7 @@
                     pass
 
 
-
+        trace.debug("Shutting down Agent %s thread" % self.name)
 
     #
     # Private:
@@ -578,24 +552,24 @@
             try:
                 reply_to = QmfAddress.from_string(str(reply_to))
             except ValueError:
-                logging.error("Invalid reply-to address '%s'" % reply_to)
+                log.error("Invalid reply-to address '%s'" % reply_to)
 
         msg.subject = reply_to.get_subject()
 
         try:
             if reply_to.is_direct():
                 # TRACE
-                #logging.error("!!! Agent %s direct REPLY-To:%s (%s)" % 
+                #log.error("!!! Agent %s direct REPLY-To:%s (%s)" % 
                 # (self.name, str(reply_to), str(msg)))
                 self._direct_sender.send(msg)
             else:
                 # TRACE
-                # logging.error("!!! Agent %s topic REPLY-To:%s (%s)" % 
+                # log.error("!!! Agent %s topic REPLY-To:%s (%s)" % 
                 # (self.name, str(reply_to), str(msg)))
                 self._topic_sender.send(msg)
-            logging.debug("reply msg sent to [%s]" % str(reply_to))
+            trace.debug("reply msg sent to [%s]" % str(reply_to))
         except SendError, e:
-            logging.error("Failed to send reply msg '%s' (%s)" % (msg, str(e)))
+            log.error("Failed to send reply msg '%s' (%s)" % (msg, str(e)))
 
     def _send_query_response(self, content_type, cid, reply_to, objects):
         """
@@ -640,12 +614,11 @@
 
         @param _direct: True if msg directly addressed to this agent.
         """
-        # logging.debug( "Message received from Console! [%s]" % msg )
-        # logging.error( "%s Message received from Console! [%s]" % (self.name, msg) )
+        trace.debug( "Message received from Console! [%s]" % msg )
 
         opcode = msg.properties.get("qmf.opcode")
         if not opcode:
-            logging.warning("Ignoring unrecognized message '%s'" % msg)
+            log.warning("Ignoring unrecognized message '%s'" % msg)
             return
         version = 2  # @todo: fix me
         cmap = {}; props={}
@@ -667,16 +640,17 @@
         elif opcode == OpCode.subscribe_cancel_ind:
             self._handleUnsubscribeReqMsg(msg, cmap, props, version, _direct)
         elif opcode == OpCode.noop:
-            logging.debug("No-op msg received.")
+            self._noop_pending = False
+            trace.debug("No-op msg received.")
         else:
-            logging.warning("Ignoring message with unrecognized 'opcode' value: '%s'"
+            log.warning("Ignoring message with unrecognized 'opcode' value: '%s'"
                             % opcode)
 
     def _handleAgentLocateMsg( self, msg, cmap, props, version, direct ):
         """
         Process a received agent-locate message
         """
-        logging.debug("_handleAgentLocateMsg")
+        trace.debug("_handleAgentLocateMsg")
 
         reply = False
         if props.get("method") == "request":
@@ -703,21 +677,21 @@
             m.correlation_id = msg.correlation_id
             self._send_reply(m, msg.reply_to)
         else:
-            logging.debug("agent-locate msg not mine - no reply sent")
+            trace.debug("agent-locate msg not mine - no reply sent")
 
 
     def _handleQueryMsg(self, msg, cmap, props, version, _direct ):
         """
         Handle received query message
         """
-        logging.debug("_handleQueryMsg")
+        trace.debug("_handleQueryMsg")
 
         if "method" in props and props["method"] == "request":
             if cmap:
                 try:
                     query = QmfQuery.from_map(cmap)
                 except TypeError:
-                    logging.error("Invalid Query format: '%s'" % str(cmap))
+                    log.error("Invalid Query format: '%s'" % str(cmap))
                     return
                 target = query.get_target()
                 if target == QmfQuery.TARGET_PACKAGES:
@@ -727,13 +701,13 @@
                 elif target == QmfQuery.TARGET_SCHEMA:
                     self._querySchemaReply( msg, query)
                 elif target == QmfQuery.TARGET_AGENT:
-                    logging.warning("!!! @todo: Query TARGET=AGENT TBD !!!")
+                    log.warning("!!! @todo: Query TARGET=AGENT TBD !!!")
                 elif target == QmfQuery.TARGET_OBJECT_ID:
                     self._queryDataReply(msg, query, _idOnly=True)
                 elif target == QmfQuery.TARGET_OBJECT:
                     self._queryDataReply(msg, query)
                 else:
-                    logging.warning("Unrecognized query target: '%s'" % str(target))
+                    log.warning("Unrecognized query target: '%s'" % str(target))
 
 
 
@@ -744,7 +718,7 @@
         if "method" in props and props["method"] == "request":
             mname = cmap.get(SchemaMethod.KEY_NAME)
             if not mname:
-                logging.warning("Invalid method call from '%s': no name"
+                log.warning("Invalid method call from '%s': no name"
                                 % msg.reply_to)
                 return
 
@@ -801,7 +775,7 @@
             try:
                 query = QmfQuery.from_map(query_map)
             except TypeError:
-                logging.warning("Invalid query for subscription: %s" %
+                log.warning("Invalid query for subscription: %s" %
                                 str(query_map))
                 return
 
@@ -815,7 +789,7 @@
                 # self._work_q.put(WorkItem(WorkItem.SUBSCRIBE_REQUEST,
                 #                           msg.correlation_id, param))
                 # self._work_q_put = True
-                logging.error("External Subscription TBD")
+                log.error("External Subscription TBD")
                 return
 
             # validate the query - only specific objects, or
@@ -823,7 +797,7 @@
             if (query.get_target() != QmfQuery.TARGET_OBJECT or
                 (query.get_selector() == QmfQuery.PREDICATE and
                  query.get_predicate())):
-                logging.error("Subscriptions only support (wildcard) Object"
+                log.error("Subscriptions only support (wildcard) Object"
                               " Queries.")
                 err = QmfData.create(
                     {"reason": "Unsupported Query type for subscription.",
@@ -846,7 +820,7 @@
                     elif duration < self._min_duration:
                         duration = self._min_duration
                 except:
-                    logging.warning("Bad duration value: %s" % str(msg))
+                    log.warning("Bad duration value: %s" % str(msg))
                     duration = self._default_duration
 
             if interval is None:
@@ -857,7 +831,7 @@
                     if interval < self._min_interval:
                         interval = self._min_interval
                 except:
-                    logging.warning("Bad interval value: %s" % str(msg))
+                    log.warning("Bad interval value: %s" % str(msg))
                     interval = self._default_interval
 
             ss = _SubscriptionState(msg.reply_to,
@@ -894,7 +868,7 @@
         if props.get("method") == "request":
             sid = cmap.get("_subscription_id")
             if not sid:
-                logging.error("Invalid subscription refresh msg: %s" %
+                log.error("Invalid subscription refresh msg: %s" %
                               str(msg))
                 return
 
@@ -902,7 +876,7 @@
             try:
                 ss = self._subscriptions.get(sid)
                 if not ss:
-                    logging.error("Ignoring unknown subscription: %s" %
+                    log.error("Ignoring unknown subscription: %s" %
                                   str(sid))
                     return
                 duration = cmap.get("_duration")
@@ -914,7 +888,7 @@
                         elif duration < self._min_duration:
                             duration = self._min_duration
                     except:
-                        logging.error("Bad duration value: %s" % str(msg))
+                        log.error("Bad duration value: %s" % str(msg))
                         duration = None  # use existing duration
 
                 ss.resubscribe(datetime.datetime.utcnow(), duration)
@@ -944,16 +918,19 @@
         if props.get("method") == "request":
             sid = cmap.get("_subscription_id")
             if not sid:
-                logging.warning("No subscription id supplied: %s" % msg)
+                log.warning("No subscription id supplied: %s" % msg)
                 return
 
             self._lock.acquire()
             try:
                 if sid in self._subscriptions:
+                    dead_sub = self._subscriptions[sid]
                     del self._subscriptions[sid]
             finally:
                 self._lock.release()
 
+            self._unpublish(dead_sub)
+
 
     def _queryPackagesReply(self, msg, query):
         """
@@ -1100,6 +1077,70 @@
 
         return data_objs
 
+    def _publish(self, sub):
+        """ Publish a subscription.
+        """
+        response = []
+        now = datetime.datetime.utcnow()
+        objs = self._queryData(sub.query)
+        if objs:
+            for obj in objs:
+                if sub.id not in obj._subscriptions:
+                    # new to subscription - publish it
+                    obj._subscriptions[sub.id] = sub
+                    response.append(obj.map_encode())
+                elif obj._dtime:
+                    # obj._dtime is millisec since utc.  Convert to datetime
+                    utcdt = datetime.datetime.utcfromtimestamp(obj._dtime/1000.0)
+                    if utcdt > sub.last_update:
+                        response.append(obj.map_encode())
+                else:
+                    # obj._utime is millisec since utc.  Convert to datetime
+                    utcdt = datetime.datetime.utcfromtimestamp(obj._utime/1000.0)
+                    if utcdt > sub.last_update:
+                        response.append(obj.map_encode())
+
+            if response:
+                trace.debug("!!! %s publishing %s!!!" % (self.name, sub.correlation_id))
+                self._send_query_response( ContentType.data,
+                                           sub.correlation_id,
+                                           sub.reply_to,
+                                           response)
+        sub.published(now)
+
+    def _unpublish(self, sub):
+        """ This subscription is about to be deleted, remove it from any
+        referencing objects.
+        """
+        objs = self._queryData(sub.query)
+        if objs:
+            for obj in objs:
+                if sub.id in obj._subscriptions:
+                    del obj._subscriptions[sub.id]
+
+
+
+    def _wake_thread(self):
+        """
+        Make the agent management thread loop wakeup from its next_receiver
+        sleep.
+        """
+        self._lock.acquire()
+        try:
+            if not self._noop_pending:
+                trace.debug("Sending noop to wake up [%s]" % self._address)
+                msg = Message(id=QMF_APP_ID,
+                              subject=self.name,
+                              properties={"method":"indication",
+                                          "qmf.opcode":OpCode.noop},
+                              content={})
+                try:
+                    self._direct_sender.send( msg, sync=True )
+                    self._noop_pending = True
+                except SendError, e:
+                    log.error(str(e))
+        finally:
+            self._lock.release()
 
 
   ##==============================================================================
@@ -1115,7 +1156,7 @@
         super(AgentExternal, self).__init__(name, _domain, _notifier,
                                             _heartbeat_interval,
                                             _max_msg_size, _capacity)
-        logging.error("AgentExternal TBD")
+        log.error("AgentExternal TBD")
 
 
 
@@ -1164,6 +1205,7 @@
         self._agent = agent
         self._validated = False
         self._modified = True
+        self._subscriptions = {}
 
     def destroy(self): 
         self._dtime = long(time.time() * 1000)
@@ -1175,7 +1217,8 @@
 
     def set_value(self, _name, _value, _subType=None):
         super(QmfAgentData, self).set_value(_name, _value, _subType)
-        self._touch()
+        self._utime = long(time.time() * 1000)
+        self._touch(_name)
         # @todo: publish change
 
     def inc_value(self, name, delta=1):
@@ -1191,8 +1234,12 @@
     def dec_value(self, name, delta=1): 
         """ subtract the delta from the property """
         # @todo: need to take write-lock
-        logging.error(" TBD!!!")
-        self._touch()
+        val = self.get_value(name)
+        try:
+            val -= delta
+        except:
+            raise
+        self.set_value(name, val)
 
     def validate(self):
         """
@@ -1212,12 +1259,32 @@
                     raise Exception("Required property '%s' not present." % name)
         self._validated = True
 
-    def _touch(self):
+    def _touch(self, field=None):
         """
         Mark this object as modified.  Used to force a publish of this object
         if on subscription.
         """
-        self._modified = True
+        now = datetime.datetime.utcnow()
+        publish = False
+        if field:
+            # if the named field is not continuous, mark any subscriptions as
+            # needing to be published.
+            sid = self.get_schema_class_id()
+            if sid:
+                self._agent._lock.acquire()
+                try:
+                    schema = self._agent._schema.get(sid)
+                    if schema:
+                        prop = schema.get_property(field)
+                        if prop and not prop.is_continuous():
+                            for sid,sub in self._subscriptions.iteritems():
+                                sub.next_update = now
+                                publish = True
+                    if publish:
+                        self._agent._next_subscribe_event = None
+                        self._agent._wake_thread()
+                finally:
+                    self._agent._lock.release()
 
 
 
@@ -1228,6 +1295,7 @@
 
 if __name__ == '__main__':
     # static test cases - no message passing, just exercise API
+    import logging
     from common import (AgentName, SchemaProperty, qmfTypes, SchemaEventClass)
 
     logging.getLogger().setLevel(logging.INFO)



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org