Index: NUTCH-1467-trunk_v2.patch
===================================================================
Index: src/java/org/apache/nutch/parse/HTMLMetaTags.java
===================================================================
--- src/java/org/apache/nutch/parse/HTMLMetaTags.java	(revision 1451943)
+++ src/java/org/apache/nutch/parse/HTMLMetaTags.java	(working copy)
@@ -21,6 +21,8 @@
 import java.util.Iterator;
 import java.util.Properties;
 
+import org.apache.nutch.metadata.Metadata;
+
 /**
  * This class holds the information about HTML "meta" tags extracted from 
  * a page. Some special tags have convenience methods for easy checking.
@@ -40,10 +42,10 @@
 
   private URL refreshHref = null;
 
-  private Properties generalTags = new Properties();
+  private Metadata generalTags = new Metadata();
 
   private Properties httpEquivTags = new Properties();
-
+  
   /**
    * Sets all boolean values to <code>false</code>. Clears all other tags.
    */
@@ -166,7 +168,7 @@
    * Returns all collected values of the general meta tags. Property names are
    * tag names, property values are "content" values.
    */
-  public Properties getGeneralTags() {
+  public Metadata getGeneralTags() {
     return generalTags;
   }
 
@@ -179,26 +181,6 @@
   }
   
   public String toString() {
-    StringBuffer sb = new StringBuffer();
-    sb.append("base=" + baseHref
-            + ", noCache=" + noCache
-            + ", noFollow=" + noFollow
-            + ", noIndex=" + noIndex
-            + ", refresh=" + refresh
-            + ", refreshHref=" + refreshHref + "\n"
-            );
-    sb.append(" * general tags:\n");
-    Iterator it = generalTags.keySet().iterator();
-    while (it.hasNext()) {
-      String key = (String)it.next();
-      sb.append("   - " + key + "\t=\t" + generalTags.get(key) + "\n");
-    }
-    sb.append(" * http-equiv tags:\n");
-    it = httpEquivTags.keySet().iterator();
-    while (it.hasNext()) {
-      String key = (String)it.next();
-      sb.append("   - " + key + "\t=\t" + httpEquivTags.get(key) + "\n");
-    }
-    return sb.toString();
+	  return generalTags.toString();
   }
 }
Index: src/plugin/parse-html/src/java/org/apache/nutch/parse/html/HTMLMetaProcessor.java
===================================================================
--- src/plugin/parse-html/src/java/org/apache/nutch/parse/html/HTMLMetaProcessor.java	(revision 1451943)
+++ src/plugin/parse-html/src/java/org/apache/nutch/parse/html/HTMLMetaProcessor.java	(working copy)
@@ -78,7 +78,7 @@
         if (nameNode != null) {
           if (contentNode != null) {
             String name = nameNode.getNodeValue().toLowerCase();
-            metaTags.getGeneralTags().setProperty(name, contentNode.getNodeValue());
+            metaTags.getGeneralTags().add(name, contentNode.getNodeValue());
             if ("robots".equals(name)) {
   
               if (contentNode != null) {
Index: src/plugin/parse-metatags/src/java/org/apache/nutch/parse/MetaTagsParser.java
===================================================================
--- src/plugin/parse-metatags/src/java/org/apache/nutch/parse/MetaTagsParser.java	(revision 1451943)
+++ src/plugin/parse-metatags/src/java/org/apache/nutch/parse/MetaTagsParser.java	(working copy)
@@ -75,16 +75,17 @@
       }
     }
 
-    Properties generalMetaTags = metaTags.getGeneralTags();
-    for (Enumeration tagNames = generalMetaTags.propertyNames(); tagNames
-        .hasMoreElements();) {
-      String name = (String) tagNames.nextElement();
-      String value = generalMetaTags.getProperty(name);
+    Metadata generalMetaTags = metaTags.getGeneralTags();
+    for (String tagName : generalMetaTags.names() ) {
+    String[] tagValues = generalMetaTags.getValues(tagName);    
+  
+      for ( String tagValue : tagValues ) {
       // check whether the name is in the list of what we want or if
       // specified *
-      if (metatagset.contains("*") || metatagset.contains(name.toLowerCase())) {
-        LOG.debug("Found meta tag : " + name + "\t" + value);
-        metadata.add("metatag." + name.toLowerCase(), value);
+    	 if (metatagset.contains("*") || metatagset.contains(tagName.toLowerCase())) {
+    		 LOG.debug("Found meta tag : " + tagName + "\t" + tagValue);
+    		 metadata.add("metatag." + tagName.toLowerCase(), tagValue);
+    	 }
       }
     }
 
Index: src/plugin/parse-tika/src/java/org/apache/nutch/parse/tika/HTMLMetaProcessor.java
===================================================================
--- src/plugin/parse-tika/src/java/org/apache/nutch/parse/tika/HTMLMetaProcessor.java	(revision 1451943)
+++ src/plugin/parse-tika/src/java/org/apache/nutch/parse/tika/HTMLMetaProcessor.java	(working copy)
@@ -49,7 +49,7 @@
 
   private static final void getMetaTagsHelper(
     HTMLMetaTags metaTags, Node node, URL currURL) {
-
+	  
     if (node.getNodeType() == Node.ELEMENT_NODE) {
 
       if ("body".equalsIgnoreCase(node.getNodeName())) {
@@ -77,8 +77,8 @@
         
         if (nameNode != null) {
           if (contentNode != null) {
-            String name = nameNode.getNodeValue().toLowerCase();
-            metaTags.getGeneralTags().setProperty(name, contentNode.getNodeValue());
+            String name = nameNode.getNodeValue().toLowerCase();   
+            metaTags.getGeneralTags().add(name, contentNode.getNodeValue());
             if ("robots".equals(name)) {
   
               if (contentNode != null) {
