001package org.eclipse.aether; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import java.io.ByteArrayOutputStream; 023import java.io.IOException; 024import java.io.ObjectOutputStream; 025import java.util.Arrays; 026import java.util.Collections; 027 028import org.eclipse.aether.artifact.Artifact; 029import org.eclipse.aether.artifact.DefaultArtifact; 030import org.eclipse.aether.collection.CollectRequest; 031import org.eclipse.aether.collection.CollectResult; 032import org.eclipse.aether.collection.DependencyCollectionException; 033import org.eclipse.aether.collection.UnsolvableVersionConflictException; 034import org.eclipse.aether.graph.DefaultDependencyNode; 035import org.eclipse.aether.graph.Dependency; 036import org.eclipse.aether.graph.DependencyNode; 037import org.eclipse.aether.metadata.DefaultMetadata; 038import org.eclipse.aether.metadata.Metadata; 039import org.eclipse.aether.repository.LocalRepository; 040import org.eclipse.aether.repository.NoLocalRepositoryManagerException; 041import org.eclipse.aether.repository.Proxy; 042import org.eclipse.aether.repository.RemoteRepository; 043import org.eclipse.aether.resolution.ArtifactDescriptorException; 044import org.eclipse.aether.resolution.ArtifactDescriptorRequest; 045import org.eclipse.aether.resolution.ArtifactDescriptorResult; 046import org.eclipse.aether.resolution.ArtifactRequest; 047import org.eclipse.aether.resolution.ArtifactResolutionException; 048import org.eclipse.aether.resolution.ArtifactResult; 049import org.eclipse.aether.resolution.DependencyRequest; 050import org.eclipse.aether.resolution.DependencyResolutionException; 051import org.eclipse.aether.resolution.DependencyResult; 052import org.eclipse.aether.resolution.VersionRangeRequest; 053import org.eclipse.aether.resolution.VersionRangeResolutionException; 054import org.eclipse.aether.resolution.VersionRangeResult; 055import org.eclipse.aether.resolution.VersionRequest; 056import org.eclipse.aether.resolution.VersionResolutionException; 057import org.eclipse.aether.resolution.VersionResult; 058import org.eclipse.aether.transfer.ArtifactNotFoundException; 059import org.eclipse.aether.transfer.ArtifactTransferException; 060import org.eclipse.aether.transfer.MetadataNotFoundException; 061import org.eclipse.aether.transfer.MetadataTransferException; 062import org.eclipse.aether.transfer.NoRepositoryConnectorException; 063import org.eclipse.aether.transfer.NoRepositoryLayoutException; 064import org.eclipse.aether.transfer.NoTransporterException; 065import org.eclipse.aether.transfer.RepositoryOfflineException; 066import org.junit.Test; 067 068public class RepositoryExceptionTest 069{ 070 071 private void assertSerializable( RepositoryException e ) 072 { 073 try 074 { 075 ObjectOutputStream oos = new ObjectOutputStream( new ByteArrayOutputStream() ); 076 oos.writeObject( e ); 077 oos.close(); 078 } 079 catch ( IOException ioe ) 080 { 081 throw new IllegalStateException( ioe ); 082 } 083 } 084 085 private RequestTrace newTrace() 086 { 087 return new RequestTrace( "test" ); 088 } 089 090 private Artifact newArtifact() 091 { 092 return new DefaultArtifact( "gid", "aid", "ext", "1" ); 093 } 094 095 private Metadata newMetadata() 096 { 097 return new DefaultMetadata( "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT ); 098 } 099 100 private RemoteRepository newRepo() 101 { 102 Proxy proxy = new Proxy( Proxy.TYPE_HTTP, "localhost", 8080, null ); 103 return new RemoteRepository.Builder( "id", "test", "http://localhost" ).setProxy( proxy ).build(); 104 } 105 106 @Test 107 public void testArtifactDescriptorException_Serializable() 108 { 109 ArtifactDescriptorRequest request = new ArtifactDescriptorRequest(); 110 request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() ); 111 ArtifactDescriptorResult result = new ArtifactDescriptorResult( request ); 112 assertSerializable( new ArtifactDescriptorException( result ) ); 113 } 114 115 @Test 116 public void testArtifactResolutionException_Serializable() 117 { 118 ArtifactRequest request = new ArtifactRequest(); 119 request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() ); 120 ArtifactResult result = new ArtifactResult( request ); 121 assertSerializable( new ArtifactResolutionException( Arrays.asList( result ) ) ); 122 } 123 124 @Test 125 public void testArtifactTransferException_Serializable() 126 { 127 assertSerializable( new ArtifactTransferException( newArtifact(), newRepo(), "error" ) ); 128 } 129 130 @Test 131 public void testArtifactNotFoundException_Serializable() 132 { 133 assertSerializable( new ArtifactNotFoundException( newArtifact(), newRepo(), "error" ) ); 134 } 135 136 @Test 137 public void testDependencyCollectionException_Serializable() 138 { 139 CollectRequest request = new CollectRequest(); 140 request.addDependency( new Dependency( newArtifact(), "compile" ) ); 141 request.addRepository( newRepo() ); 142 request.setTrace( newTrace() ); 143 CollectResult result = new CollectResult( request ); 144 assertSerializable( new DependencyCollectionException( result ) ); 145 } 146 147 @Test 148 public void testDependencyResolutionException_Serializable() 149 { 150 CollectRequest request = new CollectRequest(); 151 request.addDependency( new Dependency( newArtifact(), "compile" ) ); 152 request.addRepository( newRepo() ); 153 request.setTrace( newTrace() ); 154 DependencyRequest req = new DependencyRequest(); 155 req.setTrace( newTrace() ); 156 req.setCollectRequest( request ); 157 DependencyResult result = new DependencyResult( req ); 158 assertSerializable( new DependencyResolutionException( result, null ) ); 159 } 160 161 @Test 162 public void testMetadataTransferException_Serializable() 163 { 164 assertSerializable( new MetadataTransferException( newMetadata(), newRepo(), "error" ) ); 165 } 166 167 @Test 168 public void testMetadataNotFoundException_Serializable() 169 { 170 assertSerializable( new MetadataNotFoundException( newMetadata(), newRepo(), "error" ) ); 171 } 172 173 @Test 174 public void testNoLocalRepositoryManagerException_Serializable() 175 { 176 assertSerializable( new NoLocalRepositoryManagerException( new LocalRepository( "/tmp" ) ) ); 177 } 178 179 @Test 180 public void testNoRepositoryConnectorException_Serializable() 181 { 182 assertSerializable( new NoRepositoryConnectorException( newRepo() ) ); 183 } 184 185 @Test 186 public void testNoRepositoryLayoutException_Serializable() 187 { 188 assertSerializable( new NoRepositoryLayoutException( newRepo() ) ); 189 } 190 191 @Test 192 public void testNoTransporterException_Serializable() 193 { 194 assertSerializable( new NoTransporterException( newRepo() ) ); 195 } 196 197 @Test 198 public void testRepositoryOfflineException_Serializable() 199 { 200 assertSerializable( new RepositoryOfflineException( newRepo() ) ); 201 } 202 203 @Test 204 public void testUnsolvableVersionConflictException_Serializable() 205 { 206 DependencyNode node = new DefaultDependencyNode( new Dependency( newArtifact(), "test" ) ); 207 assertSerializable( new UnsolvableVersionConflictException( Collections.singleton( Arrays.asList( node ) ) ) ); 208 } 209 210 @Test 211 public void testVersionResolutionException_Serializable() 212 { 213 VersionRequest request = new VersionRequest(); 214 request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() ); 215 VersionResult result = new VersionResult( request ); 216 assertSerializable( new VersionResolutionException( result ) ); 217 } 218 219 @Test 220 public void testVersionRangeResolutionException_Serializable() 221 { 222 VersionRangeRequest request = new VersionRangeRequest(); 223 request.setArtifact( newArtifact() ).addRepository( newRepo() ).setTrace( newTrace() ); 224 VersionRangeResult result = new VersionRangeResult( request ); 225 assertSerializable( new VersionRangeResolutionException( result ) ); 226 } 227 228}