diff options
Diffstat (limited to 'spss.server/doc/moa_spss/APIClientExample.txt')
-rw-r--r-- | spss.server/doc/moa_spss/APIClientExample.txt | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/spss.server/doc/moa_spss/APIClientExample.txt b/spss.server/doc/moa_spss/APIClientExample.txt new file mode 100644 index 000000000..10324f221 --- /dev/null +++ b/spss.server/doc/moa_spss/APIClientExample.txt @@ -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)); + } +} |