diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
index b8f7b52..daab888 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorGenerator.java
@@ -20,33 +20,12 @@
 
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import org.apache.felix.scrplugin.helper.IssueLog;
-import org.apache.felix.scrplugin.helper.PropertyHandler;
-import org.apache.felix.scrplugin.helper.StringUtils;
-import org.apache.felix.scrplugin.om.Component;
-import org.apache.felix.scrplugin.om.Components;
-import org.apache.felix.scrplugin.om.Implementation;
-import org.apache.felix.scrplugin.om.Interface;
-import org.apache.felix.scrplugin.om.Property;
-import org.apache.felix.scrplugin.om.Reference;
-import org.apache.felix.scrplugin.om.Service;
-import org.apache.felix.scrplugin.om.metatype.Designate;
-import org.apache.felix.scrplugin.om.metatype.MTObject;
-import org.apache.felix.scrplugin.om.metatype.MetaData;
-import org.apache.felix.scrplugin.om.metatype.OCD;
-import org.apache.felix.scrplugin.tags.JavaClassDescription;
-import org.apache.felix.scrplugin.tags.JavaClassDescriptionInheritanceComparator;
-import org.apache.felix.scrplugin.tags.JavaField;
-import org.apache.felix.scrplugin.tags.JavaTag;
-import org.apache.felix.scrplugin.tags.ModifiableJavaClassDescription;
+import org.apache.felix.scrplugin.helper.*;
+import org.apache.felix.scrplugin.om.*;
+import org.apache.felix.scrplugin.om.metatype.*;
+import org.apache.felix.scrplugin.tags.*;
 import org.apache.felix.scrplugin.tags.qdox.QDoxJavaClassDescription;
 import org.apache.felix.scrplugin.xml.ComponentDescriptorIO;
 import org.apache.felix.scrplugin.xml.MetaTypeIO;
@@ -637,7 +616,7 @@
         final String metaType = tag.getNamedParameter( Constants.COMPONENT_METATYPE );
         final boolean hasMetaType = metaType == null || "yes".equalsIgnoreCase( metaType )
             || "true".equalsIgnoreCase( metaType );
-        if ( hasMetaType )
+        if ( !component.isAbstract() && hasMetaType )
         {
             // ocd
             final OCD ocd = new OCD();
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Component.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Component.java
index 0ccf33b..f8f0be7 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Component.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/om/Component.java
@@ -24,9 +24,7 @@
 import org.apache.felix.scrplugin.Constants;
 import org.apache.felix.scrplugin.SCRDescriptorException;
 import org.apache.felix.scrplugin.helper.IssueLog;
-import org.apache.felix.scrplugin.tags.JavaClassDescription;
-import org.apache.felix.scrplugin.tags.JavaMethod;
-import org.apache.felix.scrplugin.tags.JavaTag;
+import org.apache.felix.scrplugin.tags.*;
 
 /**
  * <code>Component</code>
@@ -487,4 +485,24 @@
     public void setConfigurationPolicy(final String value) {
         this.configurationPolicy = value;
     }
-}
+
+    @Override
+    public String toString() {
+        return "Component " + this.name + " (" +
+          "enabled=" + (enabled==null?"<notset>":enabled) +
+          ", immediate=" + (immediate == null?"<notset>":immediate) +
+          ", abstract=" + isAbstract +
+          ", isDS=" + isDs +
+          (factory != null ? ", factory="+factory:"")+
+          (configurationPolicy != null ? ", configurationPolicy=" + configurationPolicy : "") +
+          (activate != null ? ", activate=" + activate : "") +
+          (deactivate != null ? ", deactivate=" + deactivate : "") +
+          (modified != null ? ", modified=" + modified : "") +
+          ", specVersion=" + specVersion +
+          ", implementation=" + implementation +
+          ", service=" + service +
+          ", properties=" + properties +
+          ", references=" + references +
+          ")";
+    }
+}
\ No newline at end of file
