<?xml version="1.0" encoding="UTF-8"?>
<Resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ID/>
    <Type>Service</Type>
    <Profile>
        <Description>The Storage Management Service</Description>
        <Class>ContentManagement</Class>
        <Name>StorageManagementService</Name>
        <Version>1.0.0</Version>
        <Packages>
            <Main>
                <Description>The Storage Management Service</Description>
                <Name>StorageManagementService-service</Name>
                <Version>1.8.0</Version>
                <Dependencies>
                    <Dependency>
                        <Service>
                            <Class>ContentManagement</Class>
                            <Name>ContentManagementLibrary</Name>
                            <Version>1.0.0</Version>
                        </Service>
                        <Package>ContentManagementLibrary</Package>
                        <Version>[1.2.0,2.0.0)</Version>
                        <Scope level="GHN"/>
                        <Optional>false</Optional>
                    </Dependency>
                    <Dependency>
                        <Service>
                            <Class>ContentManagement</Class>
                            <Name>StorageLayer</Name>
                            <Version>1.0.0</Version>
                        </Service>
                        <Package>StorageLayer</Package>
                        <Version>[1.0.0,2.0.0)</Version>
                        <Scope level="GHN"/>
                        <Optional>false</Optional>
                    </Dependency>
                    <Dependency>
                        <Service>
                            <Class>ContentManagement</Class>
                            <Name>StorageManagementService</Name>
                            <Version>1.0.0</Version>
                        </Service>
                        <Package>StorageManagementService-stubs</Package>
                        <Version>[1.2.0,2.0.0)</Version>
                        <Scope level="GHN"/>
                        <Optional>false</Optional>
                    </Dependency>
                </Dependencies>
                <GARArchive>org.gcube.contentmanagement.storagelayer.storagemanagementservice.gar</GARArchive>
                <PortType>
                    <Name>gcube/contentmanagement/storagelayer/storagemanagementservice/porttype1</Name>
                    <WSDL>
