View Javadoc
1   /*******************************************************************************
2    * Copyright (c) 2013, 2014 Sonatype, Inc.
3    * All rights reserved. This program and the accompanying materials
4    * are made available under the terms of the Eclipse Public License v1.0
5    * which accompanies this distribution, and is available at
6    * http://www.eclipse.org/legal/epl-v10.html
7    *
8    * Contributors:
9    *    Sonatype, Inc. - initial API and implementation
10   *******************************************************************************/
11  package org.eclipse.aether.transfer;
12  
13  import org.eclipse.aether.RepositoryException;
14  import org.eclipse.aether.repository.RemoteRepository;
15  
16  /**
17   * Thrown in case of an unsupported repository layout.
18   */
19  public class NoRepositoryLayoutException
20      extends RepositoryException
21  {
22  
23      private final transient RemoteRepository repository;
24  
25      /**
26       * Creates a new exception with the specified repository.
27       * 
28       * @param repository The remote repository whose layout is not supported, may be {@code null}.
29       */
30      public NoRepositoryLayoutException( RemoteRepository repository )
31      {
32          this( repository, toMessage( repository ) );
33      }
34  
35      /**
36       * Creates a new exception with the specified repository and detail message.
37       * 
38       * @param repository The remote repository whose layout is not supported, may be {@code null}.
39       * @param message The detail message, may be {@code null}.
40       */
41      public NoRepositoryLayoutException( RemoteRepository repository, String message )
42      {
43          super( message );
44          this.repository = repository;
45      }
46  
47      /**
48       * Creates a new exception with the specified repository and cause.
49       * 
50       * @param repository The remote repository whose layout is not supported, may be {@code null}.
51       * @param cause The exception that caused this one, may be {@code null}.
52       */
53      public NoRepositoryLayoutException( RemoteRepository repository, Throwable cause )
54      {
55          this( repository, toMessage( repository ), cause );
56      }
57  
58      /**
59       * Creates a new exception with the specified repository, detail message and cause.
60       * 
61       * @param repository The remote repository whose layout is not supported, may be {@code null}.
62       * @param message The detail message, may be {@code null}.
63       * @param cause The exception that caused this one, may be {@code null}.
64       */
65      public NoRepositoryLayoutException( RemoteRepository repository, String message, Throwable cause )
66      {
67          super( message, cause );
68          this.repository = repository;
69      }
70  
71      private static String toMessage( RemoteRepository repository )
72      {
73          if ( repository != null )
74          {
75              return "Unsupported repository layout " + repository.getContentType();
76          }
77          else
78          {
79              return "Unsupported repository layout";
80          }
81      }
82  
83      /**
84       * Gets the remote repository whose layout is not supported.
85       * 
86       * @return The unsupported remote repository or {@code null} if unknown.
87       */
88      public RemoteRepository getRepository()
89      {
90          return repository;
91      }
92  
93  }