[Bedework-commit] calendarapi r1196 - in trunk: alarmProcessor/src/org/bedework/alarmProcessor calsvc/src/org/bedework/calsvc calsvci/src/org/bedework/calsvci inoutsched/src/org/bedework/inoutsched sysevents/src/org/bedework/sysevents/events

svnadmin at bedework.org svnadmin at bedework.org
Fri Mar 5 11:58:06 EST 2010


Author: douglm
Date: 2010-03-05 11:58:05 -0500 (Fri, 05 Mar 2010)
New Revision: 1196

Modified:
   trunk/alarmProcessor/src/org/bedework/alarmProcessor/AlarmHandler.java
   trunk/calsvc/src/org/bedework/calsvc/CalSvc.java
   trunk/calsvci/src/org/bedework/calsvci/CalSvcIPars.java
   trunk/inoutsched/src/org/bedework/inoutsched/InScheduler.java
   trunk/inoutsched/src/org/bedework/inoutsched/OutScheduler.java
   trunk/sysevents/src/org/bedework/sysevents/events/SysEvent.java
Log:
Add a service flag to svci pars to disable setting of last login for background services. The indexer was casusing or suffering from stale state exceptions as it tried to update login.

In any case, it's inappropriate to update login for a background service

Modified: trunk/alarmProcessor/src/org/bedework/alarmProcessor/AlarmHandler.java
===================================================================
--- trunk/alarmProcessor/src/org/bedework/alarmProcessor/AlarmHandler.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/alarmProcessor/src/org/bedework/alarmProcessor/AlarmHandler.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -473,17 +473,10 @@
       return;
     }
 
-    CalSvcIPars runAsPars = new CalSvcIPars(principal,//principal.getAccount(),
-                                            null,    // calsuite
-                                            false,   // publicAdmin
-                                            //"root".equals(principal.getAccount()),  // allow SuperUser
-                                            "/principals/users/root".equals(principal),  // allow SuperUser
-                                            false,  // adminCanEditAllPublicCategories
-                                            false,  // adminCanEditAllPublicLocations
-                                            false,  // adminCanEditAllPublicSponsors
-                                            true,    // sessionless
-                                            null, // synchId
-                                            null); // dbpars
+    CalSvcIPars runAsPars = CalSvcIPars.getServicePars(principal,
+                                                  false,   // publicAdmin,
+                                                  "/principals/users/root".equals(principal));  // allow SuperUser
+
     svci = new CalSvcFactoryDefault().getSvc(runAsPars);
     setSvc(svci);
   }