<definitions name="SMSPortType1"
    targetNamespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice"
    xmlns:tns="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice"
    xmlns:smstypes="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice/types"
  	xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor"
    xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"
    xmlns:coretypes="http://gcube-system.org/namespaces/common/core/types"
    xmlns:corefaults="http://gcube-system.org/namespaces/common/core/faults"
    xmlns:provider="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider">
    
    <import namespace="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider" location="../gcube/common/core/providers/GCUBEProvider.wsdl"/>
    <import namespace="http://gcube-system.org/namespaces/common/core/faults" location="../gcube/common/core/faults/GCUBEFaults.wsdl"/>

	
	<types>
		<xsd:schema targetNamespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
		<!-- required for  porttypes -->
		<xsd:import namespace="http://gcube-system.org/namespaces/common/core/types" schemaLocation="../gcube/common/core/types/GCUBETypes.xsd"/>
		<!-- required for factory porttypes -->
		<xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="../ws/addressing/WS-Addressing.xsd" />
		<!-- SMS commons types definition -->
		<xsd:import namespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice/types" schemaLocation="SMSTypes.xsd"/>
		
		
		<!-- elements -->
			
			<xsd:element name="createInfoObject" type="smstypes:NameAndType" />
			<xsd:element name="createInfoObjectResponse" type="xsd:string" />
			
			<xsd:element name="createInfoObjectsWithContent" type="smstypes:ArrayOfCreateInfoObjectReferencesProperties" />
			<xsd:element name="createInfoObjectsWithContentResponse" type="smstypes:ArrayOfInfoOIDAndHints" />
			
			<xsd:element name="createInfoObjectWithContent" type="smstypes:CreateInfoObjectReferencesProperties" />
			<xsd:element name="createInfoObjectWithContentResponse" type="smstypes:InfoObjectIDAndConsumedHints" />
			
			<xsd:element name="removeInfoObject" type="xsd:string" />
			<xsd:element name="removeInfoObjectResponse" type="xsd:boolean" />
			
			<xsd:element name="removeInfoObjectAsync" type="xsd:string" />
			<xsd:element name="removeInfoObjectAsyncResponse" type="xsd:boolean" />
			
			<xsd:element name="removeInfoObjects" type="smstypes:ArrayOfString" />
			<xsd:element name="removeInfoObjectsResponse" type="smstypes:ArrayOfFailedObjects" />
			
			<xsd:element name="hasRawContent" type="xsd:string" />
			<xsd:element name="hasRawContentResponse" type="xsd:boolean" />
			
			<xsd:element name="getInfoObject" type="smstypes:FileTransferParameters" />
			<xsd:element name="getInfoObjectResponse" type="smstypes:InfoObjectDescription" />
			
			<xsd:element name="getInfoObjects" type="smstypes:ArrayOfFileTransferParameters" />
			<xsd:element name="getInfoObjectsResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="associateRawContent" type="smstypes:FileTransferParameters" />
			<xsd:element name="associateRawContentResponse" type="smstypes:VoidType" />
			
			<xsd:element name="updateRawContent" type="smstypes:FileTransferParameters" />
			<xsd:element name="updateRawContentResponse" type="smstypes:VoidType" />
			
			<xsd:element name="updateRawContentBulk" type="smstypes:ArrayOfFileTransferParameters" />
			<xsd:element name="updateRawContentBulkResponse" type="smstypes:ArrayOfInfoOIDAndHints" />
			
			<xsd:element name="removeRawContent" type="xsd:string" />
			<xsd:element name="removeRawContentResponse" type="xsd:boolean" />
			
			<xsd:element name="addReference" type="smstypes:ReferenceDescription" />
			<xsd:element name="addReferenceResponse" type="smstypes:VoidType" />
			
			<xsd:element name="addReferences" type="smstypes:ArrayOfReferenceDescription" />
			<xsd:element name="addReferencesResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="removeReference" type="smstypes:ReferenceSelector" />
			<xsd:element name="removeReferenceResponse" type="xsd:boolean" />
			
			<xsd:element name="removeReferences" type="smstypes:ArrayOfReferenceSelector" />
			<xsd:element name="removeReferencesResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="retrieveReferences" type="smstypes:SourceReferenceSelector" />
			<xsd:element name="retrieveReferencesResponse" type="smstypes:ArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferencesBulk" type="smstypes:ArrayOfSourceReferenceSelector" />
			<xsd:element name="retrieveReferencesBulkResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="retrieveReferenceTargetOIDs" type="smstypes:SourceReferenceSelector" />
			<xsd:element name="retrieveReferenceTargetOIDsResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveReferenceTargetOIDsBulk" type="smstypes:ArrayOfSourceReferenceSelector" />
			<xsd:element name="retrieveReferenceTargetOIDsBulkResponse" type="smstypes:ArrayOfSourceReferenceResultItem" />
			
			<xsd:element name="retrieveReferredAll" type="smstypes:TargetReferenceSelector" />
			<xsd:element name="retrieveReferredAllResponse" type="smstypes:ArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferredAllBulk" type="smstypes:ArrayOfTargetReferenceSelector" />
			<xsd:element name="retrieveReferredAllBulkResponse" type="smstypes:ArrayOfArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferredSourceOIDs" type="smstypes:TargetReferenceSelector" />
			<xsd:element name="retrieveReferredSourceOIDsResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveReferredSourceOIDsBulk" type="smstypes:ArrayOfTargetReferenceSelector" />
			<xsd:element name="retrieveReferredSourceOIDsBulkResponse" type="smstypes:ArrayOfTargetReferenceResultItem" />
			
			<xsd:element name="retrieveOIDInRelationWithAll" type="smstypes:ArrayOfFlexibleReferenceSelector" />
			<xsd:element name="retrieveOIDInRelationWithAllResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveObjectsInRelationWithAll" type="smstypes:ArrayOfFlexibleReferenceSelector" />
			<xsd:element name="retrieveObjectsInRelationWithAllResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="setStorageProperty" type="smstypes:PropertyDescription" />
			<xsd:element name="setStoragePropertyResponse" type="smstypes:VoidType" />
			
			<xsd:element name="unsetStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="unsetStoragePropertyResponse" type="xsd:boolean" />
			
			<xsd:element name="retrieveStorageProperties" type="xsd:string" />
			<xsd:element name="retrieveStoragePropertiesResponse" type="smstypes:ArrayOfPropertyDescription" />
			
			<xsd:element name="retrieveStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="retrieveStoragePropertyResponse" type="smstypes:PropertyDescription" />
			
			<xsd:element name="retrieveOIDsByStorageProperty" type="smstypes:ByPropertyValueSelector" />
			<xsd:element name="retrieveOIDsByStoragePropertyResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveOIDsHavingAllStorageProperties" type="smstypes:ArrayOfByPropertyValueSelector" />
			<xsd:element name="retrieveOIDsHavingAllStoragePropertiesResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveObjectsHavingAllStorageProperties" type="smstypes:ArrayOfByPropertyValueSelector" />
			<xsd:element name="retrieveObjectsHavingAllStoragePropertiesResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="hasStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="hasStoragePropertyResponse" type="xsd:boolean" />
			
			<xsd:element name="getVolatileInformation" type="smstypes:GetVolatileInformationParameters" />
			<xsd:element name="getVolatileInformationResponse" type="smstypes:VolatileInformation" />
			
			<xsd:element name="existsInfoObject" type="xsd:string" />
			<xsd:element name="existsInfoObjectResponse" type="xsd:boolean" />
			
			<xsd:element name="resultSetEndpoint" type="xsd:string" />
		
		</xsd:schema>
	</types>
	
	<message name="createInfoObjectInputMessage">
		<part name="parameters" element="tns:createInfoObject" />
	</message>
	<message name="createInfoObjectOutputMessage">
		<part name="parameters" element="tns:createInfoObjectResponse" />
	</message>
	
	<message name="createInfoObjectWithContentInputMessage">
		<part name="parameters" element="tns:createInfoObjectWithContent" />
	</message>
	<message name="createInfoObjectWithContentOutputMessage">
		<part name="parameters" element="tns:createInfoObjectWithContentResponse" />
	</message>
	
	<message name="createInfoObjectsWithContentInputMessage">
		<part name="parameters" element="tns:createInfoObjectsWithContent" />
	</message>
	<message name="createInfoObjectsWithContentOutputMessage">
		<part name="parameters" element="tns:createInfoObjectsWithContentResponse" />
	</message>
	
	<message name="createInfoObjectsWithContentRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="createInfoObjectsWithContentRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="removeInfoObjectInputMessage">
		<part name="parameters" element="tns:removeInfoObject" />
	</message>
	<message name="removeInfoObjectOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectResponse" />
	</message>
	
	<message name="removeInfoObjectAsyncInputMessage">
		<part name="parameters" element="tns:removeInfoObjectAsync" />
	</message>
	<message name="removeInfoObjectAsyncOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectAsyncResponse" />
	</message>
	
	<message name="removeInfoObjectsInputMessage">
		<part name="parameters" element="tns:removeInfoObjects" />
	</message>
	<message name="removeInfoObjectsOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectsResponse" />
	</message>
	
	<message name="removeInfoObjectsRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="removeInfoObjectsRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="getInfoObjectInputMessage">
		<part name="parameters" element="tns:getInfoObject" />
	</message>
	<message name="getInfoObjectOutputMessage">
		<part name="parameters" element="tns:getInfoObjectResponse" />
	</message>
	
	<message name="getInfoObjectsInputMessage">
		<part name="parameters" element="tns:getInfoObjects" />
	</message>
	<message name="getInfoObjectsOutputMessage">
		<part name="parameters" element="tns:getInfoObjectsResponse" />
	</message>
	
	<message name="getInfoObjectsRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="getInfoObjectsRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="associateRawContentInputMessage">
		<part name="parameters" element="tns:associateRawContent" />
	</message>
	<message name="associateRawContentOutputMessage">
		<part name="parameters" element="tns:associateRawContentResponse" />
	</message>
	
	<message name="updateRawContentInputMessage">
		<part name="parameters" element="tns:updateRawContent" />
	</message>
	<message name="updateRawContentOutputMessage">
		<part name="parameters" element="tns:updateRawContentResponse" />
	</message>
	
	<message name="updateRawContentBulkInputMessage">
		<part name="parameters" element="tns:updateRawContentBulk" />
	</message>
	<message name="updateRawContentBulkOutputMessage">
		<part name="parameters" element="tns:updateRawContentBulkResponse" />
	</message>
	
	<message name="updateRawContentRSInputMessage">
		<part name="request" element="tns:updateRawContentBulk" />
	</message>
	<message name="updateRawContentRSOutputMessage">
		<part name="response" element="tns:updateRawContentBulkResponse" />
	</message>
	
	<message name="removeRawContentInputMessage">
		<part name="parameters" element="tns:removeRawContent" />
	</message>
	<message name="removeRawContentOutputMessage">
		<part name="parameters" element="tns:removeRawContentResponse" />
	</message>
	
	<message name="addReferenceInputMessage">
		<part name="parameters" element="tns:addReference" />
	</message>
	<message name="addReferenceOutputMessage">
		<part name="parameters" element="tns:addReferenceResponse" />
	</message>
	
	<message name="addReferencesInputMessage">
		<part name="parameters" element="tns:addReferences" />
	</message>
	<message name="addReferencesOutputMessage">
		<part name="parameters" element="tns:addReferencesResponse" />
	</message>
	
	<message name="addReferencesRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="addReferencesRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="removeReferenceInputMessage">
		<part name="parameters" element="tns:removeReference" />
	</message>
	<message name="removeReferenceOutputMessage">
		<part name="parameters" element="tns:removeReferenceResponse" />
	</message>
	
	<message name="removeReferencesInputMessage">
		<part name="parameters" element="tns:removeReferences" />
	</message>
	<message name="removeReferencesOutputMessage">
		<part name="parameters" element="tns:removeReferencesResponse" />
	</message>
	
	<message name="removeReferencesRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="removeReferencesRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="retrieveReferencesInputMessage">
		<part name="parameters" element="tns:retrieveReferences" />
	</message>
	<message name="retrieveReferencesOutputMessage">
		<part name="parameters" element="tns:retrieveReferencesResponse" />
	</message>
	
	<message name="retrieveReferencesBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferencesBulk" />
	</message>
	<message name="retrieveReferencesBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferencesBulkResponse" />
	</message>
	
	<message name="retrieveReferredSourceOIDsInputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDs" />
	</message>
	<message name="retrieveReferredSourceOIDsOutputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsResponse" />
	</message>
	
	<message name="retrieveReferredSourceOIDsBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsBulk" />
	</message>
	<message name="retrieveReferredSourceOIDsBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsBulkResponse" />
	</message>
	
	<message name="retrieveReferenceTargetOIDsInputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDs" />
	</message>
	<message name="retrieveReferenceTargetOIDsOutputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsResponse" />
	</message>
	
	<message name="retrieveReferenceTargetOIDsBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsBulk" />
	</message>
	<message name="retrieveReferenceTargetOIDsBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsBulkResponse" />
	</message>
	
	<message name="retrieveReferredAllInputMessage">
		<part name="parameters" element="tns:retrieveReferredAll" />
	</message>
	<message name="retrieveReferredAllOutputMessage">
		<part name="parameters" element="tns:retrieveReferredAllResponse" />
	</message>
	
	<message name="retrieveOIDInRelationWithAllInputMessage">
		<part name="parameters" element="tns:retrieveOIDInRelationWithAll" />
	</message>
	<message name="retrieveOIDInRelationWithAllOutputMessage">
		<part name="parameters" element="tns:retrieveOIDInRelationWithAllResponse" />
	</message>
	
	<message name="retrieveObjectsInRelationWithAllInputMessage">
		<part name="parameters" element="tns:retrieveObjectsInRelationWithAll" />
	</message>
	<message name="retrieveObjectsInRelationWithAllOutputMessage">
		<part name="parameters" element="tns:retrieveObjectsInRelationWithAllResponse" />
	</message>
	
	<message name="setStoragePropertyInputMessage">
		<part name="parameters" element="tns:setStorageProperty" />
	</message>
	<message name="setStoragePropertyOutputMessage">
		<part name="parameters" element="tns:setStoragePropertyResponse" />
	</message>
	
	<message name="unsetStoragePropertyInputMessage">
		<part name="parameters" element="tns:unsetStorageProperty" />
	</message>
	<message name="unsetStoragePropertyOutputMessage">
		<part name="parameters" element="tns:unsetStoragePropertyResponse" />
	</message>
	
	<message name="retrieveStoragePropertyInputMessage">
		<part name="parameters" element="tns:retrieveStorageProperty" />
	</message>
	<message name="retrieveStoragePropertyOutputMessage">
		<part name="parameters" element="tns:retrieveStoragePropertyResponse" />
	</message>
	
	<message name="retrieveStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveStorageProperties" />
	</message>
	<message name="retrieveStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveStoragePropertiesResponse" />
	</message>
	
	<message name="retrieveOIDsByStoragePropertyInputMessage">
		<part name="parameters" element="tns:retrieveOIDsByStorageProperty" />
	</message>
	<message name="retrieveOIDsByStoragePropertyOutputMessage">
		<part name="parameters" element="tns:retrieveOIDsByStoragePropertyResponse" />
	</message>
	
	<message name="retrieveOIDsHavingAllStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveOIDsHavingAllStorageProperties" />
	</message>
	<message name="retrieveOIDsHavingAllStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveOIDsHavingAllStoragePropertiesResponse" />
	</message>
	
	<message name="retrieveObjectsHavingAllStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveObjectsHavingAllStorageProperties" />
	</message>
	<message name="retrieveObjectsHavingAllStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveObjectsHavingAllStoragePropertiesResponse" />
	</message>
	
	<message name="hasRawContentInputMessage">
		<part name="parameters" element="tns:hasRawContent" />
	</message>
	<message name="hasRawContentOutputMessage">
		<part name="parameters" element="tns:hasRawContentResponse" />
	</message>
	
	<message name="hasStoragePropertyInputMessage">
		<part name="parameters" element="tns:hasStorageProperty" />
	</message>
	<message name="hasStoragePropertyOutputMessage">
		<part name="parameters" element="tns:hasStoragePropertyResponse" />
	</message>
	
	<message name="getVolatileInformationInputMessage">
		<part name="parameters" element="tns:getVolatileInformation" />
	</message>
	<message name="getVolatileInformationOutputMessage">
		<part name="parameters" element="tns:getVolatileInformationResponse" />
	</message>
	
	<message name="existsInfoObjectInputMessage">
		<part name="parameters" element="tns:existsInfoObject" />
	</message>
	<message name="existsInfoObjectOutputMessage">
		<part name="parameters" element="tns:existsInfoObjectResponse" />
	</message>

