[Bedework-commit] bedework r3169 - in releases/bedework-3.7: . build build/buildTools build/quickstart/linux config/bwbuild/default config/bwbuild/jboss-h2 config/bwbuild/jboss-mysql config/bwbuild/jboss-postgresql deployment deployutil/src/org/bedework/deployment

svnadmin at bedework.org svnadmin at bedework.org
Sat Feb 12 19:13:45 EST 2011


Author: douglm
Date: 2011-02-12 19:13:29 -0500 (Sat, 12 Feb 2011)
New Revision: 3169

Added:
   releases/bedework-3.7/bedework-cleanup.xml
   releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForAppTask.java
Removed:
   releases/bedework-3.7/config/bwbuild/default/carddav.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-h2/carddav.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-mysql/carddav.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-postgresql/carddav.options.xml
Modified:
   releases/bedework-3.7/build/buildTools/deftasks.xml
   releases/bedework-3.7/build/buildTools/xjc.xml
   releases/bedework-3.7/build/buildsh.xml
   releases/bedework-3.7/build/buildwar.xml
   releases/bedework-3.7/build/quickstart/linux/bw
   releases/bedework-3.7/config/bwbuild/default/build.properties
   releases/bedework-3.7/config/bwbuild/default/cal.options.xml
   releases/bedework-3.7/config/bwbuild/default/cal.properties
   releases/bedework-3.7/config/bwbuild/default/log4j.xml
   releases/bedework-3.7/config/bwbuild/jboss-h2/build.properties
   releases/bedework-3.7/config/bwbuild/jboss-h2/cal.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-h2/cal.properties
   releases/bedework-3.7/config/bwbuild/jboss-h2/log4j.xml
   releases/bedework-3.7/config/bwbuild/jboss-mysql/build.properties
   releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.properties
   releases/bedework-3.7/config/bwbuild/jboss-mysql/log4j.xml
   releases/bedework-3.7/config/bwbuild/jboss-postgresql/build.properties
   releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.options.xml
   releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.properties
   releases/bedework-3.7/config/bwbuild/jboss-postgresql/log4j.xml
   releases/bedework-3.7/deployment/build.xml
   releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForEachAppTask.java
   releases/bedework-3.7/deployutil/src/org/bedework/deployment/MakeLangXsl.java
Log:
Further changes to the build process.

This allows virtual hosts to be set in the config file for carddav.

Carddav configuration is now rolled into the same config files as the other projects

Small change to webdav error logging

Added: releases/bedework-3.7/bedework-cleanup.xml
===================================================================
--- releases/bedework-3.7/bedework-cleanup.xml	                        (rev 0)
+++ releases/bedework-3.7/bedework-cleanup.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<profiles version="2">
+<profile kind="CleanUpProfile" name="bedework" version="2">
+<setting id="cleanup.remove_unused_private_fields" value="true"/>
+<setting id="cleanup.always_use_parentheses_in_expressions" value="true"/>
+<setting id="cleanup.never_use_blocks" value="false"/>
+<setting id="cleanup.remove_unused_private_methods" value="true"/>
+<setting id="cleanup.add_missing_deprecated_annotations" value="true"/>
+<setting id="cleanup.convert_to_enhanced_for_loop" value="false"/>
+<setting id="cleanup.remove_unnecessary_nls_tags" value="true"/>
+<setting id="cleanup.sort_members" value="false"/>
+<setting id="cleanup.remove_unused_local_variables" value="false"/>
+<setting id="cleanup.never_use_parentheses_in_expressions" value="false"/>
+<setting id="cleanup.remove_unused_private_members" value="false"/>
+<setting id="cleanup.remove_unnecessary_casts" value="true"/>
+<setting id="cleanup.make_parameters_final" value="true"/>
+<setting id="cleanup.use_this_for_non_static_field_access" value="true"/>
+<setting id="cleanup.remove_private_constructors" value="true"/>
+<setting id="cleanup.use_blocks" value="true"/>
+<setting id="cleanup.always_use_this_for_non_static_method_access" value="false"/>
+<setting id="cleanup.remove_trailing_whitespaces_all" value="true"/>
+<setting id="cleanup.always_use_this_for_non_static_field_access" value="false"/>
+<setting id="cleanup.use_this_for_non_static_field_access_only_if_necessary" value="true"/>
+<setting id="cleanup.add_default_serial_version_id" value="true"/>
+<setting id="cleanup.make_type_abstract_if_missing_method" value="false"/>
+<setting id="cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class" value="true"/>
+<setting id="cleanup.make_variable_declarations_final" value="true"/>
+<setting id="cleanup.add_missing_nls_tags" value="false"/>
+<setting id="cleanup.format_source_code" value="false"/>
+<setting id="cleanup.qualify_static_method_accesses_with_declaring_class" value="false"/>
+<setting id="cleanup.add_missing_override_annotations" value="true"/>
+<setting id="cleanup.remove_unused_private_types" value="true"/>
+<setting id="cleanup.add_missing_methods" value="false"/>
+<setting id="cleanup.make_local_variable_final" value="false"/>
+<setting id="cleanup.correct_indentation" value="false"/>
+<setting id="cleanup.remove_unused_imports" value="true"/>
+<setting id="cleanup.remove_trailing_whitespaces_ignore_empty" value="false"/>
+<setting id="cleanup.make_private_fields_final" value="false"/>
+<setting id="cleanup.add_generated_serial_version_id" value="false"/>
+<setting id="cleanup.organize_imports" value="true"/>
+<setting id="cleanup.remove_trailing_whitespaces" value="true"/>
+<setting id="cleanup.sort_members_all" value="false"/>
+<setting id="cleanup.use_blocks_only_for_return_and_throw" value="false"/>
+<setting id="cleanup.add_missing_annotations" value="true"/>
+<setting id="cleanup.use_parentheses_in_expressions" value="true"/>
+<setting id="cleanup.qualify_static_field_accesses_with_declaring_class" value="false"/>
+<setting id="cleanup.use_this_for_non_static_method_access_only_if_necessary" value="true"/>
+<setting id="cleanup.use_this_for_non_static_method_access" value="true"/>
+<setting id="cleanup.qualify_static_member_accesses_through_instances_with_declaring_class" value="true"/>
+<setting id="cleanup.add_serial_version_id" value="false"/>
+<setting id="cleanup.format_source_code_changes_only" value="false"/>
+<setting id="cleanup.qualify_static_member_accesses_with_declaring_class" value="true"/>
+<setting id="cleanup.always_use_blocks" value="true"/>
+</profile>
+</profiles>

Modified: releases/bedework-3.7/build/buildTools/deftasks.xml
===================================================================
--- releases/bedework-3.7/build/buildTools/deftasks.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/build/buildTools/deftasks.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -19,6 +19,11 @@
                classname="org.bedework.deployment.ForEachAppTask">
         <classpath refid="build.cp"/>
       </taskdef>
+      
+      <taskdef name="forApp"
+               classname="org.bedework.deployment.ForAppTask">
+        <classpath refid="build.cp"/>
+      </taskdef>
 
       <taskdef name="resolveFile"
                classname="org.bedework.deployment.ResolveFile">

Modified: releases/bedework-3.7/build/buildTools/xjc.xml
===================================================================
--- releases/bedework-3.7/build/buildTools/xjc.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/build/buildTools/xjc.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -29,15 +29,15 @@
     <sequential>
       <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
       
-      <property name="sourcedestdir" location="@{module-base}/src" />
+      <var name="sourcedestdir" value="@{module-base}/src" />
       
-      <dirname property="org.bedework.wsdl.dir" file="@{wsdl}"/>
+      <dirname property="org.bedework.schema.dir" file="@{schema}"/>
 
       <if>
         <and>
           <available file="${sourcedestdir}" type="dir" />
           <uptodate targetfile="@{jar-file}" >
-            <srcfiles dir="${org.bedework.wsdl.dir}" />
+            <srcfiles dir="${org.bedework.schema.dir}" />
           </uptodate>
         </and>
         <then>

Modified: releases/bedework-3.7/build/buildsh.xml
===================================================================
--- releases/bedework-3.7/build/buildsh.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/build/buildsh.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -93,7 +93,7 @@
     <mkdir dir="${app.dest.properties}" />
 
     <copy tofile="${app.dest.properties}/options.xml"
-          file="${org.bedework.options.file}" >
+          file="${org.bedework.config.options}" >
       <filterset>
         <filter token="RPI-DEBUG" value="${app.debug.val}"/>
       </filterset>

Modified: releases/bedework-3.7/build/buildwar.xml
===================================================================
--- releases/bedework-3.7/build/buildwar.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/build/buildwar.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -166,7 +166,7 @@
     </if>
 
     <copy tofile="${app.dest.properties}/options.xml"
-          file="${org.bedework.options.file}" >
+          file="${org.bedework.config.options}" >
       <filterset>
         <filter token="RPI-DEBUG" value="${app.debug.val}"/>
       </filterset>

Modified: releases/bedework-3.7/build/quickstart/linux/bw
===================================================================
--- releases/bedework-3.7/build/quickstart/linux/bw	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/build/quickstart/linux/bw	2011-02-13 00:13:29 UTC (rev 3169)
@@ -243,6 +243,7 @@
 # Projects we will build
 pkgdefault=yes
 bedework=
+bwxmlschema=
 carddav=
 caldav=
 client=
@@ -347,6 +348,11 @@
       shift
       ;;
 # ------------------------Projects
+    -bwxml)
+      bwxmlschema="yes"
+      pkgdefault=
+      shift
+      ;;
     -carddav)
       carddav="yes"
       pkgdefault=
@@ -428,6 +434,10 @@
 echo "BWCONFIGS=$BWCONFIGS"
 echo "BWCONFIG=$BWCONFIG"
 
+if [ "$bwxmlschema" != "" ] ; then
+  cd $QUICKSTART_HOME/bwxml-schema
+fi
+
 if [ "$caldav" != "" ] ; then
   cd $QUICKSTART_HOME/bedework/projects/caldav
 fi

Modified: releases/bedework-3.7/config/bwbuild/default/build.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/default/build.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/default/build.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -27,6 +27,3 @@
 org.bedework.config.options=${env.BEDEWORK_CONFIG}/cal.options.xml
 
 org.bedework.config.sysevents.properties=${env.BEDEWORK_CONFIG}/sysevents.properties
-
-org.bedework.carddav.options=${env.BEDEWORK_CONFIG}/carddav.options.xml
-

Modified: releases/bedework-3.7/config/bwbuild/default/cal.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/default/cal.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/default/cal.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,3 +1,5 @@
+<?xml version="1.0"?>
+
 <!-- This provides run time options for each of the configured applications.
   -->
 <bedework-options>
@@ -67,7 +69,301 @@
           <location>loc_</location>
         </caladdrPrefixes>     
            -->
