Author: michiel
Date: 2010-03-29 10:28:02 +0200 (Mon, 29 Mar 2010)
New Revision: 41650

Modified:
   mmbase/trunk/applications/searchrelate/example-webapp/jetty-env.xml
   mmbase/trunk/applications/searchrelate/example-webapp/pom.xml
   mmbase/trunk/applications/searchrelate/pom.xml
   
mmbase/trunk/applications/searchrelate/src/main/java/org/mmbase/searchrelate/Submitter.java
   
mmbase/trunk/applications/searchrelate/src/main/resources/META-INF/tags/mm/searchrelate/relatednodes.tagx
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/components/searchrelate/examples.jspx
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/lazy-part.jspx
   
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/order.jspx
Log:
Merged maintaining also resolutions in the session, which makes it easier to do 
some things. E.g. temporary numbers can remain working. (merged -r41575 from 
1.9)

Modified: mmbase/trunk/applications/searchrelate/example-webapp/jetty-env.xml
===================================================================
--- mmbase/trunk/applications/searchrelate/example-webapp/jetty-env.xml 
2010-03-29 03:31:30 UTC (rev 41649)
+++ mmbase/trunk/applications/searchrelate/example-webapp/jetty-env.xml 
2010-03-29 08:28:02 UTC (rev 41650)
@@ -7,8 +7,6 @@
   <!--
   For 'rapid development' of used overlays, this can come in handy.
   -->
-
-  <!--
   <Set name="baseResource">
     <New class="org.mortbay.resource.ResourceCollection">
       <Arg>
@@ -20,11 +18,11 @@
           <Item>./target/war/work/org.mmbase.tinymce/tinymce-jquery</Item>
           <Item>../src/main/examples</Item>
           <Item>../../../base-webapp/src/main/webapp</Item>
+          
<Item>/Users/michiel/mmbase/9/base-webapp/target/base-webapp-1.9-servlet25-SNAPSHOT/</Item>
         </Array>
       </Arg>
     </New>
   </Set>
-  -->
   <!--
 
       <Item><SystemProperty name="jetty.home" default="."/>/webapps/foo</Item>

Modified: mmbase/trunk/applications/searchrelate/example-webapp/pom.xml
===================================================================
--- mmbase/trunk/applications/searchrelate/example-webapp/pom.xml       
2010-03-29 03:31:30 UTC (rev 41649)
+++ mmbase/trunk/applications/searchrelate/example-webapp/pom.xml       
2010-03-29 08:28:02 UTC (rev 41650)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.mmbase</groupId>
     <artifactId>mmbase-parent</artifactId>
-    <version>2.0-SNAPSHOT</version>
+    <version>1.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>example-searchrelate-webapp</artifactId>
@@ -14,9 +14,7 @@
   <name>MMBase Example Search and Relate webapp</name>
 
   <properties>
-    <!--
     <mmbase.version.number>1.9</mmbase.version.number>
-    -->
     <saxon.version>9.1.0.6</saxon.version>
   </properties>
 
@@ -71,7 +69,7 @@
     <dependency>
       <groupId>org.mmbase</groupId>
       <artifactId>base-webapp</artifactId>
-      <version>${mmbase.version}</version>
+      <version>1.9-servlet25-SNAPSHOT</version>
       <type>war</type>
     </dependency>
 
@@ -82,6 +80,7 @@
       <type>war</type>
     </dependency>
 
+
     <dependency>
       <groupId>org.mmbase</groupId>
       <artifactId>mmbase-searchrelate</artifactId>

Modified: mmbase/trunk/applications/searchrelate/pom.xml
===================================================================
--- mmbase/trunk/applications/searchrelate/pom.xml      2010-03-29 03:31:30 UTC 
(rev 41649)
+++ mmbase/trunk/applications/searchrelate/pom.xml      2010-03-29 08:28:02 UTC 
(rev 41650)
@@ -6,7 +6,7 @@
   <parent>
     <groupId>org.mmbase</groupId>
     <artifactId>mmbase-application-parent</artifactId>
-    <version>2.0-SNAPSHOT</version>
+    <version>1.9-SNAPSHOT</version>
   </parent>
 
   <artifactId>mmbase-searchrelate</artifactId>
@@ -14,6 +14,10 @@
   <packaging>war</packaging>
   <version>${mmbase.version}</version>
 
+  <properties>
+    <mmbase.version.number>1.9</mmbase.version.number>
+  </properties>
+
   <description>
     This applictions provides various tag-files and javascript libraries to 
make modern editors ('web 2.0').
   </description>