<!-- fault messages -->
	
	<message name="GCUBEUnrecoverableObjectNotFoundFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableObjectNotFoundFaultElement"/>
	</message>
	
	<message name="GCUBEUnrecoverableValueNotValidFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableValueNotValidFaultElement"/>
	</message>
	
	<message name="GCUBEUnrecoverableIOFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableIOFaultElement"/>
	</message>
	
	<message name="GCUBERetryEquivalentIOFaultMessage">
		<part name="fault" element="smstypes:GCUBERetryEquivalentIOFaultElement"/>
	</message>
	
	<message name="GCUBERetrySameIOFaultMessage">
		<part name="fault" element="smstypes:GCUBERetrySameIOFaultElement"/>
	</message>
	
	
	<portType name="SMSPortType1PortType">
		<documentation>The Storage Management Service provides the basic operations atop our storage model 
for inserting, manipulating, fetching, and deleting information objects as being a 
generic abstraction of different concrete object types. This includes assignment of 
storage properties and set up of inter-object relationships. It also provides 
operations for associating information objects with file-base documents stored in 
gLite storage elements. This service is a WSRF compliant Web Service.

It is the service front-end to the storage layer. It is contacted by clients from 
the content layer of the layered architecture in the Content and Metadata Management 
of DILIGENT. It requires the Storage Layer Library and underlying Base Layer being 
available.

The main entities managed by Storage Management are Information Objects.
Each information object may comprise a list of storage properties represented as simple 
key-type-value associations. 
Those storage properties are atomic whereas complex metadata (like indexes, multimedia features) 
may also be represented as separate information object that is associated to the object. 
Plain tags should be favored, whenever querying is a requirement or attribute-level 
access to certain metadata fields shall be provided within the storage manager.

An information object may be an abstraction over a file-based document (which is stored in gLite SEs), 
a BLOB-field representation of content, a simple document with no associated content 
(besides storage properties and/or object references), 
and a complex object that references to other objects. 
Notice, that complex documents are permitted to have content (file, BLOB) 
associated to it. The storage manager does not maintain consistency of the document 
content and explicit references to other objects. 
For instance, an HTML document that includes a number of images may be modeled as a 
complex object that provides references to information objects (containing the images). 
Alternatively, any XML (also HTML) document can be made persistent within storage management 
without having the complete XML file associated to the respective information object 
as raw content. To do so, one can exploit the relationship attributes on role 
(of the relationship), position (of the contained object within the containing object), 
and cardinality. The advantage of having no duplicate association information 
(implicit to Storage Management in the XML file and explicit as persistent object relationship) 
comes at the price of providing parsers for XML documents (and possibly also other 
container formats) that break up XML structures into their parts.

