From bba1cfcc4672a22cb0d0d579d4a51e7ae984f715 Mon Sep 17 00:00:00 2001 From: "peter.danner" Date: Fri, 27 Jul 2007 13:46:51 +0000 Subject: Changed Apache Axis to version 1.4 git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@855 d688527b-c9ab-4aba-bd8d-4036d912da1d --- .../server/transaction/TransactionContext.java | 176 ++++++++++++++++++++- 1 file changed, 175 insertions(+), 1 deletion(-) (limited to 'spss.server/src/at/gv/egovernment/moa/spss/server/transaction') diff --git a/spss.server/src/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java b/spss.server/src/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java index 407dbd4e9..774880d26 100644 --- a/spss.server/src/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java +++ b/spss.server/src/at/gv/egovernment/moa/spss/server/transaction/TransactionContext.java @@ -1,7 +1,20 @@ package at.gv.egovernment.moa.spss.server.transaction; +import iaik.ixsil.util.URI; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.security.cert.X509Certificate; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Vector; +import java.util.Map.Entry; + +import org.apache.axis.attachments.ManagedMemoryDataSource; +import org.w3c.dom.Element; +import at.gv.egovernment.moa.spss.MOAApplicationException; import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; /** @@ -18,6 +31,12 @@ public class TransactionContext { private String transactionID = null; /** The name of the request. */ private String requestName = null; + /** The SOAP embedded request */ + private Element request; + /** The response which is to embed by SOAP */ + private Element response; + /** The map pointing to SOAP attachments needed by the request. */ + private HashMap attachments = null; /** The configuration to use throughout the request. */ private ConfigurationProvider configuration = null; @@ -38,6 +57,28 @@ public class TransactionContext { this.configuration = configuration; } + /** + * Create a TransactionContext object. + * + * @param transactionID A unique ID for this TransactionContext. + * @param clientCertificate The client certificate chain. + * @param configuration The MOA configuration to use for this transaction. + * @param attachments to use for this transaction. + */ + public TransactionContext( + String transactionID, + X509Certificate[] clientCertificate, + ConfigurationProvider configuration, + Element request, + HashMap attachments) { + + this.transactionID = transactionID; + this.clientCertificate = clientCertificate; + this.configuration = configuration; + this.request = request; + this.attachments = attachments; + } + /** * Returns the client certificate. * @@ -77,6 +118,139 @@ public class TransactionContext { this.requestName = requestName; } + /** + * Sets the the request. + * + * @param request The request to set. + */ + public void setRequest(Element request) { + this.request = request; + } + + /** + * Returns the request. + * + * @return The request. + */ + public Element getRequest() { + return request; + } + + /** + * Sets the the response. + * + * @param response The response to set. + */ + public void setResponse(Element response) { + this.response = response; + } + + /** + * Returns the response. + * + * @return The response. + */ + public Element getResponse() { + return response; + } + + /** + * Adds an attachment to the transactions list of SOAP attachments. + * + * @param referenceId Identification value for the SOAP attachment. + * @param contentType MIME type of the SOAP attachment. + * @param is Handle to the ManagedMemoryDataSource of the SOAP attachment. + */ + public void addAttachment(String referenceId, String contentType, ManagedMemoryDataSource is) { + if (this.attachments == null) this.attachments = new HashMap(); + Vector entry = new Vector(2); + entry.add(contentType); + entry.add(is); + this.attachments.put(referenceId, entry); + } + + /** + * Returns the ManagedMemoryDataSource to a specific SOAP attachment identified by referenceId. + * + * @param referenceId Identification value for the SOAP attachment. + */ + public ManagedMemoryDataSource getAttachment(String referenceId) { + if (attachments==null) { + return null; + } + Vector entry = (Vector) attachments.get(referenceId); + if (entry==null) { + return null; + } + //return (InputStream) ( ((ManagedMemoryDataSource)entry.get(1)).getInputStream()); + return (ManagedMemoryDataSource) entry.get(1); + } + + /** + * Returns the InputStream to a specific SOAP attachment identified by uri. + * + * @param uri Identification value for the SOAP attachment. + */ + public InputStream getAttachmentInputStream(URI uri) throws MOAApplicationException { + if (attachments==null) { + return null; + } + String referenceId = uri.getPath(); + Vector entry = (Vector) attachments.get(referenceId); + if (entry==null) { + return null; + } + + InputStream attachmentIs = null; + try { + attachmentIs = (InputStream) ( ((ManagedMemoryDataSource)entry.get(1)).getInputStream()); + } catch (IOException e) { + throw new MOAApplicationException("2208", new Object[] { uri }, e); + } + + return attachmentIs; + //If we would return the whole mmds: return (ManagedMemoryDataSource) entry.get(1); + } + + /** + * Returns the content type to a specific SOAP attachment identified by referenceId. + * + * @param referenceId Identification value for the SOAP attachment. + */ + public String getAttachmentContentType(String referenceId) { + Vector entry = (Vector) attachments.get(referenceId); + if (entry==null) { + return null; + } + return (String) entry.get(0); + } + + /** + * Delete the temporary attachment files. + */ +public void cleanAttachmentCache() { + if (null==attachments) { + return; + } + Iterator iterator = attachments.entrySet().iterator(); + while (iterator.hasNext()) { + Entry hmEntry = (Entry) iterator.next(); + Vector entry = (Vector)hmEntry.getValue(); + ManagedMemoryDataSource mmds = (ManagedMemoryDataSource)entry.get(1); + try { + if (mmds!=null) { + InputStream is = mmds.getInputStream(); + if (is!=null) is.close(); + File f = mmds.getDiskCacheFile(); + if (f!=null) f.delete(); + mmds.delete(); + } + } catch (IOException e) { + // ok to do nothing here + } + } + } + /** * Returns the ConfigurationProvider associated with this * transaction. @@ -86,5 +260,5 @@ public class TransactionContext { public ConfigurationProvider getConfiguration() { return configuration; } - + } -- cgit v1.2.3