import java.util.Map;
import mir.log.LoggerWrapper;
-
+/**
+ * <p>A NodedProducer is the root of a tree of ProducerNodes.</p>
+ *
+ * <p>There used to be a time when there were Producers that weren't
+ * NodedProducers, however they have been phased out.</p>
+ */
public class NodedProducer implements Producer {
private ProducerNode rootNode;
private String verb;
import mir.log.LoggerWrapper;
-/** A producer is a task. producers are mostly used to generate pages
- * but occasionally, producers are used to do other stuff such as
- * pull rss feeds. The producers are configured through the
- * producers.xml file. Producers appear, for example, on the
- * admin->"Generate manually"->"advanced page": (Tasks)
+/**
+ * <p>A Producer is a set of tasks, scripted in xml. Producers allow
+ * mir installations to have their own actions that can be called for
+ * instance when a new article is posted. Originally producers were
+ * mostly used to generate pages, but they are used for a lot of
+ * other tasks such as pulling rss feeds for the global wire on
+ * indymedia.org. </p>
+ *
+ * <p>Producers can be easily added and configured through the
+ * producers.xml file.</p>
+ *
+ * <p>In the admin web interface, producers appear, for example, on
+ * the admin->"Generate manually"->"advanced page": (as Tasks)</p>
+ *
+ * <p>Architecture: a "poducer" tag in the producers.xml file defines
+ * a small program. This program (or script) may contain constructs
+ * such as if, loop, and variables... The program is parsed into a
+ * tree of ProducerNodes. The root of this tree is defined in a
+ * NodedProducer (which is the only class that currently implements
+ * the Producer interface). When the Producer is executed, the
+ * "produce" methods of each node are recursively called, effectively
+ * executing the program as it was scripted</p>
+ *
+ *
*/
public interface Producer {
/**
package mircoders.localizer;
+/**
+ * <p>Localizers provide a customization framework that allows
+ * different mir sites to behave differently. This is effectively used
+ * by various indymedia sites to customize things such open posting
+ * mechanisms, open posting validation, data model enhancements, etc.
+ * </p>
+ *
+ * <p>The <code>MirLocalizer</code> interface defines the centralized
+ * localizer, that may be accessed via the global
+ * <function>MirGlobal.localizer()</function> function. The central
+ * localizer provides accessors to domain specific localizers (like
+ * <code>MirBasicOpenPostingLocalizer</code>). </p>
+ *
+ * <p> Default behavior is provided by the
+ * <code>MirBasicLocalizer</code> and it's associated classes. These
+ * classes can be extended to override default behavior.</p>
+ *
+ */
public interface MirLocalizer {
public MirProducerLocalizer producers() throws MirLocalizerFailure, MirLocalizerExc;
public MirAdminInterfaceLocalizer adminInterface() throws MirLocalizerFailure, MirLocalizerExc;
import mircoders.entity.EntityContent;
import mircoders.search.IndexUtil;
+/**
+ * UnIndexingProducerNode is one of the 2 producer nodes that works on
+ * the search index db. There's IndexingProducerNode and
+ * UnIndexingProducerNode. The first one adds/updates an article to
+ * the search index the second one removes an article
+ */
public class UnIndexingProducerNode implements ProducerNode {
private String contentKey;
private String indexPath;