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