@Test
  public void testLookup() throws ArtifactDescriptorException {
    StubArtifact art = new StubArtifact("gid:aid:ext:ver");
    ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(art, null, "");
    ArtifactDescriptorResult description = reader.readArtifactDescriptor(session, request);

    assertEquals(request, description.getRequest());
    assertEquals(art, description.getArtifact());

    assertEquals(1, description.getRelocations().size());
    Artifact artifact = description.getRelocations().get(0);
    assertEquals("gid", artifact.getGroupId());
    assertEquals("aid", artifact.getArtifactId());
    assertEquals("ver", artifact.getVersion());
    assertEquals("ext", artifact.getExtension());

    assertEquals(1, description.getRepositories().size());
    RemoteRepository repo = description.getRepositories().get(0);
    assertEquals("id", repo.getId());
    assertEquals("type", repo.getContentType());
    assertEquals("protocol://some/url?for=testing", repo.getUrl());

    assertDependencies(description.getDependencies());
    assertDependencies(description.getManagedDependencies());
  }
  private ProxyServer getProxy(RemoteRepository repository) {
    ProxyServer proxyServer = null;

    Proxy p = repository.getProxy();
    if (p != null) {
      Authentication a = p.getAuthentication();
      boolean useSSL =
          repository.getProtocol().equalsIgnoreCase("https")
              || repository.getProtocol().equalsIgnoreCase("dav:https");
      if (a == null) {
        proxyServer =
            new ProxyServer(useSSL ? Protocol.HTTPS : Protocol.HTTP, p.getHost(), p.getPort());
      } else {
        proxyServer =
            new ProxyServer(
                useSSL ? Protocol.HTTPS : Protocol.HTTP,
                p.getHost(),
                p.getPort(),
                a.getUsername(),
                a.getPassword());
      }
    }

    return proxyServer;
  }
  /**
   * Tests if newCopy() gives independent instances.
   *
   * @throws NoSuchFieldException
   * @throws IllegalAccessException
   */
  @Test
  public void shouldGiveNewIndependentRepositories()
      throws NoSuchFieldException, IllegalAccessException {
    // given
    final String initialId = "id";
    final RemoteRepository remoteRepository = new RemoteRepository(initialId, "type", "url");
    final MavenModelResolver mavenModelResolver =
        new MavenModelResolver(new MavenRepositorySystem(), null, Arrays.asList(remoteRepository));

    // when
    final MavenModelResolver mavenModelResolverCopy =
        (MavenModelResolver) mavenModelResolver.newCopy();
    remoteRepository.setId("otherId");

    // then
    // simulate access to repositories field, internal functions uses this field, e.g. to resolve
    // model
    final Field repositoriesField = MavenModelResolver.class.getDeclaredField("repositories");
    repositoriesField.setAccessible(true);

    @SuppressWarnings("unchecked")
    final List<RemoteRepository> value =
        (List<RemoteRepository>) repositoriesField.get(mavenModelResolverCopy);
    Assert.assertEquals("Internal value in copy has changed!", initialId, value.get(0).getId());
  }
  public void contextInitialized(ServletContextEvent event) {
    this.context = event.getServletContext();
    RepositorySystem sys = newRepositorySystem();
    // setting repository system
    this.context.setAttribute("RepositorySystem", sys);
    Settings settings = null;
    try {
      settings =
          loadSettings(
              context.getInitParameter("user-settings"),
              context.getInitParameter("global-settings"));
    } catch (SettingsBuildingException e) {
      this.context.log(e.getMessage(), e);
    }

    List<RemoteRepository> repos = new ArrayList<RemoteRepository>();
    RemoteRepository central =
        new RemoteRepository("central", "default", getDefaultRemoteRepository());
    this.context.log("using remote repo : " + central.getUrl());
    repos.add(central);
    if (context.getInitParameter("snapshots-remote-repo") != null) {
      this.context.log(
          "using snapshot remote repo : " + context.getInitParameter("snapshots-remote-repo"));
      RemoteRepository snaps =
          new RemoteRepository(
              "snapshot", "default", context.getInitParameter("snapshots-remote-repo"));
      snaps.setPolicy(true, null);
      repos.add(snaps);
    }
    // setting remote repositories
    this.context.setAttribute("repositories", repos);
    // setting default session
    this.context.setAttribute("session", newSystemSession(sys, settings));
  }
 @Test
 public void testCreateSimpleRepo() {
   String plainUrl = "http://some.repo.url/somepath";
   RemoteRepository repository = createRemoteRepository(plainUrl);
   assertNotNull(repository);
   assertNotNull(repository.getId());
   assertNull(repository.getAuthentication());
 }
  /**
   * Create an {@link org.sonatype.aether.connector.async.AsyncRepositoryConnector} instance which
   * connect to the {@link RemoteRepository}
   *
   * @param repository the remote repository
   * @param session the {@link RepositorySystemSession}
   * @param logger the logger.
   * @throws NoRepositoryConnectorException
   */
  public AsyncRepositoryConnector(
      RemoteRepository repository,
      RepositorySystemSession session,
      FileProcessor fileProcessor,
      Logger logger)
      throws NoRepositoryConnectorException {
    this.logger = logger;
    this.repository = repository;
    this.listener = session.getTransferListener();
    this.fileProcessor = fileProcessor;
    this.session = session;

    if (!"default".equals(repository.getContentType())) {
      throw new NoRepositoryConnectorException(repository);
    }

    if (!repository.getProtocol().regionMatches(true, 0, "http", 0, "http".length())
        && !repository.getProtocol().regionMatches(true, 0, "dav", 0, "dav".length())) {
      throw new NoRepositoryConnectorException(repository);
    }

    AsyncHttpClientConfig config = createConfig(session, repository, true);
    httpClient = new AsyncHttpClient(new NettyAsyncHttpProvider(config));

    checksumAlgos = new LinkedHashMap<String, String>();
    checksumAlgos.put("SHA-1", ".sha1");
    checksumAlgos.put("MD5", ".md5");

    disableResumeSupport =
        ConfigUtils.getBoolean(session, false, "aether.connector.ahc.disableResumable");
    maxIOExceptionRetry = ConfigUtils.getInteger(session, 3, "aether.connector.ahc.resumeRetry");

    this.headers = new FluentCaseInsensitiveStringsMap();
    Map<?, ?> headers =
        ConfigUtils.getMap(
            session,
            null,
            ConfigurationProperties.HTTP_HEADERS + "." + repository.getId(),
            ConfigurationProperties.HTTP_HEADERS);
    if (headers != null) {
      for (Map.Entry<?, ?> entry : headers.entrySet()) {
        if (entry.getKey() instanceof String && entry.getValue() instanceof String) {
          this.headers.add(entry.getKey().toString(), entry.getValue().toString());
        }
      }
    }
  }
  /**
   * Builds a complete URL string from the repository URL and the relative path passed.
   *
   * @param path the relative path
   * @return the complete URL
   */
  private String buildUrl(String path) {
    final String repoUrl = repository.getUrl();
    path = path.replace(' ', '+');

    if (repoUrl.charAt(repoUrl.length() - 1) != '/') {
      return repoUrl + '/' + path;
    }
    return repoUrl + path;
  }