An object reference 'links' two information objects. Each object may (1) reference many 
other objects and (2) may be referenced by many objects (m-n relationship). 
To instantiate on this generic object reference, role names, reference types, 
a position tag (to reconstruct a view of the referring object by composing it out 
of its referenced objects), and a delete propagation rule (consulted upon removal of the 
referring object to determine whether to automatically delete the referred object) 
attribute the link. For instance, a reference type may be 'indexes' with a role name that 
gives additional information, like 'full-text index'. 
In addition, a positioning attribute helps in representing an object that references to 
other objects, like an aggregate made up of components that have to be fitted together 
in a certain order. 
Propagate role provides removal constraints to the storage manager 
(i.e. the Storage Management service). In detail, different reference types may impose 
different rules when deleting a referenced object. 
For instance, component objects (appearing as collection members) will not be deleted if 
the collection is removed. In contrast, an associated index will be removed.
</documentation>
		<operation name="createInfoObject">
			<documentation>Creates a new information object that does not (yet) have any content associated with it.</documentation>
			<input message="tns:createInfoObjectInputMessage" />
			<output message="tns:createInfoObjectOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage">
			<documentation>In case same parameter was invalid, e.g. one of the specified hints was illegal.</documentation>
			</fault>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage">
			<documentation>In case of failure of the communication with some subsystem.</documentation>
			</fault>
		</operation>
		
		<operation name="createInfoObjectWithContent">
			<input message="tns:createInfoObjectWithContentInputMessage" />
			<output message="tns:createInfoObjectWithContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="createInfoObjectsWithContent">
			<input message="tns:createInfoObjectsWithContentInputMessage" />
			<output message="tns:createInfoObjectsWithContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="createInfoObjectsWithContentRS">
			<input message="tns:createInfoObjectsWithContentRSInputMessage" />
			<output message="tns:createInfoObjectsWithContentRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObject">
		<documentation>Deletes an information object. This will trigger propagation of deletions if corresponding relations exist.</documentation>
			<input message="tns:removeInfoObjectInputMessage" />
			<output message="tns:removeInfoObjectOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjectAsync">
		<documentation>Deletes an information object in background. This will return before the triggered propagation of deletions has finished to avoid long waits, e.g. a huge collection with all its content gets deleted.</documentation>
			<input message="tns:removeInfoObjectAsyncInputMessage" />
			<output message="tns:removeInfoObjectAsyncOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjects">
		<documentation>By-Value-Bulk implementation of removeInfoObject to remove a list of information objects. In case some deletion was not successful, a list of objects that could not be deleted is reported.</documentation>
			<input message="tns:removeInfoObjectsInputMessage" />
			<output message="tns:removeInfoObjectsOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjectsRS">
		<documentation>By-Reference implementation of removeInfoObject to remove a list of information objects. In case some deletion was not successful, a list of objects that could not be deleted is reported.</documentation>
			<input message="tns:removeInfoObjectsRSInputMessage" >
			<documentation>The EPR from which the ResultSet containing elements of type removeInfoObject can be read.</documentation>
			</input>
			<output message="tns:removeInfoObjectsRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObject">
			<input message="tns:getInfoObjectInputMessage" />
			<output message="tns:getInfoObjectOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObjects">
			<input message="tns:getInfoObjectsInputMessage" />
			<output message="tns:getInfoObjectsOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObjectsRS">
			<input message="tns:getInfoObjectsRSInputMessage" />
			<output message="tns:getInfoObjectsRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="associateRawContent">
			<input message="tns:associateRawContentInputMessage" />
			<output message="tns:associateRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContent">
			<input message="tns:updateRawContentInputMessage" />
			<output message="tns:updateRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContentBulk">
			<input message="tns:updateRawContentBulkInputMessage" />
			<output message="tns:updateRawContentBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContentRS">
			<input message="tns:updateRawContentRSInputMessage" />
			<output message="tns:updateRawContentRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeRawContent">
			<input message="tns:removeRawContentInputMessage" />
			<output message="tns:removeRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReference">
			<input message="tns:addReferenceInputMessage" />
			<output message="tns:addReferenceOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReferences">
			<input message="tns:addReferencesInputMessage" />
			<output message="tns:addReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReferencesRS">
			<input message="tns:addReferencesRSInputMessage" />
			<output message="tns:addReferencesRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReference">
			<input message="tns:removeReferenceInputMessage" />
			<output message="tns:removeReferenceOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReferences">
			<input message="tns:removeReferencesInputMessage" />
			<output message="tns:removeReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReferencesRS">
			<input message="tns:removeReferencesRSInputMessage" />
			<output message="tns:removeReferencesRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferences">
			<input message="tns:retrieveReferencesInputMessage" />
			<output message="tns:retrieveReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferenceTargetOIDs">
			<input message="tns:retrieveReferenceTargetOIDsInputMessage" />
			<output message="tns:retrieveReferenceTargetOIDsOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferenceTargetOIDsBulk">
			<input message="tns:retrieveReferenceTargetOIDsBulkInputMessage" />
			<output message="tns:retrieveReferenceTargetOIDsBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredSourceOIDs">
			<input message="tns:retrieveReferredSourceOIDsInputMessage" />
			<output message="tns:retrieveReferredSourceOIDsOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredSourceOIDsBulk">
			<input message="tns:retrieveReferredSourceOIDsBulkInputMessage" />
			<output message="tns:retrieveReferredSourceOIDsBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredAll">
			<input message="tns:retrieveReferredAllInputMessage" />
			<output message="tns:retrieveReferredAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveOIDInRelationWithAll">
			<input message="tns:retrieveOIDInRelationWithAllInputMessage" />
			<output message="tns:retrieveOIDInRelationWithAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveObjectsInRelationWithAll">
			<input message="tns:retrieveObjectsInRelationWithAllInputMessage" />
			<output message="tns:retrieveObjectsInRelationWithAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="setStorageProperty">
			<input message="tns:setStoragePropertyInputMessage" />
			<output message="tns:setStoragePropertyOutputMessage"/>
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="unsetStorageProperty">
			<input message="tns:unsetStoragePropertyInputMessage" />
			<output message="tns:unsetStoragePropertyOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveStorageProperty">
			<input message="tns:retrieveStoragePropertyInputMessage" />
			<output message="tns:retrieveStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveStorageProperties">
			<input message="tns:retrieveStoragePropertiesInputMessage" />
			<output message="tns:retrieveStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
	
		
		<operation name="retrieveOIDsByStorageProperty">
			<input message="tns:retrieveOIDsByStoragePropertyInputMessage" />
			<output message="tns:retrieveOIDsByStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveOIDsHavingAllStorageProperties">
			<input message="tns:retrieveOIDsHavingAllStoragePropertiesInputMessage" />
			<output message="tns:retrieveOIDsHavingAllStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveObjectsHavingAllStorageProperties">
			<input message="tns:retrieveObjectsHavingAllStoragePropertiesInputMessage" />
			<output message="tns:retrieveObjectsHavingAllStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="hasStorageProperty">
			<input message="tns:hasStoragePropertyInputMessage" />
			<output message="tns:hasStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="hasRawContent">
			<input message="tns:hasRawContentInputMessage" />
			<output message="tns:hasRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getVolatileInformation">
			<input message="tns:getVolatileInformationInputMessage" />
			<output message="tns:getVolatileInformationOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="existsInfoObject">
			<input message="tns:existsInfoObjectInputMessage" />
			<output message="tns:existsInfoObjectOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
	
	</portType>
</definitions></WSDL>
                </PortType>
                <PortType>
                    <Name>gcube/contentmanagement/storagelayer/storagemanagementservice/porttype</Name>
                    <WSDL>