+           
+        <!-- ===============================================================
+                         CardDAV directory handlers
+             =============================================================== -->
+
+        <dirhandlers>
+          <!-- handle the principal hierarchy.
+               This could be a read-only interface if we don't intend to allow
+               modification of the enterprise directory.
+
+               However, we may need to merge in subsidiary information to handle
+               principal properties. That may mean maintaining a shadow
+               principal hierarchy in the local server.
+               
+               Each element name below must be unique.
+            -->
+          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>dc=bedework, dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <!-- We need to get operational attributes from the directory.
+               This requires us to explicitly name all attributes on fetch.
+               This element allows us to name EXTRA attributes from the default
+               list provided by the implementation.
+              -->
+            <attrIds></attrIds>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </principal-dirHandler>
+
+          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/users</pathPrefix>
+            <addressBook>true</addressBook>
+            
+            <!-- The cardPathPrefix is used to manufacture a path to a card for 
+                 the principal. If it is set we take the path
+                 
+                 <principal-root>/<account>
+                 
+                 and transform it to 
+                 
+                 <cardPathPrefix>/<account>.vcf
+                 
+                 If it is not set we try the cardPathPrefixes supplied globally.
+                 If they are not supplied we don't give any path. The client will
+                 have to fall back to a query.
+                 -->
+            <cardPathPrefix>/public/people</cardPathPrefix>
+
+            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>individual</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
+
+            <principalIdAttr>uid</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </user-principal-dirHandler>
+
+          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/groups</pathPrefix>
+            <addressBook>true</addressBook>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>group</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </group-principal-dirHandler>
+          
+          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/locations</pathPrefix>
+            <addressBook>true</addressBook>
+            <cardPathPrefix>/public/locations</cardPathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </location-principal-dirHandler>
+            
+          <!-- handle the public (enterprise) people address book hierarchy -->
+          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/people</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+            
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
+            <queryLimit>1000</queryLimit>
+            
+            <attrIds></attrIds>
+            
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+            
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-people-dirHandler>
+          
+          
+          <!-- handle the user address book hierarchy -->
+          
+          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
+
+            <queryLimit>1000</queryLimit> <!-- unimplemented -->
+          
+            <!-- This is the access set at the root. I'll do this as XML soon -->
+            <rootAccess>WONyA WANyFyS </rootAccess>
+          
+            <!-- This is the owner of the user root and user home -->
+            <rootOwner>/principals/users/root</rootOwner>
+            
+            <debug>true</debug>
+          </user-dirHandler>
+
+          <!-- handle the user address book hierarchy
+               How it might be done with ldap 
+          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </user-dirHandler>
+          -->
+ 
+          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/locations</pathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>calcaladruri</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </public-locations-dirHandler>
+
+          <!-- handle the public (enterprise) address book hierarchy -->
+          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-dirHandler>
+        </dirhandlers>
         
+        <!-- ===============================================================
+                         Calendar system modules
+             =============================================================== -->
+
         <module>
           <!-- A dummy module with no directory. -->
           <dir-config classname="org.bedework.calfacade.configs.DirConfigProperties">
@@ -175,9 +471,9 @@
       </syspars>
 
       <app>
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Timezones server
-             ================================================================== -->
+             =============================================================== -->
         <tzsvr classname="org.bedework.timezones.common.TzsvrConfig">
           <appType>tzsvr</appType>
           
@@ -192,16 +488,16 @@
           <postId>12345abcde</postId>          
         </tzsvr>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Config web client
-             ================================================================== -->
+             =============================================================== -->
         <bwconfig classname="org.bedework.calfacade.configs.ConfigCommon">
           <appType>webconfig</appType>
           <publicAdmin>false</publicAdmin>
           <guestMode>false</guestMode>
         </bwconfig>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Admin web client CalAdmin
              ================================================================== -->
         <CalAdmin classname="org.bedework.calfacade.configs.AdminConfig">
@@ -425,9 +721,9 @@
           <refreshInterval>300</refreshInterval>
         </UserCal>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           User CalDAV server UserCalDAV
-             ================================================================== -->
+             =============================================================== -->
         <Usercaldav classname="org.bedework.caldav.util.CalDAVConfig">
           <appType>usercaldav</appType>
           <!--
@@ -585,6 +881,9 @@
           <debugEntity>false</debugEntity>
         </iosched>
 
+        <!-- ==================================================================
+                          Exchange synch
+             ================================================================== -->
         <Exsynch classname="org.bedework.exchgsynch.ExsynchConfig">
           <appType>exsynch</appType>
 
@@ -592,11 +891,76 @@
           <exchangeWSDLURI>http://localhost:8080/exchange/Services.wsdl</exchangeWSDLURI>
 
           <!-- Exchange sync callback. Comment out for no service -->
-          <exchangeWsPushURI>http://myexhange.mysite.edu/exsynch/</exchangeWsPushURI>
+          <exchangeWsPushURI>http://128.113.124.221/exsynch/</exchangeWsPushURI>
 
           <!-- Path to keystore - comment out to use default -->          
           <keystore>@APPSERVER-DATA-DIR@/exsynchcerts</keystore>
+
+          <!-- location of the WSDL for the remote web service -->
+          <remoteWSDLURI>http://localhost:8080/exchange/wssvc.wsdl</remoteWSDLURI>
+          
+          <remoteWsURL>http://localhost:8080/pubcaldav/exsynchws/</remoteWsURL>
+          
+          <!-- seconds  --> 
+          <remoteKeepAliveInterval>60</remoteKeepAliveInterval>
         </Exsynch>
+
+        <!-- ===============================================================
+                          User CardDAV server usercarddav
+             =============================================================== -->
+        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <!-- This will act as the root for the file system -->
+          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </usercarddav>
+
+        <!-- ===============================================================
+                          Public CardDAV server pubcarddav
+             =============================================================== -->
+        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </pubcarddav>
       </app>
     </bedework>
   </org>

Modified: releases/bedework-3.7/config/bwbuild/default/cal.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/default/cal.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/default/cal.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -49,6 +49,7 @@
 # much grief. 
 org.bedework.global.jboss.db.datasource.jndiname=/CalendarDS
 org.bedework.global.jboss.carddb.datasource.jndiname=/CardDS
+org.bedework.global.jboss.exsynch.datasource.jndiname=/ExsynchDS
 
 # Hibernate caching parameters
 org.bedework.global.hibernate.cache.use_second_level_cache=false
@@ -128,7 +129,7 @@
 #  where most library files used by all applications go
 appserver.lib.dir=${org.bedework.jboss.config.dir}/lib
 
-# where data files go
+# where things like log4j config files go
 org.bedework.jboss.data.dir=${org.bedework.appserver.dir}/server/${org.bedework.jboss.config}/data/bedework
 org.bedework.data.dir=${org.bedework.jboss.data.dir}
 
@@ -148,6 +149,9 @@
 #
 # If set to true or yes will copy in the bedework card db datasource def bedework-ds.xml
 org.bedework.global.copy.bedeworkcardds.config=yes
+#
+# If set to true or yes will copy in the bedework exchange synch db datasource def 
+org.bedework.global.copy.bedeworkexsynchds.config=yes
 
 # ------------------------------------------------------------------------
 # ActiveMQ defs
@@ -193,7 +197,7 @@
 org.bedework.app.tzsvr.war.name=tzsvr
 org.bedework.app.tzsvr.context.root=/tzsvr
 # Set for jboss
-#org.bedework.app.tzsvr.virtual.host=
+#org.bedework.app.tzsvr.virtual.host=my.host1,my.host.2
 
 org.bedework.app.tzsvr.description=Bedework timezones server.
 org.bedework.app.tzsvr.display.name=Bedework timezones server.
@@ -433,6 +437,54 @@
 #
 # --------------------------------------------------------------------
 #
+# Public Calws Server
+#
+org.bedework.app.Pubcalws.project=caldav
+org.bedework.app.Pubcalws.sou.dir=server
+org.bedework.app.Pubcalws.interface.jar=bw-caldav
+
+org.bedework.app.Pubcalws.web.xml=war/WEB-INF/publicws-web.xml
+org.bedework.app.Pubcalws.tomcat.context.xml=war/META-INF/publiccontext.xml
+org.bedework.app.Pubcalws.war.name=Pubcalws
+org.bedework.app.Pubcalws.context.root=/Pubcalws
+# Set for jboss
+#org.bedework.app.Pubcalws.virtual.host=
+
+org.bedework.app.Pubcalws.description=Bedework public calws server.
+org.bedework.app.Pubcalws.display.name=Bedework public calws
+org.bedework.app.Pubcalws.name=DemoPubcalws
+org.bedework.app.Pubcalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Pubcalws.logprefix=Pubcalws
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Calws Server
+#
+org.bedework.app.Usercalws.project=caldav
+org.bedework.app.Usercalws.sou.dir=server
+org.bedework.app.Usercalws.interface.jar=bw-caldav
+
+org.bedework.app.Usercalws.web.xml=war/WEB-INF/userws-web.xml
+org.bedework.app.Usercalws.tomcat.context.xml=war/META-INF/usercontext.xml
+org.bedework.app.Usercalws.war.name=ucalws
+org.bedework.app.Usercalws.context.root=/ucalws
+# Set for jboss
+#org.bedework.app.Usercalws.virtual.host=
+
+org.bedework.app.Usercalws.security.domain=bedeworkdemo
+org.bedework.app.Usercalws.security.prefix=demo
+org.bedework.app.Usercalws.transport.guarantee=NONE
+
+org.bedework.app.Usercalws.description=Bedework user calws server.
+org.bedework.app.Usercalws.display.name=Bedework Usercalws
+org.bedework.app.Usercalws.name=DemoUsrcalws
+org.bedework.app.Usercalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Usercalws.logprefix=Usercalws
+
+#
+# --------------------------------------------------------------------
+#
 # CalDAV test
 #
 
@@ -538,9 +590,53 @@
 
 org.bedework.app.iosched.project=calendarapi
 org.bedework.app.iosched.sou.dir=
+org.bedework.app.iosched.in.ear=true
 org.bedework.app.iosched.shellscr.name=bwrun
 org.bedework.app.iosched.batscr.name=bwrun.bat
 org.bedework.app.iosched.zip.name=bwiosched
 org.bedework.app.iosched.description=Bedework In/outbox scheduler application
 
+#
+# --------------------------------------------------------------------
+#
+# Public Carddav Server
+#
+org.bedework.app.pubcarddav.project=carddav
+org.bedework.app.pubcarddav.sou.dir=server
 
+org.bedework.app.pubcarddav.web.xml=war/WEB-INF/publicweb.xml
+org.bedework.app.pubcarddav.war.name=pubcarddav
+org.bedework.app.pubcarddav.context.root=/pubcarddav
+# Set for jboss
+#org.bedework.app.pubcarddav.virtual.host=calendars.rpi.edu
+
+org.bedework.app.pubcarddav.description=Bedework public carddav server.
+org.bedework.app.pubcarddav.display.name=Bedework public carddav
+org.bedework.app.pubcarddav.name=Demopubcarddav
+org.bedework.app.pubcarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.pubcarddav.logprefix=pubcarddav
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Carddav Server
+#
+org.bedework.app.usercarddav.project=carddav
+org.bedework.app.usercarddav.sou.dir=server
+
+org.bedework.app.usercarddav.web.xml=war/WEB-INF/userweb.xml
+org.bedework.app.usercarddav.war.name=ucarddav
+org.bedework.app.usercarddav.context.root=/ucarddav
+# Set for jboss
+#org.bedework.app.usercarddav.virtual.host=events.rpi.edu
+
+org.bedework.app.usercarddav.security.domain=bedeworkdemo
+org.bedework.app.usercarddav.security.prefix=demo
+org.bedework.app.usercarddav.transport.guarantee=NONE
+
+org.bedework.app.usercarddav.description=Bedework user carddav server.
+org.bedework.app.usercarddav.display.name=Bedework usercarddav
+org.bedework.app.usercarddav.name=DemoUsrcarddav
+org.bedework.app.usercarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.usercarddav.logprefix=usercarddav
+