Modified: trunk/calsvc/src/org/bedework/calsvc/CalSvc.java
===================================================================
--- trunk/calsvc/src/org/bedework/calsvc/CalSvc.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/calsvc/src/org/bedework/calsvc/CalSvc.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -723,7 +723,7 @@
   @Override
   public SynchI getSynchHandler() throws CalFacadeException {
     if (synchHandler == null) {
-      synchHandler = new Synch(this, getUser(), pars.getSynchId(), debug);
+      synchHandler = new Synch(this, getUser(), null, debug);
       handlers.add((CalSvcDb)synchHandler);
     }
 
@@ -1109,11 +1109,17 @@
                   pars.getSessionsless());
 
         if (!currentUser.getUnauthenticated()) {
-          users.logon(currentUser);
+          if (pars.getService()) {
+            postNotification(
+                 SysEvent.makePrincipalEvent(SysEvent.SysCode.SERVICE_USER_LOGIN,
+                                             currentUser));
+          } else {
+            users.logon(currentUser);
 
-          postNotification(
-                 SysEvent.makePrincipalEvent(SysEvent.SysCode.USER_LOGIN,
-                                             currentUser));
+            postNotification(
+                   SysEvent.makePrincipalEvent(SysEvent.SysCode.USER_LOGIN,
+                                               currentUser));
+          }
         } else {
           getCal().setMaximumAllowedPrivs(PrivilegeSet.readOnlyPrivileges);
 

Modified: trunk/calsvci/src/org/bedework/calsvci/CalSvcIPars.java
===================================================================
--- trunk/calsvci/src/org/bedework/calsvci/CalSvcIPars.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/calsvci/src/org/bedework/calsvci/CalSvcIPars.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -49,29 +49,29 @@
 
   /** True if this is for public admin
    */
-  private final boolean publicAdmin;
+  private boolean publicAdmin;
 
+  /** True if this is for a background service
+   */
+  private boolean service;
+
   /** True if we should allow super user mode in non public admin
    */
-  private final boolean allowSuperUser;
+  private boolean allowSuperUser;
 
-  private final boolean adminCanEditAllPublicCategories;
-  private final boolean adminCanEditAllPublicLocations;
-  private final boolean adminCanEditAllPublicContacts;
+  private boolean adminCanEditAllPublicCategories;
+  private boolean adminCanEditAllPublicLocations;
+  private boolean adminCanEditAllPublicContacts;
 
   /** True if this is a sessionless client, e.g. caldav or rss
    */
   private boolean sessionless;
 
-  /** Non-null if this is for synchronization. Identifies the client end.
-   */
-  private final String synchId;
-
   /** True if this is a web application
    */
   private boolean webMode;
 
-  private final DbConfig dbPars;
+  private DbConfig dbPars;
 
   /** Constructor for this object.
    *
@@ -80,12 +80,11 @@
    * @param calSuite    String calSuite name
    * @param publicAdmin true for admin
    * @param allowSuperUser  true to allow superuser mode in non-admin mode
+   * @param service     true for a service
    * @param adminCanEditAllPublicCategories
    * @param adminCanEditAllPublicLocations
    * @param adminCanEditAllPublicContacts
    * @param sessionless true if this is a sessionless client
-   * @param synchId     non-null if this is for synchronization. Identifies the
-   *                    client end.
    * @param dbPars
    */
   public CalSvcIPars(final String authUser,
@@ -94,35 +93,56 @@
 
                      final boolean publicAdmin,
                      final boolean allowSuperUser,
+                     final boolean service,
 
                      final boolean adminCanEditAllPublicCategories,
                      final boolean adminCanEditAllPublicLocations,
                      final boolean adminCanEditAllPublicContacts,
 
                      final boolean sessionless,
-                     final String synchId,
                      final DbConfig dbPars) {
-    this(authUser, calSuite, publicAdmin, allowSuperUser,
+    this(authUser, calSuite, publicAdmin, allowSuperUser, service,
          adminCanEditAllPublicCategories,
          adminCanEditAllPublicLocations,
          adminCanEditAllPublicContacts,
-         sessionless, synchId, dbPars);
+         sessionless, dbPars);
 
     this.user = user;
   }
 
+  /** Return new parameters for a service
+   *
+   * @param account
+   * @param publicAdmin
+   * @param allowSuperUser
+   * @return CalSvcIPars
+   */
+  public static CalSvcIPars getServicePars(final String account,
+                                           final boolean publicAdmin,
+                                           final boolean allowSuperUser) {
+    return new CalSvcIPars(account,
+                           null,   // calsuite
+                           publicAdmin,
+                           allowSuperUser,
+                           true,   // service
+                           false,  // adminCanEditAllPublicCategories
+                           false,  // adminCanEditAllPublicLocations
+                           false,  // adminCanEditAllPublicSponsors
+                           false,  // sessionless
+                           null); // dbpars
+  }
+
   /** Constructor we want for this object.
    *
    * @param authUser    String authenticated user of the application
    * @param calSuite    String calSuite name
    * @param publicAdmin true for admin
    * @param allowSuperUser  true to allow superuser mode in non-admin mode
+   * @param service     true for a service
    * @param adminCanEditAllPublicCategories
    * @param adminCanEditAllPublicLocations
    * @param adminCanEditAllPublicContacts
    * @param sessionless true if this is a sessionless client
-   * @param synchId     non-null if this is for synchronization. Identifies the
-   *                    client end.
    * @param dbPars
    */
   public CalSvcIPars(final String authUser,
@@ -130,23 +150,23 @@
 
                      final boolean publicAdmin,
                      final boolean allowSuperUser,
+                     final boolean service,
 
                      final boolean adminCanEditAllPublicCategories,
                      final boolean adminCanEditAllPublicLocations,
                      final boolean adminCanEditAllPublicContacts,
 
                      final boolean sessionless,
-                     final String synchId,
                      final DbConfig dbPars) {
     this.authUser = authUser;
     this.calSuite = calSuite;
     this.publicAdmin = publicAdmin;
     this.allowSuperUser = allowSuperUser;
+    this.service = service;
     this.adminCanEditAllPublicCategories = adminCanEditAllPublicCategories;
     this.adminCanEditAllPublicLocations = adminCanEditAllPublicLocations;
     this.adminCanEditAllPublicContacts = adminCanEditAllPublicContacts;
     this.sessionless = sessionless;
-    this.synchId = synchId;
     this.dbPars = dbPars;
   }
 
@@ -193,6 +213,13 @@
   }
 
   /**
+   * @return boolean true if this is a service.
+   */
+  public boolean getService() {
+    return service;
+  }
+
+  /**
    * @return boolean true if we allow superuser mode in non-admin.
    */
   public boolean getAllowSuperUser() {
@@ -249,13 +276,6 @@
   }
 
   /**
-   * @return String Non-null if this is for synchronization. Identifies the client end.
-   */
-  public String getSynchId() {
-    return synchId;
-  }
-
-  /**
    * @return DbConfig
    */
   public DbConfig getDbPars() {
@@ -281,6 +301,8 @@
     sb.append(getCalSuite());
     sb.append(", publicAdmin=");
     sb.append(getPublicAdmin());
+    sb.append(", service=");
+    sb.append(getService());
     sb.append(", adminCanEditAllPublicCategories()=");
     sb.append(getAdminCanEditAllPublicCategories());
     sb.append(", adminCanEditAllPublicLocations()=");
@@ -289,8 +311,6 @@
     sb.append(getAdminCanEditAllPublicContacts());
     sb.append(", sessionless=");
     sb.append(getSessionsless());
-    sb.append(", synchid=");
-    sb.append(getSynchId());
     sb.append("}");
 
     return sb.toString();
@@ -303,11 +323,11 @@
                                        getCalSuite(),
                                        getPublicAdmin(),
                                        getAllowSuperUser(),
+                                       getService(),
                                        getAdminCanEditAllPublicCategories(),
                                        getAdminCanEditAllPublicLocations(),
                                        getAdminCanEditAllPublicContacts(),
                                        getSessionsless(),
-                                       getSynchId(),
                                        getDbPars());
     return pars;
   }

