You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by me...@apache.org on 2013/01/14 21:03:00 UTC
svn commit: r1433083 - in /incubator/jspwiki/trunk: ChangeLog etc/web.xml
src/org/apache/wiki/Release.java src/org/apache/wiki/auth/SessionMonitor.java
src/org/apache/wiki/auth/UserManager.java
src/org/apache/wiki/rpc/json/JSONRPCManager.java
Author: metskem
Date: Mon Jan 14 20:02:59 2013
New Revision: 1433083
URL: http://svn.apache.org/viewvc?rev=1433083&view=rev
Log:
2013-01-14 Harry Metske <me...@apache.org>
* 2.9.1-svn-17
* fixed JSPWIKI-659 NotSerializableException on Tomcat restart , UserManager not Serializable
We now no longer put JSONRPCBridge in the HttpSession.
Long term solution is to migrate to jackson.
Modified:
incubator/jspwiki/trunk/ChangeLog
incubator/jspwiki/trunk/etc/web.xml
incubator/jspwiki/trunk/src/org/apache/wiki/Release.java
incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java
incubator/jspwiki/trunk/src/org/apache/wiki/auth/UserManager.java
incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java
Modified: incubator/jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ChangeLog (original)
+++ incubator/jspwiki/trunk/ChangeLog Mon Jan 14 20:02:59 2013
@@ -1,3 +1,11 @@
+2013-01-14 Harry Metske <me...@apache.org>
+
+ * 2.9.1-svn-17
+
+ * fixed JSPWIKI-659 NotSerializableException on Tomcat restart , UserManager not Serializable
+ We now no longer put JSONRPCBridge in the HttpSession.
+ Long term solution is to migrate to jackson.
+
2013-01-12 Glen Mazza (gmazza@apache.org)
* Switched to a hardcoded jdbc.properties file for testing to simplify build.xml and future
Modified: incubator/jspwiki/trunk/etc/web.xml
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/etc/web.xml?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/etc/web.xml (original)
+++ incubator/jspwiki/trunk/etc/web.xml Mon Jan 14 20:02:59 2013
@@ -142,6 +142,10 @@
<servlet>
<servlet-name>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-name>
<servlet-class>com.metaparadigm.jsonrpc.JSONRPCServlet</servlet-class>
+ <init-param>
+ <param-name>auto-session-bridge</param-name>
+ <param-value>0</param-value>
+ </init-param>
</servlet>
<!-- Atom Publishing Protocol -->
Modified: incubator/jspwiki/trunk/src/org/apache/wiki/Release.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/org/apache/wiki/Release.java?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/Release.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/Release.java Mon Jan 14 20:02:59 2013
@@ -75,7 +75,7 @@ public final class Release
* <p>
* If the build identifier is empty, it is not added.
*/
- public static final String BUILD = "16";
+ public static final String BUILD = "17";
/**
* This is the generic version string you should use
Modified: incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java Mon Jan 14 20:02:59 2013
@@ -32,7 +32,6 @@ import org.apache.wiki.WikiSession;
import org.apache.wiki.event.WikiEventListener;
import org.apache.wiki.event.WikiEventManager;
import org.apache.wiki.event.WikiSecurityEvent;
-import org.apache.wiki.rpc.json.JSONRPCManager;
/**
* <p>Manages WikiSession's for different WikiEngine's.</p>
@@ -248,9 +247,6 @@ public class SessionMonitor implements H
*/
public void sessionCreated( HttpSessionEvent se )
{
- HttpSession session = se.getSession();
-
- JSONRPCManager.sessionCreated(session);
}
/**
Modified: incubator/jspwiki/trunk/src/org/apache/wiki/auth/UserManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/org/apache/wiki/auth/UserManager.java?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/auth/UserManager.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/auth/UserManager.java Mon Jan 14 20:02:59 2013
@@ -18,7 +18,6 @@
*/
package org.apache.wiki.auth;
-import java.io.Serializable;
import java.security.Permission;
import java.security.Principal;
import java.text.MessageFormat;
@@ -818,9 +817,8 @@ public final class UserManager
* this gets reinstalled to the session when JSPWiki starts. This means
* that it's not actually necessary to save anything.
*/
- public static final class JSONUserModule implements RPCCallable, Serializable
+ public static final class JSONUserModule implements RPCCallable
{
- private static final long serialVersionUID = 1L;
private volatile UserManager m_manager;
/**
Modified: incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java?rev=1433083&r1=1433082&r2=1433083&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java Mon Jan 14 20:02:59 2013
@@ -24,10 +24,8 @@ import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
-
import org.apache.wiki.WikiContext;
import org.apache.wiki.WikiEngine;
import org.apache.wiki.WikiSession;
@@ -36,6 +34,7 @@ import org.apache.wiki.auth.permissions.
import org.apache.wiki.rpc.RPCCallable;
import org.apache.wiki.rpc.RPCManager;
import org.apache.wiki.ui.TemplateManager;
+
import com.metaparadigm.jsonrpc.InvocationCallback;
import com.metaparadigm.jsonrpc.JSONRPCBridge;
@@ -56,7 +55,6 @@ import com.metaparadigm.jsonrpc.JSONRPCB
// FIXME: Must be mootool-ified.
public final class JSONRPCManager extends RPCManager
{
- private static final String JSONRPCBRIDGE = "JSONRPCBridge";
private static HashMap<String, CallbackContainer> c_globalObjects = new HashMap<String, CallbackContainer>();
/** Prevent instantiation */
@@ -87,43 +85,6 @@ public final class JSONRPCManager extend
}
/**
- * Finds this user's personal RPC Bridge. If it does not exist, will
- * create one and put it in the context. If there is no HTTP Request included,
- * returns the global bridge.
- *
- * @param context WikiContext to find the bridge in
- * @return A JSON RPC Bridge
- */
- // FIXME: Is returning the global bridge a potential security threat?
- private static JSONRPCBridge getBridge( WikiContext context )
- {
- JSONRPCBridge bridge = null;
- HttpServletRequest req = context.getHttpRequest();
-
- if( req != null )
- {
- HttpSession hs = req.getSession();
-
- if( hs != null )
- {
- bridge = (JSONRPCBridge)hs.getAttribute(JSONRPCBRIDGE);
-
- if( bridge == null )
- {
- bridge = new JSONRPCBridge();
-
- hs.setAttribute(JSONRPCBRIDGE, bridge);
- }
- }
- }
-
- if( bridge == null) bridge = JSONRPCBridge.getGlobalBridge();
- bridge.setDebug(false);
-
- return bridge;
- }
-
- /**
* Registers a callable to JSON global bridge and requests JSON libraries to be added
* to the page.
*
@@ -134,7 +95,7 @@ public final class JSONRPCManager extend
public static String registerJSONObject( WikiContext context, RPCCallable c )
{
String id = getId(c);
- getBridge(context).registerObject( id, c );
+ JSONRPCBridge.getGlobalBridge().registerObject( id, c );
requestJSON( context );
return id;
@@ -155,7 +116,7 @@ public final class JSONRPCManager extend
TemplateManager.RESOURCE_JSFUNCTION,
"jsonrpc = new JSONRpcClient(\""+jsonurl+"\");");
- getBridge(context).registerCallback(new WikiJSONAccessor(), HttpServletRequest.class);
+ JSONRPCBridge.getGlobalBridge().registerCallback(new WikiJSONAccessor(), HttpServletRequest.class);
}
/**
@@ -257,40 +218,6 @@ public final class JSONRPCManager extend
}
/**
- * Is called whenever a session is created. This method creates a new JSONRPCBridge
- * and adds it to the user session. This is done because the global JSONRPCBridge
- * InvocationCallbacks are not called; only session locals. This may be a bug
- * in JSON-RPC, or it may be a design feature...
- * <p>
- * The JSONRPCBridge object will go away once the session expires.
- *
- * @param session The HttpSession which was created.
- */
- public static void sessionCreated( HttpSession session )
- {
- JSONRPCBridge bridge = (JSONRPCBridge)session.getAttribute(JSONRPCBRIDGE);
-
- if( bridge == null )
- {
- bridge = new JSONRPCBridge();
-
- session.setAttribute( JSONRPCBRIDGE, bridge );
- }
-
- WikiJSONAccessor acc = new WikiJSONAccessor();
-
- bridge.registerCallback( acc, HttpServletRequest.class );
-
- for( Iterator i = c_globalObjects.values().iterator(); i.hasNext(); )
- {
- CallbackContainer cc = (CallbackContainer) i.next();
-
- bridge.registerObject( cc.m_id, cc.m_object );
- }
-
- }
-
- /**
* Just stores the registered global method.
*
*