Deleted: releases/bedework-3.7/config/bwbuild/default/carddav.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/default/carddav.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/default/carddav.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,350 +0,0 @@
-<!-- This provides run time options for the CardDAV server.
-  -->
-<bedework-options>
-  <org>
-    <bedework>
-      <global>
-        <version>3.6</version>
-
-        <dirhandlers>
-          <!-- handle the principal hierarchy.
-               This could be a read-only interface if we don't intend to allow
-               modification of the enterprise directory.
-
-               However, we may need to merge in subsidiary information to handle
-               principal properties. That may mean maintaining a shadow
-               principal hierarchy in the local server.
-               
-               Each element name below must be unique.
-            -->
-          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>dc=bedework, dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <!-- We need to get operational attributes from the directory.
-               This requires us to explicitly name all attributes on fetch.
-               This element allows us to name EXTRA attributes from the default
-               list provided by the implementation.
-              -->
-            <attrIds></attrIds>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </principal-dirHandler>
-
-          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/users</pathPrefix>
-            <addressBook>true</addressBook>
-            
-            <!-- The cardPathPrefix is used to manufacture a path to a card for 
-                 the principal. If it is set we take the path
-                 
-                 <principal-root>/<account>
-                 
-                 and transform it to 
-                 
-                 <cardPathPrefix>/<account>.vcf
-                 
-                 If it is not set we try the cardPathPrefixes supplied globally.
-                 If they are not supplied we don't give any path. The client will
-                 have to fall back to a query.
-                 -->
-            <cardPathPrefix>/public/people</cardPathPrefix>
-
-            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>individual</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
-
-            <principalIdAttr>uid</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </user-principal-dirHandler>
-
-          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/groups</pathPrefix>
-            <addressBook>true</addressBook>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>group</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </group-principal-dirHandler>
-          
-          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/locations</pathPrefix>
-            <addressBook>true</addressBook>
-            <cardPathPrefix>/public/locations</cardPathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </location-principal-dirHandler>
-            
-          <!-- handle the public (enterprise) people address book hierarchy -->
-          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/people</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-            
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
-            <queryLimit>1000</queryLimit>
-            
-            <attrIds></attrIds>
-            
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-            
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-people-dirHandler>
-          
-          
-          <!-- handle the user address book hierarchy -->
-          
-          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
-
-            <queryLimit>1000</queryLimit> <!-- unimplemented -->
-          
-            <!-- This is the access set at the root. I'll do this as XML soon -->
-            <rootAccess>WONyA WANyFyS </rootAccess>
-          
-            <!-- This is the owner of the user root and user home -->
-            <rootOwner>/principals/users/root</rootOwner>
-            
-            <debug>true</debug>
-          </user-dirHandler>
-
-          <!-- handle the user address book hierarchy
-               How it might be done with ldap 
-          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </user-dirHandler>
-          -->
- 
-          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/locations</pathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>calcaladruri</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </public-locations-dirHandler>
-
-          <!-- handle the public (enterprise) address book hierarchy -->
-          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-dirHandler>
-        </dirhandlers>
-      </global>
-
-      <app>
-        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <!-- This will act as the root for the file system -->
-          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </usercarddav>
-
-        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </pubcarddav>
-      </app>
-    </bedework>
-  </org>
-</bedework-options>

Modified: releases/bedework-3.7/config/bwbuild/default/log4j.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/default/log4j.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/default/log4j.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -385,6 +385,7 @@
      <priority value="${jboss.server.log.threshold}" />
    </category>
 
+<!-- 
    <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="${org.bedework.loglevel.exprfilters}"/>
    </category>
@@ -397,13 +398,29 @@
       <priority value="${org.bedework.loglevel.schemaexport:INFO}"/>
    </category>
 
-   <category name="org.bedework.calcore.AccessUtil">
+   <category name="org.bedework.client.FilterBuilder">
+      <priority value="${org.bedework.loglevel.exprfilters}"/>
+   </category>
+ -->
+   <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="INFO"/>
    </category>
 
+   <category name="org.bedework.calsvc.client.FilterBuilder">
+      <priority value="INFO"/>
+   </category>
+
+   <category name="org.hibernate.tool.hbm2ddl.SchemaExport">
+      <priority value="INFO"/>
+   </category>
+
    <category name="org.bedework.client.FilterBuilder">
-      <priority value="${org.bedework.loglevel.exprfilters}"/>
+      <priority value="INFO"/>
    </category>
+ 
+   <category name="org.bedework.calcore.AccessUtil">
+      <priority value="INFO"/>
+   </category>
 
    <!-- Limit hibernate categories -->
    <category name="org.hibernate">

Modified: releases/bedework-3.7/config/bwbuild/jboss-h2/build.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-h2/build.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-h2/build.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -27,6 +27,3 @@
 org.bedework.config.options=${env.BEDEWORK_CONFIG}/cal.options.xml
 
 org.bedework.config.sysevents.properties=${env.BEDEWORK_CONFIG}/sysevents.properties
-
-org.bedework.carddav.options=${env.BEDEWORK_CONFIG}/carddav.options.xml
-

Modified: releases/bedework-3.7/config/bwbuild/jboss-h2/cal.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-h2/cal.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-h2/cal.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,3 +1,5 @@
+<?xml version="1.0"?>
+
 <!-- This provides run time options for each of the configured applications.
   -->
 <bedework-options>

Modified: releases/bedework-3.7/config/bwbuild/jboss-h2/cal.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-h2/cal.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-h2/cal.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -42,6 +42,7 @@
 # much grief. 
 org.bedework.global.jboss.db.datasource.jndiname=/CalendarDS
 org.bedework.global.jboss.carddb.datasource.jndiname=/CardDS
+org.bedework.global.jboss.exsynch.datasource.jndiname=/ExsynchDS
 
 # Hibernate caching parameters
 org.bedework.global.hibernate.cache.use_second_level_cache=false
@@ -100,7 +101,7 @@
 org.bedework.global.ext.lib=${org.bedework.config.home}/lib
 
 # A list of jars to copy, delimited by ","
-org.bedework.global.extra.jars=${org.bedework.project.bedework}/projects/rpiutil/dist/rpiutil-3.6.jar
+org.bedework.global.extra.jars=${org.bedework.project.bedework}/projects/rpiutil/dist/rpiutil-${org.bedework.rpiutil.version}.jar
 
 # ------------------------------------------------------------------------
 # Application server defs
@@ -121,7 +122,7 @@
 #  where most library files used by all applications go
 appserver.lib.dir=${org.bedework.jboss.config.dir}/lib
 
-# where data files go
+# where things like log4j config files go
 org.bedework.jboss.data.dir=${org.bedework.appserver.dir}/server/${org.bedework.jboss.config}/data/bedework
 org.bedework.data.dir=${org.bedework.jboss.data.dir}
 
@@ -135,26 +136,15 @@
 
 # The log4j config file destination
 org.bedework.log4j.config=${org.bedework.appserver.dir}/server/${org.bedework.jboss.config}/conf/jboss-log4j.xml
-
-# ------------------------------------------------------------------------
-# Parameters for shell apps - set the db name in the url below
-# ------------------------------------------------------------------------
-
-org.bedework.global.jdbcdriver=org.h2.Driver
-org.bedework.global.jdbcurl=jdbc:h2:tcp://localhost:9092/${org.bedework.jboss.data.dir}/h2/CalDb3p6
-org.bedework.global.jdbcid=sa
-org.bedework.global.jdbcpw=bw
-
-#org.bedework.global.jdbcdriver=org.apache.derby.jdbc.EmbeddedDriver
-#org.bedework.global.jdbcurl=jdbc:derby:${org.bedework.jboss.data.dir}/derby/CalDb3p6
-#org.bedework.global.jdbcid=sa
-#org.bedework.global.jdbcpw=
 #
 # If set to true or yes will copy in the bedework db datasource def bedework-ds.xml
 org.bedework.global.copy.bedeworkds.config=yes
 #
 # If set to true or yes will copy in the bedework card db datasource def bedework-ds.xml
 org.bedework.global.copy.bedeworkcardds.config=yes
+#
+# If set to true or yes will copy in the bedework exchange synch db datasource def 
+org.bedework.global.copy.bedeworkexsynchds.config=yes
 
 # ------------------------------------------------------------------------
 # ActiveMQ defs
@@ -200,7 +190,7 @@
 org.bedework.app.tzsvr.war.name=tzsvr
 org.bedework.app.tzsvr.context.root=/tzsvr
 # Set for jboss
-#org.bedework.app.tzsvr.virtual.host=
+#org.bedework.app.tzsvr.virtual.host=my.host1,my.host.2
 
 org.bedework.app.tzsvr.description=Bedework timezones server.
 org.bedework.app.tzsvr.display.name=Bedework timezones server.
@@ -440,6 +430,54 @@
 #
 # --------------------------------------------------------------------
 #
+# Public Calws Server
+#
+org.bedework.app.Pubcalws.project=caldav
+org.bedework.app.Pubcalws.sou.dir=server
+org.bedework.app.Pubcalws.interface.jar=bw-caldav
+
+org.bedework.app.Pubcalws.web.xml=war/WEB-INF/publicws-web.xml
+org.bedework.app.Pubcalws.tomcat.context.xml=war/META-INF/publiccontext.xml
+org.bedework.app.Pubcalws.war.name=Pubcalws
+org.bedework.app.Pubcalws.context.root=/Pubcalws
+# Set for jboss
+#org.bedework.app.Pubcalws.virtual.host=
+
+org.bedework.app.Pubcalws.description=Bedework public calws server.
+org.bedework.app.Pubcalws.display.name=Bedework public calws
+org.bedework.app.Pubcalws.name=DemoPubcalws
+org.bedework.app.Pubcalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Pubcalws.logprefix=Pubcalws
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Calws Server
+#
+org.bedework.app.Usercalws.project=caldav
+org.bedework.app.Usercalws.sou.dir=server
+org.bedework.app.Usercalws.interface.jar=bw-caldav
+
+org.bedework.app.Usercalws.web.xml=war/WEB-INF/userws-web.xml
+org.bedework.app.Usercalws.tomcat.context.xml=war/META-INF/usercontext.xml
+org.bedework.app.Usercalws.war.name=ucalws
+org.bedework.app.Usercalws.context.root=/ucalws
+# Set for jboss
+#org.bedework.app.Usercalws.virtual.host=
+
+org.bedework.app.Usercalws.security.domain=bedeworkdemo
+org.bedework.app.Usercalws.security.prefix=demo
+org.bedework.app.Usercalws.transport.guarantee=NONE
+
+org.bedework.app.Usercalws.description=Bedework user calws server.
+org.bedework.app.Usercalws.display.name=Bedework Usercalws
+org.bedework.app.Usercalws.name=DemoUsrcalws
+org.bedework.app.Usercalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Usercalws.logprefix=Usercalws
+
+#
+# --------------------------------------------------------------------
+#
 # CalDAV test
 #
 
