diff options
Diffstat (limited to 'spss.handbook')
| -rw-r--r-- | spss.handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/APIClientExample.java | 130 | 
1 files changed, 130 insertions, 0 deletions
| diff --git a/spss.handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/APIClientExample.java b/spss.handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/APIClientExample.java new file mode 100644 index 000000000..a1e37fdd0 --- /dev/null +++ b/spss.handbook/clients/api/src/at/gv/egovernment/moa/spss/handbook/clients/api/APIClientExample.java @@ -0,0 +1,130 @@ +package at.gv.egovernment.moa.spss.handbook.clients.api; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.List; + +import org.w3c.dom.Element; + +import at.gv.egovernment.moa.spss.api.SPSSFactory; +import at.gv.egovernment.moa.spss.api.SignatureCreationService; +import at.gv.egovernment.moa.spss.api.common.Content; +import at.gv.egovernment.moa.spss.api.common.MetaInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateTransformsInfoProfile; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureRequest; +import at.gv.egovernment.moa.spss.api.xmlsign.CreateXMLSignatureResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.DataObjectInfo; +import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse; +import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo; +import at.gv.egovernment.moa.util.DOMUtils; + +/** + * Dieses einfache Beispiel demonstriert grundlegend den Gebrauch der API von MOA SPSS. Es wird damit eine + * einfach aufgebaute XML-Signatur erzeugt. + */ +public class APIClientExample +{ +  /** +   * Methode main. +   *  +   * Enthält beispielhaften Code zum grundlegenden Gebrauch der API von MOA SPSS. Es wird damit eine +   * einfach aufgebaute XML-Signatur erzeugt. +   *  +   * ACHTUNG: Stellen Sie bei Verwendung eines JDK 1.4.x sicher, dass Sie die System-Property  +   * <code>java.endorsed.dirs</code> auf jenes Verzeichnis gesetzt haben, in dem sich die XPath- +   * und XSLT-Bibliothek <em>Xalan-J</em> befindet. +   *  +   * @param args <ul> +   *             <li> +   *             args[0] enthält einen Verweis auf die Konfigurations-Datei von MOA SPSS Der Verweis  +   *             enthält entweder eine absolute oder eine relative Pfadangabe, wobei eine relative  +   *             Angabe als relativ zum Arbeitsverzeichnis der Java VM interpretiert wird.  +   *             </li> +   *             <li> +   *             args[1] enthält einen Verweis auf die Konfigurations-Datei von Log4J, dem Logging- +   *             Framework, das von MOA SPSS verwendet wird. Der Verweis enthält entweder eine  +   *             absolute oder eine relative Pfadangabe, wobei eine relative Angabe als relativ zum +   *             Arbeitsverzeichnis der Java VM interpretiert wird.  +   *             </li> +   *             </ul> +   *  +   * @throws Exception Sollten Fehler auftreten werden die Fehler an die Java-VM weitergeleitet. +   */ +  public static void main(String[] args) throws Exception +  { +    // Setzen der System-Properties +    init(args); + +    // Serverfunktionshandler instanzieren +    SPSSFactory spf = SPSSFactory.getInstance(); + +    // Zu signierende Daten in ein Contentobjekt einbinden (die Daten werden hier explizit angegeben, +    // sollen aber in der Signatur mittels URL "http://uri.data.org" referenziert werden +    byte[] data = "Dies sind Testdaten".getBytes("UTF-8"); +    ByteArrayInputStream bis = new ByteArrayInputStream(data); +    Content cont = spf.createContent(bis, "http://uri.data.org"); + +    // Metainformationen zu den zu signierenden Daten erstellen +    MetaInfo mi = spf.createMetaInfo("text/plain", "Testdaten", null, null); + +    // Transformationen erstellen (hier werden keine Transformationen angewandt) +    CreateTransformsInfo cti = spf.createCreateTransformsInfo(null, mi); +    CreateTransformsInfoProfile ct = spf.createCreateTransformsInfoProfile(cti, null); + +    // Datenobjekt aufbauen +    DataObjectInfo doi = spf.createDataObjectInfo(DataObjectInfo.STRUCTURE_DETACHED, false, cont, ct); + +    // Erstellen eines SingleSignatureInfo-Containers (enthält alle Angaben zur Erstellung *einer* +    // Signatur +    List dataobjectinfolist = new ArrayList(); +    dataobjectinfolist.add(doi); +    SingleSignatureInfo ssi = spf.createSingleSignatureInfo(dataobjectinfolist, null, false); + +    // Erstellen des Request-Objekts (Schlüsselbezeichner, Liste von SingleSignatureInfo-Containern) +    List singlesignatureinfolist = new ArrayList(); +    singlesignatureinfolist.add(ssi); +    CreateXMLSignatureRequest cxsreq = spf.createCreateXMLSignatureRequest("KG_allgemein", +      singlesignatureinfolist); + +    // Signatureerstellungsservice instanzieren und aufrufen +    SignatureCreationService scs = SignatureCreationService.getInstance(); +    CreateXMLSignatureResponse cxsres = scs.createXMLSignature(cxsreq); + +    // Response auswerten +    List elements = cxsres.getResponseElements(); +    SignatureEnvironmentResponse ser = (SignatureEnvironmentResponse) elements.get(0); + +    // Auswertung des ersten (und einzigen) SignatureEnvironmentResponse-Containers +    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 +      System.out.println("Signaturerstellung erfolgreich:"); + +      Element se = ser.getSignatureEnvironment(); +      System.out.println(DOMUtils.serializeNode(se)); +    } +  } + +  /** +   * Setzt die notwendigen System-Properties für die Konfiguration der MOA SP/SS API.  +   *  +   * @param args Siehe @link APIClientExample#main(String[]). +   */ +  private static void init(String[] args) +  { +    if (args == null || args.length != 2) +    { +      System.out.println("Verwendung: APIClientExample <MOASPSSConfigFile> <Log4JConfigFile>"); +    } +    System.setProperty("moa.spss.server.configuration", args[0]); +    System.setProperty("log4j.configuration", "file:" + args[1]); +  } +}
\ No newline at end of file | 
