001package co.codewizards.cloudstore.core.repo.transport;
002
003import static java.util.Objects.*;
004
005import java.net.URL;
006import java.util.UUID;
007
008public abstract class AbstractRepoTransportFactory implements RepoTransportFactory {
009
010        @Override
011        public int getPriority() {
012                return 0;
013        }
014
015        @Override
016        public RepoTransport createRepoTransport(URL remoteRoot, UUID clientRepositoryId) {
017                requireNonNull(remoteRoot, "remoteRoot");
018                // clientRepositoryId may be null!
019                RepoTransport repoTransport = _createRepoTransport();
020                if (repoTransport == null)
021                        throw new IllegalStateException(String.format("Implementation error in class %s: _createRepoTransport(...) returned null!", this.getClass().getName()));
022
023                repoTransport.setRepoTransportFactory(this);
024                repoTransport.setRemoteRoot(remoteRoot);
025                repoTransport.setClientRepositoryId(clientRepositoryId);
026                return repoTransport;
027        }
028
029        protected abstract RepoTransport _createRepoTransport();
030}