@@ -507,6 +545,7 @@
 org.bedework.app.sysevlog.batscr.name=bwrun.bat
 org.bedework.app.sysevlog.zip.name=bwsysevlog
 org.bedework.app.sysevlog.description=Bedework system events logger application
+org.bedework.app.sysevlog.no.defaultlibs=true
 
 #
 # --------------------------------------------------------------------
@@ -520,6 +559,7 @@
 org.bedework.app.monitor.batscr.name=bwrun.bat
 org.bedework.app.monitor.zip.name=monitor
 org.bedework.app.monitor.description=Bedework system events monitor application
+org.bedework.app.monitor.no.defaultlibs=true
 
 #
 # --------------------------------------------------------------------
@@ -533,6 +573,7 @@
 org.bedework.app.genkeys.batscr.name=bwrun.bat
 org.bedework.app.genkeys.zip.name=genkeys
 org.bedework.app.genkeys.description=Bedework system Key generator
+org.bedework.app.genkeys.no.defaultlibs=true
 
 #
 # --------------------------------------------------------------------
@@ -542,9 +583,53 @@
 
 org.bedework.app.iosched.project=calendarapi
 org.bedework.app.iosched.sou.dir=
+org.bedework.app.iosched.in.ear=true
 org.bedework.app.iosched.shellscr.name=bwrun
 org.bedework.app.iosched.batscr.name=bwrun.bat
 org.bedework.app.iosched.zip.name=bwiosched
 org.bedework.app.iosched.description=Bedework In/outbox scheduler application
 
+#
+# --------------------------------------------------------------------
+#
+# Public Carddav Server
+#
+org.bedework.app.pubcarddav.project=carddav
+org.bedework.app.pubcarddav.sou.dir=server
 
+org.bedework.app.pubcarddav.web.xml=war/WEB-INF/publicweb.xml
+org.bedework.app.pubcarddav.war.name=pubcarddav
+org.bedework.app.pubcarddav.context.root=/pubcarddav
+# Set for jboss
+#org.bedework.app.pubcarddav.virtual.host=calendars.rpi.edu
+
+org.bedework.app.pubcarddav.description=Bedework public carddav server.
+org.bedework.app.pubcarddav.display.name=Bedework public carddav
+org.bedework.app.pubcarddav.name=Demopubcarddav
+org.bedework.app.pubcarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.pubcarddav.logprefix=pubcarddav
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Carddav Server
+#
+org.bedework.app.usercarddav.project=carddav
+org.bedework.app.usercarddav.sou.dir=server
+
+org.bedework.app.usercarddav.web.xml=war/WEB-INF/userweb.xml
+org.bedework.app.usercarddav.war.name=ucarddav
+org.bedework.app.usercarddav.context.root=/ucarddav
+# Set for jboss
+#org.bedework.app.usercarddav.virtual.host=events.rpi.edu
+
+org.bedework.app.usercarddav.security.domain=bedeworkdemo
+org.bedework.app.usercarddav.security.prefix=demo
+org.bedework.app.usercarddav.transport.guarantee=NONE
+
+org.bedework.app.usercarddav.description=Bedework user carddav server.
+org.bedework.app.usercarddav.display.name=Bedework usercarddav
+org.bedework.app.usercarddav.name=DemoUsrcarddav
+org.bedework.app.usercarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.usercarddav.logprefix=usercarddav
+

Deleted: releases/bedework-3.7/config/bwbuild/jboss-h2/carddav.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-h2/carddav.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-h2/carddav.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,350 +0,0 @@
-<!-- This provides run time options for the CardDAV server.
-  -->
-<bedework-options>
-  <org>
-    <bedework>
-      <global>
-        <version>3.6</version>
-
-        <dirhandlers>
-          <!-- handle the principal hierarchy.
-               This could be a read-only interface if we don't intend to allow
-               modification of the enterprise directory.
-
-               However, we may need to merge in subsidiary information to handle
-               principal properties. That may mean maintaining a shadow
-               principal hierarchy in the local server.
-               
-               Each element name below must be unique.
-            -->
-          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>dc=bedework, dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <!-- We need to get operational attributes from the directory.
-               This requires us to explicitly name all attributes on fetch.
-               This element allows us to name EXTRA attributes from the default
-               list provided by the implementation.
-              -->
-            <attrIds></attrIds>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </principal-dirHandler>
-
-          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/users</pathPrefix>
-            <addressBook>true</addressBook>
-            
-            <!-- The cardPathPrefix is used to manufacture a path to a card for 
-                 the principal. If it is set we take the path
-                 
-                 <principal-root>/<account>
-                 
-                 and transform it to 
-                 
-                 <cardPathPrefix>/<account>.vcf
-                 
-                 If it is not set we try the cardPathPrefixes supplied globally.
-                 If they are not supplied we don't give any path. The client will
-                 have to fall back to a query.
-                 -->
-            <cardPathPrefix>/public/people</cardPathPrefix>
-
-            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>individual</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
-
-            <principalIdAttr>uid</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </user-principal-dirHandler>
-
-          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/groups</pathPrefix>
-            <addressBook>true</addressBook>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>group</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </group-principal-dirHandler>
-          
-          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/locations</pathPrefix>
-            <addressBook>true</addressBook>
-            <cardPathPrefix>/public/locations</cardPathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </location-principal-dirHandler>
-            
-          <!-- handle the public (enterprise) people address book hierarchy -->
-          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/people</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-            
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
-            <queryLimit>1000</queryLimit>
-            
-            <attrIds></attrIds>
-            
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-            
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-people-dirHandler>
-          
-          
-          <!-- handle the user address book hierarchy -->
-          
-          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
-
-            <queryLimit>1000</queryLimit> <!-- unimplemented -->
-          
-            <!-- This is the access set at the root. I'll do this as XML soon -->
-            <rootAccess>WONyA WANyFyS </rootAccess>
-          
-            <!-- This is the owner of the user root and user home -->
-            <rootOwner>/principals/users/root</rootOwner>
-            
-            <debug>true</debug>
-          </user-dirHandler>
-
-          <!-- handle the user address book hierarchy
-               How it might be done with ldap 
-          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </user-dirHandler>
-          -->
- 
-          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/locations</pathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>calcaladruri</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </public-locations-dirHandler>
-
-          <!-- handle the public (enterprise) address book hierarchy -->
-          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-dirHandler>
-        </dirhandlers>
-      </global>
-
-      <app>
-        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <!-- This will act as the root for the file system -->
-          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </usercarddav>
-
-        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </pubcarddav>
-      </app>
-    </bedework>
-  </org>
-</bedework-options>

Modified: releases/bedework-3.7/config/bwbuild/jboss-h2/log4j.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-h2/log4j.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-h2/log4j.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -385,6 +385,7 @@
      <priority value="${jboss.server.log.threshold}" />
    </category>
 
+<!-- 
    <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="${org.bedework.loglevel.exprfilters}"/>
    </category>
@@ -397,13 +398,29 @@
       <priority value="${org.bedework.loglevel.schemaexport:INFO}"/>
    </category>
 
-   <category name="org.bedework.calcore.AccessUtil">
+   <category name="org.bedework.client.FilterBuilder">
+      <priority value="${org.bedework.loglevel.exprfilters}"/>
+   </category>
+ -->
+   <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="INFO"/>
    </category>
 
+   <category name="org.bedework.calsvc.client.FilterBuilder">
+      <priority value="INFO"/>
+   </category>
+
+   <category name="org.hibernate.tool.hbm2ddl.SchemaExport">
+      <priority value="INFO"/>
+   </category>
+
    <category name="org.bedework.client.FilterBuilder">
-      <priority value="${org.bedework.loglevel.exprfilters}"/>
+      <priority value="INFO"/>
    </category>
+ 
+   <category name="org.bedework.calcore.AccessUtil">
+      <priority value="INFO"/>
+   </category>
 
    <!-- Limit hibernate categories -->
    <category name="org.hibernate">

Modified: releases/bedework-3.7/config/bwbuild/jboss-mysql/build.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-mysql/build.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-mysql/build.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -27,6 +27,3 @@
 org.bedework.config.options=${env.BEDEWORK_CONFIG}/cal.options.xml
 
 org.bedework.config.sysevents.properties=${env.BEDEWORK_CONFIG}/sysevents.properties
-
-org.bedework.carddav.options=${env.BEDEWORK_CONFIG}/carddav.options.xml
-

Modified: releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,3 +1,5 @@
+<?xml version="1.0"?>
+
 <!-- This provides run time options for each of the configured applications.
   -->
 <bedework-options>
@@ -67,7 +69,301 @@
           <location>loc_</location>
         </caladdrPrefixes>     
            -->
+           
+        <!-- ===============================================================
+                         CardDAV directory handlers
+             =============================================================== -->
+
+        <dirhandlers>
+          <!-- handle the principal hierarchy.
+               This could be a read-only interface if we don't intend to allow
+               modification of the enterprise directory.
+
+               However, we may need to merge in subsidiary information to handle
+               principal properties. That may mean maintaining a shadow
+               principal hierarchy in the local server.
+               
+               Each element name below must be unique.
+            -->
+          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>dc=bedework, dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <!-- We need to get operational attributes from the directory.
+               This requires us to explicitly name all attributes on fetch.
+               This element allows us to name EXTRA attributes from the default
+               list provided by the implementation.
+              -->
+            <attrIds></attrIds>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </principal-dirHandler>
+
+          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/users</pathPrefix>
+            <addressBook>true</addressBook>
+            
+            <!-- The cardPathPrefix is used to manufacture a path to a card for 
+                 the principal. If it is set we take the path
+                 
+                 <principal-root>/<account>
+                 
+                 and transform it to 
+                 
+                 <cardPathPrefix>/<account>.vcf
+                 
+                 If it is not set we try the cardPathPrefixes supplied globally.
+                 If they are not supplied we don't give any path. The client will
+                 have to fall back to a query.
+                 -->
+            <cardPathPrefix>/public/people</cardPathPrefix>
+
+            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>individual</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
+
+            <principalIdAttr>uid</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </user-principal-dirHandler>
+
+          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/groups</pathPrefix>
+            <addressBook>true</addressBook>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>group</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </group-principal-dirHandler>
+          
+          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/locations</pathPrefix>
+            <addressBook>true</addressBook>
+            <cardPathPrefix>/public/locations</cardPathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </location-principal-dirHandler>
+            
+          <!-- handle the public (enterprise) people address book hierarchy -->
+          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/people</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+            
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
+            <queryLimit>1000</queryLimit>
+            
+            <attrIds></attrIds>
+            
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+            
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-people-dirHandler>
+          
+          
+          <!-- handle the user address book hierarchy -->
+          
+          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
+
+            <queryLimit>1000</queryLimit> <!-- unimplemented -->
+          
+            <!-- This is the access set at the root. I'll do this as XML soon -->
+            <rootAccess>WONyA WANyFyS </rootAccess>
+          
+            <!-- This is the owner of the user root and user home -->
+            <rootOwner>/principals/users/root</rootOwner>
+            
+            <debug>true</debug>
+          </user-dirHandler>
+
+          <!-- handle the user address book hierarchy
+               How it might be done with ldap 
+          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </user-dirHandler>
+          -->
+ 
+          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/locations</pathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>calcaladruri</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </public-locations-dirHandler>
+
+          <!-- handle the public (enterprise) address book hierarchy -->
+          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-dirHandler>
+        </dirhandlers>
         