Modified: 
mmbase/trunk/applications/searchrelate/src/main/java/org/mmbase/searchrelate/Submitter.java
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/java/org/mmbase/searchrelate/Submitter.java
 2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/java/org/mmbase/searchrelate/Submitter.java
 2010-03-29 08:28:02 UTC (rev 41650)
@@ -12,6 +12,8 @@
 import org.mmbase.core.event.*;
 import org.mmbase.bridge.NodeQuery;
 import org.mmbase.bridge.util.Queries;
+import org.mmbase.storage.search.*;
+import javax.servlet.http.HttpSession;
 
 import org.mmbase.util.logging.Logger;
 import org.mmbase.util.logging.Logging;
@@ -22,7 +24,7 @@
  * In the first place this was for changes in order which were made in a 
transaction.  We do this afterwards because to sort a query result,
  * it is important that the query can be executed. Which is not possible when 
nodes are modified or new in a transaction.
  *
- *It will probably also be used to clean up other stuff from the session.
+ * It will probably also be used to clean up other stuff from the session.
  *
  * @author  Michiel Meeuwissen
  * @version $Id$
@@ -30,17 +32,20 @@
 public class Submitter implements TransactionEventListener {
     private static final Logger LOG = 
Logging.getLoggerInstance(Submitter.class);
 
+    private static final String KEY_RESOLUTIONS = Submitter.class.getName() + 
".resolutions";
     private static final Map<String, Submitter> instances = new 
ConcurrentHashMap<String, Submitter>();
 
     private final String transactionName;
     private final Map<NodeQuery, List<Integer>> orders = new 
HashMap<NodeQuery, List<Integer>>();
     private final List<Runnable> endCallBacks = new ArrayList<Runnable>();
+    private HttpSession session;
 
+
     protected Submitter(String tn) {
         transactionName = tn;
     }
 
-    public static Submitter getInstance(String name) {
+    public static Submitter getInstance(String name, HttpSession session) {
         synchronized(instances) {
             Submitter os = instances.get(name);
             if (os == null) {
@@ -51,6 +56,9 @@
             } else {
                 LOG.debug("Already an instance of " + name + " in " + 
instances);
             }
+            if (session != null) {
+                os.session = session;
+            }
             return os;
         }
     }
@@ -92,6 +100,31 @@
             LOG.debug("" + e);
             if (e instanceof TransactionEvent.Resolve) {
                 TransactionEvent.Resolve resolve = (TransactionEvent.Resolve) 
e;
+                List<NodeQuery> keys = new 
ArrayList<NodeQuery>(orders.keySet());
+
+                if (session != null) {
+                    Map<Integer, Integer> resolutions = (Map<Integer, 
Integer>) session.getAttribute(KEY_RESOLUTIONS);
+                    if (resolutions == null) {
+                        resolutions =  new ConcurrentHashMap<Integer, 
Integer>();
+                        session.setAttribute(KEY_RESOLUTIONS, resolutions);
+                    }
+                    resolutions.putAll(resolve.getResolution());
+                    LOG.debug("put " + KEY_RESOLUTIONS + " -> " + resolutions 
+ " in session");
+                } else {
+                    LOG.debug("No session in " + this);
+                }
+
+                // first fix queries which were using startNodes that are new.
+                for (NodeQuery q : keys) {
+                    NodeQuery toChange = (NodeQuery) Queries.fixQuery(q, 
resolve.getResolution());
+                    if (toChange != null) {
+                        List<Integer> value = orders.remove(q);
+                        orders.put(toChange, value);
+                        LOG.debug("Replaced " + q.toSql() + " with " + 
toChange.toSql());
+                    }
+                }
+
+                // The fix the new nodes in the the saved lists with orders.
                 for (Map.Entry<NodeQuery, List<Integer>> entry : 
orders.entrySet()) {
                     for (Map.Entry<Integer, Integer> resolution : 
resolve.getResolution().entrySet()) {
                         int index = 
entry.getValue().indexOf(resolution.getKey());
@@ -103,6 +136,8 @@
                 }
             }
             if (e instanceof TransactionEvent.Commit) {
+
+                // Commit the actual new order to the database too.
                 for (Map.Entry<NodeQuery, List<Integer>> entry : 
orders.entrySet()) {
                     try {
                         int changes = Queries.reorderResult(entry.getKey(), 
entry.getValue());
@@ -130,6 +165,8 @@
             LOG.debug("Ignoring " + e);
         }
     }
+
+
     @Override
     public String toString() {
         return "Submitter for " + transactionName;

Modified: 
mmbase/trunk/applications/searchrelate/src/main/resources/META-INF/tags/mm/searchrelate/relatednodes.tagx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/resources/META-INF/tags/mm/searchrelate/relatednodes.tagx
   2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/resources/META-INF/tags/mm/searchrelate/relatednodes.tagx
   2010-03-29 08:28:02 UTC (rev 41650)
@@ -324,7 +324,7 @@
     <mm:write value="${requestScope['org.mmbase.transaction'].id}" jspvar="fn" 
vartype="string" write="false">
       <mm:write value="${rid}" jspvar="rid" vartype="string" write="false">
         <jsp:scriptlet>
-          Submitter submitter = Submitter.getInstance(fn);
+          Submitter submitter = Submitter.getInstance(fn, session);
           SessionCleaner cleaner   = SessionCleaner.getInstance(session);
           submitter.addCallbackForEnd(cleaner);
           cleaner.addKey(rid + "_order");

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/components/searchrelate/examples.jspx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/components/searchrelate/examples.jspx
 2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/components/searchrelate/examples.jspx
 2010-03-29 08:28:02 UTC (rev 41650)
@@ -30,7 +30,6 @@
         <mm:node number="$mag">
           <h1>Using node ${_node}</h1>
           <mm-sr:relatednodes type="news" orderby="posrel.pos"
-                              item="/mmexamples/searchrelate/news.jspx"
                               role="posrel" />
 
           <!--

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
      2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/List.js.jsp
      2010-03-29 08:28:02 UTC (rev 41650)
@@ -730,6 +730,7 @@
                 $(self.div).trigger("mmsrStartSave", [self]);
                 result = null;
                 self.saving = true;
+                console.log("ASYNC " + (leavePage == null ? true : 
!leavePage));
                 $.ajax({ type: "POST",
                          async: leavePage == null ? true : !leavePage,
                          url: 
"${mm:link('/mmbase/searchrelate/list/save.jspx')}",

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/lazy-part.jspx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/lazy-part.jspx
      2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/lazy-part.jspx
      2010-03-29 08:28:02 UTC (rev 41650)
@@ -1,6 +1,7 @@
 <jsp:root
     version="2.0"
     xmlns:c="http://java.sun.com/jsp/jstl/core";
+    xmlns:fn="http://java.sun.com/jsp/jstl/functions";
     xmlns:jsp="http://java.sun.com/JSP/Page";
     xmlns:mm-sr="http://www.mmbase.org/tags/mm/searchrelate";
     xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0";
@@ -8,7 +9,7 @@
   <jsp:output omit-xml-declaration="true" />
   <jsp:directive.include file="parameters.jspf" />
   <mm:import externid="href" required="true" />
-  <mm:import externid="node" required="true" />
+  <mm:import externid="node" required="true"  vartype="integer"/>
   <mm:import externid="requestID" required="true" />
   <c:if test="${! empty parameters.config}">
     <mm:write  request="org.mmbase.searchrelate.config" 
value="${parameters.config}" />
@@ -20,7 +21,9 @@
         <c:choose>
           <c:when test="${! parameters.autosubmit or ! empty 
parameters.formtag}">
             <mm:form name="${parameters.formtag}">
-              <mm:node number="${node}" commitonclose="false">
+              <mm:log>RS: 
${sessionScope['org.mmbase.searchrelate.Submitter.resolutions']}</mm:log>
+              <mm:import 
id="resolvedNode">${sessionScope['org.mmbase.searchrelate.Submitter.resolutions'][node]}</mm:import>
+              <mm:node number="${empty resolvedNode ? node : resolvedNode}" 
commitonclose="false">
                 <mm:include debug="html"
                             page="${href}"
                             referids="rid">

Modified: 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/order.jspx
===================================================================
--- 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/order.jspx
  2010-03-29 03:31:30 UTC (rev 41649)
+++ 
mmbase/trunk/applications/searchrelate/src/main/webapp/mmbase/searchrelate/list/order.jspx
  2010-03-29 08:28:02 UTC (rev 41650)
@@ -34,7 +34,7 @@
           <mm:form name="${parameters.formtag}">
             <mm:write value="${requestScope['org.mmbase.transaction'].id}" 
jspvar="fn" vartype="string">
               <jsp:scriptlet>
-                Submitter submitter = Submitter.getInstance(fn);
+                Submitter submitter = Submitter.getInstance(fn, session);
                 submitter.setOrder(query, order);
               </jsp:scriptlet>
             </mm:write>

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to