Merge pull request #7 from peterdemaeyer/SANTUARIO-554

SANTUARIO-554 Replaced Object with Class<? extends OutputProcessor> p…
diff --git a/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
index 4603d03..32374d2 100644
--- a/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/ext/AbstractOutputProcessor.java
@@ -53,8 +53,8 @@
     protected XMLSecurityConstants.Action action;
 
     private XMLSecurityConstants.Phase phase = XMLSecurityConstants.Phase.PROCESSING;
-    private Set<Object> beforeProcessors;
-    private Set<Object> afterProcessors;
+    private Set<Class<? extends OutputProcessor>> beforeProcessors;
+    private Set<Class<? extends OutputProcessor>> afterProcessors;
 
     protected AbstractOutputProcessor() throws XMLSecurityException {
         super();
@@ -85,7 +85,7 @@
     }
 
     @Override
-    public void addBeforeProcessor(Object processor) {
+    public void addBeforeProcessor(Class<? extends OutputProcessor> processor) {
         if (this.beforeProcessors == null) {
             this.beforeProcessors = new HashSet<>();
         }
@@ -93,7 +93,7 @@
     }
 
     @Override
-    public Set<Object> getBeforeProcessors() {
+    public Set<Class<? extends OutputProcessor>> getBeforeProcessors() {
         if (this.beforeProcessors == null) {
             return Collections.emptySet();
         }
@@ -101,7 +101,7 @@
     }
 
     @Override
-    public void addAfterProcessor(Object processor) {
+    public void addAfterProcessor(Class<? extends OutputProcessor> processor) {
         if (this.afterProcessors == null) {
             this.afterProcessors = new HashSet<>();
         }
@@ -109,7 +109,7 @@
     }
 
     @Override
-    public Set<Object> getAfterProcessors() {
+    public Set<Class<? extends OutputProcessor>> getAfterProcessors() {
         if (this.afterProcessors == null) {
             return Collections.emptySet();
         }
diff --git a/src/main/java/org/apache/xml/security/stax/ext/OutputProcessor.java b/src/main/java/org/apache/xml/security/stax/ext/OutputProcessor.java
index d8572d2..82df967 100644
--- a/src/main/java/org/apache/xml/security/stax/ext/OutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/ext/OutputProcessor.java
@@ -54,28 +54,28 @@
      *
      * @param processor
      */
-    void addBeforeProcessor(Object processor);
+    void addBeforeProcessor(Class<? extends OutputProcessor> processor);
 
     /**
      * This OutputProcessor will be added before the processors in this set
      *
      * @return The set with the named OutputProcessor
      */
-    Set<Object> getBeforeProcessors();
+    Set<Class<? extends OutputProcessor>> getBeforeProcessors();
 
     /**
      * Add this processor after the given processor
      *
      * @param processor
      */
-    void addAfterProcessor(Object processor);
+    void addAfterProcessor(Class<? extends OutputProcessor> processor);
 
     /**
      * This OutputProcessor will be added after the processors in this set
      *
      * @return The set with the named OutputProcessor
      */
-    Set<Object> getAfterProcessors();
+    Set<Class<? extends OutputProcessor>> getAfterProcessors();
 
     /**
      * The Phase in which this OutputProcessor should be applied
diff --git a/src/main/java/org/apache/xml/security/stax/impl/OutputProcessorChainImpl.java b/src/main/java/org/apache/xml/security/stax/impl/OutputProcessorChainImpl.java
index e6b45e9..4c79f87 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/OutputProcessorChainImpl.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/OutputProcessorChainImpl.java
@@ -117,8 +117,7 @@
 
             for (int i = endPhaseIdx - 1; i >= startPhaseIdx; i--) {
                 OutputProcessor outputProcessor = outputProcessors.get(i);
-                if (newOutputProcessor.getAfterProcessors().contains(outputProcessor)
-                        || newOutputProcessor.getAfterProcessors().contains(outputProcessor.getClass().getName())) {
+                if (newOutputProcessor.getAfterProcessors().contains(outputProcessor.getClass())) {
                     idxToInsert = i + 1;
                     break;
                 }
@@ -129,8 +128,7 @@
 
             for (int i = startPhaseIdx; i < endPhaseIdx; i++) {
                 OutputProcessor outputProcessor = outputProcessors.get(i);
-                if (newOutputProcessor.getBeforeProcessors().contains(outputProcessor)
-                        || newOutputProcessor.getBeforeProcessors().contains(outputProcessor.getClass().getName())) {
+                if (newOutputProcessor.getBeforeProcessors().contains(outputProcessor.getClass())) {
                     idxToInsert = i;
                     break;
                 }
@@ -142,8 +140,7 @@
 
             for (int i = startPhaseIdx; i < endPhaseIdx; i++) {
                 OutputProcessor outputProcessor = outputProcessors.get(i);
-                if (newOutputProcessor.getBeforeProcessors().contains(outputProcessor)
-                        || newOutputProcessor.getBeforeProcessors().contains(outputProcessor.getClass().getName())) {
+                if (newOutputProcessor.getBeforeProcessors().contains(outputProcessor.getClass())) {
                     idxToInsert = i;
                     found = true;
                     break;
@@ -154,8 +151,7 @@
             } else {
                 for (int i = endPhaseIdx - 1; i >= startPhaseIdx; i--) {
                     OutputProcessor outputProcessor = outputProcessors.get(i);
-                    if (newOutputProcessor.getAfterProcessors().contains(outputProcessor)
-                            || newOutputProcessor.getAfterProcessors().contains(outputProcessor.getClass().getName())) {
+                    if (newOutputProcessor.getAfterProcessors().contains(outputProcessor.getClass())) {
                         idxToInsert = i + 1;
                         break;
                     }
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
index ad822a6..4cae594 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractEncryptOutputProcessor.java
@@ -146,9 +146,9 @@
                 throws XMLSecurityException {
 
             super();
-            this.addBeforeProcessor(AbstractEncryptEndingOutputProcessor.class.getName());
-            this.addBeforeProcessor(AbstractInternalEncryptionOutputProcessor.class.getName());
-            this.addAfterProcessor(AbstractEncryptOutputProcessor.class.getName());
+            this.addBeforeProcessor(AbstractEncryptEndingOutputProcessor.class);
+            this.addBeforeProcessor(AbstractInternalEncryptionOutputProcessor.class);
+            this.addAfterProcessor(AbstractEncryptOutputProcessor.class);
             this.setEncryptionPartDef(encryptionPartDef);
             this.setXmlSecStartElement(xmlSecStartElement);
             this.setEncoding(encoding);
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
index c1c2efd..603bb74 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/AbstractSignatureOutputProcessor.java
@@ -264,7 +264,7 @@
         public InternalSignatureOutputProcessor(SignaturePartDef signaturePartDef, XMLSecStartElement xmlSecStartElement)
                 throws XMLSecurityException {
             super();
-            this.addBeforeProcessor(InternalSignatureOutputProcessor.class.getName());
+            this.addBeforeProcessor(InternalSignatureOutputProcessor.class);
             this.signaturePartDef = signaturePartDef;
             this.xmlSecStartElement = xmlSecStartElement;
         }
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLEncryptOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLEncryptOutputProcessor.java
index 1264d24..58d44c3 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLEncryptOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLEncryptOutputProcessor.java
@@ -312,7 +312,7 @@
                         }
                     }
                 };
-        processor.getAfterProcessors().add(XMLEncryptOutputProcessor.class.getName());
+        processor.getAfterProcessors().add(XMLEncryptOutputProcessor.class);
         return processor;
     }
 }
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureEndingOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureEndingOutputProcessor.java
index fccb59b..e4651d0 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureEndingOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureEndingOutputProcessor.java
@@ -50,7 +50,7 @@
 
     public XMLSignatureEndingOutputProcessor(XMLSignatureOutputProcessor signatureOutputProcessor) throws XMLSecurityException {
         super(signatureOutputProcessor);
-        this.addAfterProcessor(XMLSignatureOutputProcessor.class.getName());
+        this.addAfterProcessor(XMLSignatureOutputProcessor.class);
     }
 
     @Override
@@ -61,7 +61,7 @@
         this.signedInfoProcessor = new SignedInfoProcessor(signatureAlgorithm, signatureId, xmlSecStartElement);
         this.signedInfoProcessor.setXMLSecurityProperties(getSecurityProperties());
         this.signedInfoProcessor.setAction(getAction());
-        this.signedInfoProcessor.addAfterProcessor(XMLSignatureEndingOutputProcessor.class.getName());
+        this.signedInfoProcessor.addAfterProcessor(XMLSignatureEndingOutputProcessor.class);
         this.signedInfoProcessor.init(outputProcessorChain);
         return this.signedInfoProcessor;
     }
diff --git a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureOutputProcessor.java b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureOutputProcessor.java
index e98d3b7..41699a7 100644
--- a/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureOutputProcessor.java
+++ b/src/main/java/org/apache/xml/security/stax/impl/processor/output/XMLSignatureOutputProcessor.java
@@ -104,8 +104,8 @@
                     internalSignatureOutputProcessor = new InternalSignatureOutputProcessor(signaturePartDef, xmlSecStartElement);
                     internalSignatureOutputProcessor.setXMLSecurityProperties(getSecurityProperties());
                     internalSignatureOutputProcessor.setAction(getAction());
-                    internalSignatureOutputProcessor.addAfterProcessor(XMLSignatureOutputProcessor.class.getName());
-                    internalSignatureOutputProcessor.addBeforeProcessor(XMLSignatureEndingOutputProcessor.class.getName());
+                    internalSignatureOutputProcessor.addAfterProcessor(XMLSignatureOutputProcessor.class);
+                    internalSignatureOutputProcessor.addBeforeProcessor(XMLSignatureEndingOutputProcessor.class);
                     internalSignatureOutputProcessor.init(outputProcessorChain);
 
                     setActiveInternalSignatureOutputProcessor(internalSignatureOutputProcessor);
diff --git a/src/test/java/org/apache/xml/security/test/stax/OutputProcessorChainTest.java b/src/test/java/org/apache/xml/security/test/stax/OutputProcessorChainTest.java
index d6d49c8..1a31f8e 100644
--- a/src/test/java/org/apache/xml/security/test/stax/OutputProcessorChainTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/OutputProcessorChainTest.java
@@ -51,8 +51,8 @@
     abstract class AbstractOutputProcessor implements OutputProcessor {
 
         private XMLSecurityConstants.Phase phase = XMLSecurityConstants.Phase.PROCESSING;
-        private Set<Object> beforeProcessors = new HashSet<>();
-        private Set<Object> afterProcessors = new HashSet<>();
+        private Set<Class<? extends OutputProcessor>> beforeProcessors = new HashSet<>();
+        private Set<Class<? extends OutputProcessor>> afterProcessors = new HashSet<>();
 
         @Override
         public void setXMLSecurityProperties(XMLSecurityProperties xmlSecurityProperties) {
@@ -67,22 +67,22 @@
         }
 
         @Override
-        public void addBeforeProcessor(Object processor) {
+        public void addBeforeProcessor(Class<? extends OutputProcessor> processor) {
             this.beforeProcessors.add(processor);
         }
 
         @Override
-        public Set<Object> getBeforeProcessors() {
+        public Set<Class<? extends OutputProcessor>> getBeforeProcessors() {
             return beforeProcessors;
         }
 
         @Override
-        public void addAfterProcessor(Object processor) {
+        public void addAfterProcessor(Class<? extends OutputProcessor> processor) {
             this.afterProcessors.add(processor);
         }
 
         @Override
-        public Set<Object> getAfterProcessors() {
+        public Set<Class<? extends OutputProcessor>> getAfterProcessors() {
             return afterProcessors;
         }
 
@@ -186,18 +186,18 @@
         AbstractOutputProcessor outputProcessor4 = new AbstractOutputProcessor() {
         };
         outputProcessor4.setPhase(XMLSecurityConstants.Phase.POSTPROCESSING);
-        outputProcessor4.addBeforeProcessor(outputProcessor3.getClass().getName());
+        outputProcessor4.addBeforeProcessor(outputProcessor3.getClass());
         outputProcessorChain.addProcessor(outputProcessor4);
 
         AbstractOutputProcessor outputProcessor5 = new AbstractOutputProcessor() {
         };
         outputProcessor5.setPhase(XMLSecurityConstants.Phase.PREPROCESSING);
-        outputProcessor5.addBeforeProcessor(outputProcessor2.getClass().getName());
+        outputProcessor5.addBeforeProcessor(outputProcessor2.getClass());
         outputProcessorChain.addProcessor(outputProcessor5);
 
         AbstractOutputProcessor outputProcessor6 = new AbstractOutputProcessor() {
         };
-        outputProcessor6.addBeforeProcessor(outputProcessor1.getClass().getName());
+        outputProcessor6.addBeforeProcessor(outputProcessor1.getClass());
         outputProcessorChain.addProcessor(outputProcessor6);
 
         assertEquals(outputProcessorChain.getProcessors().get(0), outputProcessor5);
@@ -229,18 +229,18 @@
         AbstractOutputProcessor outputProcessor4 = new AbstractOutputProcessor() {
         };
         outputProcessor4.setPhase(XMLSecurityConstants.Phase.POSTPROCESSING);
-        outputProcessor4.addAfterProcessor(outputProcessor3.getClass().getName());
+        outputProcessor4.addAfterProcessor(outputProcessor3.getClass());
         outputProcessorChain.addProcessor(outputProcessor4);
 
         AbstractOutputProcessor outputProcessor5 = new AbstractOutputProcessor() {
         };
         outputProcessor5.setPhase(XMLSecurityConstants.Phase.PREPROCESSING);
-        outputProcessor5.addAfterProcessor(outputProcessor2.getClass().getName());
+        outputProcessor5.addAfterProcessor(outputProcessor2.getClass());
         outputProcessorChain.addProcessor(outputProcessor5);
 
         AbstractOutputProcessor outputProcessor6 = new AbstractOutputProcessor() {
         };
-        outputProcessor6.addAfterProcessor(outputProcessor1.getClass().getName());
+        outputProcessor6.addAfterProcessor(outputProcessor1.getClass());
         outputProcessorChain.addProcessor(outputProcessor6);
 
         assertEquals(outputProcessorChain.getProcessors().get(0), outputProcessor2);
@@ -273,14 +273,14 @@
 
         AbstractOutputProcessor outputProcessor5 = new AbstractOutputProcessor() {
         };
-        outputProcessor5.addBeforeProcessor("");
-        outputProcessor5.addAfterProcessor(outputProcessor3.getClass().getName());
+        outputProcessor5.addBeforeProcessor(outputProcessor4.getClass());
+        outputProcessor5.addAfterProcessor(outputProcessor3.getClass());
         outputProcessorChain.addProcessor(outputProcessor5);
 
         AbstractOutputProcessor outputProcessor6 = new AbstractOutputProcessor() {
         };
-        outputProcessor6.addBeforeProcessor(outputProcessor5.getClass().getName());
-        outputProcessor6.addAfterProcessor("");
+        outputProcessor6.addBeforeProcessor(outputProcessor5.getClass());
+        outputProcessor6.addAfterProcessor(outputProcessor3.getClass());
         outputProcessorChain.addProcessor(outputProcessor6);
 
         assertEquals(outputProcessorChain.getProcessors().get(0), outputProcessor1);
diff --git a/src/test/java/org/apache/xml/security/test/stax/XMLSecurityStreamWriterTest.java b/src/test/java/org/apache/xml/security/test/stax/XMLSecurityStreamWriterTest.java
index b2f3957..698bc40 100644
--- a/src/test/java/org/apache/xml/security/test/stax/XMLSecurityStreamWriterTest.java
+++ b/src/test/java/org/apache/xml/security/test/stax/XMLSecurityStreamWriterTest.java
@@ -228,20 +228,20 @@
         }
 
         @Override
-        public void addBeforeProcessor(Object processor) {
+        public void addBeforeProcessor(Class<? extends OutputProcessor> processor) {
         }
 
         @Override
-        public Set<Object> getBeforeProcessors() {
+        public Set<Class<? extends OutputProcessor>> getBeforeProcessors() {
             return new HashSet<>();
         }
 
         @Override
-        public void addAfterProcessor(Object processor) {
+        public void addAfterProcessor(Class<? extends OutputProcessor> processor) {
         }
 
         @Override
-        public Set<Object> getAfterProcessors() {
+        public Set<Class<? extends OutputProcessor>> getAfterProcessors() {
             return new HashSet<>();
         }