Search in sources :

Example 1 with JavaPlatformTransportFactory

use of org.eclipse.epp.internal.mpc.core.util.JavaPlatformTransportFactory in project epp.mpc by eclipse.

the class MappedTransportFactory method getTransport.

public ITransport getTransport() {
    return new ITransport() {

        private final ITransport delegateTransport = delegate.getTransport();

        public InputStream stream(URI location, IProgressMonitor monitor) throws FileNotFoundException, ServiceUnavailableException, CoreException {
            URI mapped = mapping.get(location);
            if (mapped == null) {
                if (location.getQuery() != null || location.getFragment() != null) {
                    try {
                        URI stripped = new URI(location.getScheme(), location.getHost(), location.getPath(), null);
                        mapped = mapping.get(stripped);
                    } catch (URISyntaxException e) {
                    }
                }
            }
            if (mapped == null) {
                mapped = location;
            } else if (!mapped.getScheme().toLowerCase().startsWith("http")) {
                ITransport nonHttpTransport = getNonHttpTransport(delegate, delegateTransport);
                if (nonHttpTransport != null) {
                    return nonHttpTransport.stream(mapped, monitor);
                }
            }
            return delegateTransport.stream(mapped, monitor);
        }

        private ITransport getNonHttpTransport(ITransportFactory delegate, ITransport delegateTransport) {
            ITransport nonHttpTransport = delegateTransport;
            if (delegate instanceof HttpClientTransportFactory) {
                FallbackTransportFactory fallbackFactory = new FallbackTransportFactory();
                fallbackFactory.setPrimaryFactory(delegate);
                delegate = fallbackFactory;
            }
            if (delegate instanceof FallbackTransportFactory) {
                FallbackTransportFactory fallbackFactory = (FallbackTransportFactory) delegate;
                ITransportFactory primaryFactory = fallbackFactory.getPrimaryFactory();
                if (primaryFactory instanceof HttpClientTransportFactory) {
                    ITransportFactory secondaryFactory = fallbackFactory.getFallbackFactory();
                    if (secondaryFactory != null) {
                        nonHttpTransport = secondaryFactory.getTransport();
                    }
                }
            }
            if (nonHttpTransport instanceof HttpClientTransport) {
                nonHttpTransport = new JavaPlatformTransportFactory().getTransport();
            }
            return nonHttpTransport;
        }
    };
}
Also used : HttpClientTransportFactory(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransportFactory) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) HttpClientTransport(org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport) ITransport(org.eclipse.epp.mpc.core.service.ITransport) FallbackTransportFactory(org.eclipse.epp.internal.mpc.core.util.FallbackTransportFactory) URISyntaxException(java.net.URISyntaxException) ITransportFactory(org.eclipse.epp.mpc.core.service.ITransportFactory) URI(java.net.URI) JavaPlatformTransportFactory(org.eclipse.epp.internal.mpc.core.util.JavaPlatformTransportFactory)

Aggregations

URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 HttpClientTransport (org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransport)1 HttpClientTransportFactory (org.eclipse.epp.internal.mpc.core.transport.httpclient.HttpClientTransportFactory)1 FallbackTransportFactory (org.eclipse.epp.internal.mpc.core.util.FallbackTransportFactory)1 JavaPlatformTransportFactory (org.eclipse.epp.internal.mpc.core.util.JavaPlatformTransportFactory)1 ITransport (org.eclipse.epp.mpc.core.service.ITransport)1 ITransportFactory (org.eclipse.epp.mpc.core.service.ITransportFactory)1