@@ -76,16 +76,18 @@ void copy(
7676 LOG .debug ("Content type: {}" , contentType );
7777 LOG .debug ("Manifest digest: {}" , manifestDigest );
7878
79+ SourceRefType effectiveSourceRef = sourceRef .forTarget (source ).forTarget (resolveSourceRegistry );
80+ TargetRefType effectiveTargetRef = targetRef .forTarget (target ).forTarget (effectiveTargetRegistry );
81+
7982 // Write all layer
80- for (Layer layer : source .collectLayers (sourceRef . forTarget ( resolveSourceRegistry ) , contentType , true )) {
83+ for (Layer layer : source .collectLayers (effectiveSourceRef , contentType , true )) {
8184 Objects .requireNonNull (layer .getDigest (), "Layer digest is required for streaming copy" );
8285 Objects .requireNonNull (layer .getSize (), "Layer size is required for streaming copy" );
8386 LOG .debug ("Copying layer {}" , layer .getDigest ());
8487 target .pushBlob (
85- targetRef . forTarget ( effectiveTargetRegistry ) .withDigest (layer .getDigest ()),
88+ effectiveTargetRef .withDigest (layer .getDigest ()),
8689 layer .getSize (),
87- () -> source .fetchBlob (
88- sourceRef .forTarget (resolveSourceRegistry ).withDigest (layer .getDigest ())),
90+ () -> source .fetchBlob (effectiveSourceRef .withDigest (layer .getDigest ())),
8991 layer .getAnnotations ());
9092 LOG .debug ("Copied layer {}" , layer .getDigest ());
9193 }
@@ -94,25 +96,30 @@ void copy(
9496 if (source .isManifestMediaType (contentType )) {
9597
9698 // Write manifest as any blob
97- Manifest manifest = source .getManifest (sourceRef );
98- String tag = sourceRef .getTag ();
99+ Manifest manifest = source .getManifest (effectiveSourceRef );
100+ String tag = effectiveSourceRef .getTag ();
99101
100102 Objects .requireNonNull (manifest .getDigest (), "Manifest digest is required for streaming copy" );
101103
102104 // Push config
103- copyConfig (manifest , resolveSourceRegistry , effectiveTargetRegistry , source , sourceRef , target , targetRef );
105+ copyConfig (manifest , source , effectiveSourceRef , target , effectiveTargetRef );
104106
105107 // Push the manifest
106108 LOG .debug ("Copying manifest {}" , manifestDigest );
107- target .pushManifest (targetRef .withDigest (tag ), manifest );
109+ target .pushManifest (effectiveTargetRef .withDigest (tag ), manifest );
108110 LOG .debug ("Copied manifest {}" , manifestDigest );
109111
110112 if (recursive ) {
111113 LOG .debug ("Recursively copy referrers" );
112- Referrers referrers = source .getReferrers (sourceRef .withDigest (manifestDigest ), null );
114+ Referrers referrers = source .getReferrers (effectiveSourceRef .withDigest (manifestDigest ), null );
113115 for (ManifestDescriptor referer : referrers .getManifests ()) {
114116 LOG .info ("Copy reference {}" , referer .getDigest ());
115- copy (source , sourceRef .withDigest (referer .getDigest ()), target , targetRef , recursive );
117+ copy (
118+ source ,
119+ effectiveSourceRef .withDigest (referer .getDigest ()),
120+ target ,
121+ effectiveTargetRef ,
122+ recursive );
116123 }
117124 }
118125
@@ -128,18 +135,18 @@ else if (source.isIndexMediaType(contentType)) {
128135 Manifest manifest = source .getManifest (sourceRef .withDigest (manifestDescriptor .getDigest ()));
129136
130137 // Push config
131- copyConfig (
132- manifest , resolveSourceRegistry , effectiveTargetRegistry , source , sourceRef , target , targetRef );
138+ copyConfig (manifest , source , effectiveSourceRef , target , effectiveTargetRef );
133139
134140 // Push the manifest
135141 LOG .debug ("Copying manifest {}" , manifestDigest );
136142 target .pushManifest (
137- targetRef .withDigest (manifest .getDigest ()), manifest .withDescriptor (manifestDescriptor ));
143+ effectiveTargetRef .withDigest (manifest .getDigest ()),
144+ manifest .withDescriptor (manifestDescriptor ));
138145 LOG .debug ("Copied manifest {}" , manifestDigest );
139146 }
140147
141148 LOG .debug ("Copying index {}" , manifestDigest );
142- target .pushIndex (targetRef .withDigest (tag ), index );
149+ target .pushIndex (effectiveTargetRef .withDigest (tag ), index );
143150 LOG .debug ("Copied index {}" , manifestDigest );
144151
145152 } else {
@@ -152,8 +159,6 @@ else if (source.isIndexMediaType(contentType)) {
152159 TargetRefType extends Ref <@ NonNull TargetRefType >>
153160 void copyConfig (
154161 Manifest manifest ,
155- String resolvedSourceRegistry ,
156- String effectiveTargetRegistry ,
157162 OCI <SourceRefType > source ,
158163 SourceRefType sourceRef ,
159164 OCI <TargetRefType > target ,
@@ -164,11 +169,9 @@ void copyConfig(
164169 Objects .requireNonNull (config .getDigest (), "Config digest is required for streaming copy" );
165170 Objects .requireNonNull (config .getSize (), "Config size is required for streaming copy" );
166171 target .pushBlob (
167- targetRef
168- .forTarget (effectiveTargetRegistry )
169- .withDigest (manifest .getConfig ().getDigest ()),
172+ targetRef .forTarget (target ).withDigest (manifest .getConfig ().getDigest ()),
170173 config .getSize (),
171- () -> source .pullConfig (sourceRef . forTarget ( resolvedSourceRegistry ) , manifest .getConfig ()),
174+ () -> source .pullConfig (sourceRef , manifest .getConfig ()),
172175 config .getAnnotations ());
173176 LOG .debug ("Copied config {}" , manifest .getConfig ().getDigest ());
174177 }
0 commit comments