<definitions name="SMSPortType1"
    targetNamespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice"
    xmlns:tns="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice"
    xmlns:smstypes="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice/types"
  	xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:wsdlpp="http://www.globus.org/namespaces/2004/10/WSDLPreprocessor"
    xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd"
    xmlns:coretypes="http://gcube-system.org/namespaces/common/core/types"
    xmlns:corefaults="http://gcube-system.org/namespaces/common/core/faults"
    xmlns:provider="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider">
    
    <import namespace="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider" location="../gcube/common/core/providers/GCUBEProvider.wsdl"/>
    <import namespace="http://gcube-system.org/namespaces/common/core/faults" location="../gcube/common/core/faults/GCUBEFaults.wsdl"/>

	
	<types>
		<xsd:schema targetNamespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice" xmlns:wsbf="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-BaseFaults-1.2-draft-01.xsd">
		<!-- required for  porttypes -->
		<xsd:import namespace="http://gcube-system.org/namespaces/common/core/types" schemaLocation="../gcube/common/core/types/GCUBETypes.xsd"/>
		<!-- required for factory porttypes -->
		<xsd:import namespace="http://schemas.xmlsoap.org/ws/2004/03/addressing" schemaLocation="../ws/addressing/WS-Addressing.xsd" />
		<!-- SMS commons types definition -->
		<xsd:import namespace="http://gcube-system.org/namespaces/contentmanagement/storagelayer/storagemanagementservice/types" schemaLocation="SMSTypes.xsd"/>
		
		
		<!-- elements -->
			
			<xsd:element name="createInfoObject" type="smstypes:NameAndType" />
			<xsd:element name="createInfoObjectResponse" type="xsd:string" />
			
			<xsd:element name="createInfoObjectsWithContent" type="smstypes:ArrayOfCreateInfoObjectReferencesProperties" />
			<xsd:element name="createInfoObjectsWithContentResponse" type="smstypes:ArrayOfInfoOIDAndHints" />
			
			<xsd:element name="createInfoObjectWithContent" type="smstypes:CreateInfoObjectReferencesProperties" />
			<xsd:element name="createInfoObjectWithContentResponse" type="smstypes:InfoObjectIDAndConsumedHints" />
			
			<xsd:element name="removeInfoObject" type="xsd:string" />
			<xsd:element name="removeInfoObjectResponse" type="xsd:boolean" />
			
			<xsd:element name="removeInfoObjectAsync" type="xsd:string" />
			<xsd:element name="removeInfoObjectAsyncResponse" type="xsd:boolean" />
			
			<xsd:element name="removeInfoObjects" type="smstypes:ArrayOfString" />
			<xsd:element name="removeInfoObjectsResponse" type="smstypes:ArrayOfFailedObjects" />
			
			<xsd:element name="hasRawContent" type="xsd:string" />
			<xsd:element name="hasRawContentResponse" type="xsd:boolean" />
			
			<xsd:element name="getInfoObject" type="smstypes:FileTransferParameters" />
			<xsd:element name="getInfoObjectResponse" type="smstypes:InfoObjectDescription" />
			
			<xsd:element name="getInfoObjects" type="smstypes:ArrayOfFileTransferParameters" />
			<xsd:element name="getInfoObjectsResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="associateRawContent" type="smstypes:FileTransferParameters" />
			<xsd:element name="associateRawContentResponse" type="smstypes:VoidType" />
			
			<xsd:element name="updateRawContent" type="smstypes:FileTransferParameters" />
			<xsd:element name="updateRawContentResponse" type="smstypes:VoidType" />
			
			<xsd:element name="updateRawContentBulk" type="smstypes:ArrayOfFileTransferParameters" />
			<xsd:element name="updateRawContentBulkResponse" type="smstypes:ArrayOfInfoOIDAndHints" />
			
			<xsd:element name="removeRawContent" type="xsd:string" />
			<xsd:element name="removeRawContentResponse" type="xsd:boolean" />
			
			<xsd:element name="addReference" type="smstypes:ReferenceDescription" />
			<xsd:element name="addReferenceResponse" type="smstypes:VoidType" />
			
			<xsd:element name="addReferences" type="smstypes:ArrayOfReferenceDescription" />
			<xsd:element name="addReferencesResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="removeReference" type="smstypes:ReferenceSelector" />
			<xsd:element name="removeReferenceResponse" type="xsd:boolean" />
			
			<xsd:element name="removeReferences" type="smstypes:ArrayOfReferenceSelector" />
			<xsd:element name="removeReferencesResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="retrieveReferences" type="smstypes:SourceReferenceSelector" />
			<xsd:element name="retrieveReferencesResponse" type="smstypes:ArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferencesBulk" type="smstypes:ArrayOfSourceReferenceSelector" />
			<xsd:element name="retrieveReferencesBulkResponse" type="smstypes:ArrayOfBulkReferenceResultItem" />
			
			<xsd:element name="retrieveReferenceTargetOIDs" type="smstypes:SourceReferenceSelector" />
			<xsd:element name="retrieveReferenceTargetOIDsResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveReferenceTargetOIDsBulk" type="smstypes:ArrayOfSourceReferenceSelector" />
			<xsd:element name="retrieveReferenceTargetOIDsBulkResponse" type="smstypes:ArrayOfSourceReferenceResultItem" />
			
			<xsd:element name="retrieveReferredAll" type="smstypes:TargetReferenceSelector" />
			<xsd:element name="retrieveReferredAllResponse" type="smstypes:ArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferredAllBulk" type="smstypes:ArrayOfTargetReferenceSelector" />
			<xsd:element name="retrieveReferredAllBulkResponse" type="smstypes:ArrayOfArrayOfReferenceDescription" />
			
			<xsd:element name="retrieveReferredSourceOIDs" type="smstypes:TargetReferenceSelector" />
			<xsd:element name="retrieveReferredSourceOIDsResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveReferredSourceOIDsBulk" type="smstypes:ArrayOfTargetReferenceSelector" />
			<xsd:element name="retrieveReferredSourceOIDsBulkResponse" type="smstypes:ArrayOfTargetReferenceResultItem" />
			
			<xsd:element name="retrieveOIDInRelationWithAll" type="smstypes:ArrayOfFlexibleReferenceSelector" />
			<xsd:element name="retrieveOIDInRelationWithAllResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveObjectsInRelationWithAll" type="smstypes:ArrayOfFlexibleReferenceSelector" />
			<xsd:element name="retrieveObjectsInRelationWithAllResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="setStorageProperty" type="smstypes:PropertyDescription" />
			<xsd:element name="setStoragePropertyResponse" type="smstypes:VoidType" />
			
			<xsd:element name="unsetStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="unsetStoragePropertyResponse" type="xsd:boolean" />
			
			<xsd:element name="retrieveStorageProperties" type="xsd:string" />
			<xsd:element name="retrieveStoragePropertiesResponse" type="smstypes:ArrayOfPropertyDescription" />
			
			<xsd:element name="retrieveStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="retrieveStoragePropertyResponse" type="smstypes:PropertyDescription" />
			
			<xsd:element name="retrieveOIDsByStorageProperty" type="smstypes:ByPropertyValueSelector" />
			<xsd:element name="retrieveOIDsByStoragePropertyResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveOIDsHavingAllStorageProperties" type="smstypes:ArrayOfByPropertyValueSelector" />
			<xsd:element name="retrieveOIDsHavingAllStoragePropertiesResponse" type="smstypes:ArrayOfString" />
			
			<xsd:element name="retrieveObjectsHavingAllStorageProperties" type="smstypes:ArrayOfByPropertyValueSelector" />
			<xsd:element name="retrieveObjectsHavingAllStoragePropertiesResponse" type="smstypes:ArrayOfInfoObjectDescription" />
			
			<xsd:element name="hasStorageProperty" type="smstypes:PropertySelector" />
			<xsd:element name="hasStoragePropertyResponse" type="xsd:boolean" />
			
			<xsd:element name="getVolatileInformation" type="smstypes:GetVolatileInformationParameters" />
			<xsd:element name="getVolatileInformationResponse" type="smstypes:VolatileInformation" />
			
			<xsd:element name="existsInfoObject" type="xsd:string" />
			<xsd:element name="existsInfoObjectResponse" type="xsd:boolean" />
			
			<xsd:element name="resultSetEndpoint" type="xsd:string" />
		
		</xsd:schema>
	</types>
	
	<message name="createInfoObjectInputMessage">
		<part name="parameters" element="tns:createInfoObject" />
	</message>
	<message name="createInfoObjectOutputMessage">
		<part name="parameters" element="tns:createInfoObjectResponse" />
	</message>
	
	<message name="createInfoObjectWithContentInputMessage">
		<part name="parameters" element="tns:createInfoObjectWithContent" />
	</message>
	<message name="createInfoObjectWithContentOutputMessage">
		<part name="parameters" element="tns:createInfoObjectWithContentResponse" />
	</message>
	
	<message name="createInfoObjectsWithContentInputMessage">
		<part name="parameters" element="tns:createInfoObjectsWithContent" />
	</message>
	<message name="createInfoObjectsWithContentOutputMessage">
		<part name="parameters" element="tns:createInfoObjectsWithContentResponse" />
	</message>
	
	<message name="createInfoObjectsWithContentRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="createInfoObjectsWithContentRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="removeInfoObjectInputMessage">
		<part name="parameters" element="tns:removeInfoObject" />
	</message>
	<message name="removeInfoObjectOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectResponse" />
	</message>
	
	<message name="removeInfoObjectAsyncInputMessage">
		<part name="parameters" element="tns:removeInfoObjectAsync" />
	</message>
	<message name="removeInfoObjectAsyncOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectAsyncResponse" />
	</message>
	
	<message name="removeInfoObjectsInputMessage">
		<part name="parameters" element="tns:removeInfoObjects" />
	</message>
	<message name="removeInfoObjectsOutputMessage">
		<part name="parameters" element="tns:removeInfoObjectsResponse" />
	</message>
	
	<message name="removeInfoObjectsRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="removeInfoObjectsRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="getInfoObjectInputMessage">
		<part name="parameters" element="tns:getInfoObject" />
	</message>
	<message name="getInfoObjectOutputMessage">
		<part name="parameters" element="tns:getInfoObjectResponse" />
	</message>
	
	<message name="getInfoObjectsInputMessage">
		<part name="parameters" element="tns:getInfoObjects" />
	</message>
	<message name="getInfoObjectsOutputMessage">
		<part name="parameters" element="tns:getInfoObjectsResponse" />
	</message>
	
	<message name="getInfoObjectsRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="getInfoObjectsRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="associateRawContentInputMessage">
		<part name="parameters" element="tns:associateRawContent" />
	</message>
	<message name="associateRawContentOutputMessage">
		<part name="parameters" element="tns:associateRawContentResponse" />
	</message>
	
	<message name="updateRawContentInputMessage">
		<part name="parameters" element="tns:updateRawContent" />
	</message>
	<message name="updateRawContentOutputMessage">
		<part name="parameters" element="tns:updateRawContentResponse" />
	</message>
	
	<message name="updateRawContentBulkInputMessage">
		<part name="parameters" element="tns:updateRawContentBulk" />
	</message>
	<message name="updateRawContentBulkOutputMessage">
		<part name="parameters" element="tns:updateRawContentBulkResponse" />
	</message>
	
	<message name="updateRawContentRSInputMessage">
		<part name="request" element="tns:updateRawContentBulk" />
	</message>
	<message name="updateRawContentRSOutputMessage">
		<part name="response" element="tns:updateRawContentBulkResponse" />
	</message>
	
	<message name="removeRawContentInputMessage">
		<part name="parameters" element="tns:removeRawContent" />
	</message>
	<message name="removeRawContentOutputMessage">
		<part name="parameters" element="tns:removeRawContentResponse" />
	</message>
	
	<message name="addReferenceInputMessage">
		<part name="parameters" element="tns:addReference" />
	</message>
	<message name="addReferenceOutputMessage">
		<part name="parameters" element="tns:addReferenceResponse" />
	</message>
	
	<message name="addReferencesInputMessage">
		<part name="parameters" element="tns:addReferences" />
	</message>
	<message name="addReferencesOutputMessage">
		<part name="parameters" element="tns:addReferencesResponse" />
	</message>
	
	<message name="addReferencesRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="addReferencesRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="removeReferenceInputMessage">
		<part name="parameters" element="tns:removeReference" />
	</message>
	<message name="removeReferenceOutputMessage">
		<part name="parameters" element="tns:removeReferenceResponse" />
	</message>
	
	<message name="removeReferencesInputMessage">
		<part name="parameters" element="tns:removeReferences" />
	</message>
	<message name="removeReferencesOutputMessage">
		<part name="parameters" element="tns:removeReferencesResponse" />
	</message>
	
	<message name="removeReferencesRSInputMessage">
		<part name="request" element="tns:resultSetEndpoint" />
	</message>
	<message name="removeReferencesRSOutputMessage">
		<part name="response" element="tns:resultSetEndpoint" />
	</message>
	
	<message name="retrieveReferencesInputMessage">
		<part name="parameters" element="tns:retrieveReferences" />
	</message>
	<message name="retrieveReferencesOutputMessage">
		<part name="parameters" element="tns:retrieveReferencesResponse" />
	</message>
	
	<message name="retrieveReferencesBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferencesBulk" />
	</message>
	<message name="retrieveReferencesBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferencesBulkResponse" />
	</message>
	
	<message name="retrieveReferredSourceOIDsInputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDs" />
	</message>
	<message name="retrieveReferredSourceOIDsOutputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsResponse" />
	</message>
	
	<message name="retrieveReferredSourceOIDsBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsBulk" />
	</message>
	<message name="retrieveReferredSourceOIDsBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferredSourceOIDsBulkResponse" />
	</message>
	
	<message name="retrieveReferenceTargetOIDsInputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDs" />
	</message>
	<message name="retrieveReferenceTargetOIDsOutputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsResponse" />
	</message>
	
	<message name="retrieveReferenceTargetOIDsBulkInputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsBulk" />
	</message>
	<message name="retrieveReferenceTargetOIDsBulkOutputMessage">
		<part name="parameters" element="tns:retrieveReferenceTargetOIDsBulkResponse" />
	</message>
	
	<message name="retrieveReferredAllInputMessage">
		<part name="parameters" element="tns:retrieveReferredAll" />
	</message>
	<message name="retrieveReferredAllOutputMessage">
		<part name="parameters" element="tns:retrieveReferredAllResponse" />
	</message>
	
	<message name="retrieveOIDInRelationWithAllInputMessage">
		<part name="parameters" element="tns:retrieveOIDInRelationWithAll" />
	</message>
	<message name="retrieveOIDInRelationWithAllOutputMessage">
		<part name="parameters" element="tns:retrieveOIDInRelationWithAllResponse" />
	</message>
	
	<message name="retrieveObjectsInRelationWithAllInputMessage">
		<part name="parameters" element="tns:retrieveObjectsInRelationWithAll" />
	</message>
	<message name="retrieveObjectsInRelationWithAllOutputMessage">
		<part name="parameters" element="tns:retrieveObjectsInRelationWithAllResponse" />
	</message>
	
	<message name="setStoragePropertyInputMessage">
		<part name="parameters" element="tns:setStorageProperty" />
	</message>
	<message name="setStoragePropertyOutputMessage">
		<part name="parameters" element="tns:setStoragePropertyResponse" />
	</message>
	
	<message name="unsetStoragePropertyInputMessage">
		<part name="parameters" element="tns:unsetStorageProperty" />
	</message>
	<message name="unsetStoragePropertyOutputMessage">
		<part name="parameters" element="tns:unsetStoragePropertyResponse" />
	</message>
	
	<message name="retrieveStoragePropertyInputMessage">
		<part name="parameters" element="tns:retrieveStorageProperty" />
	</message>
	<message name="retrieveStoragePropertyOutputMessage">
		<part name="parameters" element="tns:retrieveStoragePropertyResponse" />
	</message>
	
	<message name="retrieveStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveStorageProperties" />
	</message>
	<message name="retrieveStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveStoragePropertiesResponse" />
	</message>
	
	<message name="retrieveOIDsByStoragePropertyInputMessage">
		<part name="parameters" element="tns:retrieveOIDsByStorageProperty" />
	</message>
	<message name="retrieveOIDsByStoragePropertyOutputMessage">
		<part name="parameters" element="tns:retrieveOIDsByStoragePropertyResponse" />
	</message>
	
	<message name="retrieveOIDsHavingAllStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveOIDsHavingAllStorageProperties" />
	</message>
	<message name="retrieveOIDsHavingAllStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveOIDsHavingAllStoragePropertiesResponse" />
	</message>
	
	<message name="retrieveObjectsHavingAllStoragePropertiesInputMessage">
		<part name="parameters" element="tns:retrieveObjectsHavingAllStorageProperties" />
	</message>
	<message name="retrieveObjectsHavingAllStoragePropertiesOutputMessage">
		<part name="parameters" element="tns:retrieveObjectsHavingAllStoragePropertiesResponse" />
	</message>
	
	<message name="hasRawContentInputMessage">
		<part name="parameters" element="tns:hasRawContent" />
	</message>
	<message name="hasRawContentOutputMessage">
		<part name="parameters" element="tns:hasRawContentResponse" />
	</message>
	
	<message name="hasStoragePropertyInputMessage">
		<part name="parameters" element="tns:hasStorageProperty" />
	</message>
	<message name="hasStoragePropertyOutputMessage">
		<part name="parameters" element="tns:hasStoragePropertyResponse" />
	</message>
	
	<message name="getVolatileInformationInputMessage">
		<part name="parameters" element="tns:getVolatileInformation" />
	</message>
	<message name="getVolatileInformationOutputMessage">
		<part name="parameters" element="tns:getVolatileInformationResponse" />
	</message>
	
	<message name="existsInfoObjectInputMessage">
		<part name="parameters" element="tns:existsInfoObject" />
	</message>
	<message name="existsInfoObjectOutputMessage">
		<part name="parameters" element="tns:existsInfoObjectResponse" />
	</message>

