aboutsummaryrefslogtreecommitdiff
path: root/spss.server/doc/moa_spss/examples/testclient/APIClientExample.java
diff options
context:
space:
mode:
Diffstat (limited to 'spss.server/doc/moa_spss/examples/testclient/APIClientExample.java')
-rw-r--r--spss.server/doc/moa_spss/examples/testclient/APIClientExample.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/spss.server/doc/moa_spss/examples/testclient/APIClientExample.java b/spss.server/doc/moa_spss/examples/testclient/APIClientExample.java
new file mode 100644
index 000000000..10324f221
--- /dev/null
+++ b/spss.server/doc/moa_spss/examples/testclient/APIClientExample.java
@@ -0,0 +1,100 @@
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import at.gv.egovernment.moa.spss.api.SPSSFactory;
+import at.gv.egovernment.moa.spss.api.SignatureCreationService;
+import at.gv.egovernment.moa.spss.api.xmlsign.*;
+import at.gv.egovernment.moa.spss.api.common.*;
+
+/**
+ * @author Sven Aigner
+ *
+ * Dies ist ein einfaches Beispielprogramm für die Erstellung
+ * einer digitalen Signatur mittel der API-Funktionen des
+ * MOA-SPSS Servers
+ */
+public class APIClientExample {
+
+ /**
+ * Hauptfunktion des Beispielprogramms
+ * @param args wird nicht ausgewertet
+ * @throws Exception sollten Fehler auftreten werden die Fehler an die Java-VM weitergeleitet
+ */
+ public static void main(String[] args) throws Exception{
+
+ // Serverfunktionshandler instanzieren
+ SPSSFactory spf = SPSSFactory.getInstance();
+
+ // Signaturedaten in ein Contentobjekt einbinden
+ byte []data = "Dies sind Testdaten".getBytes("UTF-8");
+ ByteArrayInputStream bis = new ByteArrayInputStream(data);
+ Content cont = spf.createContent(bis,"http://uri.data.org");
+
+ // Beschreibungselement zu den Daten erstellen
+ MetaInfo mi = spf.createMetaInfo("text/plain","Testdaten",null);
+
+ // Transformationen erstellen
+ CreateTransformsInfo cti = spf.createCreateTransformsInfo(null,mi);
+ CreateTransformsInfoProfile ct = spf.createCreateTransformsInfoProfile(cti,null);
+
+ // Datenobjekt aufbauen
+ DataObjectInfo doi = spf.createDataObjectInfo(DataObjectInfo.STRUCTURE_DETACHED,false,cont,ct);
+
+ List dataobjectinfolist = new ArrayList();
+ dataobjectinfolist.add(doi);
+ // alles zusammenpacken zu einer SingleSignature
+ SingleSignatureInfo ssi = spf.createSingleSignatureInfo(dataobjectinfolist,null,false);
+
+ List singlesignatureinfolist = new ArrayList();
+ singlesignatureinfolist.add(ssi);
+ // die Signatur in einen Request einbetten
+ CreateXMLSignatureRequest cxsreq = spf.createCreateXMLSignatureRequest("PKCS12RSAKey1",singlesignatureinfolist);
+
+ // Signatureerstellungsservice aufrufen
+ SignatureCreationService scs = SignatureCreationService.getInstance();
+
+ // Response auswerten
+ CreateXMLSignatureResponse cxsres = scs.createXMLSignature(cxsreq);
+
+ List elements = cxsres.getResponseElements();
+
+ SignatureEnvironmentResponse ser = (SignatureEnvironmentResponse)elements.get(0);
+
+ // Responsetyp lesen
+ int response_type = ser.getResponseType();
+
+ if(response_type == SignatureEnvironmentResponse.ERROR_RESPONSE)
+ {
+ // Fehlerfall
+ System.out.println("Bei der Erstellung der Signatur ist ein Fehler aufgetreten");
+ }
+ else
+ {
+ // Signaturerstellung erfolgreich
+ Element se = ser.getSignatureEnvironment();
+ System.out.println("Signaturerstellung erfolgreich");
+
+ displayTree(se);
+ }
+ }
+
+ /**
+ * Einfache Ausgabefunktion für einen DOM-Baum
+ * @param input auszugebender Knoten
+ */
+ public static void displayTree(Node input)
+ {
+ // Ausgabe eines Knotens
+ System.out.println(input);
+ // Alle Kindknoten ausgeben
+ NodeList children = input.getChildNodes();
+ for(int counter=0;counter<children.getLength();counter++)
+ displayTree(children.item(counter));
+ }
+}