1818import java .io .File ;
1919import java .io .Serializable ;
2020import java .nio .file .Path ;
21- import java .util .ArrayList ;
22- import java .util .Arrays ;
23- import java .util .LinkedHashSet ;
24- import java .util .List ;
25- import java .util .Map ;
26- import java .util .Set ;
21+ import java .util .*;
2722import java .util .function .BiConsumer ;
2823import java .util .function .Consumer ;
2924import java .util .function .Supplier ;
@@ -67,12 +62,14 @@ public void copyFrom(P2Model other) {
6762 repos .addAll (other .repos );
6863 metadataRepos .addAll (other .metadataRepos );
6964 artifactRepos .addAll (other .artifactRepos );
65+ slicingOptions .putAll (other .slicingOptions );
7066 }
7167
7268 private Set <String > ius = new LinkedHashSet <>();
7369 private Set <String > repos = new LinkedHashSet <>();
7470 private Set <String > metadataRepos = new LinkedHashSet <>();
7571 private Set <String > artifactRepos = new LinkedHashSet <>();
72+ private Map <String , String > slicingOptions = new HashMap <>();
7673
7774 /** Combines all fields for easy implementation of equals and hashCode. */
7875 private final List <Object > content = Arrays .asList (ius , repos , metadataRepos , artifactRepos );
@@ -165,6 +162,10 @@ public void addArtifactRepoBundlePool() {
165162 addArtifactRepo (GoomphCacheLocations .bundlePool ());
166163 }
167164
165+ public void addSlicingOption (String option , String value ) {
166+ slicingOptions .put (option , value );
167+ }
168+
168169 /**
169170 * There are places where we add the local bundle pool
170171 * to act as an artifact cache. But sometimes, that cache
@@ -257,6 +258,10 @@ public P2AntRunner mirrorApp(File dstFolder) {
257258 iuNode .attributes ().put ("version" , iu .substring (slash + 1 ));
258259 }
259260 }
261+
262+ if (slicingOptions .size () > 0 ) {
263+ slicingOptionsNode (taskNode );
264+ }
260265 });
261266 });
262267 }
@@ -278,6 +283,15 @@ private Node sourceNode(Node parent) {
278283 return source ;
279284 }
280285
286+ /** Creates an XML node for slicingOptions. */
287+ private Node slicingOptionsNode (Node parent ) {
288+ Node slicingOptionsNode = new Node (parent , "slicingOptions" );
289+ for (Map .Entry <String , String > option : slicingOptions .entrySet ()) {
290+ slicingOptionsNode .attributes ().put (option .getKey (), option .getValue ());
291+ }
292+ return slicingOptionsNode ;
293+ }
294+
281295 ////////////////
282296 // P2DIRECTOR //
283297 ////////////////
0 commit comments