<!-- fault messages -->
	
	<message name="GCUBEUnrecoverableObjectNotFoundFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableObjectNotFoundFaultElement"/>
	</message>
	
	<message name="GCUBEUnrecoverableValueNotValidFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableValueNotValidFaultElement"/>
	</message>
	
	<message name="GCUBEUnrecoverableIOFaultMessage">
		<part name="fault" element="smstypes:GCUBEUnrecoverableIOFaultElement"/>
	</message>
	
	<message name="GCUBERetryEquivalentIOFaultMessage">
		<part name="fault" element="smstypes:GCUBERetryEquivalentIOFaultElement"/>
	</message>
	
	<message name="GCUBERetrySameIOFaultMessage">
		<part name="fault" element="smstypes:GCUBERetrySameIOFaultElement"/>
	</message>
	
	
	<portType name="SMSPortType1PortType">
		<documentation>The Storage Management Service provides the basic operations atop our storage model 
for inserting, manipulating, fetching, and deleting information objects as being a 
generic abstraction of different concrete object types. This includes assignment of 
storage properties and set up of inter-object relationships. It also provides 
operations for associating information objects with file-base documents stored in 
gLite storage elements. This service is a WSRF compliant Web Service.

It is the service front-end to the storage layer. It is contacted by clients from 
the content layer of the layered architecture in the Content and Metadata Management 
of DILIGENT. It requires the Storage Layer Library and underlying Base Layer being 
available.

