1 package org.eclipse.aether;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collections;
23 import java.util.HashMap;
24 import java.util.Map;
25
26 import org.eclipse.aether.artifact.ArtifactType;
27 import org.eclipse.aether.artifact.ArtifactTypeRegistry;
28 import org.eclipse.aether.collection.DependencyGraphTransformer;
29 import org.eclipse.aether.collection.DependencyManager;
30 import org.eclipse.aether.collection.DependencySelector;
31 import org.eclipse.aether.collection.DependencyTraverser;
32 import org.eclipse.aether.collection.VersionFilter;
33 import org.eclipse.aether.repository.Authentication;
34 import org.eclipse.aether.repository.AuthenticationSelector;
35 import org.eclipse.aether.repository.LocalRepository;
36 import org.eclipse.aether.repository.LocalRepositoryManager;
37 import org.eclipse.aether.repository.MirrorSelector;
38 import org.eclipse.aether.repository.Proxy;
39 import org.eclipse.aether.repository.ProxySelector;
40 import org.eclipse.aether.repository.RemoteRepository;
41 import org.eclipse.aether.repository.RepositoryPolicy;
42 import org.eclipse.aether.repository.WorkspaceReader;
43 import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
44 import org.eclipse.aether.resolution.ResolutionErrorPolicy;
45 import org.eclipse.aether.transfer.TransferListener;
46
47
48
49
50
51
52
53
54
55 public final class DefaultRepositorySystemSession
56 implements RepositorySystemSession
57 {
58
59 private boolean readOnly;
60
61 private boolean offline;
62
63 private boolean ignoreArtifactDescriptorRepositories;
64
65 private ResolutionErrorPolicy resolutionErrorPolicy;
66
67 private ArtifactDescriptorPolicy artifactDescriptorPolicy;
68
69 private String checksumPolicy;
70
71 private String updatePolicy;
72
73 private LocalRepositoryManager localRepositoryManager;
74
75 private WorkspaceReader workspaceReader;
76
77 private RepositoryListener repositoryListener;
78
79 private TransferListener transferListener;
80
81 private Map<String, String> systemProperties;
82
83 private Map<String, String> systemPropertiesView;
84
85 private Map<String, String> userProperties;
86
87 private Map<String, String> userPropertiesView;
88
89 private Map<String, Object> configProperties;
90
91 private Map<String, Object> configPropertiesView;
92
93 private MirrorSelector mirrorSelector;
94
95 private ProxySelector proxySelector;
96
97 private AuthenticationSelector authenticationSelector;
98
99 private ArtifactTypeRegistry artifactTypeRegistry;
100
101 private DependencyTraverser dependencyTraverser;
102
103 private DependencyManager dependencyManager;
104
105 private DependencySelector dependencySelector;
106
107 private VersionFilter versionFilter;
108
109 private DependencyGraphTransformer dependencyGraphTransformer;
110
111 private SessionData data;
112
113 private RepositoryCache cache;
114
115
116
117
118
119
120 public DefaultRepositorySystemSession()
121 {
122 systemProperties = new HashMap<String, String>();
123 systemPropertiesView = Collections.unmodifiableMap( systemProperties );
124 userProperties = new HashMap<String, String>();
125 userPropertiesView = Collections.unmodifiableMap( userProperties );
126 configProperties = new HashMap<String, Object>();
127 configPropertiesView = Collections.unmodifiableMap( configProperties );
128 mirrorSelector = NullMirrorSelector.INSTANCE;
129 proxySelector = NullProxySelector.INSTANCE;
130 authenticationSelector = NullAuthenticationSelector.INSTANCE;
131 artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
132 data = new DefaultSessionData();
133 }
134
135
136
137
138
139
140
141
142
143 public DefaultRepositorySystemSession( RepositorySystemSession session )
144 {
145 if ( session == null )
146 {
147 throw new IllegalArgumentException( "repository system session not specified" );
148 }
149
150 setOffline( session.isOffline() );
151 setIgnoreArtifactDescriptorRepositories( session.isIgnoreArtifactDescriptorRepositories() );
152 setResolutionErrorPolicy( session.getResolutionErrorPolicy() );
153 setArtifactDescriptorPolicy( session.getArtifactDescriptorPolicy() );
154 setChecksumPolicy( session.getChecksumPolicy() );
155 setUpdatePolicy( session.getUpdatePolicy() );
156 setLocalRepositoryManager( session.getLocalRepositoryManager() );
157 setWorkspaceReader( session.getWorkspaceReader() );
158 setRepositoryListener( session.getRepositoryListener() );
159 setTransferListener( session.getTransferListener() );
160 setSystemProperties( session.getSystemProperties() );
161 setUserProperties( session.getUserProperties() );
162 setConfigProperties( session.getConfigProperties() );
163 setMirrorSelector( session.getMirrorSelector() );
164 setProxySelector( session.getProxySelector() );
165 setAuthenticationSelector( session.getAuthenticationSelector() );
166 setArtifactTypeRegistry( session.getArtifactTypeRegistry() );
167 setDependencyTraverser( session.getDependencyTraverser() );
168 setDependencyManager( session.getDependencyManager() );
169 setDependencySelector( session.getDependencySelector() );
170 setVersionFilter( session.getVersionFilter() );
171 setDependencyGraphTransformer( session.getDependencyGraphTransformer() );
172 setData( session.getData() );
173 setCache( session.getCache() );
174 }
175
176 public boolean isOffline()
177 {
178 return offline;
179 }
180
181
182
183
184
185
186
187
188 public DefaultRepositorySystemSession setOffline( boolean offline )
189 {
190 failIfReadOnly();
191 this.offline = offline;
192 return this;
193 }
194
195 public boolean isIgnoreArtifactDescriptorRepositories()
196 {
197 return ignoreArtifactDescriptorRepositories;
198 }
199
200
201
202
203
204
205
206
207
208 public DefaultRepositorySystemSession setIgnoreArtifactDescriptorRepositories( boolean ignoreArtifactDescriptorRepositories )
209 {
210 failIfReadOnly();
211 this.ignoreArtifactDescriptorRepositories = ignoreArtifactDescriptorRepositories;
212 return this;
213 }
214
215 public ResolutionErrorPolicy getResolutionErrorPolicy()
216 {
217 return resolutionErrorPolicy;
218 }
219
220
221
222
223
224
225
226
227 public DefaultRepositorySystemSession setResolutionErrorPolicy( ResolutionErrorPolicy resolutionErrorPolicy )
228 {
229 failIfReadOnly();
230 this.resolutionErrorPolicy = resolutionErrorPolicy;
231 return this;
232 }
233
234 public ArtifactDescriptorPolicy getArtifactDescriptorPolicy()
235 {
236 return artifactDescriptorPolicy;
237 }
238
239
240
241
242
243
244
245
246 public DefaultRepositorySystemSession setArtifactDescriptorPolicy( ArtifactDescriptorPolicy artifactDescriptorPolicy )
247 {
248 failIfReadOnly();
249 this.artifactDescriptorPolicy = artifactDescriptorPolicy;
250 return this;
251 }
252
253 public String getChecksumPolicy()
254 {
255 return checksumPolicy;
256 }
257
258
259
260
261
262
263
264
265
266
267
268 public DefaultRepositorySystemSession setChecksumPolicy( String checksumPolicy )
269 {
270 failIfReadOnly();
271 this.checksumPolicy = checksumPolicy;
272 return this;
273 }
274
275 public String getUpdatePolicy()
276 {
277 return updatePolicy;
278 }
279
280
281
282
283
284
285
286
287
288
289
290 public DefaultRepositorySystemSession setUpdatePolicy( String updatePolicy )
291 {
292 failIfReadOnly();
293 this.updatePolicy = updatePolicy;
294 return this;
295 }
296
297 public LocalRepository getLocalRepository()
298 {
299 LocalRepositoryManager lrm = getLocalRepositoryManager();
300 return ( lrm != null ) ? lrm.getRepository() : null;
301 }
302
303 public LocalRepositoryManager getLocalRepositoryManager()
304 {
305 return localRepositoryManager;
306 }
307
308
309
310
311
312
313
314
315 public DefaultRepositorySystemSession setLocalRepositoryManager( LocalRepositoryManager localRepositoryManager )
316 {
317 failIfReadOnly();
318 this.localRepositoryManager = localRepositoryManager;
319 return this;
320 }
321
322 public WorkspaceReader getWorkspaceReader()
323 {
324 return workspaceReader;
325 }
326
327
328
329
330
331
332
333
334 public DefaultRepositorySystemSession setWorkspaceReader( WorkspaceReader workspaceReader )
335 {
336 failIfReadOnly();
337 this.workspaceReader = workspaceReader;
338 return this;
339 }
340
341 public RepositoryListener getRepositoryListener()
342 {
343 return repositoryListener;
344 }
345
346
347
348
349
350
351
352 public DefaultRepositorySystemSession setRepositoryListener( RepositoryListener repositoryListener )
353 {
354 failIfReadOnly();
355 this.repositoryListener = repositoryListener;
356 return this;
357 }
358
359 public TransferListener getTransferListener()
360 {
361 return transferListener;
362 }
363
364
365
366
367
368
369
370 public DefaultRepositorySystemSession setTransferListener( TransferListener transferListener )
371 {
372 failIfReadOnly();
373 this.transferListener = transferListener;
374 return this;
375 }
376
377 private <T> Map<String, T> copySafe( Map<?, ?> table, Class<T> valueType )
378 {
379 Map<String, T> map;
380 if ( table == null || table.isEmpty() )
381 {
382 map = new HashMap<String, T>();
383 }
384 else
385 {
386 map = new HashMap<String, T>( (int) ( table.size() / 0.75f ) + 1 );
387 for ( Map.Entry<?, ?> entry : table.entrySet() )
388 {
389 Object key = entry.getKey();
390 if ( key instanceof String )
391 {
392 Object value = entry.getValue();
393 if ( valueType.isInstance( value ) )
394 {
395 map.put( key.toString(), valueType.cast( value ) );
396 }
397 }
398 }
399 }
400 return map;
401 }
402
403 public Map<String, String> getSystemProperties()
404 {
405 return systemPropertiesView;
406 }
407
408
409
410
411
412
413
414
415
416
417
418 public DefaultRepositorySystemSession setSystemProperties( Map<?, ?> systemProperties )
419 {
420 failIfReadOnly();
421 this.systemProperties = copySafe( systemProperties, String.class );
422 systemPropertiesView = Collections.unmodifiableMap( this.systemProperties );
423 return this;
424 }
425
426
427
428
429
430
431
432
433 public DefaultRepositorySystemSession setSystemProperty( String key, String value )
434 {
435 failIfReadOnly();
436 if ( value != null )
437 {
438 systemProperties.put( key, value );
439 }
440 else
441 {
442 systemProperties.remove( key );
443 }
444 return this;
445 }
446
447 public Map<String, String> getUserProperties()
448 {
449 return userPropertiesView;
450 }
451
452
453
454
455
456
457
458
459
460
461
462
463 public DefaultRepositorySystemSession setUserProperties( Map<?, ?> userProperties )
464 {
465 failIfReadOnly();
466 this.userProperties = copySafe( userProperties, String.class );
467 userPropertiesView = Collections.unmodifiableMap( this.userProperties );
468 return this;
469 }
470
471
472
473
474
475
476
477
478 public DefaultRepositorySystemSession setUserProperty( String key, String value )
479 {
480 failIfReadOnly();
481 if ( value != null )
482 {
483 userProperties.put( key, value );
484 }
485 else
486 {
487 userProperties.remove( key );
488 }
489 return this;
490 }
491
492 public Map<String, Object> getConfigProperties()
493 {
494 return configPropertiesView;
495 }
496
497
498
499
500
501
502
503
504
505
506
507 public DefaultRepositorySystemSession setConfigProperties( Map<?, ?> configProperties )
508 {
509 failIfReadOnly();
510 this.configProperties = copySafe( configProperties, Object.class );
511 configPropertiesView = Collections.unmodifiableMap( this.configProperties );
512 return this;
513 }
514
515
516
517
518
519
520
521
522 public DefaultRepositorySystemSession setConfigProperty( String key, Object value )
523 {
524 failIfReadOnly();
525 if ( value != null )
526 {
527 configProperties.put( key, value );
528 }
529 else
530 {
531 configProperties.remove( key );
532 }
533 return this;
534 }
535
536 public MirrorSelector getMirrorSelector()
537 {
538 return mirrorSelector;
539 }
540
541
542
543
544
545
546
547
548
549 public DefaultRepositorySystemSession setMirrorSelector( MirrorSelector mirrorSelector )
550 {
551 failIfReadOnly();
552 this.mirrorSelector = mirrorSelector;
553 if ( this.mirrorSelector == null )
554 {
555 this.mirrorSelector = NullMirrorSelector.INSTANCE;
556 }
557 return this;
558 }
559
560 public ProxySelector getProxySelector()
561 {
562 return proxySelector;
563 }
564
565
566
567
568
569
570
571
572
573
574 public DefaultRepositorySystemSession setProxySelector( ProxySelector proxySelector )
575 {
576 failIfReadOnly();
577 this.proxySelector = proxySelector;
578 if ( this.proxySelector == null )
579 {
580 this.proxySelector = NullProxySelector.INSTANCE;
581 }
582 return this;
583 }
584
585 public AuthenticationSelector getAuthenticationSelector()
586 {
587 return authenticationSelector;
588 }
589
590
591
592
593
594
595
596
597
598
599 public DefaultRepositorySystemSession setAuthenticationSelector( AuthenticationSelector authenticationSelector )
600 {
601 failIfReadOnly();
602 this.authenticationSelector = authenticationSelector;
603 if ( this.authenticationSelector == null )
604 {
605 this.authenticationSelector = NullAuthenticationSelector.INSTANCE;
606 }
607 return this;
608 }
609
610 public ArtifactTypeRegistry getArtifactTypeRegistry()
611 {
612 return artifactTypeRegistry;
613 }
614
615
616
617
618
619
620
621 public DefaultRepositorySystemSession setArtifactTypeRegistry( ArtifactTypeRegistry artifactTypeRegistry )
622 {
623 failIfReadOnly();
624 this.artifactTypeRegistry = artifactTypeRegistry;
625 if ( this.artifactTypeRegistry == null )
626 {
627 this.artifactTypeRegistry = NullArtifactTypeRegistry.INSTANCE;
628 }
629 return this;
630 }
631
632 public DependencyTraverser getDependencyTraverser()
633 {
634 return dependencyTraverser;
635 }
636
637
638
639
640
641
642
643 public DefaultRepositorySystemSession setDependencyTraverser( DependencyTraverser dependencyTraverser )
644 {
645 failIfReadOnly();
646 this.dependencyTraverser = dependencyTraverser;
647 return this;
648 }
649
650 public DependencyManager getDependencyManager()
651 {
652 return dependencyManager;
653 }
654
655
656
657
658
659
660
661 public DefaultRepositorySystemSession setDependencyManager( DependencyManager dependencyManager )
662 {
663 failIfReadOnly();
664 this.dependencyManager = dependencyManager;
665 return this;
666 }
667
668 public DependencySelector getDependencySelector()
669 {
670 return dependencySelector;
671 }
672
673
674
675
676
677
678
679 public DefaultRepositorySystemSession setDependencySelector( DependencySelector dependencySelector )
680 {
681 failIfReadOnly();
682 this.dependencySelector = dependencySelector;
683 return this;
684 }
685
686 public VersionFilter getVersionFilter()
687 {
688 return versionFilter;
689 }
690
691
692
693
694
695
696
697
698 public DefaultRepositorySystemSession setVersionFilter( VersionFilter versionFilter )
699 {
700 failIfReadOnly();
701 this.versionFilter = versionFilter;
702 return this;
703 }
704
705 public DependencyGraphTransformer getDependencyGraphTransformer()
706 {
707 return dependencyGraphTransformer;
708 }
709
710
711
712
713
714
715
716
717 public DefaultRepositorySystemSession setDependencyGraphTransformer( DependencyGraphTransformer dependencyGraphTransformer )
718 {
719 failIfReadOnly();
720 this.dependencyGraphTransformer = dependencyGraphTransformer;
721 return this;
722 }
723
724 public SessionData getData()
725 {
726 return data;
727 }
728
729
730
731
732
733
734
735 public DefaultRepositorySystemSession setData( SessionData data )
736 {
737 failIfReadOnly();
738 this.data = data;
739 if ( this.data == null )
740 {
741 this.data = new DefaultSessionData();
742 }
743 return this;
744 }
745
746 public RepositoryCache getCache()
747 {
748 return cache;
749 }
750
751
752
753
754
755
756
757 public DefaultRepositorySystemSession setCache( RepositoryCache cache )
758 {
759 failIfReadOnly();
760 this.cache = cache;
761 return this;
762 }
763
764
765
766
767
768
769 public void setReadOnly()
770 {
771 readOnly = true;
772 }
773
774 private void failIfReadOnly()
775 {
776 if ( readOnly )
777 {
778 throw new IllegalStateException( "repository system session is read-only" );
779 }
780 }
781
782 static class NullProxySelector
783 implements ProxySelector
784 {
785
786 public static final ProxySelector INSTANCE = new NullProxySelector();
787
788 public Proxy getProxy( RemoteRepository repository )
789 {
790 return repository.getProxy();
791 }
792
793 }
794
795 static class NullMirrorSelector
796 implements MirrorSelector
797 {
798
799 public static final MirrorSelector INSTANCE = new NullMirrorSelector();
800
801 public RemoteRepository getMirror( RemoteRepository repository )
802 {
803 return null;
804 }
805
806 }
807
808 static class NullAuthenticationSelector
809 implements AuthenticationSelector
810 {
811
812 public static final AuthenticationSelector INSTANCE = new NullAuthenticationSelector();
813
814 public Authentication getAuthentication( RemoteRepository repository )
815 {
816 return repository.getAuthentication();
817 }
818
819 }
820
821 static final class NullArtifactTypeRegistry
822 implements ArtifactTypeRegistry
823 {
824
825 public static final ArtifactTypeRegistry INSTANCE = new NullArtifactTypeRegistry();
826
827 public ArtifactType get( String typeId )
828 {
829 return null;
830 }
831
832 }
833
834 }