001package co.codewizards.cloudstore.rest.client.transport;
002
003import static co.codewizards.cloudstore.core.util.Util.*;
004
005import java.net.URL;
006
007import co.codewizards.cloudstore.core.repo.transport.AbstractRepoTransportFactory;
008import co.codewizards.cloudstore.core.repo.transport.RepoTransport;
009import co.codewizards.cloudstore.core.util.AssertUtil;
010import co.codewizards.cloudstore.rest.client.ssl.DynamicX509TrustManagerCallback;
011
012public class RestRepoTransportFactory extends AbstractRepoTransportFactory {
013
014        public static final String PROTOCOL_HTTPS = "https";
015        public static final String PROTOCOL_HTTP = "http";
016
017        private volatile Class<? extends DynamicX509TrustManagerCallback> dynamicX509TrustManagerCallbackClass;
018
019        public Class<? extends DynamicX509TrustManagerCallback> getDynamicX509TrustManagerCallbackClass() {
020                return dynamicX509TrustManagerCallbackClass;
021        }
022        public void setDynamicX509TrustManagerCallbackClass(Class<? extends DynamicX509TrustManagerCallback> dynamicX509TrustManagerCallbackClass) {
023                this.dynamicX509TrustManagerCallbackClass = dynamicX509TrustManagerCallbackClass;
024        }
025
026        @Override
027        public String getName() {
028                return "REST";
029        }
030
031        @Override
032        public String getDescription() {
033                return "Repository on a remote server accessible via REST";
034        }
035
036        @Override
037        public boolean isSupported(URL remoteRoot) {
038                return PROTOCOL_HTTP.equals(AssertUtil.assertNotNull(remoteRoot, "remoteRoot").getProtocol())
039                                || PROTOCOL_HTTPS.equals(remoteRoot.getProtocol());
040        }
041
042        @Override
043        protected RepoTransport _createRepoTransport() {
044                return new RestRepoTransport();
045        }
046}