From: <ms...@us...> - 2009-04-07 14:58:44
|
Revision: 4453 http://unicore.svn.sourceforge.net/unicore/?rev=4453&view=rev Author: msmemon Date: 2009-04-07 14:58:32 +0000 (Tue, 07 Apr 2009) Log Message: ----------- dmi sources Added Paths: ----------- contributions/unicore-dmi/ogsadmi-core/src/ contributions/unicore-dmi/ogsadmi-core/src/main/ contributions/unicore-dmi/ogsadmi-core/src/main/java/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMI.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMIConstants.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferFactory.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferInstance.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTFClient.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTIClient.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/CustomFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/DMIFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/FailedStateTransitionFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/IncorrectStateFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/NoTransferProtocolAgreementFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/RequestedStateNotSupportedFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/TransferProtocolNotInstantiableFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/UnsatisfiableRequestOptionsFault.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryHomeImpl.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryImpl.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/SupportedProtocolProperty.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/AttemptsProperty.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/BytesTransferredProperty.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/CompletionTimeProperty.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/DMIStateMapper.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/DataTransferInstanceHomeImpl.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/DataTransferInstanceImpl.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/RunTransferThread.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/StateProperty.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dti/StayAliveTimeChecker.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/util/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/util/CreateDTFOnStartup.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/util/DMIUtil.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIExecution.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIFTPDownload.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIFTPTransfer.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIFTPTransferBase.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIFTPTransferCreator.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIFTPUpload.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/DMIProcessor.java contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/xnjs/ThirdPartyFTPCreater.java contributions/unicore-dmi/ogsadmi-core/src/test/ contributions/unicore-dmi/ogsadmi-core/src/test/java/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/BaseDataTransfer.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/FTPTransfer.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/FunctionalTest.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/InteropDMI.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/TestDataTransferFactory.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/TestFTP.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/TestSimpleHttp.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/TestSimpleStaging.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/XNJSTestCase.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/testDate.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/util/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/util/DMIUtilTest.java contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/xnjs/ contributions/unicore-dmi/ogsadmi-core/src/test/java/de/fzj/unicore/dmi/xnjs/TestDMIProcessor.java contributions/unicore-dmi/ogsadmi-core/src/test/resources/ contributions/unicore-dmi/ogsadmi-core/src/test/resources/jsdl/ contributions/unicore-dmi/ogsadmi-core/src/test/resources/jsdl/date.jsdl contributions/unicore-dmi/ogsadmi-core/src/test/resources/logging.properties contributions/unicore-dmi/ogsadmi-core/src/test/resources/policy.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/ contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/bes-users.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/bes.config contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/policy.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/security_policy.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/simpleidb contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/test.uudb contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/uas.config contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/wsrflite.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/xacml.config contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/xnjs.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/secure/xnjs_legacy.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/simpleidb contributions/unicore-dmi/ogsadmi-core/src/test/resources/teststorage/ contributions/unicore-dmi/ogsadmi-core/src/test/resources/teststorage/long_text.txt contributions/unicore-dmi/ogsadmi-core/src/test/resources/teststorage/test.txt contributions/unicore-dmi/ogsadmi-core/src/test/resources/teststorage/test_remote.txt contributions/unicore-dmi/ogsadmi-core/src/test/resources/uas.config contributions/unicore-dmi/ogsadmi-core/src/test/resources/uccsamples/ contributions/unicore-dmi/ogsadmi-core/src/test/resources/uccsamples/cat.u contributions/unicore-dmi/ogsadmi-core/src/test/resources/uccsamples/date.u contributions/unicore-dmi/ogsadmi-core/src/test/resources/user-keystore.jks contributions/unicore-dmi/ogsadmi-core/src/test/resources/wsrflite.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/xacml.config contributions/unicore-dmi/ogsadmi-core/src/test/resources/xnjs.xml contributions/unicore-dmi/ogsadmi-core/src/test/resources/xnjs_legacy.xml Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMI.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMI.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMI.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,54 @@ +package de.fzj.unicore.dmi; + +import org.apache.log4j.PropertyConfigurator; + +import de.fzj.unicore.uas.UAS; +import de.fzj.unicore.wsrflite.persistence.HsqldbPersist; + +public class DMI { + + public static final String DTF = "DataTransferFactory"; + public static final String DTI = "DataTransferInstance"; + + public static final String SUPPORTED_PROTOCOLS = "dmi.dtf.supportedprotocols"; + public static final String DMI_PLAIN_RENDR_NS = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain"; + public static final String DMI_NS = "http://schemas.ogf.org/dmi/2008/05/dmi"; + + public static String getProtocolValue(final String protocol){ + if (protocol.equals("http")) + return DMIConstants.HTTP; + if (protocol.equals("ftp")) + return DMIConstants.FTP; + if (protocol.equals("ftp-passive")) + return DMIConstants.FTP_PASSIVE; + if (protocol.equals("gridftp-v20")) + return DMIConstants.GRIDFTP_V20; + return null; + } + + public static String getUndoStrategy(final String strategy){ + if (strategy.equals("full")) + return DMIConstants.FULL; + if (strategy.equals("best-effort")) + return DMIConstants.BEST_EFFORT; + if (strategy.equals("none")) + return DMIConstants.NONE; + return null; + + } + + public static void main(String[] args) { + PropertyConfigurator.configure("src/test/resources/logging.properties"); + + System.setProperty(HsqldbPersist.clearDBOnStartup, "true"); + + UAS uas = new UAS("src/test/resources/uas.config"); +// UAS uas = new UAS("src/test/resources/secure/uas.config"); + UAS.setProperty(HsqldbPersist.clearDBOnStartup, "true"); +// Logger.getLogger("de.fzj.unicore.bes").setLevel(Level.INFO); + + uas.start(); + } + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMIConstants.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMIConstants.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DMIConstants.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,31 @@ +package de.fzj.unicore.dmi; + +public class DMIConstants { + + + /** + * The list of protocols + * */ + public static final String HTTP = "http://www.ogf.org/ogsa-dmi/2006/03/im/protocol/http/v11"; + public static final String FTP = "http://www.ogf.org/ogsa-dmi/2006/03/im/protocol/ftp"; + public static final String GRIDFTP_V20 = "http://www.ogf.org/ogsa-dmi/2006/03/im/protocol/gridftp-v20"; + public static final String FTP_PASSIVE = "http://www.ogf.org/ogsa-dmi/2006/03/im/protocol/ftp-passive"; + + public static final String WS_ADDR_NONE = "http://www.ogf.org/ogsa/2007/08/addressing/none"; + + /** + * Undo strategies Supported + * */ + + + public static final String FULL = "http://www.ogf.org/ogsa-dmi/2006/03/im/undo/full"; + public static final String BEST_EFFORT = "http://www.ogf.org/ogsa-dmi/2006/03/im/retry/best-effort"; + public static final String NONE = "http://www.ogf.org/ogsa-dmi/2006/03/im/retry/none"; + + + public final static String WSS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; + public final static String WSS_SECURITY = "Security"; + public final static String WSS_USERNAME_SECURITY_TOKEN = "UsernameToken"; + public final static String USERNAME = "Username"; + public final static String PASSWORD = "Password"; +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferFactory.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferFactory.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferFactory.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,40 @@ +package de.fzj.unicore.dmi; + +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.xml.namespace.QName; +import org.ogf.schemas.dmi.x2008.x05.dmi.SupportedProtocolDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetDataTransferInstanceRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetDataTransferInstanceResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetFactoryAttributesDocumentRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetFactoryAttributesDocumentResponseMessageDocument; +import de.fzj.unicore.dmi.faults.NoTransferProtocolAgreementFault; +import de.fzj.unicore.dmi.faults.UnsatisfiableRequestOptionsFault; +import de.fzj.unicore.dmi.faults.CustomFault; +import de.fzj.unicore.wsrflite.utils.Utilities; +import de.fzj.unicore.wsrflite.xmlbeans.WSResource; + +/** + * OGSA-DMI DataTransferFactory(DTF) implementation. DTF is a WSTF based + * web service to allow the creation and management of DataTransferInstances (DTI). + * + * + * */ + +@WebService(targetNamespace="http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/",portName="DataTransferFactory") +public interface DataTransferFactory extends WSResource{ + + + // Port Type + public static final QName DTF_PORT = new QName(DMI.DMI_PLAIN_RENDR_NS, "DataTransferFactory"); + + public static final QName RPSupportedProtocols = Utilities.toQName(SupportedProtocolDocument.type); + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferFactory/GetDataTransferInstanceRequest") + public GetDataTransferInstanceResponseMessageDocument GetDataTransferInstance(GetDataTransferInstanceRequestMessageDocument transReq) + throws UnsatisfiableRequestOptionsFault, NoTransferProtocolAgreementFault, CustomFault; + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferFactory/GetFactoryAttributesDocumentRequest") + public GetFactoryAttributesDocumentResponseMessageDocument GetFactoryAttributesDocument(GetFactoryAttributesDocumentRequestMessageDocument factReq) throws CustomFault; + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferInstance.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferInstance.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/DataTransferInstance.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,72 @@ +package de.fzj.unicore.dmi; + +import javax.jws.WebMethod; +import javax.jws.WebResult; +import javax.jws.WebService; +import javax.xml.namespace.QName; + +import org.ogf.schemas.dmi.x2008.x05.dmi.AttemptsDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.BytesTransferredDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.CompletionTimeDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.StartTimeDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.StateDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.TotalDataSizeDocument; + +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetInstanceAttributesDocumentRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetInstanceAttributesDocumentResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetStatusRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetStatusResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.ResumeRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.ResumeResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StartRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StartResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StopRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StopResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.SuspendRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.SuspendResponseMessageDocument; +import de.fzj.unicore.dmi.faults.CustomFault; +import de.fzj.unicore.dmi.faults.FailedStateTransitionFault; +import de.fzj.unicore.dmi.faults.IncorrectStateFault; +import de.fzj.unicore.dmi.faults.RequestedStateNotSupportedFault; +import de.fzj.unicore.dmi.faults.TransferProtocolNotInstantiableFault; +import de.fzj.unicore.wsrflite.utils.Utilities; +import de.fzj.unicore.wsrflite.xmlbeans.WSResource; + + + +@WebService(targetNamespace="http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain",portName="DataTransferInstance") +public interface DataTransferInstance extends WSResource{ + + public static final QName RP_START_TIME = Utilities.toQName(StartTimeDocument.type); + public static final QName RP_STATE = Utilities.toQName(StateDocument.type); + public static final QName RP_COMPLETION_TIME = Utilities.toQName(CompletionTimeDocument.type); + public static final QName RP_TOTAL_DATA_SIZE = Utilities.toQName(TotalDataSizeDocument.type); + public static final QName RP_BYTES_TRANSFERRED = Utilities.toQName(BytesTransferredDocument.type); + public static final QName RP_ATTEMPTS = Utilities.toQName(AttemptsDocument.type); + public static final QName RP_STAYALIVE_TIME = new QName(DMI.DMI_PLAIN_RENDR_NS,"StayAliveTime"); + + + // Port Type + public static final QName DTI_PORT = new QName(DMI.DMI_PLAIN_RENDR_NS, "DataTransferInstance"); + + + // proposal for including source and sink eprs + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/GetInstanceAttributesDocumentRequest") + public GetInstanceAttributesDocumentResponseMessageDocument GetInstanceAttributesDocument(GetInstanceAttributesDocumentRequestMessageDocument attributesRequest) throws CustomFault; + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/GetStatusRequest") + public GetStatusResponseMessageDocument GetStatus(GetStatusRequestMessageDocument statusRequest); + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/StartRequest") + public StartResponseMessageDocument Start(StartRequestMessageDocument startRequest) throws IncorrectStateFault, FailedStateTransitionFault, CustomFault, TransferProtocolNotInstantiableFault; + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/StopRequest") + public StopResponseMessageDocument Stop(StopRequestMessageDocument stopRequest) throws FailedStateTransitionFault, IncorrectStateFault, CustomFault; + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/ResumeRequest") + public ResumeResponseMessageDocument Resume(ResumeRequestMessageDocument resumeRequest) throws RequestedStateNotSupportedFault; + + @WebMethod(action = "http://schemas.ogf.org/dmi/2008/06/dmi/rendering/plain/DataTransferInstance/SuspendRequest") + public SuspendResponseMessageDocument Suspend(SuspendRequestMessageDocument suspendRequest) throws RequestedStateNotSupportedFault, IncorrectStateFault; + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTFClient.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTFClient.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTFClient.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,57 @@ +package de.fzj.unicore.dmi.client; + + +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetDataTransferInstanceRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetFactoryAttributesDocumentRequestMessageDocument; +import org.w3.x2005.x08.addressing.EndpointReferenceType; +import de.fzj.unicore.dmi.DataTransferFactory; +import de.fzj.unicore.dmi.faults.CustomFault; +import de.fzj.unicore.dmi.faults.NoTransferProtocolAgreementFault; +import de.fzj.unicore.dmi.faults.UnsatisfiableRequestOptionsFault; +import de.fzj.unicore.uas.client.BaseUASClient; +import de.fzj.unicore.uas.security.IUASSecurityProperties; + +public class DTFClient extends BaseUASClient{ + + protected DataTransferFactory dtf; + + protected DTIClient dtiClient; + + protected void init(){ + try { + dtf = makeProxy(DataTransferFactory.class); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("could not create sms"); + } + } + + public DTFClient(String url, EndpointReferenceType epr, IUASSecurityProperties sec) throws Exception { + super(url, epr, sec); + init(); + + } + + public DTIClient getDataTransferInstance(GetDataTransferInstanceRequestMessageDocument request) throws UnsatisfiableRequestOptionsFault, NoTransferProtocolAgreementFault, CustomFault{ + EndpointReferenceType dtiEpr = dtf.GetDataTransferInstance(request).getGetDataTransferInstanceResponseMessage().getServiceInstance(); + if(dtiEpr == null) + return null; + try { + dtiClient = new DTIClient(dtiEpr, (IUASSecurityProperties)securityProperties); + return dtiClient; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + public String getFactoryAttributesDocument() throws CustomFault{ + GetFactoryAttributesDocumentRequestMessageDocument req = GetFactoryAttributesDocumentRequestMessageDocument.Factory.newInstance(); + req.addNewGetFactoryAttributesDocumentRequestMessage(); + return dtf.GetFactoryAttributesDocument(req).toString(); + } + + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTIClient.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTIClient.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/client/DTIClient.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,128 @@ +package de.fzj.unicore.dmi.client; + +import org.ogf.schemas.dmi.x2008.x05.dmi.StatusValueType; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetInstanceAttributesDocumentRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetInstanceAttributesDocumentResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetStatusRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetStatusResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StartRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.StopRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.SuspendRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.impl.GetInstanceAttributesDocumentRequestMessageDocumentImpl; +import org.w3.x2005.x08.addressing.EndpointReferenceType; +import de.fzj.unicore.dmi.DataTransferInstance; +import de.fzj.unicore.dmi.faults.CustomFault; +import de.fzj.unicore.dmi.faults.DMIFault; +import de.fzj.unicore.dmi.faults.FailedStateTransitionFault; +import de.fzj.unicore.dmi.faults.IncorrectStateFault; +import de.fzj.unicore.dmi.faults.RequestedStateNotSupportedFault; +import de.fzj.unicore.dmi.faults.TransferProtocolNotInstantiableFault; +import de.fzj.unicore.dmi.faults.UnsatisfiableRequestOptionsFault; +import de.fzj.unicore.uas.client.BaseUASClient; +import de.fzj.unicore.uas.security.IUASSecurityProperties; +import de.fzj.unicore.wsrflite.xmlbeans.BaseFault; + +public class DTIClient extends BaseUASClient{ + + private DataTransferInstance dti; + + protected void init(){ + try { + dti = makeProxy(DataTransferInstance.class); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public DTIClient(String url, EndpointReferenceType address, + IUASSecurityProperties sec) throws Exception { + super(url, address, sec); + init(); + } + + + public DTIClient(EndpointReferenceType address, IUASSecurityProperties sec) + throws Exception { + this(address.getAddress().getStringValue(), address, sec); + + } + + public DTIClient(EndpointReferenceType address) throws Exception{ + super(address); + } + + + public void start() throws IncorrectStateFault, + CustomFault, + UnsatisfiableRequestOptionsFault, + FailedStateTransitionFault, + TransferProtocolNotInstantiableFault{ + StartRequestMessageDocument startReq = StartRequestMessageDocument.Factory.newInstance(); + startReq.addNewStartRequestMessage(); + try{ + dti.Start(startReq); + }catch(IncorrectStateFault e){ + throw IncorrectStateFault.createFault(e.getMessage()); + }catch(CustomFault e){ + throw CustomFault.createFault(e.getMessage()); + } catch (FailedStateTransitionFault e) { + throw FailedStateTransitionFault.createFault(e.getMessage()); + } catch (TransferProtocolNotInstantiableFault e) { + throw TransferProtocolNotInstantiableFault.createFault(e.getMessage()); + } + } + + + + public void stop() throws FailedStateTransitionFault, IncorrectStateFault, CustomFault{ + StopRequestMessageDocument stopReq = StopRequestMessageDocument.Factory.newInstance(); + stopReq.addNewStopRequestMessage(); + try{ + dti.Stop(stopReq); + }catch(FailedStateTransitionFault e){ + FailedStateTransitionFault.createFault(e.getMessage()); + } + catch(IncorrectStateFault e){ + throw IncorrectStateFault.createFault(e.getMessage()); + } + catch(CustomFault e){ + throw CustomFault.createFault(e.getMessage()); + } + } + + public StatusValueType.Enum getStatus(){ + GetStatusRequestMessageDocument req = GetStatusRequestMessageDocument.Factory.newInstance(); + req.addNewGetStatusRequestMessage(); + GetStatusResponseMessageDocument res = dti.GetStatus(req); + return res.getGetStatusResponseMessage().getState().getValue(); + } + + + public GetInstanceAttributesDocumentResponseMessageDocument getInstanceAttributes() { + GetInstanceAttributesDocumentRequestMessageDocument req = GetInstanceAttributesDocumentRequestMessageDocument.Factory.newInstance(); + req.addNewGetInstanceAttributesDocumentRequestMessage(); + GetInstanceAttributesDocumentResponseMessageDocument res; + try { + res = dti.GetInstanceAttributesDocument(req); + return res; + } catch (Exception e) { + CustomFault.createFault(e.getMessage(), e); + } + return null; + } + + + public void suspend() throws RequestedStateNotSupportedFault, IncorrectStateFault{ + SuspendRequestMessageDocument req = SuspendRequestMessageDocument.Factory.newInstance(); + req.addNewSuspendRequestMessage(); + try { + dti.Suspend(req); + } catch (RequestedStateNotSupportedFault e) { + RequestedStateNotSupportedFault.createFault(e.getMessage(), e); + } catch (IncorrectStateFault e) { + IncorrectStateFault.createFault(e.getMessage(), e); + } + } + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/CustomFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/CustomFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/CustomFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,66 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.CustomFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.CustomFaultType; + + +public class CustomFault extends DMIFault { + + /** + * + */ + private static final long serialVersionUID = -3937351855967802399L; + + + private static Logger logger = Logger.getLogger(CustomFault.class); + + + private CustomFaultType faultType; + + public CustomFault(String message, CustomFaultType fault) { + super(message, null, fault); + + } + + public CustomFault(String message, Throwable cause, CustomFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public CustomFaultType getFaultInfo() { + return faultType; + } + + + public static QName getFaultName() { + return CustomFaultDocument.type.getDocumentElementName(); + } + + public static CustomFault createFault(String message, Throwable e){ + CustomFaultType type = CustomFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + CustomFault f = new CustomFault(message, e, type); + return f; + } + + + public static CustomFault createFault(String message){ + CustomFaultType type = CustomFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + CustomFault f = new CustomFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("CustomFault created: "+message); + } + return f; + } + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/DMIFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/DMIFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/DMIFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,65 @@ +package de.fzj.unicore.dmi.faults; + + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.codehaus.xfire.fault.FaultInfoException; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.DMIFaultType; + +import de.fzj.unicore.dmi.DMI; + + +public class DMIFault extends FaultInfoException{ + + /** + * + */ + private static final long serialVersionUID = 6259445659879823628L; + + private static Logger logger = Logger.getLogger(DMIFault.class); + + private DMIFaultType faultDetail; + + public DMIFault(String message, Throwable cause, DMIFaultType details){ + super(message,cause); + this.faultDetail=details; + } + + public DMIFault(String message, DMIFaultType details){ + super(message); + this.faultDetail=details; + } + + public DMIFault(String message){ + super(message); + } + + public DMIFaultType getFaultInfo() { + return faultDetail; + } + + public static QName getFaultName() { + return new QName(DMI.DMI_PLAIN_RENDR_NS+"/rendering/plain/", "DMIFault"); + } + + public static DMIFault createFault(String message){ + DMIFaultType o= DMIFaultType.Factory.newInstance(); + DMIFault n = new DMIFault(message, o); + if(logger.isDebugEnabled()){ + logger.debug("DMIFault created: "+message); + } + return n; + } + + public static DMIFault createFault(String message, Throwable e){ + DMIFaultType type = DMIFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + DMIFault f = new DMIFault(message, e, type); + return f; + } + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/FailedStateTransitionFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/FailedStateTransitionFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/FailedStateTransitionFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,66 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.FailedStateTransitionFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.FailedStateTransitionFaultType; + + + +public class FailedStateTransitionFault extends DMIFault{ + + /** + * + */ + private static final long serialVersionUID = -7349282889707957266L; + + + private static Logger logger = Logger.getLogger(FailedStateTransitionFault.class); + + + private FailedStateTransitionFaultType faultType; + + public FailedStateTransitionFault(String message, FailedStateTransitionFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public FailedStateTransitionFault(String message, Throwable cause, FailedStateTransitionFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public FailedStateTransitionFaultType getFaultInfo() { + return faultType; + } + + public static QName getFaultName() { + return FailedStateTransitionFaultDocument.type.getDocumentElementName(); + } + + + public static FailedStateTransitionFault createFault(String message, Throwable e){ + FailedStateTransitionFaultType type = FailedStateTransitionFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + FailedStateTransitionFault f = new FailedStateTransitionFault(message, e, type); + return f; + } + + + public static FailedStateTransitionFault createFault(String message){ + FailedStateTransitionFaultType type = FailedStateTransitionFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + FailedStateTransitionFault f = new FailedStateTransitionFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("FailedStateTransitionFault created: "+message); + } + return f; + } + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/IncorrectStateFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/IncorrectStateFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/IncorrectStateFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,68 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.IncorrectStateFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.IncorrectStateFaultType; + + +public class IncorrectStateFault extends DMIFault { + + /** + * + */ + private static final long serialVersionUID = -1565106760641667179L; + + private static Logger logger = Logger.getLogger(IncorrectStateFault.class); + + + private IncorrectStateFaultType faultType; + + public IncorrectStateFault(String message, IncorrectStateFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public IncorrectStateFault(String message, Throwable cause, IncorrectStateFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public IncorrectStateFaultType getFaultInfo() { + return faultType; + } + + + public static QName getFaultName() { + return IncorrectStateFaultDocument.type.getDocumentElementName(); + } + + + + public static IncorrectStateFault createFault(String message, Throwable e){ + IncorrectStateFaultType type = IncorrectStateFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + IncorrectStateFault f = new IncorrectStateFault(message, e, type); + return f; + } + + + public static IncorrectStateFault createFault(String message){ + IncorrectStateFaultType type = IncorrectStateFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + IncorrectStateFault f = new IncorrectStateFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("IncorrectStateFault created: "+message); + } + return f; + } + + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/NoTransferProtocolAgreementFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/NoTransferProtocolAgreementFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/NoTransferProtocolAgreementFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,69 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; + +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.NoTransferProtocolAgreementFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.NoTransferProtocolAgreementFaultType; + + +public class NoTransferProtocolAgreementFault extends DMIFault { + + + /** + * + */ + private static final long serialVersionUID = -6191759609671459103L; + + + private static Logger logger = Logger.getLogger(NoTransferProtocolAgreementFault.class); + + + private NoTransferProtocolAgreementFaultType faultType; + + public NoTransferProtocolAgreementFault(String message, NoTransferProtocolAgreementFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public NoTransferProtocolAgreementFault(String message, Throwable cause, NoTransferProtocolAgreementFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public NoTransferProtocolAgreementFaultType getFaultInfo() { + return faultType; + } + + public static QName getFaultName() { + return NoTransferProtocolAgreementFaultDocument.type.getDocumentElementName(); + } + + + public static NoTransferProtocolAgreementFault createFault(String message, Throwable e){ + NoTransferProtocolAgreementFaultType type = NoTransferProtocolAgreementFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + NoTransferProtocolAgreementFault f = new NoTransferProtocolAgreementFault(message, e, type); + return f; + } + + + public static NoTransferProtocolAgreementFault createFault(String message){ + NoTransferProtocolAgreementFaultType type = NoTransferProtocolAgreementFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + NoTransferProtocolAgreementFault f = new NoTransferProtocolAgreementFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("NoTransferProtocolAgreementFault created: "+message); + } + return f; + } + + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/RequestedStateNotSupportedFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/RequestedStateNotSupportedFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/RequestedStateNotSupportedFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,65 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.RequestedStateNotSupportedFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.RequestedStateNotSupportedFaultType; + + +public class RequestedStateNotSupportedFault extends DMIFault { + /** + * + */ + private static final long serialVersionUID = 5820184135679460939L; + + private static Logger logger = Logger.getLogger(RequestedStateNotSupportedFault.class); + + + private RequestedStateNotSupportedFaultType faultType; + + public RequestedStateNotSupportedFault(String message, RequestedStateNotSupportedFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public RequestedStateNotSupportedFault(String message, Throwable cause, RequestedStateNotSupportedFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public RequestedStateNotSupportedFaultType getFaultInfo() { + return faultType; + } + + + public static RequestedStateNotSupportedFault createFault(String message, Throwable e){ + RequestedStateNotSupportedFaultType type = RequestedStateNotSupportedFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + RequestedStateNotSupportedFault f = new RequestedStateNotSupportedFault(message, e, type); + return f; + } + + public static QName getFaultName() { + return RequestedStateNotSupportedFaultDocument.type.getDocumentElementName(); + } + + + + public static RequestedStateNotSupportedFault createFault(String message){ + RequestedStateNotSupportedFaultType type = RequestedStateNotSupportedFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + RequestedStateNotSupportedFault f = new RequestedStateNotSupportedFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("RequestedStateNotSupportedFault created: "+message); + } + return f; + } + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/TransferProtocolNotInstantiableFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/TransferProtocolNotInstantiableFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/TransferProtocolNotInstantiableFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,81 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.TransferProtocolNotInstantiatableFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.TransferProtocolNotInstantiatableFaultType; +import org.w3.x2005.x08.addressing.EndpointReferenceType; + +public class TransferProtocolNotInstantiableFault extends DMIFault { + /** + * + */ + private static final long serialVersionUID = 1867597762072376901L; + + + private static Logger logger = Logger.getLogger(TransferProtocolNotInstantiableFault.class); + + + private TransferProtocolNotInstantiatableFaultType faultType; + + public TransferProtocolNotInstantiableFault(String message, TransferProtocolNotInstantiatableFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public TransferProtocolNotInstantiableFault(String message, Throwable cause, TransferProtocolNotInstantiatableFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + + public TransferProtocolNotInstantiatableFaultType getFaultInfo() { + return faultType; + } + + public static QName getFaultName() { + return TransferProtocolNotInstantiatableFaultDocument.type.getDocumentElementName(); + } + + public static TransferProtocolNotInstantiableFault createFault(String message, Throwable e){ + TransferProtocolNotInstantiatableFaultType type = TransferProtocolNotInstantiatableFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + TransferProtocolNotInstantiableFault f = new TransferProtocolNotInstantiableFault(message, e, type); + return f; + } + + + public static TransferProtocolNotInstantiableFault createFault(String message){ + TransferProtocolNotInstantiatableFaultType type = TransferProtocolNotInstantiatableFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + TransferProtocolNotInstantiableFault f = new TransferProtocolNotInstantiableFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("TransferProtocolNotInstantiableFault created: "+message); + } + return f; + } + + + public static TransferProtocolNotInstantiableFault createFault(String message, String protocol, EndpointReferenceType source, EndpointReferenceType sink){ + TransferProtocolNotInstantiatableFaultType type = TransferProtocolNotInstantiatableFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setProtocol(protocol); + + if(source != null) type.setSourceDEPR(source); + if(sink != null) type.setSinkDEPR(sink); + type.setMessage(message); + TransferProtocolNotInstantiableFault f = new TransferProtocolNotInstantiableFault(message, type); + + if(logger.isDebugEnabled()){ + logger.debug("TransferProtocolNotInstantiableFault created: "+message); + } + return f; + } + + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/UnsatisfiableRequestOptionsFault.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/UnsatisfiableRequestOptionsFault.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/faults/UnsatisfiableRequestOptionsFault.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,67 @@ +package de.fzj.unicore.dmi.faults; + +import java.util.Calendar; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.UnsatisfiableRequestOptionsFaultDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.UnsatisfiableRequestOptionsFaultType; + + +public class UnsatisfiableRequestOptionsFault extends DMIFault { + + /** + * + */ + private static final long serialVersionUID = 1867597762072376901L; + + + private static Logger logger = Logger.getLogger(UnsatisfiableRequestOptionsFault.class); + + + private UnsatisfiableRequestOptionsFaultType faultType; + + public UnsatisfiableRequestOptionsFault(String message, UnsatisfiableRequestOptionsFaultType fault) { + super(message, null, fault); + this.faultType = fault; + } + + public UnsatisfiableRequestOptionsFault(String message, Throwable cause, UnsatisfiableRequestOptionsFaultType fault) { + super(message, cause, fault); + this.faultType = fault; + } + + @Override + public UnsatisfiableRequestOptionsFaultType getFaultInfo() { + return faultType; + } + + public static QName getFaultName() { + return UnsatisfiableRequestOptionsFaultDocument.type.getDocumentElementName(); + } + + public static UnsatisfiableRequestOptionsFault createFault(String message, Throwable e){ + UnsatisfiableRequestOptionsFaultType type = UnsatisfiableRequestOptionsFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + UnsatisfiableRequestOptionsFault f = new UnsatisfiableRequestOptionsFault(message, e, type); + return f; + } + + + public static UnsatisfiableRequestOptionsFault createFault(String message){ + UnsatisfiableRequestOptionsFaultType type = UnsatisfiableRequestOptionsFaultType.Factory.newInstance(); + type.setTimestamp(Calendar.getInstance()); + type.setMessage(message); + UnsatisfiableRequestOptionsFault f = new UnsatisfiableRequestOptionsFault(message, type); + if(logger.isDebugEnabled()){ + logger.debug("UnsatisfiableRequestOptionsFault created: "+message); + } + return f; + } + + + + +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryHomeImpl.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryHomeImpl.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryHomeImpl.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,12 @@ +package de.fzj.unicore.dmi.impl.dtf; + +import de.fzj.unicore.uas.impl.UASWSResourceHomeImpl; +import de.fzj.unicore.wsrflite.WSRFInstance; + +public class DataTransferFactoryHomeImpl extends UASWSResourceHomeImpl{ + + @Override + protected WSRFInstance doCreateInstance() { + return new DataTransferFactoryImpl(); + } +} Added: contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryImpl.java =================================================================== --- contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryImpl.java (rev 0) +++ contributions/unicore-dmi/ogsadmi-core/src/main/java/de/fzj/unicore/dmi/impl/dtf/DataTransferFactoryImpl.java 2009-04-07 14:58:32 UTC (rev 4453) @@ -0,0 +1,300 @@ +package de.fzj.unicore.dmi.impl.dtf; + + +import java.net.URI; +import java.util.Arrays; +import java.util.Calendar; +import java.util.HashMap; +import java.util.HashSet; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.xml.namespace.QName; + +import org.apache.log4j.Logger; +import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlObject; +import org.ogf.schemas.dmi.x2008.x05.dmi.DataLocationsType; +import org.ogf.schemas.dmi.x2008.x05.dmi.DataType; +import org.ogf.schemas.dmi.x2008.x05.dmi.SupportedProtocolDocument; +import org.ogf.schemas.dmi.x2008.x05.dmi.SupportedProtocolType; + +import org.ogf.schemas.dmi.x2008.x05.dmi.TransferRequirementsType; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.FactoryAttributesDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetDataTransferInstanceRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetDataTransferInstanceResponseMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetFactoryAttributesDocumentRequestMessageDocument; +import org.ogf.schemas.dmi.x2008.x06.dmi.rendering.plain.GetFactoryAttributesDocumentResponseMessageDocument; +import org.w3.x2005.x08.addressing.EndpointReferenceType; + +import de.fzj.unicore.dmi.DMI; +import de.fzj.unicore.dmi.DMIConstants; +import de.fzj.unicore.dmi.DataTransferFactory; +import de.fzj.unicore.dmi.faults.CustomFault; +import de.fzj.unicore.dmi.faults.NoTransferProtocolAgreementFault; +import de.fzj.unicore.dmi.faults.UnsatisfiableRequestOptionsFault; +import de.fzj.unicore.dmi.impl.dti.DataTransferInstanceImpl; +import de.fzj.unicore.dmi.util.DMIUtil; +import de.fzj.unicore.uas.impl.UASWSResourceImpl; +import de.fzj.unicore.uas.impl.bp.BPSupportImpl; +import de.fzj.unicore.uas.util.AddressingUtil; +import de.fzj.unicore.wsrflite.Kernel; +import de.fzj.unicore.wsrflite.utils.Utilities; +import eu.unicore.dmi.x2008.x05.dmi.DataDefinitionDocument; +import eu.unicore.dmi.x2008.x05.dmi.DataDefinitionType; + + +public class DataTransferFactoryImpl extends UASWSResourceImpl implements DataTransferFactory { + + + private static final Logger logger = Logger.getLogger(DataTransferFactoryImpl.class); + + public static final String INIT_SUPPORTEDPROTOCOLS = DataTransferFactoryImpl.class.getName()+"_supported_protocols"; + + public enum dataType { Source, Sink } + + @Override + public void initialise(String serviceName, Map<String, Object> initParams) + throws Exception { + super.initialise(serviceName, initParams); + + // initializing data transfer instance + String p = (String)initParams.get(DataTransferFactoryImpl.INIT_SUPPORTEDPROTOCOLS); + String[] pArray = p.split("\\s"); + properties.put(RPSupportedProtocols, new SupportedProtocolProperty(pArray)); + setDirty(); + } + + + @Override + protected void addWSResourceInterfaces(BPSupportImpl baseProfile) { + super.addWSResourceInterfaces(baseProfile); + baseProfile.addWSResourceInterface(DTF_PORT); + + } + + @Override + public QName getResourcePropertyDocumentQName() { + return FactoryAttributesDocument.type.getDocumentElementName(); +// return FactoryAttributesType.type.getDocumentElementName(); + } + + + public GetDataTransferInstanceResponseMessageDocument GetDataTransferInstance(GetDataTransferInstanceRequestMessageDocument transReq) + throws UnsatisfiableRequestOptionsFault, NoTransferProtocolAgreementFault, CustomFault{ + + GetDataTransferInstanceResponseMessageDocument response = null; + logger.info("Creating Data Transfer Instance.."); + + EndpointReferenceType sourceEpr = transReq.getGetDataTransferInstanceRequestMessage().getSourceDEPR(); + EndpointReferenceType sinkEpr = transReq.getGetDataTransferInstanceRequestMessage().getSinkDEPR(); + TransferRequirementsType transfReqType = transReq.getGetDataTransferInstanceRequestMessage().getTransferRequirements(); + + // check transfer requirements and throws appropriate faults + try { + checkTransferRequirements(transfReqType); + } catch (Exception e1) { + logger.error(e1.getMessage()); + throw UnsatisfiableRequestOptionsFault.createFault(e1.getMessage(),e1); + } + + + //check for the supported protocols at the source and sink + // and throw appropriate exceptions + try { + verifyProtocol (sourceEpr, dataType.Source); + verifyProtocol (sinkEpr, dataType.Sink); + } catch (Exception e1) { + if (e1 instanceof NoTransferProtocolAgreementFault) + throw NoTransferProtocolAgreementFault.createFault(e1.getMessage(),e1); + else + throw CustomFault.createFault(e1.getMessage(),e1); + } + DataDefinitionDocument dataDefDoc = DataDefinitionDocument.Factory.newInstance(); + DataDefinitionType dataDefType = dataDefDoc.addNewDataDefinition(); + + dataDefType.setSourceEPR(sourceEpr); + dataDefType.setSinkEPR(sinkEpr); + dataDefType.setTransferRequirements(transfReqType); + + Map<String, Object> dtiParams = new HashMap<String, Object>(); + dtiParams.put(DataTransferInstanceImpl.INIT_SOURCE_EPR, sourceEpr); + dtiParams.put(DataTransferInstanceImpl.INIT_SINK_EPR, sinkEpr); + dtiParams.put(DataTransferInstanceImpl.INIT_TRANSFER_REQ, transfReqType); + + // dtiParams.put(DataTransferInstanceImpl.INIT_ACTION_KEY, action); + dtiParams.put(DataTransferInstanceImpl.INIT_DATA_DEF_KEY, dataDefDoc); + dtiParams.put(DataTransferInstanceImpl.INIT_XNJS_REF, xnjsReference); + dtiParams.put(DataTransferInstanceImpl.INIT_CLIENT_KEY, getClient()); + EndpointReferenceType dtiEpr = null; + try { + dtiEpr = createDataTransfer(dtiParams); + } catch (Exception e) { + logger.error("Couldn't create DataTransferInstance. ",e); + } + + response = GetDataTransferInstanceResponseMessageDocument.Factory.newInstance(); + logger.debug("Data Transfer Instance created with EPR: " + dtiEpr); + response = GetDataTransferInstanceResponseMessageDocument.Factory.newInstance(); + response.addNewGetDataTransferInstanceResponseMessage().setServiceInstance(dtiEpr); + setDirty(); + return response; + } + + + protected void checkTransferRequirements(TransferRequirementsType tr) throws Exception { + if(tr == null) + System.exit(0); + + if (tr != null) { + Calendar c = tr.getEndNoLaterThan(); + Calendar t = Calendar.getInstance(); + + // throw:if end time is in past + + if (c!=null && (c.compareTo(t) < 0)) + throw UnsatisfiableRequestOptionsFault.createFault("Job cannot be finished before the system's Current Time."); + + + Calendar s = tr.getStartNotBefore(); + // throw:if start time is in past :: removed this intentionally +// if (s!=null && (s.compareTo(t) < 0)) +// throw UnsatisfiableRequestOptionsFault.createFault("Job cannot be scheduled before the system's Current Time."); + + // throw:if schedulestarttime is after the endnolaterthan + if(s!=null && c!=null && (c.compareTo(s) < 0)) + throw UnsatisfiableRequestOptionsFault.createFault("Job ends before the scheduled start time."); + + + //TODO check stay alive time + + + } + + } + + + protected void verifyProtocol(EndpointReferenceType dataEpr, Enum dType)throws Exception{ + final String ERROR_STR = "Error in "+dType.name()+"-DataEPR."; + + // check if ws-addressing + if(dataEpr.getAddress() == null) + throw CustomFault.createFault(ERROR_STR+"WS-Addressing address element is null"); + + + // Explicit transfer + + // data epr:first condition: wsa address should be none + if (dataEpr.getAddress().getStringValue().equals(DMIConstants.WS_ADDR_NONE)){ + // if it has wsaddressing is none, it means its an explicit transfer + DataLocationsType dataLocationType = DMIUtil.extractDataLocation1(dataEpr); + if(dataLocationType == null) throw CustomFault.createFault("Couldn't find DataLocation element in the request."); + + //insert into set + List<DataType> sList = Arrays.asList(dataLocationType.getDataArray()); + +// if(sList.size() > 1) +// throw CustomFault.createFault("UNICORE-DMI Implementation doesn't handle mulitple protocols"); + + Set<String> s = new HashSet<String>(); + + URI u = null; + for (DataType dataType : sList) { + + if (dataType.getProtocolUri() != null) { + // check for the available protocols + if (!getSupportedProtocols().isValidProtocolUrl(dataType.getProtocolUri())) + throw NoTransferProtocolAgreementFault.createFault(ERROR_STR+ "Protocol '"+dataType.getProtocolUri()+"' not supported."); + } else { + throw NoTransferProtocolAgreementFault.createFault(ERROR_STR+ "No Protocol Uri supplied in DEPR."); + } + + try{ + // throw if dataUrl is wrong + u = new URI(dataType.getDataUrl()); + }catch(Exception e){ + throw NoTransferProtocolAgreementFault.createFault(ERROR_STR+"Invalid DataURL.",e); + } + String p = u.getScheme(); + + // check if the protocol in the url is not consistent with available supported protocols + if(!dataType.getProtocolUri().equals(DMI.getProtocolValue(p))) + throw NoTransferProtocolAgreementFault.createFault(ERROR_STR+"DataURL is not consistent with Protocol Url."); + + + // If the protocol doesn't exist in the list of supported protocols + if(!getSupportedProtocols().contains(p)) + throw NoTransferProtocolAgreementFault.createFault(ERROR_STR+"Cannot fulfill transfer request. DataURL Protocol: "+p+ " is not supported."); + + + // handling duplicate values + // why? because user can send alternate data locations either it could be another data server + if(!s.add(p) || !s.add(dataType.getDataUrl())) + throw NoTransferProtocolAgreementFault.createFault("Cannot fulfill transfer request. Data element with duplicate Protocol/Urls."); + + } + + } + else{ + throw CustomFault.createFault("Wrong WS-Addressing address element."); + } + + } + + + + + + @Override + public QName getPortType() { + return DTF_PORT; + } + + + /** + * Delegate method to create a data transfer instance + * by using an initial parameters. + * + * */ + private EndpointReferenceType createDataTransfer(Map<String, Object> initParams) throws Exception{ + String id = Kernel.getKernel().createServiceInstance(DMI.DTI, initParams); + EndpointReferenceType epr = AddressingUtil.n... [truncated message content] |