Author: andre
Date: 2010-02-02 16:08:11 +0100 (Tue, 02 Feb 2010)
New Revision: 40803
Added:
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsourcescaches.fields.xml
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/components/streams.xml
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
Log:
working on recreating just one streamcache node MMB-1878, allmost there
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsources.functions.xml
2010-02-02 15:08:11 UTC (rev 40803)
@@ -5,10 +5,15 @@
http://www.mmbase.org/xmlns/builder.xsd"
xmlns:xi="http://www.w3.org/2001/XInclude"
>
- <function name="trigger">
+
+ <function name="triggerCaches">
<class>org.mmbase.streams.CreateCachesFunction</class>
</function>
+ <function name="triggerRecache">
+ <class>org.mmbase.streams.RecreateCacheFunction</class>
+ </function>
+
<function name="waitUntilRecognized">
<class>org.mmbase.streams.createcaches.WaitUntilRecognizedFunction</class>
</function>
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsourcescaches.fields.xml
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsourcescaches.fields.xml
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/builders/streams/streamsourcescaches.fields.xml
2010-02-02 15:08:11 UTC (rev 40803)
@@ -24,8 +24,8 @@
<field name="id">
<descriptions>
- <description xml:lang="en">Reference to the original stream</description>
- <description xml:lang="nl">Referentie naar de originel
stream</description>
+ <description xml:lang="en">Reference to the original this cache was
transcoded from.</description>
+ <description xml:lang="nl">Referentie naar het origineele waarvan deze
cache getranscodeerd is.</description>
</descriptions>
<gui>
<guiname xml:lang="en">ID</guiname>
@@ -39,9 +39,11 @@
</editor>
<datatype base="nodenumber" xmlns="http://www.mmbase.org/xmlns/datatypes">
<required value="true" enforce="never" />
- <enumeration enforce="never"> <!-- enforcing is very bad for performance
-->
+ <!-- <enumeration enforce="never"> --> <!-- enforcing is very bad for
performance -->
+<!--
<query type="mediasources"
xmlns="http://www.mmbase.org/xmlns/searchquery" />
</enumeration>
+ -->
</datatype>
</field>
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/components/streams.xml
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/components/streams.xml
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/config/components/streams.xml
2010-02-02 15:08:11 UTC (rev 40803)
@@ -45,6 +45,7 @@
<body jsp="admin.jspx">
<param name="trigger" />
<param name="interrupt" />
+ <param name="recache" />
<param name="page" type="java.lang.Integer" />
</body>
</block>
@@ -59,6 +60,7 @@
<body jsp="myfragments.jspx">
<param name="trigger" />
<param name="interrupt" />
+ <param name="recache" />
<param name="page" type="java.lang.Integer" />
</body>
</block>
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
2010-02-02 15:08:11 UTC (rev 40803)
@@ -42,12 +42,11 @@
private static final Logger LOG =
Logging.getLoggerInstance(CreateCachesFunction.class);
public CreateCachesFunction() {
- //super("createcaches");
- super("createcaches", new Parameter<Boolean>("retrigger_jobs",
Boolean.class, Boolean.FALSE));
+ super("createcaches");
}
- Processor getCacheCreator(final Field url) {
+ protected static Processor getCacheCreator(final Field url) {
CommitProcessor commitProcessor =
url.getDataType().getCommitProcessor();
if (commitProcessor instanceof ChainedCommitProcessor) {
ChainedCommitProcessor chain = (ChainedCommitProcessor)
commitProcessor;
Added:
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
(rev 0)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
2010-02-02 15:08:11 UTC (rev 40803)
@@ -0,0 +1,118 @@
+/*
+
+This file is part of the MMBase Streams application,
+which is part of MMBase - an open source content management system.
+ Copyright (C) 2009 André van Toly, Michiel Meeuwissen
+
+MMBase Streams is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+MMBase Streams is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with MMBase. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+package org.mmbase.streams;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.*;
+
+
+import org.mmbase.streams.createcaches.*;
+import org.mmbase.streams.createcaches.Processor;
+import org.mmbase.streams.transcoders.*;
+
+import org.mmbase.applications.media.MimeType;
+import org.mmbase.util.functions.*;
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.util.*;
+import org.mmbase.storage.search.FieldCompareConstraint;
+import org.mmbase.security.ActionRepository;
+import org.mmbase.datatypes.processors.*;
+import org.mmbase.util.logging.*;
+
+/**
+ * Triggers recreation of a certain streamsourcescaches belonging to this
streamsources node.
+ *
+ * @author Michiel Meeuwissen
+ * @author André van Toly
+ * @version $Id$
+ */
+
+public class RecreateCacheFunction extends NodeFunction<Boolean> {
+
+ private static final Logger LOG =
Logging.getLoggerInstance(RecreateCacheFunction.class);
+
+ // parameter definitions
+ public final static Parameter[] RECACHE_PARAMETERS = { new
Parameter("recache", org.mmbase.bridge.Node.class) };
+
+ public RecreateCacheFunction() {
+ super("recache", RECACHE_PARAMETERS);
+ }
+
+ @Override
+ protected Boolean getFunctionValue(final Node node, final Parameters
parameters) {
+ LOG.debug("params: " + parameters);
+ if (node.getNumber() > 0
+ &&
node.getCloud().may(ActionRepository.getInstance().get("streams",
"retrigger_jobs"), null)) {
+
+ Node recache = (Node) parameters.get("recache");
+ LOG.info("Recreating cache #" + recache.getNumber() + " for node
#" + node.getNumber());
+ final Field url = node.getNodeManager().getField("url");
+
+ String key = recache.getStringValue("key");
+ String mimetype = recache.getStringValue("mimetype");
+ Transcoder transcoder = null;
+ try {
+ transcoder = AbstractTranscoder.getInstance(key);
+ } catch (ClassNotFoundException cnf) {
+ LOG.error("Class not found, transcoder in key '" + key + "'
does not exist? - " + cnf);
+ return false;
+ } catch (InstantiationException ie) {
+ LOG.error("Exception while instantiating transcoder for key '"
+ key + "' - " + ie);
+ return false;
+ } catch (Exception e) {
+ LOG.error("Exception while trying to (re)transcode - " + e);
+ return false;
+ }
+
+ String in = null;
+ Node inNode = recache.getNodeValue("id");
+ if (inNode.getNumber() != node.getNumber()) {
+ in = "" + inNode.getNumber();
+ }
+ String id = "recache";
+
+ // JobDefinition def = new JobDefinition(id, in, label,
transcoder, mimeType, stage);
+ JobDefinition jd = new JobDefinition(id, in, null, transcoder, new
MimeType(mimetype), Stage.TRANSCODER);
+
+ Map<String, JobDefinition> jdlist = new LinkedHashMap<String,
JobDefinition>();
+ jdlist.put(id, jd);
+
+ {
+ final Processor cc = CreateCachesFunction.getCacheCreator(url);
+
+ if (cc != null) {
+ LOG.service("Calling " + cc);
+
cc.createCaches(node.getCloud().getNonTransactionalCloud(), node.getNumber(),
jdlist);
+
//cc.createSingleCache(node.getCloud().getNonTransactionalCloud(),
node.getNumber(), jd);
+ return true;
+ } else {
+ LOG.error("No CreateCacheProcessor in " + url);
+ return false;
+ }
+ }
+
+ } else {
+ return false;
+ }
+ }
+
+}
Property changes on:
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/RecreateCacheFunction.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
2010-02-02 15:08:11 UTC (rev 40803)
@@ -58,6 +58,7 @@
private Node mediaprovider;
private Node mediafragment;
final BufferedLogger logger;
+ private static Map<String, JobDefinition> jobdefs = new
LinkedHashMap<String, JobDefinition>();
private final Map<String, Result> lookup = new LinkedHashMap<String,
Result>();
private final List<Result> results = new ArrayList<Result>();
private final long number = lastJobNumber++;
@@ -74,16 +75,21 @@
final Processor processor;
public Job(Processor processor, Cloud cloud, ChainedLogger chain) {
+ this(processor, processor.list, cloud, chain);
+ }
+
+ public Job(Processor processor, Map<String, JobDefinition> list, Cloud
cloud, ChainedLogger chain) {
user = cloud.getUser().getIdentifier();
logger = new BufferedLogger();
logger.setLevel(Level.DEBUG);
logger.setMaxSize(100);
logger.setMaxAge(60000);
chain.addLogger(logger);
- for (Map.Entry<String, JobDefinition> dum : processor.list.entrySet())
{
+ for (Map.Entry<String, JobDefinition> dum : list.entrySet()) {
results.add(null);
}
this.processor = processor;
+ this.jobdefs = list;
}
/**
@@ -93,14 +99,14 @@
*/
protected void findResults() {
int i = -1;
- for (Map.Entry<String, JobDefinition> entry :
processor.list.entrySet()) {
+ for (Map.Entry<String, JobDefinition> entry : jobdefs.entrySet()) {
i++;
if (results.get(i) == null) {
JobDefinition jd = entry.getValue();
URI inURI;
Node inNode; // inNode (input stream) to be used
- if (jd.getInId() == null) {
+ if (jd.getInId() == null) { // using the original source node
String url = node.getStringValue("url");
if (url.length() < 0) LOG.error("No value for field url: "
+ url);
assert url.length() > 0;
@@ -123,8 +129,9 @@
inURI = f.toURI();
inNode = node;
- } else {
- if (! processor.list.containsKey(jd.getInId())) {
+
+ } else { // using a previously cached node
+ if (! jobdefs.containsKey(jd.getInId())) {
LOG.warn("Configuration error, no such job definition
with id '" + jd.getInId());
continue;
}
@@ -145,7 +152,8 @@
}
}
- // mimetype: skip when no match
+ // mimetype: skip when there is no match between current jd
and inNode
+ LOG.debug("mt jd : " + jd.getMimeType() + " mt inNode: " +
inNode.getStringValue("mimetype") );
if (! jd.getMimeType().matches(new
MimeType(inNode.getStringValue("mimetype")))) {
LOG.debug("SKIPPING " + jd);
results.set(i, new SkippedResult(jd, inURI));
@@ -156,11 +164,11 @@
}
assert inURI != null;
- // not a recognizer (it has a transcoder key)
- if (jd.transcoder.getKey() != null) {
+
+ if (jd.transcoder.getKey() != null) { // not a recognizer (it
has a transcoder key)
LOG.info(jd.getMimeType());
LOG.info("" + inNode);
- Node dest = getCacheNode(jd.transcoder.getKey()); //
gets node (and creates when yet not present)
+ Node dest = getCacheNode(inNode, jd.transcoder.getKey());
// gets node (and creates when yet not present)
if (dest == null) {
LOG.warn("Could not create cache node from " +
node.getNodeManager().getName() + " " + node.getNumber() + " for " +
jd.transcoder.getKey());
continue;
@@ -389,9 +397,9 @@
* see the builder property 'org.mmbase.streams.cachestype'. It first
looks if it already
* exists in the cloud or otherwise will create one.
*
- * @param src source node to create stream from
- * @param key representation of the way the stream was created from its
source, f.e. trancoding parameters
- * @return cached stream node
+ * @param src source node to create cache stream from, can be another
cache
+ * @param key representation of the way the stream was created from its
source, f.e. transcoding parameters
+ * @return cache stream node, in builder specified in
'org.mmbase.streams.cachestype'.
*/
protected Node getCacheNode(Node src, final String key) {
String ct =
src.getNodeManager().getProperty("org.mmbase.streams.cachestype");
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
2010-02-02 15:08:11 UTC (rev 40803)
@@ -8,11 +8,13 @@
xmlns:mm="http://www.mmbase.org/mmbase-taglib-2.0">
<jsp:output omit-xml-declaration="true" />
<mm:cloud rank="basic user" jspvar="cloud">
+
<h3>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.title)}</h3>
<p>${mm:string(requestScope['org.mmbase.framework.state'].renderer.block.description)}</p>
<mm:import from="request" externid="trigger" />
<mm:import from="request" externid="interrupt" vartype="integer" />
+ <mm:import from="request" externid="recache" />
<mm:import from="request" externid="page">0</mm:import>
<mm:import id="pagesize" vartype="integer">50</mm:import>
@@ -37,7 +39,6 @@
</table>
</mm:fieldlist>
-
<table summary="mediafragments">
<caption>Recent mediafragments</caption>
<mm:listnodescontainer type="${type}">
Modified:
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
===================================================================
---
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2010-02-02 14:28:53 UTC (rev 40802)
+++
mmbase/branches/MMBase-1_9/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2010-02-02 15:08:11 UTC (rev 40803)
@@ -28,24 +28,26 @@
</td>
<c:choose>
<c:when test="${_.main}">
- <td colspan="2">
+ <td />
+ <td>
<mm:function set="streams" name="getJob" referids="_n...@node">
- JOB: ${_.class}
+ JOB: ${_.class}<br />
</mm:function>
<mm:function set="streams" name="runningJobs">
JOB: ${_.class}
</mm:function>
+ </td><td>
<mm:node number="${_.source.number}">
<c:set var="triggervalue" value="${fragment}:${_node}" />
<c:choose>
<c:when test="${trigger eq triggervalue}">
<mm:log> CALLING TRIGGER FOR ${trigger}</mm:log>
- <mm:voidfunction name="trigger" />
+ <mm:voidfunction name="triggerCaches" />
<jsp:text>Triggered conversion</jsp:text>
</c:when>
<c:otherwise>
<mm:link referids="triggerva...@trigger">
- <a href="${_}">Trigger</a>
+ <a href="${_}">Trigger all</a>
</mm:link>
</c:otherwise>
</c:choose>
@@ -64,17 +66,44 @@
</td>
</c:when>
<c:otherwise>
- <mm:node number="${_.source.number}" notfound="skip">
+ <mm:node number="${_.source.number}" notfound="skip" id="cache">
<td>
+ <mm:hasfield name="label">
+ <mm:field name="label" /><br />
+ </mm:hasfield>
<mm:hasfield name="id">
<mm:field name="id" />
</mm:hasfield>
</td>
<td>
- <mm:hasfield name="id">
+ <mm:hasfield name="key">
<mm:field name="key" />
</mm:hasfield>
</td>
+
+ <td>
+
+ <mm:hasfield name="id">
+
+ <c:set var="recachevalue" value="${fragment}:${cache}" />
+ <c:choose>
+ <c:when test="${recache eq recachevalue}">
+ <mm:field name="id">
+ <mm:node number="$_">
+ <mm:booleanfunction name="triggerRecache"
referids="ca...@recache" />
+ </mm:node>
+ </mm:field>
+ </c:when>
+ <c:otherwise>
+ <mm:link referids="recacheva...@recache">
+ <a href="${_}">Retrigger cache</a>
+ </mm:link>
+ </c:otherwise>
+ </c:choose>
+
+ </mm:hasfield>
+
+ </td>
</mm:node>
</c:otherwise>
</c:choose>
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs