1414package org .eclipse .m2e .core .internal .embedder ;
1515
1616import org .eclipse .aether .DefaultRepositorySystemSession ;
17+ import org .eclipse .aether .RepositorySystemSession ;
1718import org .eclipse .aether .SessionData ;
1819import org .eclipse .aether .transfer .TransferListener ;
1920
@@ -27,9 +28,13 @@ class FilterRepositorySystemSession extends org.eclipse.aether.AbstractForwardin
2728
2829 private final String updatePolicy ;
2930
30- private final DefaultRepositorySystemSession session ;
31+ private final RepositorySystemSession session ;
3132
32- public FilterRepositorySystemSession (DefaultRepositorySystemSession session , String updatePolicy ) {
33+ private TransferListener transferListener ;
34+
35+ private SessionData data ;
36+
37+ public FilterRepositorySystemSession (RepositorySystemSession session , String updatePolicy ) {
3338 this .session = session ;
3439 this .updatePolicy = updatePolicy ;
3540 }
@@ -39,22 +44,56 @@ public String getUpdatePolicy() {
3944 return updatePolicy != null ? updatePolicy : super .getUpdatePolicy ();
4045 }
4146
47+ @ Override
48+ public TransferListener getTransferListener () {
49+ if (this .transferListener == null ) {
50+ return session .getTransferListener ();
51+ }
52+ return transferListener ;
53+ }
54+
55+ @ Override
56+ public SessionData getData () {
57+ if (this .data == null ) {
58+ return session .getData ();
59+ }
60+ return this .data ;
61+ }
62+
4263 public TransferListener setTransferListener (TransferListener transferListener ) {
43- DefaultRepositorySystemSession session = getSession ();
44- TransferListener origTransferListener = session .getTransferListener ();
45- session .setTransferListener (transferListener );
64+ TransferListener origTransferListener = getTransferListener ();
65+ if (session instanceof DefaultRepositorySystemSession def ) {
66+ def .setTransferListener (transferListener );
67+ }
68+ if (session instanceof FilterRepositorySystemSession filter ) {
69+ filter .setTransferListener (transferListener );
70+ }
71+ if (transferListener == session .getTransferListener ()) {
72+ this .transferListener = null ;
73+ } else {
74+ this .transferListener = transferListener ;
75+ }
4676 return origTransferListener ;
4777 }
4878
4979 public SessionData setData (SessionData data ) {
50- DefaultRepositorySystemSession session = getSession ();
51- SessionData origSessionData = session .getData ();
52- session .setData (data );
80+ SessionData origSessionData = getData ();
81+ if (session instanceof DefaultRepositorySystemSession def ) {
82+ def .setData (data );
83+ }
84+ if (session instanceof FilterRepositorySystemSession filter ) {
85+ filter .setData (data );
86+ }
87+ if (data == session .getData ()) {
88+ this .data = null ;
89+ } else {
90+ this .data = data ;
91+ }
5392 return origSessionData ;
5493 }
5594
5695 @ Override
57- protected DefaultRepositorySystemSession getSession () {
96+ protected RepositorySystemSession getSession () {
5897 return this .session ;
5998 }
6099}
0 commit comments