ingo@1: /*
ingo@1:  * Copyright (c) 2010 by Intevation GmbH
ingo@1:  *
ingo@1:  * This program is free software under the LGPL (>=v2.1)
ingo@1:  * Read the file LGPL.txt coming with the software for details
ingo@1:  * or visit http://www.gnu.org/licenses/ if it does not exist.
ingo@1:  */
ingo@1: package de.intevation.artifacts.httpclient.http;
ingo@1: 
ingo@12: import java.io.InputStream;
ingo@1: import java.io.OutputStream;
ingo@1: 
ingo@1: import org.w3c.dom.Document;
ingo@1: 
ingo@1: import de.intevation.artifacts.httpclient.exceptions.ConnectionException;
ingo@1: import de.intevation.artifacts.httpclient.http.response.ResponseHandler;
ingo@1: import de.intevation.artifacts.httpclient.objects.Artifact;
ingo@1: import de.intevation.artifacts.httpclient.objects.ArtifactFactory;
ingo@2: import de.intevation.artifacts.httpclient.utils.ArtifactCreator;
ingo@1: 
ingo@1: /**
ingo@1:  * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
ingo@1:  */
ingo@1: public interface HttpClient {
ingo@1: 
ingo@1:     ArtifactFactory[] getArtifactFactories()
ingo@1:     throws ConnectionException;
ingo@1: 
ingo@2:     Object create(Document createDocument, ArtifactCreator creator)
ingo@1:     throws ConnectionException;
ingo@1: 
ingo@1:     Object describe(
ingo@1:         Artifact        artifact,
ingo@1:         Document        describeDocument,
ingo@1:         ResponseHandler handler)
ingo@1:     throws ConnectionException;
ingo@1: 
ingo@1:     Object feed(Artifact artifact, Document feedDocument, ResponseHandler handler)
ingo@1:     throws ConnectionException;
ingo@1: 
ingo@1:     Object advance(
ingo@1:         Artifact        artifact,
ingo@1:         Document        advanceDocument,
ingo@1:         ResponseHandler handler)
ingo@1:     throws ConnectionException;
ingo@1: 
ingo@1:     void out(
ingo@1:         Artifact     artifact,
ingo@1:         Document     outDocument,
ingo@1:         String       target,
ingo@1:         OutputStream out)
ingo@1:     throws ConnectionException;
ingo@4: 
ingo@4: 
ingo@4:     /*******************************
ingo@5:      * Service API
ingo@5:      *******************************/
ingo@5: 
ingo@5:      Document callService(String url, String service, Document input)
ingo@5:      throws ConnectionException;
ingo@5: 
ingo@5: 
ingo@5:     /*******************************
ingo@4:      * Collections API
ingo@4:      *******************************/
ingo@5: 
ingo@4:     Object createCollection(
ingo@4:         Document        createDocument,
ingo@4:         String          ownerId,
ingo@4:         ResponseHandler handler)
ingo@4:     throws ConnectionException;
ingo@4: 
ingo@6:     Object doCollectionAction(
ingo@6:         Document        actionDocument,
ingo@6:         String          uuid,
ingo@6:         ResponseHandler handler)
ingo@6:     throws ConnectionException;
ingo@6: 
ingo@9:     void collectionOut(
ingo@9:         Document     outDocument,
ingo@9:         String       uuid,
ingo@9:         String       type,
ingo@9:         OutputStream out)
ingo@9:     throws ConnectionException;
ingo@9: 
ingo@12:     InputStream collectionOut(
ingo@12:         Document    doc,
ingo@12:         String      uuid,
ingo@12:         String      type)
ingo@12:     throws ConnectionException;
ingo@12: 
ingo@4: 
ingo@4:     /*******************************
ingo@4:      * Users API
ingo@4:      *******************************/
ingo@5: 
ingo@4:     Document listUsers()
ingo@4:     throws ConnectionException;
ingo@7: 
ingo@7:     Document listUserCollections(String userid)
ingo@7:     throws ConnectionException;
ingo@1: }
ingo@1: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: