Hi all,
I found a few bugs in RollerAdminProtocol implementation.
- Adding users doesn't work b/c property "screenName" isn't set on UserEntry
and therefore JPA complains about null property (see attached file
UserEntryPatch.txt)
- Deleting members and users doesn't work b/c the resulting EntrySet of the
delete action is constructed after flushing the session. JPA sets some
properties (in this case the timezone) to null which leads to NPE (see
attached files RollerUserHandlerPatch.txt and RollerMemberHandlerPatch.txt)
ERROR 2007-09-07 11:05:43,859 StandardWrapperValve:invoke - Servlet.service()
for servlet AdminServlet threw exception
java.lang.NullPointerException
at sun.util.calendar.ZoneInfoFile.getFileName(ZoneInfoFile.java:468)
at sun.util.calendar.ZoneInfoFile.createZoneInfo(ZoneInfoFile.java:556)
at sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java :526)
at sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:582)
at java.util.TimeZone.getTimeZone(TimeZone.java:482)
at java.util.TimeZone.getTimeZone(TimeZone.java:478)
at
org.apache.roller.weblogger.webservices.adminprotocol.sdk.UserEntry.setTimezone(
UserEntry.java:308)
at
org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler.toUserEntry
(RollerUserHandler.java:252)
at
org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler.toUserEntrySet(
RollerUserHandler.java:269)
at
org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler.deleteEntry
(RollerUserHandler.java:236)
at
org.apache.roller.weblogger.webservices.adminprotocol.RollerUserHandler.processDelete(
RollerUserHandler.java:82)
at
org.apache.roller.weblogger.webservices.adminprotocol.AdminServlet.doDelete(
AdminServlet.java:123)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:716)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
- Retrieveing all users doesn't work b/c JPAUserManagerImpl produces wrong
SQL statement b/c no parameters are provided (see attached file
JPAUserManagerImplPatch.txt).
ERROR 2007-09-07 11:42:24,265 StandardWrapperValve:invoke - Servlet.service()
for servlet AdminServlet threw exception
<0.9.7-incubating nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: An error occurred while
parsing the query filter 'SELECT u FROM User u WHERE ORDER BY
u.dateCreatedDESC'. Error message: <
0.9.7-incubating nonfatal user error>
org.apache.openjpa.kernel.jpql.ParseException: Encountered "ORDER BY" at
character 29, but expected: ["(", "+", "-", ":", "<>", "=", "?", "ABS",
"ALL", "ANY", "ASC", "AVG", "CONCAT", "COUNT", "CURRENT_DATE",
"CURRENT_TIME", "CURRENT_TIMESTAMP", "DESC", "EMPTY", "EXISTS", "LENGTH",
"LOCATE", "LOWER", "MAX", "MEMBER", "MIN", "MOD", "NEW", "NOT", "ORDER",
"SELECT", "SIZE", "SOME", "SQRT", "SUBSTRING", "SUM", "TRIM", "UPPER",
<BOOLEAN_LITERAL>, <DECIMAL_LITERAL>, <IDENTIFIER>, <INTEGER_LITERAL>,
<STRING_LITERAL>].
Maybe there is also an encoding problem when using german umlaute in
creating users and weblogs by rap. I'm not sure yet. I have to investigate
further.
Jens
Index:
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
===================================================================
---
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
(revision 573359)
+++
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
(working copy)
@@ -96,6 +96,12 @@
setFullName(fullNameElement.getText());
}
+ // screenname
+ Element screenNameElement = e.getChild(Tags.SCREEN_NAME, NAMESPACE);
+ if (screenNameElement != null) {
+ setScreenName(screenNameElement.getText());
+ }
+
// password
Element passwordElement = e.getChild(Tags.PASSWORD, NAMESPACE);
if (passwordElement != null) {
Index:
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java
===================================================================
---
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java
(revision 573359)
+++
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerMemberHandler.java
(working copy)
@@ -359,7 +359,7 @@
throw new NotFoundException("ERROR: Permissions do not exist
for weblog handle: " + handle + ", user name: " + username);
}
pds = new WeblogPermission[] { pd };
-
+ EntrySet es = toMemberEntrySet(pds);
UserManager mgr = getRoller().getUserManager();
mgr.removePermissions(pd);
getRoller().flush();
@@ -369,7 +369,7 @@
Weblog wd = getWebsiteData(handle);
CacheManager.invalidate(wd);
- EntrySet es = toMemberEntrySet(pds);
+
return es;
} catch (WebloggerException re) {
throw new InternalException("ERROR: Could not delete entry", re);
Index:
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java
===================================================================
---
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java
(revision 573359)
+++
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/RollerUserHandler.java
(working copy)
@@ -226,15 +226,15 @@
User[] uds = new User[] { ud };
try {
+ EntrySet es = toUserEntrySet(uds);
getRoller().getUserManager().removeUser(ud);
getRoller().flush();
CacheManager.invalidate(ud);
+ return es;
} catch (WebloggerException re) {
throw new InternalException("ERROR: could not delete user data",
re);
}
-
- EntrySet es = toUserEntrySet(uds);
- return es;
+
}
private UserEntry toUserEntry(User ud) {
Index:
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
===================================================================
---
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
(revision 573359)
+++
I:/projects/workspace/roller_4.0/apps/weblogger/src/java/org/apache/roller/weblogger/webservices/adminprotocol/sdk/UserEntry.java
(working copy)
@@ -96,6 +96,12 @@
setFullName(fullNameElement.getText());
}
+ // screenname
+ Element screenNameElement = e.getChild(Tags.SCREEN_NAME, NAMESPACE);
+ if (screenNameElement != null) {
+ setScreenName(screenNameElement.getText());
+ }
+
// password
Element passwordElement = e.getChild(Tags.PASSWORD, NAMESPACE);
if (passwordElement != null) {