Modified: trunk/inoutsched/src/org/bedework/inoutsched/InScheduler.java
===================================================================
--- trunk/inoutsched/src/org/bedework/inoutsched/InScheduler.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/inoutsched/src/org/bedework/inoutsched/InScheduler.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -402,17 +402,10 @@
     /* account is what we authenticated with.
      * user, if non-null, is the user calendar we want to access.
      */
-    CalSvcIPars runAsPars = new CalSvcIPars(principalHref,//principal.getAccount(),
-                                            null,    // calsuite
-                                            false,   // publicAdmin
-                                            //"root".equals(principal.getAccount()),  // allow SuperUser
-                                            "/principals/users/root".equals(principalHref),  // allow SuperUser
-                                            false,  // adminCanEditAllPublicCategories
-                                            false,  // adminCanEditAllPublicLocations
-                                            false,  // adminCanEditAllPublicSponsors
-                                            true,    // sessionless
-                                            null, // synchId
-                                            null); // dbpars
+    CalSvcIPars runAsPars = CalSvcIPars.getServicePars(principalHref,//principal.getAccount(),
+                                                       false,   // publicAdmin
+                                                       "/principals/users/root".equals(principalHref));  // allow SuperUser
+
     svci = new CalSvcFactoryDefault().getSvc(runAsPars);
     setSvc(svci);
 

Modified: trunk/inoutsched/src/org/bedework/inoutsched/OutScheduler.java
===================================================================
--- trunk/inoutsched/src/org/bedework/inoutsched/OutScheduler.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/inoutsched/src/org/bedework/inoutsched/OutScheduler.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -272,17 +272,10 @@
     /* account is what we authenticated with.
      * user, if non-null, is the user calendar we want to access.
      */
-    CalSvcIPars runAsPars = new CalSvcIPars(principalHref,//principal.getAccount(),
-                                            null,    // calsuite
-                                            false,   // publicAdmin
-                                            //"root".equals(principal.getAccount()),  // allow SuperUser
-                                            "/principals/users/root".equals(principalHref),  // allow SuperUser
-                                            false,  // adminCanEditAllPublicCategories
-                                            false,  // adminCanEditAllPublicLocations
-                                            false,  // adminCanEditAllPublicSponsors
-                                            true,    // sessionless
-                                            null, // synchId
-                                            null); // dbpars
+    CalSvcIPars runAsPars = CalSvcIPars.getServicePars(principalHref,//principal.getAccount(),
+                                                       false,   // publicAdmin
+                                                       "/principals/users/root".equals(principalHref));  // allow SuperUser
+
     svci = new CalSvcFactoryDefault().getSvc(runAsPars);
     setSvc(svci);
 

Modified: trunk/sysevents/src/org/bedework/sysevents/events/SysEvent.java
===================================================================
--- trunk/sysevents/src/org/bedework/sysevents/events/SysEvent.java	2010-03-05 16:56:37 UTC (rev 1195)
+++ trunk/sysevents/src/org/bedework/sysevents/events/SysEvent.java	2010-03-05 16:58:05 UTC (rev 1196)
@@ -163,8 +163,13 @@
     /* ========= Scheduling =========== */
 
     /** A scheduling message arrived */
-    SCHEDULE_QUEUED(info, user);
+    SCHEDULE_QUEUED(info, user),
 
+    /* ========= Services =========== */
+
+    /** Service initialised as a user */
+    SERVICE_USER_LOGIN(info, priv);
+
     private int severity;
 
     private int privLevel;



More information about the Bedework-commit mailing list