+        <!-- ===============================================================
+                         Calendar system modules
+             =============================================================== -->
+
         <module>
           <!-- A dummy module with no directory. -->
           <dir-config classname="org.bedework.calfacade.configs.DirConfigProperties">
@@ -175,9 +471,9 @@
       </syspars>
 
       <app>
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Timezones server
-             ================================================================== -->
+             =============================================================== -->
         <tzsvr classname="org.bedework.timezones.common.TzsvrConfig">
           <appType>tzsvr</appType>
           
@@ -192,16 +488,16 @@
           <postId>12345abcde</postId>          
         </tzsvr>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Config web client
-             ================================================================== -->
+             =============================================================== -->
         <bwconfig classname="org.bedework.calfacade.configs.ConfigCommon">
           <appType>webconfig</appType>
           <publicAdmin>false</publicAdmin>
           <guestMode>false</guestMode>
         </bwconfig>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Admin web client CalAdmin
              ================================================================== -->
         <CalAdmin classname="org.bedework.calfacade.configs.AdminConfig">
@@ -425,9 +721,9 @@
           <refreshInterval>300</refreshInterval>
         </UserCal>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           User CalDAV server UserCalDAV
-             ================================================================== -->
+             =============================================================== -->
         <Usercaldav classname="org.bedework.caldav.util.CalDAVConfig">
           <appType>usercaldav</appType>
           <!--
@@ -585,6 +881,9 @@
           <debugEntity>false</debugEntity>
         </iosched>
 
+        <!-- ==================================================================
+                          Exchange synch
+             ================================================================== -->
         <Exsynch classname="org.bedework.exchgsynch.ExsynchConfig">
           <appType>exsynch</appType>
 
@@ -596,7 +895,72 @@
 
           <!-- Path to keystore - comment out to use default -->          
           <keystore>@APPSERVER-DATA-DIR@/exsynchcerts</keystore>
+
+          <!-- location of the WSDL for the remote web service -->
+          <remoteWSDLURI>http://localhost:8080/exchange/wssvc.wsdl</remoteWSDLURI>
+          
+          <remoteWsURL>http://localhost:8080/pubcaldav/exsynchws/</remoteWsURL>
+          
+          <!-- seconds  --> 
+          <remoteKeepAliveInterval>60</remoteKeepAliveInterval>
         </Exsynch>
+
+        <!-- ===============================================================
+                          User CardDAV server usercarddav
+             =============================================================== -->
+        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <!-- This will act as the root for the file system -->
+          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </usercarddav>
+
+        <!-- ===============================================================
+                          Public CardDAV server pubcarddav
+             =============================================================== -->
+        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </pubcarddav>
       </app>
     </bedework>
   </org>

Modified: releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-mysql/cal.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -47,6 +47,7 @@
 # much grief. 
 org.bedework.global.jboss.db.datasource.jndiname=/CalendarDS
 org.bedework.global.jboss.carddb.datasource.jndiname=/CardDS
+org.bedework.global.jboss.exsynch.datasource.jndiname=/ExsynchDS
 
 # Hibernate caching parameters
 org.bedework.global.hibernate.cache.use_second_level_cache=false
@@ -105,7 +106,7 @@
 org.bedework.global.ext.lib=${org.bedework.config.home}/lib
 
 # A list of jars to copy, delimited by ","
-#org.bedework.global.extra.jars=${org.bedework.project.bedework}/projects/rpiutil/dist/rpiutil-3.6.jar
+org.bedework.global.extra.jars=${org.bedework.project.bedework}/projects/rpiutil/dist/rpiutil-${org.bedework.rpiutil.version}.jar
 
 # ------------------------------------------------------------------------
 # Application server defs
@@ -126,7 +127,7 @@
 #  where most library files used by all applications go
 appserver.lib.dir=${org.bedework.jboss.config.dir}/lib
 
-# where data files go
+# where things like log4j config files go
 org.bedework.jboss.data.dir=${org.bedework.appserver.dir}/server/${org.bedework.jboss.config}/data/bedework
 org.bedework.data.dir=${org.bedework.jboss.data.dir}
 
@@ -142,7 +143,13 @@
 org.bedework.log4j.config=${org.bedework.appserver.dir}/server/${org.bedework.jboss.config}/conf/jboss-log4j.xml
 #
 # If set to true or yes will copy in the bedework db datasource def bedework-ds.xml
-#org.bedework.global.copy.bedeworkds.config=yes
+org.bedework.global.copy.bedeworkds.config=yes
+#
+# If set to true or yes will copy in the bedework card db datasource def bedework-ds.xml
+org.bedework.global.copy.bedeworkcardds.config=yes
+#
+# If set to true or yes will copy in the bedework exchange synch db datasource def 
+org.bedework.global.copy.bedeworkexsynchds.config=yes
 
 # ------------------------------------------------------------------------
 # ActiveMQ defs
@@ -188,7 +195,7 @@
 org.bedework.app.tzsvr.war.name=tzsvr
 org.bedework.app.tzsvr.context.root=/tzsvr
 # Set for jboss
-#org.bedework.app.tzsvr.virtual.host=
+#org.bedework.app.tzsvr.virtual.host=my.host1,my.host.2
 
 org.bedework.app.tzsvr.description=Bedework timezones server.
 org.bedework.app.tzsvr.display.name=Bedework timezones server.
@@ -428,6 +435,54 @@
 #
 # --------------------------------------------------------------------
 #
+# Public Calws Server
+#
+org.bedework.app.Pubcalws.project=caldav
+org.bedework.app.Pubcalws.sou.dir=server
+org.bedework.app.Pubcalws.interface.jar=bw-caldav
+
+org.bedework.app.Pubcalws.web.xml=war/WEB-INF/publicws-web.xml
+org.bedework.app.Pubcalws.tomcat.context.xml=war/META-INF/publiccontext.xml
+org.bedework.app.Pubcalws.war.name=Pubcalws
+org.bedework.app.Pubcalws.context.root=/Pubcalws
+# Set for jboss
+#org.bedework.app.Pubcalws.virtual.host=
+
+org.bedework.app.Pubcalws.description=Bedework public calws server.
+org.bedework.app.Pubcalws.display.name=Bedework public calws
+org.bedework.app.Pubcalws.name=DemoPubcalws
+org.bedework.app.Pubcalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Pubcalws.logprefix=Pubcalws
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Calws Server
+#
+org.bedework.app.Usercalws.project=caldav
+org.bedework.app.Usercalws.sou.dir=server
+org.bedework.app.Usercalws.interface.jar=bw-caldav
+
+org.bedework.app.Usercalws.web.xml=war/WEB-INF/userws-web.xml
+org.bedework.app.Usercalws.tomcat.context.xml=war/META-INF/usercontext.xml
+org.bedework.app.Usercalws.war.name=ucalws
+org.bedework.app.Usercalws.context.root=/ucalws
+# Set for jboss
+#org.bedework.app.Usercalws.virtual.host=
+
+org.bedework.app.Usercalws.security.domain=bedeworkdemo
+org.bedework.app.Usercalws.security.prefix=demo
+org.bedework.app.Usercalws.transport.guarantee=NONE
+
+org.bedework.app.Usercalws.description=Bedework user calws server.
+org.bedework.app.Usercalws.display.name=Bedework Usercalws
+org.bedework.app.Usercalws.name=DemoUsrcalws
+org.bedework.app.Usercalws.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.Usercalws.logprefix=Usercalws
+
+#
+# --------------------------------------------------------------------
+#
 # CalDAV test
 #
 
@@ -533,9 +588,53 @@
 
 org.bedework.app.iosched.project=calendarapi
 org.bedework.app.iosched.sou.dir=
+org.bedework.app.iosched.in.ear=true
 org.bedework.app.iosched.shellscr.name=bwrun
 org.bedework.app.iosched.batscr.name=bwrun.bat
 org.bedework.app.iosched.zip.name=bwiosched
 org.bedework.app.iosched.description=Bedework In/outbox scheduler application
 
+#
+# --------------------------------------------------------------------
+#
+# Public Carddav Server
+#
+org.bedework.app.pubcarddav.project=carddav
+org.bedework.app.pubcarddav.sou.dir=server
 
+org.bedework.app.pubcarddav.web.xml=war/WEB-INF/publicweb.xml
+org.bedework.app.pubcarddav.war.name=pubcarddav
+org.bedework.app.pubcarddav.context.root=/pubcarddav
+# Set for jboss
+#org.bedework.app.pubcarddav.virtual.host=calendars.rpi.edu
+
+org.bedework.app.pubcarddav.description=Bedework public carddav server.
+org.bedework.app.pubcarddav.display.name=Bedework public carddav
+org.bedework.app.pubcarddav.name=Demopubcarddav
+org.bedework.app.pubcarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.pubcarddav.logprefix=pubcarddav
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Carddav Server
+#
+org.bedework.app.usercarddav.project=carddav
+org.bedework.app.usercarddav.sou.dir=server
+
+org.bedework.app.usercarddav.web.xml=war/WEB-INF/userweb.xml
+org.bedework.app.usercarddav.war.name=ucarddav
+org.bedework.app.usercarddav.context.root=/ucarddav
+# Set for jboss
+#org.bedework.app.usercarddav.virtual.host=events.rpi.edu
+
+org.bedework.app.usercarddav.security.domain=bedeworkdemo
+org.bedework.app.usercarddav.security.prefix=demo
+org.bedework.app.usercarddav.transport.guarantee=NONE
+
+org.bedework.app.usercarddav.description=Bedework user carddav server.
+org.bedework.app.usercarddav.display.name=Bedework usercarddav
+org.bedework.app.usercarddav.name=DemoUsrcarddav
+org.bedework.app.usercarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.usercarddav.logprefix=usercarddav
+

