Index: src/plugin/clustering-carrot2/lib/carrot2-filter-lingo.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/Jama-1.0.1-patched.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/carrot2-util-common.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/commons-pool-1.1.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/carrot2-snowball-stemmers.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/carrot2-local-core.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/commons-collections-3.1-patched.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/lib/carrot2-util-tokenizer.jar
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/LocalNutchInputComponent.java
===================================================================
--- src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/LocalNutchInputComponent.java	(revision 472091)
+++ src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/LocalNutchInputComponent.java	(working copy)
@@ -16,25 +16,18 @@
 
 package org.apache.nutch.clustering.carrot2;
 
-import java.io.StringReader;
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.Set;
 import java.util.Map;
+import java.util.Set;
 
-import org.apache.xerces.parsers.AbstractSAXParser;
-import org.cyberneko.html.HTMLConfiguration;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
 import org.apache.nutch.searcher.HitDetails;
+import org.carrot2.core.LocalInputComponentBase;
+import org.carrot2.core.ProcessingException;
+import org.carrot2.core.RequestContext;
+import org.carrot2.core.clustering.RawDocumentsConsumer;
+import org.carrot2.core.clustering.RawDocumentsProducer;
 
-import com.dawidweiss.carrot.core.local.LocalInputComponentBase;
-import com.dawidweiss.carrot.core.local.ProcessingException;
-import com.dawidweiss.carrot.core.local.RequestContext;
-import com.dawidweiss.carrot.core.local.clustering.*;
-
 /**
  * A local input component that ignores the query passed from the
  * controller and instead looks for data stored in the request context.
Index: src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/NutchDocument.java
===================================================================
--- src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/NutchDocument.java	(revision 472091)
+++ src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/NutchDocument.java	(working copy)
@@ -17,10 +17,9 @@
 package org.apache.nutch.clustering.carrot2;
 
 import org.apache.nutch.searcher.HitDetails;
+import org.carrot2.core.clustering.RawDocument;
+import org.carrot2.core.clustering.RawDocumentBase;
 
-import com.dawidweiss.carrot.core.local.clustering.RawDocument;
-import com.dawidweiss.carrot.core.local.clustering.RawDocumentBase;
-
 /**
  * An adapter class that implements {@link RawDocument} required for Carrot2.  
  *
@@ -39,6 +38,7 @@
    * a <code>details</code> hit details.
    */
   public NutchDocument(int id, HitDetails details, String summary, String defaultLanguage) {
+    super(details.getValue("url"), details.getValue("title"), summary);
     super.setProperty(RawDocument.PROPERTY_URL, details.getValue("url"));
     super.setProperty(RawDocument.PROPERTY_SNIPPET, summary);
 
@@ -60,7 +60,7 @@
     lang = lang.toLowerCase();
     super.setProperty(RawDocument.PROPERTY_LANGUAGE, lang);
 
-    this.id = new Integer(id);
+    this.id = Integer.valueOf(id);
   }
 
   /*
Index: src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/Clusterer.java
===================================================================
--- src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/Clusterer.java	(revision 472091)
+++ src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/Clusterer.java	(working copy)
@@ -16,25 +16,35 @@
 
 package org.apache.nutch.clustering.carrot2;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-
 import org.apache.hadoop.conf.Configurable;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.nutch.clustering.HitsCluster;
 import org.apache.nutch.clustering.OnlineClusterer;
 import org.apache.nutch.searcher.HitDetails;
+import org.carrot2.core.DuplicatedKeyException;
+import org.carrot2.core.LocalComponent;
+import org.carrot2.core.LocalComponentFactory;
+import org.carrot2.core.LocalController;
+import org.carrot2.core.LocalControllerBase;
+import org.carrot2.core.LocalProcessBase;
+import org.carrot2.core.MissingProcessException;
+import org.carrot2.core.ProcessingResult;
+import org.carrot2.core.clustering.RawCluster;
+import org.carrot2.core.impl.ArrayOutputComponent;
+import org.carrot2.core.linguistic.Language;
+import org.carrot2.filter.lingo.local.LingoLocalFilterComponent;
+import org.carrot2.util.tokenizer.languages.AllKnownLanguages;
 
-import com.dawidweiss.carrot.core.local.*;
-import com.dawidweiss.carrot.core.local.clustering.RawCluster;
-import com.dawidweiss.carrot.core.local.impl.ClustersConsumerOutputComponent;
-import com.dawidweiss.carrot.core.local.linguistic.Language;
-import com.dawidweiss.carrot.util.tokenizer.languages.AllKnownLanguages;
-import com.stachoodev.carrot.filter.lingo.local.LingoLocalFilterComponent;
 
-
 /**
  * An plugin providing an implementation of {@link OnlineClusterer} 
  * extension using clustering components of the Carrot2 project
@@ -95,15 +105,20 @@
   }
 
   private synchronized void initialize() {
-    controller = new LocalControllerBase();
-    addComponentFactories();
-    addProcesses();
+    try {
+      controller = new LocalControllerBase();
+      addComponentFactories();
+      addProcesses();
+    } catch (DuplicatedKeyException e) {
+      controller = null;
+    }
   }
 
-  /** Adds the required component factories to a local Carrot2 controller. */
-  private void addComponentFactories() {
+  /** Adds the required component factories to a local Carrot2 controller. 
+   * @throws DuplicatedKeyException */
+  private void addComponentFactories() throws DuplicatedKeyException {
     //  *   <input  component-key="input-localnutch" />
-    LocalComponentFactory nutchInputFactory = new LocalComponentFactoryBase() {
+    LocalComponentFactory nutchInputFactory = new LocalComponentFactory() {
       public LocalComponent getInstance() {
         return new LocalNutchInputComponent(defaultLanguage);
       }
@@ -111,7 +126,7 @@
     controller.addLocalComponentFactory("input-localnutch", nutchInputFactory);
 
     // *   <filter component-key="filter-lingo" />
-    LocalComponentFactory lingoFactory = new LocalComponentFactoryBase() {
+    LocalComponentFactory lingoFactory = new LocalComponentFactory() {
       public LocalComponent getInstance() {
         HashMap defaults = new HashMap();
 
@@ -150,9 +165,9 @@
     controller.addLocalComponentFactory("filter-lingo", lingoFactory);
 
     // *   <output component-key="output-clustersConsumer" />
-    LocalComponentFactory clusterConsumerOutputFactory = new LocalComponentFactoryBase() {
+    LocalComponentFactory clusterConsumerOutputFactory = new LocalComponentFactory() {
       public LocalComponent getInstance() {
-        return new ClustersConsumerOutputComponent();
+        return new ArrayOutputComponent();
       }
     };
     controller.addLocalComponentFactory("output-clustersConsumer", 
@@ -192,8 +207,8 @@
       final ProcessingResult result = 
         controller.query(PROCESS_ID, "no-query", requestParams);
 
-      final ClustersConsumerOutputComponent.Result output =
-        (ClustersConsumerOutputComponent.Result) result.getQueryResult();
+      final ArrayOutputComponent.Result output =
+        (ArrayOutputComponent.Result) result.getQueryResult();
 
       final List outputClusters = output.clusters;
       final HitsCluster [] clusters = new HitsCluster[ outputClusters.size() ];
Index: src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/HitsClusterAdapter.java
===================================================================
--- src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/HitsClusterAdapter.java	(revision 472091)
+++ src/plugin/clustering-carrot2/src/java/org/apache/nutch/clustering/carrot2/HitsClusterAdapter.java	(working copy)
@@ -19,11 +19,10 @@
 import java.util.Iterator;
 import java.util.List;
 
-import com.dawidweiss.carrot.core.local.clustering.RawCluster;
-import com.dawidweiss.carrot.core.local.clustering.RawDocument;
-
 import org.apache.nutch.clustering.HitsCluster;
 import org.apache.nutch.searcher.HitDetails;
+import org.carrot2.core.clustering.RawCluster;
+import org.carrot2.core.clustering.RawDocument;
 
 /**
  * An adapter of Carrot2's {@link RawCluster} interface to
Index: src/plugin/clustering-carrot2/plugin.xml
===================================================================
--- src/plugin/clustering-carrot2/plugin.xml	(revision 472091)
+++ src/plugin/clustering-carrot2/plugin.xml	(working copy)
@@ -13,13 +13,17 @@
 
       <library name="carrot2-filter-lingo.jar"/>
       <library name="carrot2-local-core.jar"/>
-      <library name="carrot2-snowball-stemmers.jar"/>
+      <library name="carrot2-snowball-stemmers.jar"/>
+      <library name="carrot2-stemmer-stempelator.jar"/>
       <library name="carrot2-util-common.jar"/>
       <library name="carrot2-util-tokenizer.jar"/>
-
-      <library name="commons-collections-3.1-patched.jar"/>
-      <library name="commons-pool-1.1.jar"/>
-      <library name="Jama-1.0.1-patched.jar"/>
+
+      <library name="stempel-1.0-dw.jar"/>
+      <library name="stempelator-1.0.jar"/>
+
+      <library name="commons-collections-3.2.jar"/>
+      <library name="commons-pool-1.3.jar"/>
+      <library name="Jama-1.0.2.jar"/>
       <library name="violinstrings-1.0.2.jar"/>
    </runtime>
 