Example #8
0
  private List<RemoteRepository> convertToMavenRepos(
      final List<DependencyRepository> repositories) {
    List<DependencyRepository> temp = new ArrayList<DependencyRepository>();
    temp.addAll(repositories);

    List<RemoteRepository> remoteRepos = new ArrayList<RemoteRepository>();
    boolean hasCentral = false;
    for (DependencyRepository deprep : temp) {
      remoteRepos.add(convertToMavenRepo(deprep));
      if (KnownRepository.CENTRAL.getUrl().equals(deprep.getUrl())) {
        hasCentral = true;
      }
    }
    if (!hasCentral) {
      RemoteRepository central =
          convertToMavenRepo(
              new DependencyRepositoryImpl(
                  KnownRepository.CENTRAL.getId(), KnownRepository.CENTRAL.getUrl()));
      central.setPolicy(true, new RepositoryPolicy().setEnabled(false));
      remoteRepos.add(central);
    }
    return remoteRepos;
  }
  private Realm getRealm(RemoteRepository repository) {
    Realm realm = null;

    Authentication a = repository.getAuthentication();
    if (a != null && a.getUsername() != null) {
      realm =
          new Realm.RealmBuilder()
              .setPrincipal(a.getUsername())
              .setPassword(a.getPassword())
              .setUsePreemptiveAuth(false)
              .build();
    }

    return realm;
  }
 @Test
 public void testCreateRepWithCredentials() {
   String plainUrl = "http://*****:*****@some.repo.url/somepath";
   RemoteRepository repository = createRemoteRepository(plainUrl);
   assertNotNull(repository);
   assertNotNull(repository.getId());
   assertNotNull(repository.getAuthentication());
   assertEquals("user", repository.getAuthentication().getUsername());
   assertEquals("password", repository.getAuthentication().getPassword());
   assertEquals("http://some.repo.url/somepath", repository.getUrl());
 }