Deleted: releases/bedework-3.7/config/bwbuild/jboss-mysql/carddav.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-mysql/carddav.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-mysql/carddav.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,350 +0,0 @@
-<!-- This provides run time options for the CardDAV server.
-  -->
-<bedework-options>
-  <org>
-    <bedework>
-      <global>
-        <version>3.6</version>
-
-        <dirhandlers>
-          <!-- handle the principal hierarchy.
-               This could be a read-only interface if we don't intend to allow
-               modification of the enterprise directory.
-
-               However, we may need to merge in subsidiary information to handle
-               principal properties. That may mean maintaining a shadow
-               principal hierarchy in the local server.
-               
-               Each element name below must be unique.
-            -->
-          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>dc=bedework, dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <!-- We need to get operational attributes from the directory.
-               This requires us to explicitly name all attributes on fetch.
-               This element allows us to name EXTRA attributes from the default
-               list provided by the implementation.
-              -->
-            <attrIds></attrIds>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </principal-dirHandler>
-
-          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/users</pathPrefix>
-            <addressBook>true</addressBook>
-            
-            <!-- The cardPathPrefix is used to manufacture a path to a card for 
-                 the principal. If it is set we take the path
-                 
-                 <principal-root>/<account>
-                 
-                 and transform it to 
-                 
-                 <cardPathPrefix>/<account>.vcf
-                 
-                 If it is not set we try the cardPathPrefixes supplied globally.
-                 If they are not supplied we don't give any path. The client will
-                 have to fall back to a query.
-                 -->
-            <cardPathPrefix>/public/people</cardPathPrefix>
-
-            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>individual</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
-
-            <principalIdAttr>uid</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </user-principal-dirHandler>
-
-          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/groups</pathPrefix>
-            <addressBook>true</addressBook>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>group</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </group-principal-dirHandler>
-          
-          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/locations</pathPrefix>
-            <addressBook>true</addressBook>
-            <cardPathPrefix>/public/locations</cardPathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </location-principal-dirHandler>
-            
-          <!-- handle the public (enterprise) people address book hierarchy -->
-          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/people</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-            
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
-            <queryLimit>1000</queryLimit>
-            
-            <attrIds></attrIds>
-            
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-            
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-people-dirHandler>
-          
-          
-          <!-- handle the user address book hierarchy -->
-          
-          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
-
-            <queryLimit>1000</queryLimit> <!-- unimplemented -->
-          
-            <!-- This is the access set at the root. I'll do this as XML soon -->
-            <rootAccess>WONyA WANyFyS </rootAccess>
-          
-            <!-- This is the owner of the user root and user home -->
-            <rootOwner>/principals/users/root</rootOwner>
-            
-            <debug>true</debug>
-          </user-dirHandler>
-
-          <!-- handle the user address book hierarchy
-               How it might be done with ldap 
-          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </user-dirHandler>
-          -->
- 
-          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/locations</pathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>calcaladruri</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </public-locations-dirHandler>
-
-          <!-- handle the public (enterprise) address book hierarchy -->
-          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-dirHandler>
-        </dirhandlers>
-      </global>
-
-      <app>
-        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <!-- This will act as the root for the file system -->
-          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </usercarddav>
-
-        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </pubcarddav>
-      </app>
-    </bedework>
-  </org>
-</bedework-options>

Modified: releases/bedework-3.7/config/bwbuild/jboss-mysql/log4j.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-mysql/log4j.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-mysql/log4j.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -385,6 +385,7 @@
      <priority value="${jboss.server.log.threshold}" />
    </category>
 
+<!-- 
    <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="${org.bedework.loglevel.exprfilters}"/>
    </category>
@@ -397,13 +398,29 @@
       <priority value="${org.bedework.loglevel.schemaexport:INFO}"/>
    </category>
 
-   <category name="org.bedework.calcore.AccessUtil">
+   <category name="org.bedework.client.FilterBuilder">
+      <priority value="${org.bedework.loglevel.exprfilters}"/>
+   </category>
+ -->
+   <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="INFO"/>
    </category>
 
+   <category name="org.bedework.calsvc.client.FilterBuilder">
+      <priority value="INFO"/>
+   </category>
+
+   <category name="org.hibernate.tool.hbm2ddl.SchemaExport">
+      <priority value="INFO"/>
+   </category>
+
    <category name="org.bedework.client.FilterBuilder">
-      <priority value="${org.bedework.loglevel.exprfilters}"/>
+      <priority value="INFO"/>
    </category>
+ 
+   <category name="org.bedework.calcore.AccessUtil">
+      <priority value="INFO"/>
+   </category>
 
    <!-- Limit hibernate categories -->
    <category name="org.hibernate">

Modified: releases/bedework-3.7/config/bwbuild/jboss-postgresql/build.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-postgresql/build.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-postgresql/build.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -27,8 +27,3 @@
 org.bedework.config.options=${env.BEDEWORK_CONFIG}/cal.options.xml
 
 org.bedework.config.sysevents.properties=${env.BEDEWORK_CONFIG}/sysevents.properties
-
-org.bedework.carddav.options=${env.BEDEWORK_CONFIG}/carddav.options.xml
-
-#org.bedework.exsynch.options=${env.BEDEWORK_CONFIG}/exsynch.options.xml
-

Modified: releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,3 +1,5 @@
+<?xml version="1.0"?>
+
 <!-- This provides run time options for each of the configured applications.
   -->
 <bedework-options>
@@ -67,7 +69,301 @@
           <location>loc_</location>
         </caladdrPrefixes>     
            -->
+           
+        <!-- ===============================================================
+                         CardDAV directory handlers
+             =============================================================== -->
+
+        <dirhandlers>
+          <!-- handle the principal hierarchy.
+               This could be a read-only interface if we don't intend to allow
+               modification of the enterprise directory.
+
+               However, we may need to merge in subsidiary information to handle
+               principal properties. That may mean maintaining a shadow
+               principal hierarchy in the local server.
+               
+               Each element name below must be unique.
+            -->
+          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>dc=bedework, dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <!-- We need to get operational attributes from the directory.
+               This requires us to explicitly name all attributes on fetch.
+               This element allows us to name EXTRA attributes from the default
+               list provided by the implementation.
+              -->
+            <attrIds></attrIds>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </principal-dirHandler>
+
+          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/users</pathPrefix>
+            <addressBook>true</addressBook>
+            
+            <!-- The cardPathPrefix is used to manufacture a path to a card for 
+                 the principal. If it is set we take the path
+                 
+                 <principal-root>/<account>
+                 
+                 and transform it to 
+                 
+                 <cardPathPrefix>/<account>.vcf
+                 
+                 If it is not set we try the cardPathPrefixes supplied globally.
+                 If they are not supplied we don't give any path. The client will
+                 have to fall back to a query.
+                 -->
+            <cardPathPrefix>/public/people</cardPathPrefix>
+
+            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>individual</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
+
+            <principalIdAttr>uid</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </user-principal-dirHandler>
+
+          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/groups</pathPrefix>
+            <addressBook>true</addressBook>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>group</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </group-principal-dirHandler>
+          
+          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/principals/locations</pathPrefix>
+            <addressBook>true</addressBook>
+            <cardPathPrefix>/public/locations</cardPathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>cn</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </location-principal-dirHandler>
+            
+          <!-- handle the public (enterprise) people address book hierarchy -->
+          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/people</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+            
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
+            <queryLimit>1000</queryLimit>
+            
+            <attrIds></attrIds>
+            
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+            
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-people-dirHandler>
+          
+          
+          <!-- handle the user address book hierarchy -->
+          
+          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            
+            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
+
+            <queryLimit>1000</queryLimit> <!-- unimplemented -->
+          
+            <!-- This is the access set at the root. I'll do this as XML soon -->
+            <rootAccess>WONyA WANyFyS </rootAccess>
+          
+            <!-- This is the owner of the user root and user home -->
+            <rootOwner>/principals/users/root</rootOwner>
+            
+            <debug>true</debug>
+          </user-dirHandler>
+
+          <!-- handle the user address book hierarchy
+               How it might be done with ldap 
+          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/user</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <folderIdAttr>ou</folderIdAttr>
+
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </user-dirHandler>
+          -->
+ 
+          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public/locations</pathPrefix>
+
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <cardKind>location</cardKind>
+
+            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+
+            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <principalIdAttr>calcaladruri</principalIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+
+            <debug>true</debug>
+          </public-locations-dirHandler>
+
+          <!-- handle the public (enterprise) address book hierarchy -->
+          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
+            <pathPrefix>/public</pathPrefix>
+            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
+
+            <!-- manufacture an owner for public entities -->
+            <ownerHref>/principals/users/admin</ownerHref>
+
+            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
+            <providerUrl>ldap://localhost:10389/</providerUrl>
+
+            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
+
+            <queryLimit>1000</queryLimit>
+
+            <attrIds></attrIds>
+
+            <folderObjectClass>organizationalUnit</folderObjectClass>
+            <addressbookObjectClass>addressBook</addressbookObjectClass>
+            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
+
+            <folderIdAttr>ou</folderIdAttr>
+            <addressbookIdAttr>ou</addressbookIdAttr>
+            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
+
+            <authDn>uid=admin,ou=system</authDn>
+            <authPw>secret</authPw>
+            <debug>true</debug>
+          </public-dirHandler>
+        </dirhandlers>
         
+        <!-- ===============================================================
+                         Calendar system modules
+             =============================================================== -->
+
         <module>
           <!-- A dummy module with no directory. -->
           <dir-config classname="org.bedework.calfacade.configs.DirConfigProperties">
@@ -175,9 +471,9 @@
       </syspars>
 
       <app>
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Timezones server
-             ================================================================== -->
+             =============================================================== -->
         <tzsvr classname="org.bedework.timezones.common.TzsvrConfig">
           <appType>tzsvr</appType>
           
@@ -192,18 +488,18 @@
           <postId>12345abcde</postId>          
         </tzsvr>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Config web client
-             ================================================================== -->
+             =============================================================== -->
         <bwconfig classname="org.bedework.calfacade.configs.ConfigCommon">
           <appType>webconfig</appType>
           <publicAdmin>false</publicAdmin>
           <guestMode>false</guestMode>
         </bwconfig>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           Admin web client CalAdmin
-             ================================================================== -->
+             =============================================================== -->
         <CalAdmin classname="org.bedework.calfacade.configs.AdminConfig">
           <autoCreateContacts>false</autoCreateContacts>
           <autoDeleteContacts>false</autoDeleteContacts>
@@ -425,9 +721,9 @@
           <refreshInterval>300</refreshInterval>
         </UserCal>
 
-        <!-- ==================================================================
+        <!-- ===============================================================
                           User CalDAV server UserCalDAV
-             ================================================================== -->
+             =============================================================== -->
         <Usercaldav classname="org.bedework.caldav.util.CalDAVConfig">
           <appType>usercaldav</appType>
           <!--
@@ -618,6 +914,63 @@
           <!-- seconds  --> 
           <remoteKeepAliveInterval>60</remoteKeepAliveInterval>
         </Exsynch>
+
+        <!-- ===============================================================
+                          User CardDAV server usercarddav
+             =============================================================== -->
+        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <!-- This will act as the root for the file system -->
+          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </usercarddav>
+
+        <!-- ===============================================================
+                          Public CardDAV server pubcarddav
+             =============================================================== -->
+        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
+          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
+          
+          <webaddrServiceURI>/find</webaddrServiceURI>
+          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
+          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
+
+          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
+
+          <defaultAddressbook>addressbook</defaultAddressbook>
+
+          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
+          
+          <!-- Needed for access calculations -->
+          <userHomeRoot>/user</userHomeRoot>
+
+          <principalRoot>/principals</principalRoot>
+          <userPrincipalRoot>/principals/users</userPrincipalRoot>
+          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
+          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
+          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
+          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
+          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
+        </pubcarddav>
       </app>
     </bedework>
   </org>

Modified: releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.properties
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.properties	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-postgresql/cal.properties	2011-02-13 00:13:29 UTC (rev 3169)
@@ -196,7 +196,7 @@
 org.bedework.app.tzsvr.war.name=tzsvr
 org.bedework.app.tzsvr.context.root=/tzsvr
 # Set for jboss
-#org.bedework.app.tzsvr.virtual.host=
+#org.bedework.app.tzsvr.virtual.host=my.host1,my.host.2
 
 org.bedework.app.tzsvr.description=Bedework timezones server.
 org.bedework.app.tzsvr.display.name=Bedework timezones server.
@@ -595,4 +595,47 @@
 org.bedework.app.iosched.zip.name=bwiosched
 org.bedework.app.iosched.description=Bedework In/outbox scheduler application
 
+#
+# --------------------------------------------------------------------
+#
+# Public Carddav Server
+#
+org.bedework.app.pubcarddav.project=carddav
+org.bedework.app.pubcarddav.sou.dir=server
 
