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