The main entities managed by Storage Management are Information Objects.
Each information object may comprise a list of storage properties represented as simple 
key-type-value associations. 
Those storage properties are atomic whereas complex metadata (like indexes, multimedia features) 
may also be represented as separate information object that is associated to the object. 
Plain tags should be favored, whenever querying is a requirement or attribute-level 
access to certain metadata fields shall be provided within the storage manager.

An information object may be an abstraction over a file-based document (which is stored in gLite SEs), 
a BLOB-field representation of content, a simple document with no associated content 
(besides storage properties and/or object references), 
and a complex object that references to other objects. 
Notice, that complex documents are permitted to have content (file, BLOB) 
associated to it. The storage manager does not maintain consistency of the document 
content and explicit references to other objects. 
For instance, an HTML document that includes a number of images may be modeled as a 
complex object that provides references to information objects (containing the images). 
Alternatively, any XML (also HTML) document can be made persistent within storage management 
without having the complete XML file associated to the respective information object 
as raw content. To do so, one can exploit the relationship attributes on role 
(of the relationship), position (of the contained object within the containing object), 
and cardinality. The advantage of having no duplicate association information 
(implicit to Storage Management in the XML file and explicit as persistent object relationship) 
comes at the price of providing parsers for XML documents (and possibly also other 
container formats) that break up XML structures into their parts.