+org.bedework.app.pubcarddav.web.xml=war/WEB-INF/publicweb.xml
+org.bedework.app.pubcarddav.war.name=pubcarddav
+org.bedework.app.pubcarddav.context.root=/pubcarddav
+# Set for jboss
+#org.bedework.app.pubcarddav.virtual.host=calendars.rpi.edu
+
+org.bedework.app.pubcarddav.description=Bedework public carddav server.
+org.bedework.app.pubcarddav.display.name=Bedework public carddav
+org.bedework.app.pubcarddav.name=Demopubcarddav
+org.bedework.app.pubcarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.pubcarddav.logprefix=pubcarddav
+
+#
+# --------------------------------------------------------------------
+#
+# Personal Carddav Server
+#
+org.bedework.app.usercarddav.project=carddav
+org.bedework.app.usercarddav.sou.dir=server
+
+org.bedework.app.usercarddav.web.xml=war/WEB-INF/userweb.xml
+org.bedework.app.usercarddav.war.name=ucarddav
+org.bedework.app.usercarddav.context.root=/ucarddav
+# Set for jboss
+#org.bedework.app.usercarddav.virtual.host=events.rpi.edu
+
+org.bedework.app.usercarddav.security.domain=bedeworkdemo
+org.bedework.app.usercarddav.security.prefix=demo
+org.bedework.app.usercarddav.transport.guarantee=NONE
+
+org.bedework.app.usercarddav.description=Bedework user carddav server.
+org.bedework.app.usercarddav.display.name=Bedework usercarddav
+org.bedework.app.usercarddav.name=DemoUsrcarddav
+org.bedework.app.usercarddav.deploy.dir=${org.bedework.appserver.deploy.dir}
+org.bedework.app.usercarddav.logprefix=usercarddav
+

Deleted: releases/bedework-3.7/config/bwbuild/jboss-postgresql/carddav.options.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-postgresql/carddav.options.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-postgresql/carddav.options.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -1,350 +0,0 @@
-<!-- This provides run time options for the CardDAV server.
-  -->
-<bedework-options>
-  <org>
-    <bedework>
-      <global>
-        <version>3.7</version>
-
-        <dirhandlers>
-          <!-- handle the principal hierarchy.
-               This could be a read-only interface if we don't intend to allow
-               modification of the enterprise directory.
-
-               However, we may need to merge in subsidiary information to handle
-               principal properties. That may mean maintaining a shadow
-               principal hierarchy in the local server.
-               
-               Each element name below must be unique.
-            -->
-          <principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>dc=bedework, dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <!-- We need to get operational attributes from the directory.
-               This requires us to explicitly name all attributes on fetch.
-               This element allows us to name EXTRA attributes from the default
-               list provided by the implementation.
-              -->
-            <attrIds></attrIds>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </principal-dirHandler>
-
-          <user-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/users</pathPrefix>
-            <addressBook>true</addressBook>
-            
-            <!-- The cardPathPrefix is used to manufacture a path to a card for 
-                 the principal. If it is set we take the path
-                 
-                 <principal-root>/<account>
-                 
-                 and transform it to 
-                 
-                 <cardPathPrefix>/<account>.vcf
-                 
-                 If it is not set we try the cardPathPrefixes supplied globally.
-                 If they are not supplied we don't give any path. The client will
-                 have to fall back to a query.
-                 -->
-            <cardPathPrefix>/public/people</cardPathPrefix>
-
-            <cardPathPrefixes>/public/people,loc_:/public/locations</cardPathPrefixes>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=accounts,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>individual</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>uid</addressbookEntryIdAttr>
-
-            <principalIdAttr>uid</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </user-principal-dirHandler>
-
-          <group-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/groups</pathPrefix>
-            <addressBook>true</addressBook>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=groups,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>group</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </group-principal-dirHandler>
-          
-          <location-principal-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/principals/locations</pathPrefix>
-            <addressBook>true</addressBook>
-            <cardPathPrefix>/public/locations</cardPathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapPrincipalDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=locations,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>groupOfUniqueNames</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>cn</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </location-principal-dirHandler>
-            
-          <!-- handle the public (enterprise) people address book hierarchy -->
-          <public-people-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/people</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-            
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=people,ou=public,dc=bedework,dc=org</baseDn>
-            <queryLimit>1000</queryLimit>
-            
-            <attrIds></attrIds>
-            
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-            
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-people-dirHandler>
-          
-          
-          <!-- handle the user address book hierarchy -->
-          
-          <user-dirHandler classname="org.bedework.carddav.util.DbDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            
-            <className>org.bedework.carddav.server.dirHandlers.db.DbAddrBookDirHandler</className>
-
-            <queryLimit>1000</queryLimit> <!-- unimplemented -->
-          
-            <!-- This is the access set at the root. I'll do this as XML soon -->
-            <rootAccess>WONyA WANyFyS </rootAccess>
-          
-            <!-- This is the owner of the user root and user home -->
-            <rootOwner>/principals/users/root</rootOwner>
-            
-            <debug>true</debug>
-          </user-dirHandler>
-
-          <!-- handle the user address book hierarchy
-               How it might be done with ldap 
-          <user-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/user</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=users,ou=addrbooks,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <folderIdAttr>ou</folderIdAttr>
-
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </user-dirHandler>
-          -->
- 
-          <public-locations-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public/locations</pathPrefix>
-
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-            <baseDn>ou=locations,ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <cardKind>location</cardKind>
-
-            <addressbookObjectClass>organizationalUnit</addressbookObjectClass>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-
-            <addressbookEntryObjectClass>CalendarResource</addressbookEntryObjectClass>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <principalIdAttr>calcaladruri</principalIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-
-            <debug>true</debug>
-          </public-locations-dirHandler>
-
-          <!-- handle the public (enterprise) address book hierarchy -->
-          <public-dirHandler classname="org.bedework.carddav.util.LdapDirHandlerConfig" >
-            <pathPrefix>/public</pathPrefix>
-            <className>org.bedework.carddav.server.dirHandlers.ldap.LdapAddrBookDirHandler</className>
-
-            <!-- manufacture an owner for public entities -->
-            <ownerHref>/principals/users/admin</ownerHref>
-
-            <initialContextFactory>com.sun.jndi.ldap.LdapCtxFactory</initialContextFactory>
-            <providerUrl>ldap://localhost:10389/</providerUrl>
-
-            <baseDn>ou=public,dc=bedework,dc=org</baseDn>
-
-            <queryLimit>1000</queryLimit>
-
-            <attrIds></attrIds>
-
-            <folderObjectClass>organizationalUnit</folderObjectClass>
-            <addressbookObjectClass>addressBook</addressbookObjectClass>
-            <addressbookEntryObjectClass>inetOrgPerson</addressbookEntryObjectClass>
-
-            <folderIdAttr>ou</folderIdAttr>
-            <addressbookIdAttr>ou</addressbookIdAttr>
-            <addressbookEntryIdAttr>cn</addressbookEntryIdAttr>
-
-            <authDn>uid=admin,ou=system</authDn>
-            <authPw>secret</authPw>
-            <debug>true</debug>
-          </public-dirHandler>
-        </dirhandlers>
-      </global>
-
-      <app>
-        <usercarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,email,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <!-- This will act as the root for the file system -->
-          <addressBookHandlerPrefix>/user</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </usercarddav>
-
-        <pubcarddav classname="org.bedework.carddav.util.CardDAVConfig" >
-          <sysintfImpl>org.bedework.carddav.bwserver.BwSysIntfImpl</sysintfImpl>
-          
-          <webaddrServiceURI>/find</webaddrServiceURI>
-          <webaddrServicePropertiesList>fn,note,org</webaddrServicePropertiesList>
-          <webaddrPublicAddrbook>/principals/users</webaddrPublicAddrbook>
-
-          <directoryBrowsingDisallowed>false</directoryBrowsingDisallowed>
-
-          <defaultAddressbook>addressbook</defaultAddressbook>
-
-          <addressBookHandlerPrefix>/public</addressBookHandlerPrefix>
-          
-          <!-- Needed for access calculations -->
-          <userHomeRoot>/user</userHomeRoot>
-
-          <principalRoot>/principals</principalRoot>
-          <userPrincipalRoot>/principals/users</userPrincipalRoot>
-          <groupPrincipalRoot>/principals/groups</groupPrincipalRoot>
-          <resourcePrincipalRoot>/principals/resources</resourcePrincipalRoot>
-          <venuePrincipalRoot>/principals/locations</venuePrincipalRoot>
-          <ticketPrincipalRoot>/principals/tickets</ticketPrincipalRoot>
-          <hostPrincipalRoot>/principals/hosts</hostPrincipalRoot>
-        </pubcarddav>
-      </app>
-    </bedework>
-  </org>
-</bedework-options>

Modified: releases/bedework-3.7/config/bwbuild/jboss-postgresql/log4j.xml
===================================================================
--- releases/bedework-3.7/config/bwbuild/jboss-postgresql/log4j.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/config/bwbuild/jboss-postgresql/log4j.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -385,6 +385,7 @@
      <priority value="${jboss.server.log.threshold}" />
    </category>
 
+<!-- 
    <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="${org.bedework.loglevel.exprfilters}"/>
    </category>
@@ -397,13 +398,29 @@
       <priority value="${org.bedework.loglevel.schemaexport:INFO}"/>
    </category>
 
-   <category name="org.bedework.calcore.AccessUtil">
+   <category name="org.bedework.client.FilterBuilder">
+      <priority value="${org.bedework.loglevel.exprfilters}"/>
+   </category>
+ -->
+   <category name="org.bedework.calsvc.CalSvc$SvcSimpleFilterParser">
       <priority value="INFO"/>
    </category>
 
+   <category name="org.bedework.calsvc.client.FilterBuilder">
+      <priority value="INFO"/>
+   </category>
+
+   <category name="org.hibernate.tool.hbm2ddl.SchemaExport">
+      <priority value="INFO"/>
+   </category>
+
    <category name="org.bedework.client.FilterBuilder">
-      <priority value="${org.bedework.loglevel.exprfilters}"/>
+      <priority value="INFO"/>
    </category>
+ 
+   <category name="org.bedework.calcore.AccessUtil">
+      <priority value="INFO"/>
+   </category>
 
    <!-- Limit hibernate categories -->
    <category name="org.hibernate">

Modified: releases/bedework-3.7/deployment/build.xml
===================================================================
--- releases/bedework-3.7/deployment/build.xml	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/deployment/build.xml	2011-02-13 00:13:29 UTC (rev 3169)
@@ -100,8 +100,10 @@
     <property name="org.bedework.jboss.datasource.jndiname"
               value="${org.bedework.global.jboss.db.datasource.jndiname}" />
     
+    <!--
     <property name="org.bedework.options.file"
               value="${org.bedework.config.options}" />
+              -->
 
     <!-- Common resources directory -->
     <property name="org.bedework.common.resources"

