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/03/20 21:04:22 UTC
svn commit: r1459023 - 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/rpc/json/JSONRPCManager.java
Author: metskem
Date: Wed Mar 20 20:04:22 2013
New Revision: 1459023
URL: http://svn.apache.org/r1459023
Log:
2013-03-20 Harry Metske <me...@apache.org>
* 2.9.1-svn-31
* fixed JSPWIKI-766): quick search not working anymore
* "unfixed" JSPWIKI-659 : NotSerializableException on Tomcat restart , UserManager not Serializable
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/rpc/json/JSONRPCManager.java
Modified: incubator/jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/ChangeLog?rev=1459023&r1=1459022&r2=1459023&view=diff
==============================================================================
--- incubator/jspwiki/trunk/ChangeLog (original)
+++ incubator/jspwiki/trunk/ChangeLog Wed Mar 20 20:04:22 2013
@@ -1,3 +1,10 @@
+2013-03-20 Harry Metske <me...@apache.org>
+
+ * 2.9.1-svn-31
+
+ * fixed JSPWIKI-766): quick search not working anymore
+ * "unfixed" JSPWIKI-659 : NotSerializableException on Tomcat restart , UserManager not Serializable
+
2013-03-17 Harry Metske <me...@apache.org>
* 2.9.1-svn-30
Modified: incubator/jspwiki/trunk/etc/web.xml
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/etc/web.xml?rev=1459023&r1=1459022&r2=1459023&view=diff
==============================================================================
--- incubator/jspwiki/trunk/etc/web.xml (original)
+++ incubator/jspwiki/trunk/etc/web.xml Wed Mar 20 20:04:22 2013
@@ -142,10 +142,6 @@
<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=1459023&r1=1459022&r2=1459023&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/Release.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/Release.java Wed Mar 20 20:04:22 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 = "30";
+ public static final String BUILD = "31";
/**
* 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=1459023&r1=1459022&r2=1459023&view=diff
==============================================================================
--- incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java (original)
+++ incubator/jspwiki/trunk/src/org/apache/wiki/auth/SessionMonitor.java Wed Mar 20 20:04:22 2013
@@ -32,6 +32,7 @@ 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>
@@ -247,6 +248,9 @@ 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/rpc/json/JSONRPCManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/trunk/src/org/apache/wiki/rpc/json/JSONRPCManager.java?rev=1459023&r1=1459022&r2=1459023&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 Wed Mar 20 20:04:22 2013
@@ -24,8 +24,10 @@ 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;
@@ -34,7 +36,6 @@ 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;
@@ -55,6 +56,7 @@ 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 */
@@ -85,6 +87,43 @@ 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.
*
@@ -95,7 +134,7 @@ public final class JSONRPCManager extend
public static String registerJSONObject( WikiContext context, RPCCallable c )
{
String id = getId(c);
- JSONRPCBridge.getGlobalBridge().registerObject( id, c );
+ getBridge(context).registerObject( id, c );
requestJSON( context );
return id;
@@ -116,7 +155,7 @@ public final class JSONRPCManager extend
TemplateManager.RESOURCE_JSFUNCTION,
"jsonrpc = new JSONRpcClient(\""+jsonurl+"\");");
- JSONRPCBridge.getGlobalBridge().registerCallback(new WikiJSONAccessor(), HttpServletRequest.class);
+ getBridge(context).registerCallback(new WikiJSONAccessor(), HttpServletRequest.class);
}
/**
@@ -218,6 +257,40 @@ 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.
*
*