http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java
 
b/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java
deleted file mode 100644
index 0d9e2e0..0000000
--- 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrIndexWriter.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.indexwriter.solr;
-
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.nutch.indexer.IndexWriter;
-import org.apache.nutch.indexer.IndexerMapReduce;
-import org.apache.nutch.indexer.NutchDocument;
-import org.apache.nutch.indexer.NutchField;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
-import org.apache.solr.common.SolrInputDocument;
-import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.DateUtil;
-import org.apache.solr.common.util.NamedList;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.nutch.util.HadoopFSUtil;
-import org.apache.hadoop.util.StringUtils;
-import org.apache.nutch.util.NutchConfiguration;
-
-// WORK AROUND FOR NOT REMOVING URL ENCODED URLS!!!
-import java.net.URLDecoder;
-
-public class SolrIndexWriter implements IndexWriter {
-
-  public static final Logger LOG = LoggerFactory
-      .getLogger(SolrIndexWriter.class);
-
-  private List<SolrClient> solrClients;
-  private SolrMappingReader solrMapping;
-  private ModifiableSolrParams params;
-
-  private Configuration config;
-
-  private final List<SolrInputDocument> inputDocs = new 
ArrayList<SolrInputDocument>();
-
-  private final List<SolrInputDocument> updateDocs = new 
ArrayList<SolrInputDocument>();
-    
-  private final List<String> deleteIds = new ArrayList<String>();
-
-  private int batchSize;
-  private int numDeletes = 0;
-  private int totalAdds = 0;
-  private int totalDeletes = 0;
-  private int totalUpdates = 0;
-  private boolean delete = false;
-
-  public void open(JobConf job, String name) throws IOException {
-    solrClients = SolrUtils.getSolrClients(job);
-    init(solrClients, job);
-  }
-
-  // package protected for tests
-  void init(List<SolrClient> solrClients, JobConf job) throws IOException {
-    batchSize = job.getInt(SolrConstants.COMMIT_SIZE, 1000);
-    solrMapping = SolrMappingReader.getInstance(job);
-    delete = job.getBoolean(IndexerMapReduce.INDEXER_DELETE, false);
-    // parse optional params
-    params = new ModifiableSolrParams();
-    String paramString = job.get(IndexerMapReduce.INDEXER_PARAMS);
-    if (paramString != null) {
-      String[] values = paramString.split("&");
-      for (String v : values) {
-        String[] kv = v.split("=");
-        if (kv.length < 2) {
-          continue;
-        }
-        params.add(kv[0], kv[1]);
-      }
-    }
-  }
-
-  public void delete(String key) throws IOException {
-    try {
-      key = URLDecoder.decode(key, "UTF8");
-    } catch (UnsupportedEncodingException e) {
-      LOG.error("Error decoding: " + key);
-      throw new IOException("UnsupportedEncodingException for " + key);
-    } catch (IllegalArgumentException e) {
-      LOG.warn("Could not decode: " + key + ", it probably wasn't encoded in 
the first place..");
-    }
-    
-    // escape solr hash separator
-    key = key.replaceAll("!", "\\!");
-    
-    if (delete) {
-      deleteIds.add(key);
-      totalDeletes++;
-    }
-    
-    if (deleteIds.size() >= batchSize) {
-      push();
-    }
-
-  }
-
-  public void deleteByQuery(String query) throws IOException {
-    try {
-      LOG.info("SolrWriter: deleting " + query);
-      for (SolrClient solrClient : solrClients) {
-        solrClient.deleteByQuery(query);
-      }
-    } catch (final SolrServerException e) {
-      LOG.error("Error deleting: " + deleteIds);
-      throw makeIOException(e);
-    }
-  }
-
-  @Override
-  public void update(NutchDocument doc) throws IOException {
-    write(doc);
-  }
-
-  public void write(NutchDocument doc) throws IOException {
-    final SolrInputDocument inputDoc = new SolrInputDocument();
-
-    for (final Entry<String, NutchField> e : doc) {
-      for (final Object val : e.getValue().getValues()) {
-        // normalise the string representation for a Date
-        Object val2 = val;
-
-        if (val instanceof Date) {
-          val2 = DateUtil.getThreadLocalDateFormat().format(val);
-        }
-
-        if (e.getKey().equals("content") || e.getKey().equals("title")) {
-          val2 = SolrUtils.stripNonCharCodepoints((String) val);
-        }
-
-        inputDoc.addField(solrMapping.mapKey(e.getKey()), val2, e.getValue()
-            .getWeight());
-        String sCopy = solrMapping.mapCopyKey(e.getKey());
-        if (sCopy != e.getKey()) {
-          inputDoc.addField(sCopy, val);
-        }
-      }
-    }
-
-    inputDoc.setDocumentBoost(doc.getWeight());
-    inputDocs.add(inputDoc);
-    totalAdds++;
-
-    if (inputDocs.size() + numDeletes >= batchSize) {
-      push();
-    }
-  }
-
-  public void close() throws IOException {
-    commit();
-
-    for (SolrClient solrClient : solrClients) {
-      solrClient.close();
-    }
-  }
-
-  @Override
-  public void commit() throws IOException {
-    push();
-    try {
-      for (SolrClient solrClient : solrClients) {
-        solrClient.commit();
-      }
-    } catch (final SolrServerException e) {
-      LOG.error("Failed to commit solr connection: " + e.getMessage()); // 
FIXME
-    }
-  }
-    
-  public void push() throws IOException {
-    if (inputDocs.size() > 0) {
-      try {
-        LOG.info("Indexing " + Integer.toString(inputDocs.size())
-            + "/" + Integer.toString(totalAdds) + " documents");
-        LOG.info("Deleting " + Integer.toString(numDeletes) + " documents");
-        numDeletes = 0;
-        UpdateRequest req = new UpdateRequest();
-        req.add(inputDocs);
-        req.setAction(AbstractUpdateRequest.ACTION.OPTIMIZE, false, false);
-        req.setParams(params);
-        for (SolrClient solrClient : solrClients) {
-          NamedList res = solrClient.request(req);
-        }
-      } catch (final SolrServerException e) {
-        throw makeIOException(e);
-      }
-      inputDocs.clear();
-    }
-
-    if (deleteIds.size() > 0) {
-      try {
-        LOG.info("SolrIndexer: deleting " + Integer.toString(deleteIds.size()) 
-            + "/" + Integer.toString(totalDeletes) + " documents");
-        for (SolrClient solrClient : solrClients) {
-          solrClient.deleteById(deleteIds);
-        }
-      } catch (final SolrServerException e) {
-        LOG.error("Error deleting: " + deleteIds);
-        throw makeIOException(e);
-      }
-      deleteIds.clear();
-    }
-  }
-
-  public static IOException makeIOException(SolrServerException e) {
-    final IOException ioe = new IOException();
-    ioe.initCause(e);
-    return ioe;
-  }
-
-  @Override
-  public Configuration getConf() {
-    return config;
-  }
-
-  @Override
-  public void setConf(Configuration conf) {
-    config = conf;
-    String serverURL = conf.get(SolrConstants.SERVER_URL);
-    String zkHosts = conf.get(SolrConstants.ZOOKEEPER_HOSTS);
-    if (serverURL == null && zkHosts == null) {
-      String message = "Missing SOLR URL and Zookeeper URL. Either on should 
be set via -D "
-          + SolrConstants.SERVER_URL + " or -D " + 
SolrConstants.ZOOKEEPER_HOSTS;
-      message += "\n" + describe();
-      LOG.error(message);
-      throw new RuntimeException(message);
-    }
-  }
-
-  public String describe() {
-    StringBuffer sb = new StringBuffer("SOLRIndexWriter\n");
-    sb.append("\t").append(SolrConstants.SERVER_URL)
-        .append(" : URL of the SOLR instance\n");
-    sb.append("\t").append(SolrConstants.ZOOKEEPER_HOSTS)
-        .append(" : URL of the Zookeeper quorum\n");
-    sb.append("\t").append(SolrConstants.COMMIT_SIZE)
-        .append(" : buffer size when sending to SOLR (default 1000)\n");
-    sb.append("\t")
-        .append(SolrConstants.MAPPING_FILE)
-        .append(
-            " : name of the mapping file for fields (default 
solrindex-mapping.xml)\n");
-    sb.append("\t").append(SolrConstants.USE_AUTH)
-        .append(" : use authentication (default false)\n");
-    sb.append("\t").append(SolrConstants.USERNAME)
-        .append(" : username for authentication\n");
-    sb.append("\t").append(SolrConstants.PASSWORD)
-        .append(" : password for authentication\n");
-    return sb.toString();
-  }
-}

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrMappingReader.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrMappingReader.java
 
b/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrMappingReader.java
deleted file mode 100644
index 19ffa6f..0000000
--- 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrMappingReader.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.indexwriter.solr;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.nutch.util.ObjectCache;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-
-public class SolrMappingReader {
-  public static Logger LOG = LoggerFactory.getLogger(SolrMappingReader.class);
-
-  private Configuration conf;
-
-  private Map<String, String> keyMap = new HashMap<String, String>();
-  private Map<String, String> copyMap = new HashMap<String, String>();
-  private String uniqueKey = "id";
-
-  public static synchronized SolrMappingReader getInstance(Configuration conf) 
{
-    ObjectCache cache = ObjectCache.get(conf);
-    SolrMappingReader instance = (SolrMappingReader) cache
-        .getObject(SolrMappingReader.class.getName());
-    if (instance == null) {
-      instance = new SolrMappingReader(conf);
-      cache.setObject(SolrMappingReader.class.getName(), instance);
-    }
-    return instance;
-  }
-
-  protected SolrMappingReader(Configuration conf) {
-    this.conf = conf;
-    parseMapping();
-  }
-
-  private void parseMapping() {
-    InputStream ssInputStream = null;
-    ssInputStream = conf.getConfResourceAsInputStream(conf.get(
-        SolrConstants.MAPPING_FILE, "solrindex-mapping.xml"));
-
-    InputSource inputSource = new InputSource(ssInputStream);
-    try {
-      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-      DocumentBuilder builder = factory.newDocumentBuilder();
-      Document document = builder.parse(inputSource);
-      Element rootElement = document.getDocumentElement();
-      NodeList fieldList = rootElement.getElementsByTagName("field");
-      if (fieldList.getLength() > 0) {
-        for (int i = 0; i < fieldList.getLength(); i++) {
-          Element element = (Element) fieldList.item(i);
-          LOG.info("source: " + element.getAttribute("source") + " dest: "
-              + element.getAttribute("dest"));
-          keyMap.put(element.getAttribute("source"),
-              element.getAttribute("dest"));
-        }
-      }
-      NodeList copyFieldList = rootElement.getElementsByTagName("copyField");
-      if (copyFieldList.getLength() > 0) {
-        for (int i = 0; i < copyFieldList.getLength(); i++) {
-          Element element = (Element) copyFieldList.item(i);
-          LOG.info("source: " + element.getAttribute("source") + " dest: "
-              + element.getAttribute("dest"));
-          copyMap.put(element.getAttribute("source"),
-              element.getAttribute("dest"));
-        }
-      }
-      NodeList uniqueKeyItem = rootElement.getElementsByTagName("uniqueKey");
-      if (uniqueKeyItem.getLength() > 1) {
-        LOG.warn("More than one unique key definitions found in solr index 
mapping, using default 'id'");
-        uniqueKey = "id";
-      } else if (uniqueKeyItem.getLength() == 0) {
-        LOG.warn("No unique key definition found in solr index mapping using, 
default 'id'");
-      } else {
-        uniqueKey = uniqueKeyItem.item(0).getFirstChild().getNodeValue();
-      }
-    } catch (MalformedURLException e) {
-      LOG.warn(e.toString());
-    } catch (SAXException e) {
-      LOG.warn(e.toString());
-    } catch (IOException e) {
-      LOG.warn(e.toString());
-    } catch (ParserConfigurationException e) {
-      LOG.warn(e.toString());
-    }
-  }
-
-  public Map<String, String> getKeyMap() {
-    return keyMap;
-  }
-
-  public Map<String, String> getCopyMap() {
-    return copyMap;
-  }
-
-  public String getUniqueKey() {
-    return uniqueKey;
-  }
-
-  public String hasCopy(String key) {
-    if (copyMap.containsKey(key)) {
-      key = (String) copyMap.get(key);
-    }
-    return key;
-  }
-
-  public String mapKey(String key) throws IOException {
-    if (keyMap.containsKey(key)) {
-      key = (String) keyMap.get(key);
-    }
-    return key;
-  }
-
-  public String mapCopyKey(String key) throws IOException {
-    if (copyMap.containsKey(key)) {
-      key = (String) copyMap.get(key);
-    }
-    return key;
-  }
-}

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java
 
b/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java
deleted file mode 100644
index eec0080..0000000
--- 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/SolrUtils.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.indexwriter.solr;
-
-
-import java.util.ArrayList;
-import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.hadoop.mapred.JobConf;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
-
-import java.net.MalformedURLException;
-
-public class SolrUtils {
-
-  public static Logger LOG = LoggerFactory.getLogger(SolrUtils.class);
-
-  /**
-   *
-   *
-   * @param JobConf
-   * @return SolrClient
-   */
-  public static ArrayList<SolrClient> getSolrClients(JobConf job) throws 
MalformedURLException {
-    String[] urls = job.getStrings(SolrConstants.SERVER_URL);
-    String[] zkHostString = job.getStrings(SolrConstants.ZOOKEEPER_HOSTS);
-    ArrayList<SolrClient> solrClients = new ArrayList<SolrClient>();
-    
-    if (zkHostString != null && zkHostString.length > 0) {
-      for (int i = 0; i < zkHostString.length; i++) {
-        CloudSolrClient sc = getCloudSolrClient(zkHostString[i]);
-        sc.setDefaultCollection(job.get(SolrConstants.COLLECTION));
-        solrClients.add(sc);
-      }
-    } else {
-      for (int i = 0; i < urls.length; i++) {
-        SolrClient sc = new HttpSolrClient(urls[i]);
-        solrClients.add(sc);
-      }
-    }
-
-    return solrClients;
-  }
-
-  public static CloudSolrClient getCloudSolrClient(String url) throws 
MalformedURLException {
-    CloudSolrClient sc = new CloudSolrClient(url.replace('|', ','));
-    sc.setParallelUpdates(true);
-    sc.connect();
-    return sc;
-  }
-
-  public static SolrClient getHttpSolrClient(String url) throws 
MalformedURLException {
-    SolrClient sc =new HttpSolrClient(url);
-    return sc;
-  }
-  
-  public static String stripNonCharCodepoints(String input) {
-    StringBuilder retval = new StringBuilder();
-    char ch;
-
-    for (int i = 0; i < input.length(); i++) {
-      ch = input.charAt(i);
-
-      // Strip all non-characters
-      // 
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Noncharacter_Code_Point=True:]
-      // and non-printable control characters except tabulator, new line and
-      // carriage return
-      if (ch % 0x10000 != 0xffff && // 0xffff - 0x10ffff range step 0x10000
-          ch % 0x10000 != 0xfffe && // 0xfffe - 0x10fffe range
-          (ch <= 0xfdd0 || ch >= 0xfdef) && // 0xfdd0 - 0xfdef
-          (ch > 0x1F || ch == 0x9 || ch == 0xa || ch == 0xd)) {
-
-        retval.append(ch);
-      }
-    }
-
-    return retval.toString();
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/package-info.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/package-info.java
 
b/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/package-info.java
deleted file mode 100644
index af5f50c..0000000
--- 
a/src/plugin/indexer-solr/src/java/org/apache/nutch/indexwriter/solr/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Index writer plugin for <a href="http://lucene.apache.org/solr/";>Apache 
Solr</a>.
- */
-package org.apache.nutch.indexwriter.solr;
-

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/build.xml
----------------------------------------------------------------------
diff --git a/src/plugin/language-identifier/build.xml 
b/src/plugin/language-identifier/build.xml
deleted file mode 100644
index 668075e..0000000
--- a/src/plugin/language-identifier/build.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<project name="language-identifier" default="jar-core">
-
-  <import file="../build-plugin.xml"/>
-
-  <target name="init-plugin">
-    <echo>Copying language profiles</echo>
-    <copy todir="${build.classes}">
-      <fileset dir="${src.dir}" includes="**/*.ngp, **/*.properties"/>
-    </copy>
-    <echo>Copying test files</echo>
-    <copy todir="${build.test}">
-      <fileset dir="${src.test}" includes="**/*.test, **/*.txt"/>
-    </copy>
-  </target>
-
-  <!-- Deploy Unit test dependencies -->
-  <target name="deps-test">
-    <ant target="deploy" inheritall="false" dir="../nutch-extensionpoints"/>
-  </target>
-
-</project>

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/ivy.xml
----------------------------------------------------------------------
diff --git a/src/plugin/language-identifier/ivy.xml 
b/src/plugin/language-identifier/ivy.xml
deleted file mode 100644
index 1a86d68..0000000
--- a/src/plugin/language-identifier/ivy.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" ?>
-
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<ivy-module version="1.0">
-  <info organisation="org.apache.nutch" module="${ant.project.name}">
-    <license name="Apache 2.0"/>
-    <ivyauthor name="Apache Nutch Team" url="http://nutch.apache.org"/>
-    <description>
-        Apache Nutch
-    </description>
-  </info>
-
-  <configurations>
-    <include file="../../..//ivy/ivy-configurations.xml"/>
-  </configurations>
-
-  <publications>
-    <!--get the artifact from our module name-->
-    <artifact conf="master"/>
-  </publications>
-
-  <dependencies>
-  </dependencies>
-  
-</ivy-module>

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/plugin.xml
----------------------------------------------------------------------
diff --git a/src/plugin/language-identifier/plugin.xml 
b/src/plugin/language-identifier/plugin.xml
deleted file mode 100644
index dcf1209..0000000
--- a/src/plugin/language-identifier/plugin.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<plugin
-   id="language-identifier"
-   name="Language Identification Parser/Filter"
-   version="1.0.0"
-   provider-name="nutch.org">
-
-    <runtime>
-      <library name="language-identifier.jar">
-         <export name="*"/>
-      </library>
-   </runtime>
-
-   <requires>
-      <import plugin="nutch-extensionpoints"/>
-   </requires>
-
-   <extension id="org.apache.nutch.analysis.lang.LanguageParser"
-              name="Nutch language Parser"
-              point="org.apache.nutch.parse.HtmlParseFilter">
-      <implementation id="LanguageParser"
-                      
class="org.apache.nutch.analysis.lang.HTMLLanguageParser"/>
-   </extension>
-
-   <extension id="org.apache.nutch.analysis.lang"
-              name="Nutch language identifier filter"
-              point="org.apache.nutch.indexer.IndexingFilter">
-      <implementation id="LanguageIdentifier"
-                      
class="org.apache.nutch.analysis.lang.LanguageIndexingFilter"/>
-   </extension>
-
-</plugin>
-

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/HTMLLanguageParser.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/HTMLLanguageParser.java
 
b/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/HTMLLanguageParser.java
deleted file mode 100644
index cb8f8c1..0000000
--- 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/HTMLLanguageParser.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.analysis.lang;
-
-// JDK imports
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.nutch.metadata.Metadata;
-import org.apache.nutch.net.protocols.Response;
-import org.apache.nutch.parse.HTMLMetaTags;
-import org.apache.nutch.parse.HtmlParseFilter;
-import org.apache.nutch.parse.Parse;
-import org.apache.nutch.parse.ParseResult;
-import org.apache.nutch.protocol.Content;
-import org.apache.nutch.util.NodeWalker;
-import org.apache.tika.language.LanguageIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.DocumentFragment;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-public class HTMLLanguageParser implements HtmlParseFilter {
-
-  public static final Logger LOG = LoggerFactory
-      .getLogger(HTMLLanguageParser.class);
-
-  private int detect = -1, identify = -1;
-
-  private int contentMaxlength = -1;
-
-  private boolean onlyCertain = false;
-
-  /* A static Map of ISO-639 language codes */
-  private static Map<String, String> LANGUAGES_MAP = new HashMap<String, 
String>();
-  static {
-    try {
-      Properties p = new Properties();
-      p.load(HTMLLanguageParser.class
-          .getResourceAsStream("langmappings.properties"));
-      Enumeration<?> keys = p.keys();
-      while (keys.hasMoreElements()) {
-        String key = (String) keys.nextElement();
-        String[] values = p.getProperty(key).split(",", -1);
-        LANGUAGES_MAP.put(key, key);
-        for (int i = 0; i < values.length; i++) {
-          LANGUAGES_MAP.put(values[i].trim().toLowerCase(), key);
-        }
-      }
-    } catch (Exception e) {
-      if (LOG.isErrorEnabled()) {
-        LOG.error(e.toString());
-      }
-    }
-  }
-
-  private Configuration conf;
-
-  /**
-   * Scan the HTML document looking at possible indications of content 
language<br>
-   * <li>1. html lang attribute
-   * (http://www.w3.org/TR/REC-html40/struct/dirlang.html#h-8.1) <li>2. meta
-   * dc.language
-   * (http://dublincore.org/documents/2000/07/16/usageguide/qualified
-   * -html.shtml#language) <li>3. meta http-equiv (content-language)
-   * (http://www.w3.org/TR/REC-html40/struct/global.html#h-7.4.4.2) <br>
-   */
-  public ParseResult filter(Content content, ParseResult parseResult,
-      HTMLMetaTags metaTags, DocumentFragment doc) {
-    String lang = null;
-
-    Parse parse = parseResult.get(content.getUrl());
-
-    if (detect >= 0 && identify < 0) {
-      lang = detectLanguage(parse, doc);
-    } else if (detect < 0 && identify >= 0) {
-      lang = identifyLanguage(parse);
-    } else if (detect < identify) {
-      lang = detectLanguage(parse, doc);
-      if (lang == null) {
-        lang = identifyLanguage(parse);
-      }
-    } else if (identify < detect) {
-      lang = identifyLanguage(parse);
-      if (lang == null) {
-        lang = detectLanguage(parse, doc);
-      }
-    } else {
-      LOG.warn("No configuration for language extraction policy is provided");
-      return parseResult;
-    }
-
-    if (lang != null) {
-      parse.getData().getParseMeta().set(Metadata.LANGUAGE, lang);
-      return parseResult;
-    }
-
-    return parseResult;
-  }
-
-  /** Try to find the document's language from page headers and metadata */
-  private String detectLanguage(Parse page, DocumentFragment doc) {
-    String lang = getLanguageFromMetadata(page.getData().getParseMeta());
-    if (lang == null) {
-      LanguageParser parser = new LanguageParser(doc);
-      lang = parser.getLanguage();
-    }
-
-    if (lang != null) {
-      return lang;
-    }
-
-    lang = page.getData().getContentMeta().get(Response.CONTENT_LANGUAGE);
-
-    return lang;
-  }
-
-  /** Use statistical language identification to extract page language */
-  private String identifyLanguage(Parse parse) {
-    StringBuilder text = new StringBuilder();
-    if (parse == null)
-      return null;
-
-    String title = parse.getData().getTitle();
-    if (title != null) {
-      text.append(title.toString());
-    }
-
-    String content = parse.getText();
-    if (content != null) {
-      text.append(" ").append(content.toString());
-    }
-
-    // trim content?
-    String titleandcontent = text.toString();
-
-    if (this.contentMaxlength != -1
-        && titleandcontent.length() > this.contentMaxlength)
-      titleandcontent = titleandcontent.substring(0, contentMaxlength);
-
-    LanguageIdentifier identifier = new LanguageIdentifier(titleandcontent);
-
-    if (onlyCertain) {
-      if (identifier.isReasonablyCertain())
-        return identifier.getLanguage();
-      else
-        return null;
-    }
-    return identifier.getLanguage();
-  }
-
-  // Check in the metadata whether the language has already been stored there
-  // by Tika
-  private static String getLanguageFromMetadata(Metadata meta) {
-    if (meta == null)
-      return null;
-    // dublin core
-    String lang = meta.get("dc.language");
-    if (lang != null)
-      return lang;
-    // meta content-language
-    lang = meta.get("content-language");
-    if (lang != null)
-      return lang;
-    // lang attribute
-    return meta.get("lang");
-  }
-
-  static class LanguageParser {
-
-    private String dublinCore = null;
-    private String htmlAttribute = null;
-    private String httpEquiv = null;
-    private String language = null;
-
-    LanguageParser(Node node) {
-      parse(node);
-      if (htmlAttribute != null) {
-        language = htmlAttribute;
-      } else if (dublinCore != null) {
-        language = dublinCore;
-      } else {
-        language = httpEquiv;
-      }
-    }
-
-    String getLanguage() {
-      return language;
-    }
-
-    void parse(Node node) {
-
-      NodeWalker walker = new NodeWalker(node);
-      while (walker.hasNext()) {
-
-        Node currentNode = walker.nextNode();
-        String nodeName = currentNode.getNodeName();
-        short nodeType = currentNode.getNodeType();
-
-        if (nodeType == Node.ELEMENT_NODE) {
-
-          // Check for the lang HTML attribute
-          if (htmlAttribute == null) {
-            htmlAttribute = parseLanguage(((Element) currentNode)
-                .getAttribute("lang"));
-          }
-
-          // Check for Meta
-          if ("meta".equalsIgnoreCase(nodeName)) {
-            NamedNodeMap attrs = currentNode.getAttributes();
-
-            // Check for the dc.language Meta
-            if (dublinCore == null) {
-              for (int i = 0; i < attrs.getLength(); i++) {
-                Node attrnode = attrs.item(i);
-                if ("name".equalsIgnoreCase(attrnode.getNodeName())) {
-                  if ("dc.language".equalsIgnoreCase(attrnode.getNodeValue())) 
{
-                    Node valueattr = attrs.getNamedItem("content");
-                    if (valueattr != null) {
-                      dublinCore = parseLanguage(valueattr.getNodeValue());
-                    }
-                  }
-                }
-              }
-            }
-
-            // Check for the http-equiv content-language
-            if (httpEquiv == null) {
-              for (int i = 0; i < attrs.getLength(); i++) {
-                Node attrnode = attrs.item(i);
-                if ("http-equiv".equalsIgnoreCase(attrnode.getNodeName())) {
-                  if ("content-language".equals(attrnode.getNodeValue()
-                      .toLowerCase())) {
-                    Node valueattr = attrs.getNamedItem("content");
-                    if (valueattr != null) {
-                      httpEquiv = parseLanguage(valueattr.getNodeValue());
-                    }
-                  }
-                }
-              }
-            }
-          }
-        }
-
-        if ((dublinCore != null) && (htmlAttribute != null)
-            && (httpEquiv != null)) {
-          return;
-        }
-      }
-    }
-
-    /**
-     * Parse a language string and return an ISO 639 primary code, or
-     * <code>null</code> if something wrong occurs, or if no language is found.
-     */
-    final static String parseLanguage(String lang) {
-
-      if (lang == null) {
-        return null;
-      }
-
-      String code = null;
-      String language = null;
-
-      // First, split multi-valued values
-      String langs[] = lang.split(",| |;|\\.|\\(|\\)|=", -1);
-
-      int i = 0;
-      while ((language == null) && (i < langs.length)) {
-        // Then, get the primary code
-        code = langs[i].split("-")[0];
-        code = code.split("_")[0];
-        // Find the ISO 639 code
-        language = (String) LANGUAGES_MAP.get(code.toLowerCase());
-        i++;
-      }
-
-      return language;
-    }
-
-  }
-
-  public void setConf(Configuration conf) {
-    this.conf = conf;
-    contentMaxlength = conf.getInt("lang.analyze.max.length", -1);
-    onlyCertain = conf.getBoolean("lang.identification.only.certain", false);
-    String[] policy = conf.getStrings("lang.extraction.policy");
-    for (int i = 0; i < policy.length; i++) {
-      if (policy[i].equals("detect")) {
-        detect = i;
-      } else if (policy[i].equals("identify")) {
-        identify = i;
-      }
-    }
-  }
-
-  public Configuration getConf() {
-    return this.conf;
-  }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java
 
b/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java
deleted file mode 100644
index fbfe8f9..0000000
--- 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/LanguageIndexingFilter.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.analysis.lang;
-
-// Nutch imports
-import org.apache.nutch.crawl.CrawlDatum;
-import org.apache.nutch.crawl.Inlinks;
-import org.apache.nutch.indexer.IndexingFilter;
-import org.apache.nutch.indexer.IndexingException;
-import org.apache.nutch.indexer.NutchDocument;
-import org.apache.hadoop.io.Text;
-import org.apache.nutch.parse.Parse;
-import org.apache.nutch.metadata.Metadata;
-import org.apache.nutch.net.protocols.Response;
-
-// Hadoop imports
-import org.apache.hadoop.conf.Configuration;
-
-/**
- * An {@link org.apache.nutch.indexer.IndexingFilter} that add a
- * <code>lang</code> (language) field to the document.
- * 
- * It tries to find the language of the document by:
- * <ul>
- * <li>First, checking if {@link HTMLLanguageParser} add some language
- * information</li>
- * <li>Then, checking if a <code>Content-Language</code> HTTP header can be
- * found</li>
- * <li>Finaly by analyzing the document content</li>
- * </ul>
- * 
- * @author Sami Siren
- * @author Jerome Charron
- */
-public class LanguageIndexingFilter implements IndexingFilter {
-
-  private Configuration conf;
-
-  /**
-   * Constructs a new Language Indexing Filter.
-   */
-  public LanguageIndexingFilter() {
-
-  }
-
-  // Inherited JavaDoc
-  public NutchDocument filter(NutchDocument doc, Parse parse, Text url,
-      CrawlDatum datum, Inlinks inlinks) throws IndexingException {
-
-    // check if LANGUAGE found, possibly put there by HTMLLanguageParser
-    String lang = parse.getData().getParseMeta().get(Metadata.LANGUAGE);
-
-    // check if HTTP-header tels us the language
-    if (lang == null) {
-      lang = parse.getData().getContentMeta().get(Response.CONTENT_LANGUAGE);
-    }
-
-    if (lang == null || lang.length() == 0) {
-      lang = "unknown";
-    }
-
-    doc.add("lang", lang);
-
-    return doc;
-  }
-
-  public void setConf(Configuration conf) {
-    this.conf = conf;
-  }
-
-  public Configuration getConf() {
-    return this.conf;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/langmappings.properties
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/langmappings.properties
 
b/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/langmappings.properties
deleted file mode 100644
index e02c8f9..0000000
--- 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/langmappings.properties
+++ /dev/null
@@ -1,188 +0,0 @@
-# Defines some mapping between common erroneous languages codes and
-# the ISO 639 two-letters language codes.
-aa=aar,Afar
-ab=abk,Abkhazian
-ae=ave
-af=afr,Afrikaans
-ak=aka
-am=amh,Amharic
-an=arg
-ar=ara,Arabic
-as=asm,Assamese
-av=ava
-ay=aym,Aymara
-az=aze,Azerbaijani
-ba=bak,Bashkir
-be=bel,Byelorussian
-bg=bul,Bulgarian
-bh=bih,Bihari
-bi=bis,Bislama
-bm=bam
-bn=ben,Bengali
-bo=bod,tib,Tibetan
-br=bre,Breton
-bs=bos
-ca=cat,Catalan
-ce=che
-ch=cha
-co=cos,Corsican
-cr=cre
-cs=ces,cze,Czech
-cu=chu
-cv=chv
-cy=cym,wel,Welsh
-da=dan,Danish
-de=deu,ger,German
-dv=div
-dz=dzo,Dzongkha
-ee=ewe
-el=ell,gre,Greek
-en=eng,English
-eo=epo,Esperanto
-es=esl,spa,Spanish
-et=est,Estonian
-eu=baq,eus,Basque
-fa=fas,per,Persian
-ff=ful
-fi=fin,Finnish
-fj=fij,Fijian
-fo=fao,Faroese
-fr=fra,fre,French
-fy=fry,Frisian
-ga=gai,iri,Irish
-gd=gla
-gl=glg,Gallegan
-gn=grn,Guarani
-gu=guj,Gujarati
-gv=glv
-ha=hau,Hausa
-he=heb,Hebrew
-hi=hin,Hindi
-ho=hmo
-hr=scr,hrv,Croatian
-ht=hat
-hu=hun,Hungarian
-hy=arm,hye,Armenian
-hz=her
-ia=ina,Interlingua
-id=ind,Indonesian
-ie=ile
-ig=ibo
-ii=iii
-ik=ipk,Inupiak
-io=ido
-is=ice,isl,Icelandic
-it=ita,Italian
-iu=iku,Inuktitut
-ja=jpn,Japanese
-jv=jw,jav,jaw,Javanese
-ka=geo,kat,Georgian
-kg=kon
-ki=kik
-kj=kua
-kk=kaz,Kazakh
-kl=kal,Greenlandic
-km=khm,Khmer
-kn=kan,Kannada
-ko=kor,Korean
-kr=kau
-ks=kas,Kashmiri
-ku=kur,Kurdish
-kv=kom
-kw=cor
-ky=kir,Kirghiz
-la=lat,Latin
-lb=ltz
-lg=lug
-li=lim
-ln=lin,Lingala
-lo=lao,Lao
-lt=lit,Lithuanian
-lu=lub
-lv=lav,Latvian
-mg=mlg,Malagasy
-mh=mah
-mi=mao,mri,Maori
-mk=mac,mak,Macedonian
-ml=mal,mlt,Maltese
-mn=mon,Mongolian
-mo=mol,Moldavian
-mr=mar,Marathi
-ms=may,msa,Malay
-mt=mlt
-my=bur,mya,Burmese
-na=nau,Nauru
-nb=nob
-nd=nde
-ne=nep,Nepali
-ng=ndo
-nl=dut,nla,Dutch
-nn=nno
-no=nor,Norwegian
-nr=nbl
-nv=nav
-ny=nya
-oc=oci,Langue d'Oc
-oj=oji
-om=orm,Oromo
-or=ori,Oriya
-os=oss
-pa=pan,Panjabi
-pi=pli
-pl=pol,Polish
-ps=pus,Pushto
-pt=por,Portuguese
-qu=que,Quechua
-rm=roh,Rhaeto-Romance
-rn=run,Rundi
-ro=ron,rum,Romanian
-ru=rus,Russian
-rw=kin,Kinyarwanda
-sa=san,Sanskrit
-sc=srd
-sd=snd,Sindhi
-se=sme
-sg=sag,Sango
-sh=scr,Serbo-Croatian
-si=sin,Singhalese
-sk=slk,slo,Slovak
-sl=slv,Slovenian
-sm=smo,Samoan
-sn=sna,Shona
-so=som,Somali
-sq=alb,sqi,Albanian
-sr=scc,srp,Serbian
-ss=ssw,Siswant
-st=sot,Sotho
-su=sun,Sudanese
-sv=sve,swe,Swedish,Svenska,Sweden
-sw=swa,Swahili
-ta=tam,Tamil
-te=tel,Telugu
-tg=tgk,Tajik
-th=tha,Thai
-ti=tir,Tigrinya
-tk=tuk,Turkmen
-tl=tgl,Tagalog
-tn=tsn,Tswana
-to=tog,Tonga
-tr=tur,Turkish
-ts=tso,Tsonga
-tt=tat,Tatar
-tw=twi,Twi
-ty=tah
-ug=uig,Uighur
-uk=ukr,Ukrainian
-ur=urd,Urdu
-uz=uzb,Uzbek
-ve=ven
-vi=vie,Vietnamese
-vo=vol,Volapk
-wa=wln
-wo=wol,Wolof
-xh=xho,Xhosa
-yi=yidYiddish
-yo=yor,Yoruba
-za=zha,Zhuang
-zh=chi,zho,Chinese
-zu=zul,Zulu

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/package.html
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/package.html
 
b/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/package.html
deleted file mode 100644
index 06343c8..0000000
--- 
a/src/plugin/language-identifier/src/java/org/apache/nutch/analysis/lang/package.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-<body>
-<p>Text document language identifier.</p><p>Language profiles are based on 
material from
-<a 
href="http://www.homepages.inf.ed.ac.uk/pkoehn/publications/europarl.ps/";>http://www.homepages.inf.ed.ac.uk/pkoehn/publications/europarl.ps/</a>.</p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/TestHTMLLanguageParser.java
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/TestHTMLLanguageParser.java
 
b/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/TestHTMLLanguageParser.java
deleted file mode 100644
index 8245151..0000000
--- 
a/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/TestHTMLLanguageParser.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.nutch.analysis.lang;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-
-// Nutch imports
-import org.apache.nutch.metadata.Metadata;
-import org.apache.nutch.parse.Parse;
-import org.apache.nutch.parse.ParseUtil;
-import org.apache.nutch.protocol.Content;
-import org.apache.nutch.util.NutchConfiguration;
-import org.apache.tika.language.LanguageIdentifier;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class TestHTMLLanguageParser {
-
-  private static String URL = "http://foo.bar/";;
-
-  private static String BASE = "http://foo.bar/";;
-
-  String docs[] = {
-      "<html lang=\"fi\"><head>document 1 title</head><body>jotain 
suomeksi</body></html>",
-      "<html><head><meta http-equiv=\"content-language\" 
content=\"en\"><title>document 2 title</head><body>this is 
english</body></html>",
-      "<html><head><meta name=\"dc.language\" content=\"en\"><title>document 3 
title</head><body>this is english</body></html>" };
-
-  // Tika does not return "fi" but null
-  String metalanguages[] = { "fi", "en", "en" };
-
-  /**
-   * Test parsing of language identifiers from html
-   **/
-  @Test
-  public void testMetaHTMLParsing() {
-
-    try {
-      ParseUtil parser = new ParseUtil(NutchConfiguration.create());
-      /* loop through the test documents and validate result */
-      for (int t = 0; t < docs.length; t++) {
-        Content content = getContent(docs[t]);
-        Parse parse = parser.parse(content).get(content.getUrl());
-        Assert.assertEquals(metalanguages[t], (String) parse.getData()
-            .getParseMeta().get(Metadata.LANGUAGE));
-      }
-    } catch (Exception e) {
-      e.printStackTrace(System.out);
-      Assert.fail(e.toString());
-    }
-
-  }
-
-  /** Test of <code>LanguageParser.parseLanguage(String)</code> method. */
-  @Test
-  public void testParseLanguage() {
-    String tests[][] = { { "(SCHEME=ISO.639-1) sv", "sv" },
-        { "(SCHEME=RFC1766) sv-FI", "sv" }, { "(SCHEME=Z39.53) SWE", "sv" },
-        { "EN_US, SV, EN, EN_UK", "en" }, { "English Swedish", "en" },
-        { "English, swedish", "en" }, { "English,Swedish", "en" },
-        { "Other (Svenska)", "sv" }, { "SE", "se" }, { "SV", "sv" },
-        { "SV charset=iso-8859-1", "sv" }, { "SV-FI", "sv" },
-        { "SV; charset=iso-8859-1", "sv" }, { "SVE", "sv" }, { "SW", "sw" },
-        { "SWE", "sv" }, { "SWEDISH", "sv" }, { "Sv", "sv" }, { "Sve", "sv" },
-        { "Svenska", "sv" }, { "Swedish", "sv" }, { "Swedish, svenska", "sv" },
-        { "en, sv", "en" }, { "sv", "sv" },
-        { "sv, be, dk, de, fr, no, pt, ch, fi, en", "sv" }, { "sv,en", "sv" },
-        { "sv-FI", "sv" }, { "sv-SE", "sv" }, { "sv-en", "sv" },
-        { "sv-fi", "sv" }, { "sv-se", "sv" },
-        { "sv; Content-Language: sv", "sv" }, { "sv_SE", "sv" },
-        { "sve", "sv" }, { "svenska, swedish, engelska, english", "sv" },
-        { "sw", "sw" }, { "swe", "sv" }, { "swe.SPR.", "sv" },
-        { "sweden", "sv" }, { "swedish", "sv" }, { "swedish,", "sv" },
-        { "text/html; charset=sv-SE", "sv" }, { "text/html; sv", "sv" },
-        { "torp, stuga, uthyres, bed & breakfast", null } };
-
-    for (int i = 0; i < 44; i++) {
-      Assert.assertEquals(tests[i][1],
-          HTMLLanguageParser.LanguageParser.parseLanguage(tests[i][0]));
-    }
-  }
-
-  private Content getContent(String text) {
-    Metadata meta = new Metadata();
-    meta.add("Content-Type", "text/html");
-    return new Content(URL, BASE, text.getBytes(), "text/html", meta,
-        NutchConfiguration.create());
-  }
-
-  @Test
-  public void testLanguageIndentifier() {
-    try {
-      long total = 0;
-      LanguageIdentifier identifier;
-      BufferedReader in = new BufferedReader(new InputStreamReader(this
-          .getClass().getResourceAsStream("test-referencial.txt")));
-      String line = null;
-      while ((line = in.readLine()) != null) {
-        String[] tokens = line.split(";");
-        if (!tokens[0].equals("")) {
-          StringBuilder content = new StringBuilder();
-          // Test each line of the file...
-          BufferedReader testFile = new BufferedReader(new InputStreamReader(
-              this.getClass().getResourceAsStream(tokens[0]), "UTF-8"));
-          String testLine = null, lang = null;
-          while ((testLine = testFile.readLine()) != null) {
-            content.append(testLine + "\n");
-            testLine = testLine.trim();
-            if (testLine.length() > 256) {
-              identifier = new LanguageIdentifier(testLine);
-              lang = identifier.getLanguage();
-              Assert.assertEquals(tokens[1], lang);
-            }
-          }
-          testFile.close();
-
-          // Test the whole file
-          long start = System.currentTimeMillis();
-          System.out.println(content.toString());
-          identifier = new LanguageIdentifier(content.toString());
-          lang = identifier.getLanguage();
-          System.out.println(lang);
-          total += System.currentTimeMillis() - start;
-          Assert.assertEquals(tokens[1], lang);
-        }
-      }
-      in.close();
-      System.out.println("Total Time=" + total);
-    } catch (Exception e) {
-      e.printStackTrace();
-      Assert.fail(e.toString());
-    }
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/nutch/blob/ffa16784/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/da.test
----------------------------------------------------------------------
diff --git 
a/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/da.test
 
b/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/da.test
deleted file mode 100644
index 1238cd5..0000000
--- 
a/src/plugin/language-identifier/src/test/org/apache/nutch/analysis/lang/da.test
+++ /dev/null
@@ -1,108 +0,0 @@
-Genoptagelse af sessionen
-Jeg erklærer Europa-Parlamentets session, der blev afbrudt fredag den 17. 
december, for genoptaget. Endnu en gang vil jeg ønske Dem godt nytår, og jeg 
håber, De har haft en god ferie.
-Som De kan se, indfandt det store "år 2000-problem" sig ikke. Til gengæld 
har borgerne i en del af medlemslandene været ramt af meget forfærdelige 
naturkatastrofer. De har udtrykt ønske om en debat om dette emne i løbet af 
mødeperioden. I mellemtiden ønsker jeg - som også en del kolleger har 
anmodet om - at vi iagttager et minuts stilhed til minde om ofrene for bl.a. 
stormene i de medlemslande, der blev ramt. Jeg opfordrer Dem til stående at 
iagttage et minuts stilhed.
-(Parlamentet iagttog stående et minuts stilhed
-
-Fru formand, en bemærkning til forretningsordenen. Gennem pressen og tv vil 
De være bekendt med en række bombeeksplosioner og drab i Sri Lanka. En af de 
personer, der blev myrdet for ganske nylig i Sri Lanka, var hr. Kumar 
Ponnambalam, der besøgte Europa-Parlamentet for få måneder siden. Ville det 
være passende, hvis De, fru formand, sendte en skrivelse til Sri Lankas 
præsident for at udtrykke vores dybe beklagelse i forbindelse med Kumar 
Ponnambalams død og de andre voldsomme dødsfald i Sri Lanka og for 
indtrængende at anmode præsidenten om at gøre alt for at opnå en fredelig 
løsning på en meget vanskelig situation?
-
-Ja, hr. Evans, jeg mener, at et initiativ, som det, De foreslår, ville være 
meget hensigtsmæssigt. Hvis Europa-Parlamentet er enigt, vil jeg gøre, som 
hr. Evans har foreslået.
-
-Fru formand, en bemærkning til forretningsordenen. Jeg vil gerne have Deres 
råd om artikel 143 vedrørende afvisning. Mit spørgsmål omhandler et emne, 
der vil blive behandlet på torsdag, og jeg vil gerne tage emnet op igen ved 
den lejlighed.
-Betænkningen af Cunha om flerårige udviklingsprogrammer skal forhandles af 
Parlamentet på torsdag og indeholder et forslag i punkt 6 om, at der skal 
indføres kvotesanktioner for lande, der ikke overholder deres årlige 
målsætninger for flådereduktion. Dette skal i henhold til punkt 6 indføres 
til trods for princippet om relativ stabilitet. Jeg mener, at princippet om 
relativ stabilitet er et grundlæggende retsprincip for den fælles 
fiskeripolitik, og at der vil være juridisk belæg for at afvise et forslag om 
at undergrave dette princip. Jeg vil gerne vide, om man kan gøre indsigelse 
mod noget, der bare er en betænkning og ikke et forslag til retsakt, og om det 
er noget, jeg kan gøre på torsdag?
-
-Det er netop dér, De - hvis De ønsker det - kan rejse dette spørgsmål, det 
vil sige på torsdag ved forhandlingens begyndelse.
-
-Fru formand, samtidig med Europa-Parlamentets første mødeperiode i år har 
man i Texas i USA fastsat datoen for henrettelsen af en dødsdømt, nemlig en 
ung mand på 34 år ved navn Hicks, og det er desværre på næste torsdag.
-PÃ¥ anmodning af et fransk parlamentsmedlem, hr. Zimeray, er der allerede 
indgivet et andragende, som mange har skrevet under på, heriblandt 
undertegnede, men i tråd med den holdning, som Europa-Parlamentet og hele Det 
Europæiske Fællesskab konstant giver udtryk for, anmoder jeg Dem om at gøre 
den indflydelse, De har i kraft af Deres embede og den institution, De 
repræsenterer, gældende over for præsidenten og Texas' guvernør Bush, som 
har beføjelse til at ophæve dødsdommen og benåde den dømte.
-Alt dette er i tråd med de principper, vi altid har været tilhængere af.
-
-Tak, hr. Segni, det gør jeg med glæde. Det er således helt i tråd med den 
holdning, Europa-Parlamentet altid har indtaget.
-
-Fru formand, jeg vil gerne gøre Dem opmærksom på en sag, som Parlamentet 
har beskæftiget sig med gentagne gange. Det drejer sig om Alexander Nikitin. 
Vi glæder os alle sammen over, at domstolen har frifundet ham og understreget, 
at adgangen til miljøinformationer også er konstitutionel ret i Rusland. Men 
nu er det sådan, at han skal anklages igen, fordi statsadvokaten har anket 
dommen. Vi ved og har fastslået i virkelig mange beslutninger - netop på det 
sidste møde sidste år - at dette ikke bare er en juridisk sag, og at det er 
forkert at beskylde Alexander Nikitin for at have begået kriminalitet og 
forræderi, fordi vi som berørte nyder godt af hans resultater. Disse 
resultater er grundlaget for de europæiske programmer til beskyttelse af 
Barentsee, og derfor beder jeg Dem gennemgå et brevudkast, som beskriver de 
vigtigste fakta, og tydeliggøre denne holdning i Rusland i overensstemmelse 
med Parlamentets beslutninger.
-
-Ja, fru Schroedter, jeg skal med glæde undersøge dette spørgsmål, når jeg 
har modtaget Deres brev.
-
-Fru formand, jeg vil gerne først give Dem en kompliment for den kendsgerning, 
at De har holdt Deres ord, og at antallet af tv-kanaler på vores kontorer 
faktisk er udvidet enormt nu i denne første mødeperiode i det nye år. Men, 
fru formand, det, som jeg havde anmodet om, er ikke sket. Der er nu ganske vist 
to finske kanaler og en portugisisk kanal, men der er stadig ingen nederlandsk 
kanal, og jeg havde anmodet Dem om en nederlandsk kanal, fordi også 
nederlændere gerne vil følge med i nyhederne hver måned, når vi forvises 
til dette sted. Jeg vil således endnu en gang anmode Dem om alligevel at 
sørge for, at vi også får en nederlandsk kanal.
-
-Fru Plooij-van Gorsel, jeg kan oplyse Dem om, at dette spørgsmål er opført 
på dagsordenen for kvæstorernes møde på onsdag. Det vil, håber jeg, blive 
behandlet i en positiv ånd.
-
-Fru formand, kan De fortælle mig, hvorfor Parlamentet ikke overholder de 
lovgivningsbestemmelser om sundhed og sikkerhed, som det selv har fastsat? 
Hvorfor er der ikke foretaget en undersøgelse af luftkvaliteten i denne 
bygning, siden vi blev valgt? Hvorfor har Sundheds- og Sikkerhedsudvalget ikke 
haft et møde siden 1998? Hvorfor har der ikke været brandøvelser, hverken i 
parlamentsbygningerne i Bruxelles eller Strasbourg? Hvorfor er der ingen 
brandinstrukser? Hvorfor etableres der ikke områder med rygeforbud? Det er 
fuldstændig skandaløst, at vi fastsætter lovgivningsbestemmelser og så ikke 
overholder dem selv.
-
-Fru Lynne, De har fuldstændig ret, og jeg vil kontrollere, om alle disse ting 
virkelig ikke er blevet gjort. Jeg vil ligeledes fremlægge problemet for 
kvæstorerne, og jeg er sikker på, at kvæstorerne vil bestræbe sig på at 
sørge for, at vi overholder den lovgivning, vi vedtager.
-
-Fru formand, fru Díez González og jeg havde stillet nogle spørgsmål om 
visse holdninger gengivet i en spansk avis, som næstformanden, fru de Palacio, 
har givet udtryk for. De kompetente tjenestegrene har ikke opført dem på 
dagsordenen, fordi de mener, at de blev besvaret ved et tidligere møde.
-Jeg anmoder om, at denne beslutning tages op til fornyet overvejelse, for det 
er ikke tilfældet. De spørgsmål, der tidligere er blevet besvaret, drejede 
sig om fru de Palacios medvirken i en bestemt sag og ikke om de erklæringer, 
som kunne læses i avisen ABC den 18. november sidste år.
-
-Kære kolleger, vi vil undersøge alt dette. Jeg må indrømme, at det hele 
forekommer mig lidt forvirrende i øjeblikket. Derfor vil vi undersøge det 
meget omhyggeligt, således at alt er, som det skal være.
-
-Fru formand, jeg vil gerne vide, om der kommer en klar melding fra Parlamentet 
i denne uge om vores utilfredshed i forbindelse med dagens beslutning om ikke 
at forlænge embargoen mod våbeneksport til Indonesien i betragtning af, at et 
stort flertal i Parlamentet tidligere har undertegnet våbenembargoen i 
Indonesien. Dagens beslutning om ikke at forlænge embargoen er meget farlig 
på grund af situationen der. Parlamentet bør derfor tilkendegive sin 
holdning, da det er flertallets ønske. Det er uansvarligt af EU-medlemsstater 
at nægte at forlænge embargoen. Som nævnt tidligere er der tale om en meget 
ustabil situation. Der er endog fare for et militærkup i fremtiden. Vi ved 
ikke, hvad der sker. Så hvorfor skal våbenproducenter i EU profitere på 
bekostning af uskyldige mennesker?
-
-Under alle omstændigheder er punktet ikke på nuværende tidspunkt opført 
under forhandlingen om aktuelle og uopsættelige spørgsmål på torsdag.
-
-Arbejdsplan
-Næste punkt på dagsordenen er fastsættelse af arbejdsplanen.
-Det endelige forslag til dagsorden, som det blev opstillet af 
Formandskonferencen på mødet torsdag den 13. januar i overensstemmelse med 
forretningsordenens artikel 95, er omdelt.
-Det foreligger ingen forslag til ændring for mandag og tirsdag.
-Onsdag:
-PSE-gruppen anmoder om at få en redegørelse fra Kommissionen om dens 
strategiske mål for de kommende fem år samt om den administrative reform 
opført på dagsordenen.
-Hvis hr. Barón Crespo, der har fremsat anmodningen, ønsker det, opfordrer 
jeg ham til at begrunde sit forslag. Dernæst gør vi, som vi plejer, det vil 
sige, at vi hører et indlæg for og et indlæg imod forslaget.
-
-Fru formand, forelæggelsen af Prodi-Kommissionens politiske program for hele 
valgperioden var til at begynde med et forslag fra De Europæiske 
Socialdemokraters Gruppe, som opnåede enstemmighed på Formandskonferencen i 
september og også hr. Prodis udtrykkelige accept, og han gentog sit løfte i 
sin indsættelsestale.
-Dette løfte er vigtigt, fordi Kommissionen er et organ, der har 
initiativmonopol i henhold til traktaterne og derfor grundlæggende udformer 
Parlamentets politiske arbejde og lovgivningsarbejde i de kommende fem år. Jeg 
vil også minde om, fru formand, at Parlamentet to gange i foregående 
valgperiode ved afstemning gav udtryk for sin tillid til formand Prodi. I denne 
valgperiode igen i juli og senere, med den nye Kommission på plads, gav det 
igen i september hele Kommissionen et tillidsvotum. Der har derfor været tid 
nok til, at Kommissionen kunne forberede sit program, og til at vi kunne få 
kendskab til det og forklare det til borgerne. I den forbindelse vil jeg minde 
om beslutningen fra 15. september, hvori der blev henstillet til, at forslaget 
blev forelagt hurtigst muligt.
-Det, der skete i sidste uge - og som opstod uden for Formandskonferencen, hvor 
den udelukkende blev brugt til at bekræfte og godkende beslutninger, som var 
truffet uden for den - skaber et dilemma: Enten er Kommissionen ikke i stand 
til at fremlægge det program. (I så fald ville det være passende, at den 
informerede om det. Ifølge kommissionsformandens udsagn er de i stand til at 
gøre det. Eftersom Kommissionen er repræsenteret af næstformanden, fru de 
Palacio, mener jeg, at det før afstemningen ville være på sin plads at være 
på det rene med Kommissionens situation, hvad angår dets vilje til at 
forelægge programmet, ligesom det var blevet aftalt.) Eller også er 
Parlamentet ikke i stand til at behandle dette program, som der vist er nogle, 
der påstår. Efter min mening ville denne anden hypotese være det samme som 
at give afkald på vores ansvar som parlament og desuden at indføre en 
original teori, en ukendt metode, der består i skriftligt at give de politiske 
g
 rupper kendskab til Kommissionens program en uge før - og ikke dagen før, 
som det var aftalen - i betragtning af, at lovgivningsprogrammet skal 
diskuteres i februar, således at vi kunne springe forhandlingen over, fordi 
pressen og Internettet dagen efter havde givet alle borgerne kendskab til det, 
og Parlamentet ville ikke længere behøve at bekymre sig om sagen.
-Da min gruppe mener, at et parlament er til for at lytte, diskutere og 
overveje, mener vi, at der ikke er noget som helst, der kan retfærdiggøre 
denne udsættelse, og vi mener, at hvis Kommissionen er i stand til at gøre 
det, er der tid nok til, at vi kan genetablere den oprindelige aftale mellem 
Parlamentet og Kommissionen og handle ansvarligt over for vores medborgere. 
Derfor går det forslag, som De Europæiske Socialdemokraters Gruppe stiller, 
og som De har nævnt, ud på, at vi holder fast ved forelæggelsen af 
Prodi-Kommissionens program for valgperioden på onsdag, og at dette program 
også omfatter forslaget til administrativ reform, for hvis det ikke bliver 
sådan, kan vi komme i en paradoksal situation: Med en undskyldning om at der 
ikke er en tekst, nægtes formanden for Kommissionen på den ene side retten 
til at tale i Parlamentet, og på den anden side forhindres det, at der finder 
en forhandling sted om reformen, uden at Parlamentet på forhånd kender de 
tekster, 
 som den er baseret på. Derfor, fru formand, anmoder jeg Dem om at bede 
Kommissionen om at udtale sig nu, og at vi derefter går over til afstemning.
-(Bifald fra PSE-gruppen)
-
-Fru formand, kære kolleger, jeg er godt nok noget forbavset over vores 
kollega Barón Crespos opførsel. Han forlanger nu, at dette punkt sættes på 
dagsordenen for onsdag.
-Hr. Barón Crespo, De kunne ikke deltage den sidste torsdag på 
Formandskonferencen. Det kritiserer jeg ikke, for det sker af og til, at man 
lader sig repræsentere. Hr. Hänsch repræsenterede Dem dér. Vi havde en 
udførlig debat på Formandskonferencen. Kun Deres gruppe repræsenterede det, 
som De siger nu. Vi stemte derefter om det. Hver ordfører har jo lige så 
mange stemmer, som der er medlemmer i gruppen. Der var en afstemning om dette 
punkt. Så vidt jeg husker, faldt denne afstemning således ud: 422 mod 180 
stemmer og nogle få, der undlod at stemme. Det vil sige, at alle grupper med 
undtagelse af løsgængerne - men de udgør jo ikke nogen gruppe - var enige, 
kun Deres gruppe mente, at man skulle bære sig sådan ad, som De har 
foreslået her. Alle andre mente noget andet. Det var beslutningen.
-Nu vil jeg gerne sige noget til selve sagen. Vi har tillid til Kommissionen, 
til Romano Prodi, og flertallet i vores gruppe har udtrykt tillid til Romano 
Prodi og Kommissionen efter en vanskelig proces, som alle kender til. Men vi 
mener også, at vi skal have en debat om Kommissionens strategi i en ordinær 
procedure, ikke kun på baggrund af en mundtlig forklaring her i 
Europa-Parlamentet, men også på baggrund af et dokument, som er blevet 
besluttet i Kommissionen, og som beskriver dette program for fem år. Et 
sådant dokument findes ikke!
-
-Kommissionen vil fremlægge programmet for år 2000 til februar. Vi har sagt, 
at hvis Kommissionen ikke ønsker at lave programmet for år 2000 i januar, så 
gør vi det i februar. Det har vi godkendt. Vi ønsker sådan set ikke nogen 
konflikt med Kommissionen, vi mener derimod, at hvis det går, skal 
Kommissionen og Parlamentet gå samme vej. Men Parlamentet er også 
Kommissionens kontrollør. Og ikke alt, hvad der kommer fra Kommissionen, skal 
nødvendigvis være i overensstemmelse med os.
-Jeg vil gerne have, at vi får mulighed for at forberede os fornuftigt på en 
debat om femårsprogrammet i grupperne. Man kan ikke forberede sig, hvis man 
hører en forklaring her og slet ikke ved, hvad indholdet af en sådan 
forklaring er. Derfor anbefaler vi - og det er mit indtryk, at Kommissionen 
også er åben over for denne tanke - at vi fører debatten om Kommissionens 
langsigtede program frem til år 2005 i februar - jeg håber også, at 
Kommissionen er blevet enig om et program til den tid, som den vil foreslå os 
- og at vi samtidig fører en debat om Kommissionens lovgivningsprogram for år 
2000 i februar. Det er således også en fornuftig saglig sammenhæng, som 
råder os til at føre debatten om begge programmer i fællesskab. Derfor 
afviser min gruppe på det bestemteste Den Socialdemokratiske Gruppes forslag!
-(Bifald fra PPE-DE-gruppen)
-
-Fru formand, jeg vil gøre det meget klart, at Kommissionen først og fremmest 
har den største respekt for Parlamentets beslutninger, deriblandt opstillingen 
af dagsordenen. Derfor respekterer vi Parlamentets beslutning, hvad det angår.
-Men jeg vil også gøre det meget klart, at hr. Prodi aftalte med Parlamentet 
at indføre en ny forhandling, som hr. Barón nok husker, ud over den årlige 
forhandling om Kommissionens lovgivningsprogram, om hovedlinjerne i aktionerne 
for den kommende femårsperiode, altså for denne valgperiode.
-Jeg vil sige, fru formand, at denne forhandling i den aftale, som blev 
indgået i september, adskilte sig fra Kommissionens årlige forelæggelse af 
programmet for lovgivningen. Og jeg vil sige, fru formand, at vi i Kommissionen 
er forberedt på og rede til at deltage i den forhandling, når det er 
belejligt, at vi var rede til at gennemføre den i denne uge, som det var 
aftalt fra begyndelsen, med udgangspunkt i at den blev forelagt dagen før i en 
tale til de parlamentariske grupper.
-Jeg vil derfor gentage, fru formand, at vi for vores del har diskuteret 
handlingsprogrammet for de kommende fem år, og at vi er rede til, når 
Parlamentet bestemmer det - i denne uge, hvis det er beslutningen - at komme og 
forelægge programmet for de kommende fem år og i næste måned programmet for 
2000, hvilket er helt i overensstemmelse med aftalen.
-
-Jeg foreslår, at vi stemmer om PSE-gruppens anmodning om at få en 
redegørelse fra Kommissionen om dens strategiske mål genopført på 
dagsordenen.
-(Forslaget forkastedes) Formanden. Stadig med hensyn til dagsordenen for 
onsdag har jeg et forslag om de mundtlige forespørgsler om kapitalskat. 
PPE-DE-gruppen ønsker, at dette punkt tages af dagsordenen.
-Ønsker nogen at tage ordet på vegne af gruppen for at begrunde denne 
anmodning?
-
-Fru formand, da jeg kan høre en smule latter fra Socialdemokraterne - jeg har 
fået fortalt, at brede kredse i Den Socialdemokratiske Gruppe også gerne vil 
have taget dette punkt af dagsordenen, fordi der ved afstemningen på 
Formandskonferencen ikke forelå noget votum fra arbejdsgruppen af ansvarlige 
kolleger i Den Socialdemokratiske Gruppe. Jeg ved ikke, om denne oplysning er 
rigtig, men PPE-DE-gruppen ville i hvert fald være taknemmelig, hvis dette 
punkt blev annulleret, fordi Parlamentet allerede har beskæftiget sig med 
dette spørgsmål flere gange. Der er også truffet beslutninger mod en sådan 
skat. Derfor anmoder min gruppe om, at dette punkt tages af dagsordenen.
-
-Tak, hr. Poettering.
-Vi skal nu høre hr. Wurtz, der er imod forslaget.
-
-Fru formand, jeg vil først og fremmest fremhæve hr. Poetterings manglende 
konsekvens. For et øjeblik siden belærte han socialdemokraterne, fordi de 
ville ændre en klar beslutning truffet på Formandskonferencen. Imidlertid 
gør han det samme. Vi havde en diskussion, vi var alle - på nær 
PPE-DE-gruppen og Den Liberale Gruppe - enige, og jeg bemærkede endda - som De 
sikkert husker, kære medformænd - at det ikke drejede sig om, hvorvidt De er 
for eller imod Tobin-afgiften, men om De turde høre, hvad Kommissionen og 
RÃ¥det mente om den. Dette er ikke for meget forlangt. Derfor fastholder jeg 
forslaget om at bevare det mundtlige spørgsmål til Kommissionen og Rådet, 
således at vi én gang for alle får opklaret, hvilken holdning de to 
institutioner har til dette ret beskedne forslag, som dog sender et vigtigt 
signal til befolkningen, navnlig efter fiaskoen i Seattle.
-
-Vi skal stemme om PPE-DE-gruppens anmodning om, at de mundtlige forespørgsler 
om kapitalskat tages af dagsordenen.
-(Forslaget forkastedes. 164 stemte for, 166 stemte imod, og 7 undlod at stemme)
-
-Fru formand, jeg vil gerne takke hr. Poettering for den reklame, han netop har 
gjort for denne debat. Tak.
-
-Fru formand, er min stemme, som jeg ikke kunne afgive elektronisk, fordi jeg 
ikke har kortet, blevet talt med? Jeg stemte for.
-
-Det er rigtigt. Hvis vi tilføjer de to kolleger, der har givet sig til kende, 
bliver resultatet ...
-
-Fru formand, formandskabet har bekendtgjort afstemningens udfald. Det kan der 
ikke laves om på.
-
-Kære kolleger, jeg minder endnu en gang om, at det er vigtigt, at alle har 
deres kort om mandagen. Det er tydeligt, at vi har et problem, og jeg må 
derfor træffe en beslutning.
-Jeg har også glemt mit kort, og jeg ville have stemt imod. Derfor mener jeg, 
at det mundtlige spørgsmål fortsat skal medtages på dagsordenen.
-Det er sidste gang, vi vil tage hensyn til glemte kort. Lad dette være helt 
klart, og husk det.
-(Bifald)
-Ja, det mundtlige spørgsmål er fortsat opført på dagsordenen, og ja, 
formanden har ret til at stemme, ligesom hun har ret til at glemme sit kort.
-Vi fortsætter nu med de øvrige ændringer af dagsordenen.
-
-Fru formand, i den tidligere afstemning - og jeg vil rette mig efter Deres 
afgørelse om dette emne - om spørgsmålet om Kommissionens redegørelse om 
dens strategiske mål gav jeg udtryk for, at jeg gerne ville tale på vegne af 
min gruppe før afstemningen. Det blev ikke til noget. Jeg vil sætte pris på 
at få lejlighed til at afgive stemmeforklaring på vegne af min gruppe i 
forbindelse med afslutningen af dette spørgsmål. Det er et vigtigt 
spørgsmål, og det vil være nyttigt for Parlamentet, hvis det er angivet, 
hvordan de forskellige personer opfatter vores handlinger i lyset af deres egne 
politiske analyser.
-
-Fru formand, jeg vil ikke genoptage debatten, men jeg havde også meldt mig 
for at tage stilling til hr. Barón Crespos ændringsforslag. De råbte mig 
heller ikke op. Det beklager jeg, men afstemningen er gennemført, afgørelsen 
er truffet, vi lader det altså ligge.
-
-Jeg beklager, hr. Hänsch og hr. Cox, jeg så ikke, at De anmodede om ordet. 
Men i øvrigt mener jeg, at holdningerne er meget klare, og de vil blive 
indført i protokollen. Når vi i morgen skal vedtage protokollen for i dag, 
kan de kolleger, der ikke synes, at holdningerne er blevet tilstrækkeligt 
forklaret, anmode om ændringer. Det, mener jeg, er en god løsning. 
Selvfølgelig vil protokollen for mødet i morgen tage hensyn til alle de 
supplerende forklaringer. Jeg mener, at det er en bedre løsning end at gå 
over til stemmeforklaringer på nuværende tidspunkt, som ville være et stort 
sidespring. Hr. Cox og hr. Hänsch, passer denne løsning Dem?
-
-Fru formand, hvis protokollen giver korrekt udtryk for min gruppes holdning i 
forbindelse med afstemningen, vil og kan jeg ikke gøre indsigelser. Hvis De 
afgør, at der ikke er grund til at afgive stemmeforklaring, vil jeg acceptere 
det, men med forbehold.
-
-Vi vil derfor være meget opmærksomme på udarbejdelsen af protokollen. Det 
er vi i øvrigt altid. Hvis holdningerne ikke klart fremgår, kan vi eventuelt 
ændre den.
-(Den således ændrede dagsorden godkendtes)
-

Reply via email to