Added: releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForAppTask.java
===================================================================
--- releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForAppTask.java	                        (rev 0)
+++ releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForAppTask.java	2011-02-13 00:13:29 UTC (rev 3169)
@@ -0,0 +1,198 @@
+/* **********************************************************************
+    Copyright 2010 Rensselaer Polytechnic Institute. All worldwide rights reserved.
+
+    Redistribution and use of this distribution in source and binary forms,
+    with or without modification, are permitted provided that:
+       The above copyright notice and this permission notice appear in all
+        copies and supporting documentation;
+
+        The name, identifiers, and trademarks of Rensselaer Polytechnic
+        Institute are not used in advertising or publicity without the
+        express prior written permission of Rensselaer Polytechnic Institute;
+
+    DISCLAIMER: The software is distributed" AS IS" without any express or
+    implied warranty, including but not limited to, any implied warranties
+    of merchantability or fitness for a particular purpose or any warrant)'
+    of non-infringement of any current or pending patent rights. The authors
+    of the software make no representations about the suitability of this
+    software for any particular purpose. The entire risk as to the quality
+    and performance of the software is with the user. Should the software
+    prove defective, the user assumes the cost of all necessary servicing,
+    repair or correction. In particular, neither Rensselaer Polytechnic
+    Institute, nor the authors of the software are liable for any indirect,
+    special, consequential, or incidental damages related to the software,
+    to the maximum extent the law permits.
+ */
+package org.bedework.deployment;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.PropertyHelper;
+import org.apache.tools.ant.taskdefs.Sequential;
+
+/** Ant task to build a named application
+ *
+ * <p>Task attributes are <ul>
+ * <li>name             The application names</li>
+ * <li>prefix           Property name prefix for generated properties</li>
+ * <li>appPrefix        Property name prefix for applications</li>
+ * <li>projectPrefix    Property name prefix for project properties</li>
+ * </ul>
+ *
+ * <p>Prefixes will be automatically appended with "." if needed.
+ *
+ * <p>Generated properties are all prefixed by the prefix attribute and are:<ul>
+ * <li>name             name of the application</li>
+ * <li>projectName      Name of the project - from the "X.project" property</li>
+ * <li>project.path     Path to project - value of the property projectPrefix + projectName</li>
+ * <li>app.sou          Path to source for application - from the "X.sou.dir" property</li>
+ * </ul>
+ *
+ * <p>
+ *   if appPrefix="org.bedework.app" and project name is myproject we expect a
+ *   bunch of properties of the form "org.bedework.app.myapp.xxx".
+ * </p>
+ *
+ * <p>
+ *   If projectPrefix="org.bedework.project" and org.bedework.app.myapp.project=myproject
+ *   we expect a property with the name "org.bedework.project.myproject" which
+ *   provides the location of the project. This allows us to locate internal
+ *   project resources.
+ * </p>
+ *
+ * <p>Body is ant
+ *
+ * @author douglm @ rpi.edu
+ */
+public class ForAppTask extends Sequential {
+  private static final String bedeworkHomeProperty = "org.bedework.project.bedework";
+
+  private String name;
+
+  private String prefix;
+
+  private String appPrefix;
+
+  private String projectPrefix;
+
+  /** Set the names
+   *
+   * @param val   String
+   */
+  public void setName(final String val) {
+    name = val;
+  }
+
+  /** Set the generated property prefix
+   *
+   * @param val   String
+   */
+  public void setPrefix(final String val) {
+    prefix = val;
+  }
+
+  /** Set the applications property prefix
+   *
+   * @param val   String
+   */
+  public void setAppPrefix(final String val) {
+    appPrefix = val;
+  }
+
+  /** Set the project locations property prefix
+   *
+   * @param val   String
+   */
+  public void setProjectPrefix(final String val) {
+    projectPrefix = val;
+  }
+
+  /** Execute the task
+   */
+  @Override
+  public void execute() throws BuildException {
+    try {
+      if (name == null) {
+        throw new BuildException("Must supply application name.");
+      }
+
+      doProps(name);
+    } catch (BuildException be) {
+      throw be;
+    } catch (Throwable t) {
+      t.printStackTrace();
+      throw new BuildException(t);
+    }
+  }
+
+  protected void doProps(final String name) throws BuildException {
+    try {
+      if (prefix == null) {
+        throw new BuildException("Must supply property name prefix.");
+      }
+
+      if (!prefix.endsWith(".")) {
+        prefix += ".";
+      }
+
+      if (!appPrefix.endsWith(".")) {
+        appPrefix += ".";
+      }
+
+      if (!projectPrefix.endsWith(".")) {
+        projectPrefix += ".";
+      }
+
+      PropertyHelper props = PropertyHelper.getPropertyHelper(getProject());
+
+      String bedeworkHome = (String)props.getProperty(null, bedeworkHomeProperty);
+
+      if (bedeworkHome == null) {
+        throw new BuildException("Must supply property " + bedeworkHomeProperty);
+      }
+
+      String appProjectProperty = appPrefix + name + ".project";
+      String project = (String)props.getProperty(null, appProjectProperty);
+
+      if (project == null) {
+        throw new BuildException("Property " + appProjectProperty +
+        " is undefined");
+      }
+
+      /* Build full project property from project name and get value */
+
+      String projectProperty = projectPrefix + project;
+      String projectPath = (String)props.getProperty(null, projectProperty);
+
+      if (projectPath == null) {
+        throw new BuildException("Property " + projectProperty +
+        " is undefined");
+      }
+
+      String appSouProperty = appPrefix + name + ".sou.dir";
+      String appSou = (String)props.getProperty(null, appSouProperty);
+
+      if (appSou == null) {
+        throw new BuildException("Property " + appSouProperty +
+        " is undefined");
+      }
+
+      if (appSou.length() == 0) {
+        appSou = projectPath;
+      } else {
+        appSou = projectPath + "/" + appSou;
+      }
+
+      props.setProperty(null, prefix + "name", name, false);
+      props.setProperty(null, prefix + "projectName", project, false);
+      props.setProperty(null, prefix + "project.path", projectPath, false);
+      props.setProperty(null, prefix + "app.sou", appSou, false);
+
+      super.execute();
+    } catch (BuildException be) {
+      throw be;
+    } catch (Throwable t) {
+      t.printStackTrace();
+      throw new BuildException(t);
+    }
+  }
+}

Modified: releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForEachAppTask.java
===================================================================
--- releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForEachAppTask.java	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/deployutil/src/org/bedework/deployment/ForEachAppTask.java	2011-02-13 00:13:29 UTC (rev 3169)
@@ -26,8 +26,6 @@
 package org.bedework.deployment;
 
 import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.PropertyHelper;
-import org.apache.tools.ant.taskdefs.Sequential;
 
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -46,25 +44,31 @@
  * <p>Prefixes will be automatically appended with "." if needed.
  *
  * <p>Generated properties are all prefixed by the prefix attribute and are:<ul>
- * <li>project.path     Path to project</li>
- * <li>name             name of the application</li>
+ * <li>name             name of the application - from the list of names</li>
+ * <li>projectName      Name of the project - from the "X.project" property</li>
+ * <li>project.path     Path to project - value of the property projectPrefix + projectName</li>
+ * <li>app.sou          Path to source for application - from the "X.sou.dir" property</li>
  * </ul>
  *
+ * <p>
+ *   if appPrefix="org.bedework.app" and project name is myproject we expect a
+ *   bunch of properties of the form "org.bedework.app.myapp.xxx".
+ * </p>
+ *
+ * <p>
+ *   If projectPrefix="org.bedework.project" and org.bedework.app.myapp.project=myproject
+ *   we expect a property with the name "org.bedework.project.myproject" which
+ *   provides the location of the project. This allows us to locate internal
+ *   project resources.
+ * </p>
+ *
  * <p>Body is ant
  *
  * @author douglm @ rpi.edu
  */
-public class ForEachAppTask extends Sequential {
-  private static final String bedeworkHomeProperty = "org.bedework.project.bedework";
-
+public class ForEachAppTask extends ForAppTask {
   private String names;
 
-  private String prefix;
-
-  private String appPrefix;
-
-  private String projectPrefix;
-
   /** Set the names
    *
    * @param val   String
@@ -73,30 +77,6 @@
     names = val;
   }
 
-  /** Set the generated property prefix
-   *
-   * @param val   String
-   */
-  public void setPrefix(final String val) {
-    prefix = val;
-  }
-
-  /** Set the applications property prefix
-   *
-   * @param val   String
-   */
-  public void setAppPrefix(final String val) {
-    appPrefix = val;
-  }
-
-  /** Set the project locations property prefix
-   *
-   * @param val   String
-   */
-  public void setProjectPrefix(final String val) {
-    projectPrefix = val;
-  }
-
   /** Execute the task
    */
   @Override
@@ -108,73 +88,12 @@
         throw new BuildException("Must supply deployment names.");
       }
 
-      if (prefix == null) {
-        throw new BuildException("Must supply property name prefix.");
-      }
-
-      if (!prefix.endsWith(".")) {
-        prefix += ".";
-      }
-
-      if (!appPrefix.endsWith(".")) {
-        appPrefix += ".";
-      }
-
-      if (!projectPrefix.endsWith(".")) {
-        projectPrefix += ".";
-      }
-
-      PropertyHelper props = PropertyHelper.getPropertyHelper(getProject());
-
-      String bedeworkHome = (String)props.getProperty(null, bedeworkHomeProperty);
-
-      if (bedeworkHome == null) {
-        throw new BuildException("Must supply property " + bedeworkHomeProperty);
-      }
-
       Iterator nit = nameList.iterator();
 
       while (nit.hasNext()) {
         String name = (String)nit.next();
 
-        String appProjectProperty = appPrefix + name + ".project";
-        String project = (String)props.getProperty(null, appProjectProperty);
-
-        if (project == null) {
-          throw new BuildException("Property " + appProjectProperty +
-                                   " is undefined");
-        }
-
-        /* Build full project property from project name and get value */
-
-        String projectProperty = projectPrefix + project;
-        String projectPath = (String)props.getProperty(null, projectProperty);
-
-        if (projectPath == null) {
-          throw new BuildException("Property " + projectProperty +
-                                   " is undefined");
-        }
-
-        String appSouProperty = appPrefix + name + ".sou.dir";
-        String appSou = (String)props.getProperty(null, appSouProperty);
-
-        if (appSou == null) {
-          throw new BuildException("Property " + appSouProperty +
-                                   " is undefined");
-        }
-
-        if (appSou.length() == 0) {
-          appSou = projectPath;
-        } else {
-          appSou = projectPath + "/" + appSou;
-        }
-
-        props.setProperty(null, prefix + "name", name, false);
-        props.setProperty(null, prefix + "projectName", project, false);
-        props.setProperty(null, prefix + "project.path", projectPath, false);
-        props.setProperty(null, prefix + "app.sou", appSou, false);
-
-        super.execute();
+        doProps(name);
       }
     } catch (BuildException be) {
       throw be;

Modified: releases/bedework-3.7/deployutil/src/org/bedework/deployment/MakeLangXsl.java
===================================================================
--- releases/bedework-3.7/deployutil/src/org/bedework/deployment/MakeLangXsl.java	2011-02-11 22:37:38 UTC (rev 3168)
+++ releases/bedework-3.7/deployutil/src/org/bedework/deployment/MakeLangXsl.java	2011-02-13 00:13:29 UTC (rev 3169)
@@ -295,6 +295,7 @@
     }
   }
 
+  @SuppressWarnings("unchecked")
   private void checkResources(final List<String> fnames) throws BuildException {
     List<TreeSet<String>> propNamesList = new LinkedList<TreeSet<String>>();
     int fnamesSz = fnames.size();



More information about the Bedework-commit mailing list