[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