An object reference 'links' two information objects. Each object may (1) reference many 
other objects and (2) may be referenced by many objects (m-n relationship). 
To instantiate on this generic object reference, role names, reference types, 
a position tag (to reconstruct a view of the referring object by composing it out 
of its referenced objects), and a delete propagation rule (consulted upon removal of the 
referring object to determine whether to automatically delete the referred object) 
attribute the link. For instance, a reference type may be 'indexes' with a role name that 
gives additional information, like 'full-text index'. 
In addition, a positioning attribute helps in representing an object that references to 
other objects, like an aggregate made up of components that have to be fitted together 
in a certain order. 
Propagate role provides removal constraints to the storage manager 
(i.e. the Storage Management service). In detail, different reference types may impose 
different rules when deleting a referenced object. 
For instance, component objects (appearing as collection members) will not be deleted if 
the collection is removed. In contrast, an associated index will be removed.
</documentation>
		<operation name="createInfoObject">
			<documentation>Creates a new information object that does not (yet) have any content associated with it.</documentation>
			<input message="tns:createInfoObjectInputMessage" />
			<output message="tns:createInfoObjectOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage">
			<documentation>In case same parameter was invalid, e.g. one of the specified hints was illegal.</documentation>
			</fault>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage">
			<documentation>In case of failure of the communication with some subsystem.</documentation>
			</fault>
		</operation>
		
		<operation name="createInfoObjectWithContent">
			<input message="tns:createInfoObjectWithContentInputMessage" />
			<output message="tns:createInfoObjectWithContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="createInfoObjectsWithContent">
			<input message="tns:createInfoObjectsWithContentInputMessage" />
			<output message="tns:createInfoObjectsWithContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="createInfoObjectsWithContentRS">
			<input message="tns:createInfoObjectsWithContentRSInputMessage" />
			<output message="tns:createInfoObjectsWithContentRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObject">
		<documentation>Deletes an information object. This will trigger propagation of deletions if corresponding relations exist.</documentation>
			<input message="tns:removeInfoObjectInputMessage" />
			<output message="tns:removeInfoObjectOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjectAsync">
		<documentation>Deletes an information object in background. This will return before the triggered propagation of deletions has finished to avoid long waits, e.g. a huge collection with all its content gets deleted.</documentation>
			<input message="tns:removeInfoObjectAsyncInputMessage" />
			<output message="tns:removeInfoObjectAsyncOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjects">
		<documentation>By-Value-Bulk implementation of removeInfoObject to remove a list of information objects. In case some deletion was not successful, a list of objects that could not be deleted is reported.</documentation>
			<input message="tns:removeInfoObjectsInputMessage" />
			<output message="tns:removeInfoObjectsOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeInfoObjectsRS">
		<documentation>By-Reference implementation of removeInfoObject to remove a list of information objects. In case some deletion was not successful, a list of objects that could not be deleted is reported.</documentation>
			<input message="tns:removeInfoObjectsRSInputMessage" >
			<documentation>The EPR from which the ResultSet containing elements of type removeInfoObject can be read.</documentation>
			</input>
			<output message="tns:removeInfoObjectsRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObject">
			<input message="tns:getInfoObjectInputMessage" />
			<output message="tns:getInfoObjectOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObjects">
			<input message="tns:getInfoObjectsInputMessage" />
			<output message="tns:getInfoObjectsOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getInfoObjectsRS">
			<input message="tns:getInfoObjectsRSInputMessage" />
			<output message="tns:getInfoObjectsRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="associateRawContent">
			<input message="tns:associateRawContentInputMessage" />
			<output message="tns:associateRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContent">
			<input message="tns:updateRawContentInputMessage" />
			<output message="tns:updateRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContentBulk">
			<input message="tns:updateRawContentBulkInputMessage" />
			<output message="tns:updateRawContentBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="updateRawContentRS">
			<input message="tns:updateRawContentRSInputMessage" />
			<output message="tns:updateRawContentRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeRawContent">
			<input message="tns:removeRawContentInputMessage" />
			<output message="tns:removeRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReference">
			<input message="tns:addReferenceInputMessage" />
			<output message="tns:addReferenceOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReferences">
			<input message="tns:addReferencesInputMessage" />
			<output message="tns:addReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="addReferencesRS">
			<input message="tns:addReferencesRSInputMessage" />
			<output message="tns:addReferencesRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReference">
			<input message="tns:removeReferenceInputMessage" />
			<output message="tns:removeReferenceOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReferences">
			<input message="tns:removeReferencesInputMessage" />
			<output message="tns:removeReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="removeReferencesRS">
			<input message="tns:removeReferencesRSInputMessage" />
			<output message="tns:removeReferencesRSOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferences">
			<input message="tns:retrieveReferencesInputMessage" />
			<output message="tns:retrieveReferencesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferenceTargetOIDs">
			<input message="tns:retrieveReferenceTargetOIDsInputMessage" />
			<output message="tns:retrieveReferenceTargetOIDsOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferenceTargetOIDsBulk">
			<input message="tns:retrieveReferenceTargetOIDsBulkInputMessage" />
			<output message="tns:retrieveReferenceTargetOIDsBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredSourceOIDs">
			<input message="tns:retrieveReferredSourceOIDsInputMessage" />
			<output message="tns:retrieveReferredSourceOIDsOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredSourceOIDsBulk">
			<input message="tns:retrieveReferredSourceOIDsBulkInputMessage" />
			<output message="tns:retrieveReferredSourceOIDsBulkOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveReferredAll">
			<input message="tns:retrieveReferredAllInputMessage" />
			<output message="tns:retrieveReferredAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveOIDInRelationWithAll">
			<input message="tns:retrieveOIDInRelationWithAllInputMessage" />
			<output message="tns:retrieveOIDInRelationWithAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveObjectsInRelationWithAll">
			<input message="tns:retrieveObjectsInRelationWithAllInputMessage" />
			<output message="tns:retrieveObjectsInRelationWithAllOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="setStorageProperty">
			<input message="tns:setStoragePropertyInputMessage" />
			<output message="tns:setStoragePropertyOutputMessage"/>
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="unsetStorageProperty">
			<input message="tns:unsetStoragePropertyInputMessage" />
			<output message="tns:unsetStoragePropertyOutputMessage" />
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveStorageProperty">
			<input message="tns:retrieveStoragePropertyInputMessage" />
			<output message="tns:retrieveStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveStorageProperties">
			<input message="tns:retrieveStoragePropertiesInputMessage" />
			<output message="tns:retrieveStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
	
		
		<operation name="retrieveOIDsByStorageProperty">
			<input message="tns:retrieveOIDsByStoragePropertyInputMessage" />
			<output message="tns:retrieveOIDsByStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveOIDsHavingAllStorageProperties">
			<input message="tns:retrieveOIDsHavingAllStoragePropertiesInputMessage" />
			<output message="tns:retrieveOIDsHavingAllStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="retrieveObjectsHavingAllStorageProperties">
			<input message="tns:retrieveObjectsHavingAllStoragePropertiesInputMessage" />
			<output message="tns:retrieveObjectsHavingAllStoragePropertiesOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="hasStorageProperty">
			<input message="tns:hasStoragePropertyInputMessage" />
			<output message="tns:hasStoragePropertyOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="hasRawContent">
			<input message="tns:hasRawContentInputMessage" />
			<output message="tns:hasRawContentOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="getVolatileInformation">
			<input message="tns:getVolatileInformationInputMessage" />
			<output message="tns:getVolatileInformationOutputMessage" />
			<fault name="ObjectNotFoundFault" message="tns:GCUBEUnrecoverableObjectNotFoundFaultMessage"/>
			<fault name="ValueNotValidFault" message="tns:GCUBEUnrecoverableValueNotValidFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
		
		<operation name="existsInfoObject">
			<input message="tns:existsInfoObjectInputMessage" />
			<output message="tns:existsInfoObjectOutputMessage" />
			<fault name="IOFault" message="tns:GCUBEUnrecoverableIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetryEquivalentIOFaultMessage"/>
			<fault name="IOFault" message="tns:GCUBERetrySameIOFaultMessage"/>
		</operation>
	
	</portType>
</definitions></WSDL>
                </PortType>
            </Main>
            <Software>
                <Description>The Storage Management stubs</Description>
                <Name>StorageManagementService-stubs</Name>
                <Version>1.7.0</Version>
                <Files>
                    <File>org.gcube.contentmanagement.storagelayer.storagemanagementservice.stubs.jar</File>
                </Files>
            </Software>
        </Packages>
    </Profile>
</Resource>
