001 package org.apache.maven.model.merge; 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 022 import java.util.ArrayList; 023 import java.util.HashMap; 024 import java.util.LinkedHashMap; 025 import java.util.List; 026 import java.util.Map; 027 import java.util.Properties; 028 029 import org.apache.maven.model.Activation; 030 import org.apache.maven.model.Build; 031 import org.apache.maven.model.BuildBase; 032 import org.apache.maven.model.CiManagement; 033 import org.apache.maven.model.ConfigurationContainer; 034 import org.apache.maven.model.Contributor; 035 import org.apache.maven.model.Dependency; 036 import org.apache.maven.model.DependencyManagement; 037 import org.apache.maven.model.DeploymentRepository; 038 import org.apache.maven.model.Developer; 039 import org.apache.maven.model.DistributionManagement; 040 import org.apache.maven.model.Exclusion; 041 import org.apache.maven.model.Extension; 042 import org.apache.maven.model.FileSet; 043 import org.apache.maven.model.InputLocation; 044 import org.apache.maven.model.IssueManagement; 045 import org.apache.maven.model.License; 046 import org.apache.maven.model.MailingList; 047 import org.apache.maven.model.Model; 048 import org.apache.maven.model.ModelBase; 049 import org.apache.maven.model.Notifier; 050 import org.apache.maven.model.Organization; 051 import org.apache.maven.model.Parent; 052 import org.apache.maven.model.PatternSet; 053 import org.apache.maven.model.Plugin; 054 import org.apache.maven.model.PluginConfiguration; 055 import org.apache.maven.model.PluginContainer; 056 import org.apache.maven.model.PluginExecution; 057 import org.apache.maven.model.PluginManagement; 058 import org.apache.maven.model.Prerequisites; 059 import org.apache.maven.model.Profile; 060 import org.apache.maven.model.Relocation; 061 import org.apache.maven.model.ReportPlugin; 062 import org.apache.maven.model.ReportSet; 063 import org.apache.maven.model.Reporting; 064 import org.apache.maven.model.Repository; 065 import org.apache.maven.model.RepositoryBase; 066 import org.apache.maven.model.RepositoryPolicy; 067 import org.apache.maven.model.Resource; 068 import org.apache.maven.model.Scm; 069 import org.apache.maven.model.Site; 070 import org.codehaus.plexus.util.xml.Xpp3Dom; 071 072 /** 073 * This is a hand-crafted prototype of the default model merger that should eventually be generated by Modello by a new 074 * Java plugin. 075 * 076 * @author Benjamin Bentmann 077 */ 078 public class ModelMerger 079 { 080 081 /** 082 * Merges the specified source object into the given target object. 083 * 084 * @param target The target object whose existing contents should be merged with the source, must not be 085 * <code>null</code>. 086 * @param source The (read-only) source object that should be merged into the target object, may be 087 * <code>null</code>. 088 * @param sourceDominant A flag indicating whether either the target object or the source object provides the 089 * dominant data. 090 * @param hints A set of key-value pairs that customized merger implementations can use to carry domain-specific 091 * information along, may be <code>null</code>. 092 */ 093 public void merge( Model target, Model source, boolean sourceDominant, Map<?, ?> hints ) 094 { 095 if ( target == null ) 096 { 097 throw new IllegalArgumentException( "target missing" ); 098 } 099 100 if ( source == null ) 101 { 102 return; 103 } 104 105 Map<Object, Object> context = new HashMap<Object, Object>(); 106 if ( hints != null ) 107 { 108 context.putAll( hints ); 109 } 110 111 mergeModel( target, source, sourceDominant, context ); 112 } 113 114 protected void mergeModel( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 115 { 116 mergeModelBase( target, source, sourceDominant, context ); 117 118 mergeModel_ModelVersion( target, source, sourceDominant, context ); 119 mergeModel_Parent( target, source, sourceDominant, context ); 120 mergeModel_GroupId( target, source, sourceDominant, context ); 121 mergeModel_ArtifactId( target, source, sourceDominant, context ); 122 mergeModel_Version( target, source, sourceDominant, context ); 123 mergeModel_Packaging( target, source, sourceDominant, context ); 124 mergeModel_Name( target, source, sourceDominant, context ); 125 mergeModel_Description( target, source, sourceDominant, context ); 126 mergeModel_Url( target, source, sourceDominant, context ); 127 mergeModel_InceptionYear( target, source, sourceDominant, context ); 128 mergeModel_Organization( target, source, sourceDominant, context ); 129 mergeModel_Licenses( target, source, sourceDominant, context ); 130 mergeModel_MailingLists( target, source, sourceDominant, context ); 131 mergeModel_Developers( target, source, sourceDominant, context ); 132 mergeModel_Contributors( target, source, sourceDominant, context ); 133 mergeModel_IssueManagement( target, source, sourceDominant, context ); 134 mergeModel_Scm( target, source, sourceDominant, context ); 135 mergeModel_CiManagement( target, source, sourceDominant, context ); 136 mergeModel_Prerequisites( target, source, sourceDominant, context ); 137 mergeModel_Build( target, source, sourceDominant, context ); 138 mergeModel_Profiles( target, source, sourceDominant, context ); 139 } 140 141 protected void mergeModel_ModelVersion( Model target, Model source, boolean sourceDominant, 142 Map<Object, Object> context ) 143 { 144 String src = source.getModelVersion(); 145 if ( src != null ) 146 { 147 if ( sourceDominant || target.getModelVersion() == null ) 148 { 149 target.setModelVersion( src ); 150 target.setLocation( "modelVersion", source.getLocation( "modelVersion" ) ); 151 } 152 } 153 } 154 155 protected void mergeModel_Parent( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 156 { 157 Parent src = source.getParent(); 158 if ( src != null ) 159 { 160 Parent tgt = target.getParent(); 161 if ( tgt == null ) 162 { 163 tgt = new Parent(); 164 tgt.setRelativePath( null ); 165 target.setParent( tgt ); 166 } 167 mergeParent( tgt, src, sourceDominant, context ); 168 } 169 } 170 171 protected void mergeModel_GroupId( Model target, Model source, boolean sourceDominant, 172 Map<Object, Object> context ) 173 { 174 String src = source.getGroupId(); 175 if ( src != null ) 176 { 177 if ( sourceDominant || target.getGroupId() == null ) 178 { 179 target.setGroupId( src ); 180 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 181 } 182 } 183 } 184 185 protected void mergeModel_ArtifactId( Model target, Model source, boolean sourceDominant, 186 Map<Object, Object> context ) 187 { 188 String src = source.getArtifactId(); 189 if ( src != null ) 190 { 191 if ( sourceDominant || target.getArtifactId() == null ) 192 { 193 target.setArtifactId( src ); 194 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 195 } 196 } 197 } 198 199 protected void mergeModel_Version( Model target, Model source, boolean sourceDominant, 200 Map<Object, Object> context ) 201 { 202 String src = source.getVersion(); 203 if ( src != null ) 204 { 205 if ( sourceDominant || target.getVersion() == null ) 206 { 207 target.setVersion( src ); 208 target.setLocation( "version", source.getLocation( "version" ) ); 209 } 210 } 211 } 212 213 protected void mergeModel_Packaging( Model target, Model source, boolean sourceDominant, 214 Map<Object, Object> context ) 215 { 216 String src = source.getPackaging(); 217 if ( src != null ) 218 { 219 if ( sourceDominant || target.getPackaging() == null ) 220 { 221 target.setPackaging( src ); 222 target.setLocation( "packaging", source.getLocation( "packaging" ) ); 223 } 224 } 225 } 226 227 protected void mergeModel_Name( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 228 { 229 String src = source.getName(); 230 if ( src != null ) 231 { 232 if ( sourceDominant || target.getName() == null ) 233 { 234 target.setName( src ); 235 target.setLocation( "name", source.getLocation( "name" ) ); 236 } 237 } 238 } 239 240 protected void mergeModel_Description( Model target, Model source, boolean sourceDominant, 241 Map<Object, Object> context ) 242 { 243 String src = source.getDescription(); 244 if ( src != null ) 245 { 246 if ( sourceDominant || target.getDescription() == null ) 247 { 248 target.setDescription( src ); 249 target.setLocation( "description", source.getLocation( "description" ) ); 250 } 251 } 252 } 253 254 protected void mergeModel_Url( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 255 { 256 String src = source.getUrl(); 257 if ( src != null ) 258 { 259 if ( sourceDominant || target.getUrl() == null ) 260 { 261 target.setUrl( src ); 262 target.setLocation( "url", source.getLocation( "url" ) ); 263 } 264 } 265 } 266 267 protected void mergeModel_InceptionYear( Model target, Model source, boolean sourceDominant, 268 Map<Object, Object> context ) 269 { 270 String src = source.getInceptionYear(); 271 if ( src != null ) 272 { 273 if ( sourceDominant || target.getInceptionYear() == null ) 274 { 275 target.setInceptionYear( src ); 276 target.setLocation( "inceptionYear", source.getLocation( "inceptionYear" ) ); 277 } 278 } 279 } 280 281 protected void mergeModel_Organization( Model target, Model source, boolean sourceDominant, 282 Map<Object, Object> context ) 283 { 284 Organization src = source.getOrganization(); 285 if ( src != null ) 286 { 287 Organization tgt = target.getOrganization(); 288 if ( tgt == null ) 289 { 290 tgt = new Organization(); 291 target.setOrganization( tgt ); 292 } 293 mergeOrganization( tgt, src, sourceDominant, context ); 294 } 295 } 296 297 protected void mergeModel_Licenses( Model target, Model source, boolean sourceDominant, 298 Map<Object, Object> context ) 299 { 300 List<License> src = source.getLicenses(); 301 if ( !src.isEmpty() ) 302 { 303 List<License> tgt = target.getLicenses(); 304 Map<Object, License> merged = new LinkedHashMap<Object, License>( ( src.size() + tgt.size() ) * 2 ); 305 306 for ( License element : tgt ) 307 { 308 Object key = getLicenseKey( element ); 309 merged.put( key, element ); 310 } 311 312 for ( License element : src ) 313 { 314 Object key = getLicenseKey( element ); 315 if ( sourceDominant || !merged.containsKey( key ) ) 316 { 317 merged.put( key, element ); 318 } 319 } 320 321 target.setLicenses( new ArrayList<License>( merged.values() ) ); 322 } 323 } 324 325 protected void mergeModel_MailingLists( Model target, Model source, boolean sourceDominant, 326 Map<Object, Object> context ) 327 { 328 List<MailingList> src = source.getMailingLists(); 329 if ( !src.isEmpty() ) 330 { 331 List<MailingList> tgt = target.getMailingLists(); 332 Map<Object, MailingList> merged = new LinkedHashMap<Object, MailingList>( ( src.size() + tgt.size() ) * 2 ); 333 334 for ( MailingList element : tgt ) 335 { 336 Object key = getMailingListKey( element ); 337 merged.put( key, element ); 338 } 339 340 for ( MailingList element : src ) 341 { 342 Object key = getMailingListKey( element ); 343 if ( sourceDominant || !merged.containsKey( key ) ) 344 { 345 merged.put( key, element ); 346 } 347 } 348 349 target.setMailingLists( new ArrayList<MailingList>( merged.values() ) ); 350 } 351 } 352 353 protected void mergeModel_Developers( Model target, Model source, boolean sourceDominant, 354 Map<Object, Object> context ) 355 { 356 List<Developer> src = source.getDevelopers(); 357 if ( !src.isEmpty() ) 358 { 359 List<Developer> tgt = target.getDevelopers(); 360 Map<Object, Developer> merged = new LinkedHashMap<Object, Developer>( ( src.size() + tgt.size() ) * 2 ); 361 362 for ( Developer element : tgt ) 363 { 364 Object key = getDeveloperKey( element ); 365 merged.put( key, element ); 366 } 367 368 for ( Developer element : src ) 369 { 370 Object key = getDeveloperKey( element ); 371 if ( sourceDominant || !merged.containsKey( key ) ) 372 { 373 merged.put( key, element ); 374 } 375 } 376 377 target.setDevelopers( new ArrayList<Developer>( merged.values() ) ); 378 } 379 } 380 381 protected void mergeModel_Contributors( Model target, Model source, boolean sourceDominant, 382 Map<Object, Object> context ) 383 { 384 List<Contributor> src = source.getContributors(); 385 if ( !src.isEmpty() ) 386 { 387 List<Contributor> tgt = target.getContributors(); 388 Map<Object, Contributor> merged = new LinkedHashMap<Object, Contributor>( ( src.size() + tgt.size() ) * 2 ); 389 390 for ( Contributor element : tgt ) 391 { 392 Object key = getContributorKey( element ); 393 merged.put( key, element ); 394 } 395 396 for ( Contributor element : src ) 397 { 398 Object key = getContributorKey( element ); 399 if ( sourceDominant || !merged.containsKey( key ) ) 400 { 401 merged.put( key, element ); 402 } 403 } 404 405 target.setContributors( new ArrayList<Contributor>( merged.values() ) ); 406 } 407 } 408 409 protected void mergeModel_IssueManagement( Model target, Model source, boolean sourceDominant, 410 Map<Object, Object> context ) 411 { 412 IssueManagement src = source.getIssueManagement(); 413 if ( src != null ) 414 { 415 IssueManagement tgt = target.getIssueManagement(); 416 if ( tgt == null ) 417 { 418 tgt = new IssueManagement(); 419 target.setIssueManagement( tgt ); 420 } 421 mergeIssueManagement( tgt, src, sourceDominant, context ); 422 } 423 } 424 425 protected void mergeModel_Scm( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 426 { 427 Scm src = source.getScm(); 428 if ( src != null ) 429 { 430 Scm tgt = target.getScm(); 431 if ( tgt == null ) 432 { 433 tgt = new Scm(); 434 tgt.setTag( null ); 435 target.setScm( tgt ); 436 } 437 mergeScm( tgt, src, sourceDominant, context ); 438 } 439 } 440 441 protected void mergeModel_CiManagement( Model target, Model source, boolean sourceDominant, 442 Map<Object, Object> context ) 443 { 444 CiManagement src = source.getCiManagement(); 445 if ( src != null ) 446 { 447 CiManagement tgt = target.getCiManagement(); 448 if ( tgt == null ) 449 { 450 tgt = new CiManagement(); 451 target.setCiManagement( tgt ); 452 } 453 mergeCiManagement( tgt, src, sourceDominant, context ); 454 } 455 } 456 457 protected void mergeModel_Prerequisites( Model target, Model source, boolean sourceDominant, 458 Map<Object, Object> context ) 459 { 460 Prerequisites src = source.getPrerequisites(); 461 if ( src != null ) 462 { 463 Prerequisites tgt = target.getPrerequisites(); 464 if ( tgt == null ) 465 { 466 tgt = new Prerequisites(); 467 tgt.setMaven( null ); 468 target.setPrerequisites( tgt ); 469 } 470 mergePrerequisites( tgt, src, sourceDominant, context ); 471 } 472 } 473 474 protected void mergeModel_Build( Model target, Model source, boolean sourceDominant, Map<Object, Object> context ) 475 { 476 Build src = source.getBuild(); 477 if ( src != null ) 478 { 479 Build tgt = target.getBuild(); 480 if ( tgt == null ) 481 { 482 tgt = new Build(); 483 target.setBuild( tgt ); 484 } 485 mergeBuild( tgt, src, sourceDominant, context ); 486 } 487 } 488 489 protected void mergeModel_Profiles( Model target, Model source, boolean sourceDominant, 490 Map<Object, Object> context ) 491 { 492 List<Profile> src = source.getProfiles(); 493 if ( !src.isEmpty() ) 494 { 495 List<Profile> tgt = target.getProfiles(); 496 Map<Object, Profile> merged = new LinkedHashMap<Object, Profile>( ( src.size() + tgt.size() ) * 2 ); 497 498 for ( Profile element : tgt ) 499 { 500 Object key = getProfileKey( element ); 501 merged.put( key, element ); 502 } 503 504 for ( Profile element : src ) 505 { 506 Object key = getProfileKey( element ); 507 if ( sourceDominant || !merged.containsKey( key ) ) 508 { 509 merged.put( key, element ); 510 } 511 } 512 513 target.setProfiles( new ArrayList<Profile>( merged.values() ) ); 514 } 515 } 516 517 protected void mergeModelBase( ModelBase target, ModelBase source, boolean sourceDominant, 518 Map<Object, Object> context ) 519 { 520 mergeModelBase_DistributionManagement( target, source, sourceDominant, context ); 521 mergeModelBase_Modules( target, source, sourceDominant, context ); 522 mergeModelBase_Repositories( target, source, sourceDominant, context ); 523 mergeModelBase_PluginRepositories( target, source, sourceDominant, context ); 524 mergeModelBase_Dependencies( target, source, sourceDominant, context ); 525 mergeModelBase_Reporting( target, source, sourceDominant, context ); 526 mergeModelBase_DependencyManagement( target, source, sourceDominant, context ); 527 mergeModelBase_Properties( target, source, sourceDominant, context ); 528 } 529 530 protected void mergeModelBase_Modules( ModelBase target, ModelBase source, boolean sourceDominant, 531 Map<Object, Object> context ) 532 { 533 List<String> src = source.getModules(); 534 if ( !src.isEmpty() ) 535 { 536 List<String> tgt = target.getModules(); 537 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 538 merged.addAll( tgt ); 539 merged.addAll( src ); 540 target.setModules( merged ); 541 } 542 } 543 544 protected void mergeModelBase_Dependencies( ModelBase target, ModelBase source, boolean sourceDominant, 545 Map<Object, Object> context ) 546 { 547 List<Dependency> src = source.getDependencies(); 548 if ( !src.isEmpty() ) 549 { 550 List<Dependency> tgt = target.getDependencies(); 551 Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 ); 552 553 for ( Dependency element : tgt ) 554 { 555 Object key = getDependencyKey( element ); 556 merged.put( key, element ); 557 } 558 559 for ( Dependency element : src ) 560 { 561 Object key = getDependencyKey( element ); 562 if ( sourceDominant || !merged.containsKey( key ) ) 563 { 564 merged.put( key, element ); 565 } 566 } 567 568 target.setDependencies( new ArrayList<Dependency>( merged.values() ) ); 569 } 570 } 571 572 protected void mergeModelBase_Repositories( ModelBase target, ModelBase source, boolean sourceDominant, 573 Map<Object, Object> context ) 574 { 575 List<Repository> src = source.getRepositories(); 576 if ( !src.isEmpty() ) 577 { 578 List<Repository> tgt = target.getRepositories(); 579 Map<Object, Repository> merged = new LinkedHashMap<Object, Repository>( ( src.size() + tgt.size() ) * 2 ); 580 581 for ( Repository element : tgt ) 582 { 583 Object key = getRepositoryKey( element ); 584 merged.put( key, element ); 585 } 586 587 for ( Repository element : src ) 588 { 589 Object key = getRepositoryKey( element ); 590 if ( sourceDominant || !merged.containsKey( key ) ) 591 { 592 merged.put( key, element ); 593 } 594 } 595 596 target.setRepositories( new ArrayList<Repository>( merged.values() ) ); 597 } 598 } 599 600 protected void mergeModelBase_PluginRepositories( ModelBase target, ModelBase source, boolean sourceDominant, 601 Map<Object, Object> context ) 602 { 603 List<Repository> src = source.getPluginRepositories(); 604 if ( !src.isEmpty() ) 605 { 606 List<Repository> tgt = target.getPluginRepositories(); 607 Map<Object, Repository> merged = new LinkedHashMap<Object, Repository>( ( src.size() + tgt.size() ) * 2 ); 608 609 for ( Repository element : tgt ) 610 { 611 Object key = getRepositoryKey( element ); 612 merged.put( key, element ); 613 } 614 615 for ( Repository element : src ) 616 { 617 Object key = getRepositoryKey( element ); 618 if ( sourceDominant || !merged.containsKey( key ) ) 619 { 620 merged.put( key, element ); 621 } 622 } 623 624 target.setPluginRepositories( new ArrayList<Repository>( merged.values() ) ); 625 } 626 } 627 628 protected void mergeModelBase_DistributionManagement( ModelBase target, ModelBase source, boolean sourceDominant, 629 Map<Object, Object> context ) 630 { 631 DistributionManagement src = source.getDistributionManagement(); 632 if ( src != null ) 633 { 634 DistributionManagement tgt = target.getDistributionManagement(); 635 if ( tgt == null ) 636 { 637 tgt = new DistributionManagement(); 638 target.setDistributionManagement( tgt ); 639 } 640 mergeDistributionManagement( tgt, src, sourceDominant, context ); 641 } 642 } 643 644 protected void mergeModelBase_Reporting( ModelBase target, ModelBase source, boolean sourceDominant, 645 Map<Object, Object> context ) 646 { 647 Reporting src = source.getReporting(); 648 if ( src != null ) 649 { 650 Reporting tgt = target.getReporting(); 651 if ( tgt == null ) 652 { 653 tgt = new Reporting(); 654 target.setReporting( tgt ); 655 } 656 mergeReporting( tgt, src, sourceDominant, context ); 657 } 658 } 659 660 protected void mergeModelBase_DependencyManagement( ModelBase target, ModelBase source, boolean sourceDominant, 661 Map<Object, Object> context ) 662 { 663 DependencyManagement src = source.getDependencyManagement(); 664 if ( src != null ) 665 { 666 DependencyManagement tgt = target.getDependencyManagement(); 667 if ( tgt == null ) 668 { 669 tgt = new DependencyManagement(); 670 target.setDependencyManagement( tgt ); 671 } 672 mergeDependencyManagement( tgt, src, sourceDominant, context ); 673 } 674 } 675 676 protected void mergeModelBase_Properties( ModelBase target, ModelBase source, boolean sourceDominant, 677 Map<Object, Object> context ) 678 { 679 Properties merged = new Properties(); 680 if ( sourceDominant ) 681 { 682 merged.putAll( target.getProperties() ); 683 merged.putAll( source.getProperties() ); 684 } 685 else 686 { 687 merged.putAll( source.getProperties() ); 688 merged.putAll( target.getProperties() ); 689 } 690 target.setProperties( merged ); 691 target.setLocation( "properties", InputLocation.merge( target.getLocation( "properties" ), 692 source.getLocation( "properties" ), sourceDominant ) ); 693 } 694 695 protected void mergeDistributionManagement( DistributionManagement target, DistributionManagement source, 696 boolean sourceDominant, Map<Object, Object> context ) 697 { 698 mergeDistributionManagement_Repository( target, source, sourceDominant, context ); 699 mergeDistributionManagement_SnapshotRepository( target, source, sourceDominant, context ); 700 mergeDistributionManagement_Site( target, source, sourceDominant, context ); 701 mergeDistributionManagement_Status( target, source, sourceDominant, context ); 702 mergeDistributionManagement_DownloadUrl( target, source, sourceDominant, context ); 703 } 704 705 protected void mergeDistributionManagement_Repository( DistributionManagement target, 706 DistributionManagement source, boolean sourceDominant, 707 Map<Object, Object> context ) 708 { 709 DeploymentRepository src = source.getRepository(); 710 if ( src != null ) 711 { 712 DeploymentRepository tgt = target.getRepository(); 713 if ( tgt == null ) 714 { 715 tgt = new DeploymentRepository(); 716 target.setRepository( tgt ); 717 } 718 mergeDeploymentRepository( tgt, src, sourceDominant, context ); 719 } 720 } 721 722 protected void mergeDistributionManagement_SnapshotRepository( DistributionManagement target, 723 DistributionManagement source, 724 boolean sourceDominant, 725 Map<Object, Object> context ) 726 { 727 DeploymentRepository src = source.getSnapshotRepository(); 728 if ( src != null ) 729 { 730 DeploymentRepository tgt = target.getSnapshotRepository(); 731 if ( tgt == null ) 732 { 733 tgt = new DeploymentRepository(); 734 target.setSnapshotRepository( tgt ); 735 } 736 mergeDeploymentRepository( tgt, src, sourceDominant, context ); 737 } 738 } 739 740 protected void mergeDistributionManagement_Site( DistributionManagement target, DistributionManagement source, 741 boolean sourceDominant, Map<Object, Object> context ) 742 { 743 Site src = source.getSite(); 744 if ( src != null ) 745 { 746 Site tgt = target.getSite(); 747 if ( tgt == null ) 748 { 749 tgt = new Site(); 750 target.setSite( tgt ); 751 } 752 mergeSite( tgt, src, sourceDominant, context ); 753 } 754 } 755 756 protected void mergeDistributionManagement_Status( DistributionManagement target, DistributionManagement source, 757 boolean sourceDominant, Map<Object, Object> context ) 758 { 759 String src = source.getStatus(); 760 if ( src != null ) 761 { 762 if ( sourceDominant || target.getStatus() == null ) 763 { 764 target.setStatus( src ); 765 target.setLocation( "status", source.getLocation( "status" ) ); 766 } 767 } 768 } 769 770 protected void mergeDistributionManagement_DownloadUrl( DistributionManagement target, 771 DistributionManagement source, boolean sourceDominant, 772 Map<Object, Object> context ) 773 { 774 String src = source.getDownloadUrl(); 775 if ( src != null ) 776 { 777 if ( sourceDominant || target.getDownloadUrl() == null ) 778 { 779 target.setDownloadUrl( src ); 780 target.setLocation( "downloadUrl", source.getLocation( "downloadUrl" ) ); 781 } 782 } 783 } 784 785 protected void mergeRelocation( Relocation target, Relocation source, boolean sourceDominant, 786 Map<Object, Object> context ) 787 { 788 mergeRelocation_GroupId( target, source, sourceDominant, context ); 789 mergeRelocation_ArtifactId( target, source, sourceDominant, context ); 790 mergeRelocation_Version( target, source, sourceDominant, context ); 791 mergeRelocation_Message( target, source, sourceDominant, context ); 792 } 793 794 protected void mergeRelocation_GroupId( Relocation target, Relocation source, boolean sourceDominant, 795 Map<Object, Object> context ) 796 { 797 String src = source.getGroupId(); 798 if ( src != null ) 799 { 800 if ( sourceDominant || target.getGroupId() == null ) 801 { 802 target.setGroupId( src ); 803 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 804 } 805 } 806 } 807 808 protected void mergeRelocation_ArtifactId( Relocation target, Relocation source, boolean sourceDominant, 809 Map<Object, Object> context ) 810 { 811 String src = source.getArtifactId(); 812 if ( src != null ) 813 { 814 if ( sourceDominant || target.getArtifactId() == null ) 815 { 816 target.setArtifactId( src ); 817 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 818 } 819 } 820 } 821 822 protected void mergeRelocation_Version( Relocation target, Relocation source, boolean sourceDominant, 823 Map<Object, Object> context ) 824 { 825 String src = source.getVersion(); 826 if ( src != null ) 827 { 828 if ( sourceDominant || target.getVersion() == null ) 829 { 830 target.setVersion( src ); 831 target.setLocation( "version", source.getLocation( "version" ) ); 832 } 833 } 834 } 835 836 protected void mergeRelocation_Message( Relocation target, Relocation source, boolean sourceDominant, 837 Map<Object, Object> context ) 838 { 839 String src = source.getMessage(); 840 if ( src != null ) 841 { 842 if ( sourceDominant || target.getMessage() == null ) 843 { 844 target.setMessage( src ); 845 target.setLocation( "message", source.getLocation( "message" ) ); 846 } 847 } 848 } 849 850 protected void mergeDeploymentRepository( DeploymentRepository target, DeploymentRepository source, 851 boolean sourceDominant, Map<Object, Object> context ) 852 { 853 mergeRepository( target, source, sourceDominant, context ); 854 mergeDeploymentRepository_UniqueVersion( target, source, sourceDominant, context ); 855 } 856 857 protected void mergeDeploymentRepository_UniqueVersion( DeploymentRepository target, DeploymentRepository source, 858 boolean sourceDominant, Map<Object, Object> context ) 859 { 860 if ( sourceDominant ) 861 { 862 target.setUniqueVersion( source.isUniqueVersion() ); 863 target.setLocation( "uniqueVersion", source.getLocation( "uniqueVersion" ) ); 864 } 865 } 866 867 protected void mergeSite( Site target, Site source, boolean sourceDominant, Map<Object, Object> context ) 868 { 869 mergeSite_Id( target, source, sourceDominant, context ); 870 mergeSite_Name( target, source, sourceDominant, context ); 871 mergeSite_Url( target, source, sourceDominant, context ); 872 } 873 874 protected void mergeSite_Id( Site target, Site source, boolean sourceDominant, Map<Object, Object> context ) 875 { 876 String src = source.getId(); 877 if ( src != null ) 878 { 879 if ( sourceDominant || target.getId() == null ) 880 { 881 target.setId( src ); 882 target.setLocation( "id", source.getLocation( "id" ) ); 883 } 884 } 885 } 886 887 protected void mergeSite_Name( Site target, Site source, boolean sourceDominant, Map<Object, Object> context ) 888 { 889 String src = source.getName(); 890 if ( src != null ) 891 { 892 if ( sourceDominant || target.getName() == null ) 893 { 894 target.setName( src ); 895 target.setLocation( "name", source.getLocation( "name" ) ); 896 } 897 } 898 } 899 900 protected void mergeSite_Url( Site target, Site source, boolean sourceDominant, Map<Object, Object> context ) 901 { 902 String src = source.getUrl(); 903 if ( src != null ) 904 { 905 if ( sourceDominant || target.getUrl() == null ) 906 { 907 target.setUrl( src ); 908 target.setLocation( "url", source.getLocation( "url" ) ); 909 } 910 } 911 } 912 913 protected void mergeRepository( Repository target, Repository source, boolean sourceDominant, 914 Map<Object, Object> context ) 915 { 916 mergeRepositoryBase( target, source, sourceDominant, context ); 917 mergeRepository_Releases( target, source, sourceDominant, context ); 918 mergeRepository_Snapshots( target, source, sourceDominant, context ); 919 } 920 921 protected void mergeRepository_Releases( Repository target, Repository source, boolean sourceDominant, 922 Map<Object, Object> context ) 923 { 924 RepositoryPolicy src = source.getReleases(); 925 if ( src != null ) 926 { 927 RepositoryPolicy tgt = target.getReleases(); 928 if ( tgt == null ) 929 { 930 tgt = new RepositoryPolicy(); 931 target.setReleases( tgt ); 932 } 933 mergeRepositoryPolicy( tgt, src, sourceDominant, context ); 934 } 935 } 936 937 protected void mergeRepository_Snapshots( Repository target, Repository source, boolean sourceDominant, 938 Map<Object, Object> context ) 939 { 940 RepositoryPolicy src = source.getSnapshots(); 941 if ( src != null ) 942 { 943 RepositoryPolicy tgt = target.getSnapshots(); 944 if ( tgt == null ) 945 { 946 tgt = new RepositoryPolicy(); 947 target.setSnapshots( tgt ); 948 } 949 mergeRepositoryPolicy( tgt, src, sourceDominant, context ); 950 } 951 } 952 953 protected void mergeRepositoryBase( RepositoryBase target, RepositoryBase source, boolean sourceDominant, 954 Map<Object, Object> context ) 955 { 956 mergeRepositoryBase_Id( target, source, sourceDominant, context ); 957 mergeRepositoryBase_Name( target, source, sourceDominant, context ); 958 mergeRepositoryBase_Url( target, source, sourceDominant, context ); 959 mergeRepositoryBase_Layout( target, source, sourceDominant, context ); 960 } 961 962 protected void mergeRepositoryBase_Id( RepositoryBase target, RepositoryBase source, boolean sourceDominant, 963 Map<Object, Object> context ) 964 { 965 String src = source.getId(); 966 if ( src != null ) 967 { 968 if ( sourceDominant || target.getId() == null ) 969 { 970 target.setId( src ); 971 target.setLocation( "id", source.getLocation( "id" ) ); 972 } 973 } 974 } 975 976 protected void mergeRepositoryBase_Url( RepositoryBase target, RepositoryBase source, boolean sourceDominant, 977 Map<Object, Object> context ) 978 { 979 String src = source.getUrl(); 980 if ( src != null ) 981 { 982 if ( sourceDominant || target.getUrl() == null ) 983 { 984 target.setUrl( src ); 985 target.setLocation( "url", source.getLocation( "url" ) ); 986 } 987 } 988 } 989 990 protected void mergeRepositoryBase_Name( RepositoryBase target, RepositoryBase source, boolean sourceDominant, 991 Map<Object, Object> context ) 992 { 993 String src = source.getName(); 994 if ( src != null ) 995 { 996 if ( sourceDominant || target.getName() == null ) 997 { 998 target.setName( src ); 999 target.setLocation( "name", source.getLocation( "name" ) ); 1000 } 1001 } 1002 } 1003 1004 protected void mergeRepositoryBase_Layout( RepositoryBase target, RepositoryBase source, boolean sourceDominant, 1005 Map<Object, Object> context ) 1006 { 1007 String src = source.getLayout(); 1008 if ( src != null ) 1009 { 1010 if ( sourceDominant || target.getLayout() == null ) 1011 { 1012 target.setLayout( src ); 1013 target.setLocation( "layout", source.getLocation( "layout" ) ); 1014 } 1015 } 1016 } 1017 1018 protected void mergeRepositoryPolicy( RepositoryPolicy target, RepositoryPolicy source, boolean sourceDominant, 1019 Map<Object, Object> context ) 1020 { 1021 mergeRepositoryPolicy_Enabled( target, source, sourceDominant, context ); 1022 mergeRepositoryPolicy_UpdatePolicy( target, source, sourceDominant, context ); 1023 mergeRepositoryPolicy_ChecksumPolicy( target, source, sourceDominant, context ); 1024 } 1025 1026 protected void mergeRepositoryPolicy_Enabled( RepositoryPolicy target, RepositoryPolicy source, 1027 boolean sourceDominant, Map<Object, Object> context ) 1028 { 1029 String src = source.getEnabled(); 1030 if ( src != null ) 1031 { 1032 if ( sourceDominant || target.getEnabled() == null ) 1033 { 1034 target.setEnabled( src ); 1035 target.setLocation( "enabled", source.getLocation( "enabled" ) ); 1036 } 1037 } 1038 } 1039 1040 protected void mergeRepositoryPolicy_UpdatePolicy( RepositoryPolicy target, RepositoryPolicy source, 1041 boolean sourceDominant, Map<Object, Object> context ) 1042 { 1043 String src = source.getUpdatePolicy(); 1044 if ( src != null ) 1045 { 1046 if ( sourceDominant || target.getUpdatePolicy() == null ) 1047 { 1048 target.setUpdatePolicy( src ); 1049 target.setLocation( "updatePolicy", source.getLocation( "updatePolicy" ) ); 1050 } 1051 } 1052 } 1053 1054 protected void mergeRepositoryPolicy_ChecksumPolicy( RepositoryPolicy target, RepositoryPolicy source, 1055 boolean sourceDominant, Map<Object, Object> context ) 1056 { 1057 String src = source.getChecksumPolicy(); 1058 if ( src != null ) 1059 { 1060 if ( sourceDominant || target.getChecksumPolicy() == null ) 1061 { 1062 target.setChecksumPolicy( src ); 1063 target.setLocation( "checksumPolicy", source.getLocation( "checksumPolicy" ) ); 1064 } 1065 } 1066 } 1067 1068 protected void mergeDependency( Dependency target, Dependency source, boolean sourceDominant, 1069 Map<Object, Object> context ) 1070 { 1071 mergeDependency_GroupId( target, source, sourceDominant, context ); 1072 mergeDependency_ArtifactId( target, source, sourceDominant, context ); 1073 mergeDependency_Version( target, source, sourceDominant, context ); 1074 mergeDependency_Type( target, source, sourceDominant, context ); 1075 mergeDependency_Classifier( target, source, sourceDominant, context ); 1076 mergeDependency_Scope( target, source, sourceDominant, context ); 1077 mergeDependency_SystemPath( target, source, sourceDominant, context ); 1078 mergeDependency_Optional( target, source, sourceDominant, context ); 1079 mergeDependency_Exclusions( target, source, sourceDominant, context ); 1080 } 1081 1082 protected void mergeDependency_GroupId( Dependency target, Dependency source, boolean sourceDominant, 1083 Map<Object, Object> context ) 1084 { 1085 String src = source.getGroupId(); 1086 if ( src != null ) 1087 { 1088 if ( sourceDominant || target.getGroupId() == null ) 1089 { 1090 target.setGroupId( src ); 1091 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 1092 } 1093 } 1094 } 1095 1096 protected void mergeDependency_ArtifactId( Dependency target, Dependency source, boolean sourceDominant, 1097 Map<Object, Object> context ) 1098 { 1099 String src = source.getArtifactId(); 1100 if ( src != null ) 1101 { 1102 if ( sourceDominant || target.getArtifactId() == null ) 1103 { 1104 target.setArtifactId( src ); 1105 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 1106 } 1107 } 1108 } 1109 1110 protected void mergeDependency_Version( Dependency target, Dependency source, boolean sourceDominant, 1111 Map<Object, Object> context ) 1112 { 1113 String src = source.getVersion(); 1114 if ( src != null ) 1115 { 1116 if ( sourceDominant || target.getVersion() == null ) 1117 { 1118 target.setVersion( src ); 1119 target.setLocation( "version", source.getLocation( "version" ) ); 1120 } 1121 } 1122 } 1123 1124 protected void mergeDependency_Type( Dependency target, Dependency source, boolean sourceDominant, 1125 Map<Object, Object> context ) 1126 { 1127 String src = source.getType(); 1128 if ( src != null ) 1129 { 1130 if ( sourceDominant || target.getType() == null ) 1131 { 1132 target.setType( src ); 1133 target.setLocation( "type", source.getLocation( "type" ) ); 1134 } 1135 } 1136 } 1137 1138 protected void mergeDependency_Classifier( Dependency target, Dependency source, boolean sourceDominant, 1139 Map<Object, Object> context ) 1140 { 1141 String src = source.getClassifier(); 1142 if ( src != null ) 1143 { 1144 if ( sourceDominant || target.getClassifier() == null ) 1145 { 1146 target.setClassifier( src ); 1147 target.setLocation( "classifier", source.getLocation( "classifier" ) ); 1148 } 1149 } 1150 } 1151 1152 protected void mergeDependency_Scope( Dependency target, Dependency source, boolean sourceDominant, 1153 Map<Object, Object> context ) 1154 { 1155 String src = source.getScope(); 1156 if ( src != null ) 1157 { 1158 if ( sourceDominant || target.getScope() == null ) 1159 { 1160 target.setScope( src ); 1161 target.setLocation( "scope", source.getLocation( "scope" ) ); 1162 } 1163 } 1164 } 1165 1166 protected void mergeDependency_SystemPath( Dependency target, Dependency source, boolean sourceDominant, 1167 Map<Object, Object> context ) 1168 { 1169 String src = source.getSystemPath(); 1170 if ( src != null ) 1171 { 1172 if ( sourceDominant || target.getSystemPath() == null ) 1173 { 1174 target.setSystemPath( src ); 1175 target.setLocation( "systemPath", source.getLocation( "systemPath" ) ); 1176 } 1177 } 1178 } 1179 1180 protected void mergeDependency_Optional( Dependency target, Dependency source, boolean sourceDominant, 1181 Map<Object, Object> context ) 1182 { 1183 String src = source.getOptional(); 1184 if ( src != null ) 1185 { 1186 if ( sourceDominant || target.getOptional() == null ) 1187 { 1188 target.setOptional( src ); 1189 target.setLocation( "optional", source.getLocation( "optional" ) ); 1190 } 1191 } 1192 } 1193 1194 protected void mergeDependency_Exclusions( Dependency target, Dependency source, boolean sourceDominant, 1195 Map<Object, Object> context ) 1196 { 1197 List<Exclusion> src = source.getExclusions(); 1198 if ( !src.isEmpty() ) 1199 { 1200 List<Exclusion> tgt = target.getExclusions(); 1201 1202 Map<Object, Exclusion> merged = new LinkedHashMap<Object, Exclusion>( ( src.size() + tgt.size() ) * 2 ); 1203 1204 for ( Exclusion element : tgt ) 1205 { 1206 Object key = getExclusionKey( element ); 1207 merged.put( key, element ); 1208 } 1209 1210 for ( Exclusion element : src ) 1211 { 1212 Object key = getExclusionKey( element ); 1213 if ( sourceDominant || !merged.containsKey( key ) ) 1214 { 1215 merged.put( key, element ); 1216 } 1217 } 1218 1219 target.setExclusions( new ArrayList<Exclusion>( merged.values() ) ); 1220 } 1221 } 1222 1223 protected void mergeExclusion( Exclusion target, Exclusion source, boolean sourceDominant, 1224 Map<Object, Object> context ) 1225 { 1226 mergeExclusion_GroupId( target, source, sourceDominant, context ); 1227 mergeExclusion_ArtifactId( target, source, sourceDominant, context ); 1228 } 1229 1230 protected void mergeExclusion_GroupId( Exclusion target, Exclusion source, boolean sourceDominant, 1231 Map<Object, Object> context ) 1232 { 1233 String src = source.getGroupId(); 1234 if ( src != null ) 1235 { 1236 if ( sourceDominant || target.getGroupId() == null ) 1237 { 1238 target.setGroupId( src ); 1239 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 1240 } 1241 } 1242 } 1243 1244 protected void mergeExclusion_ArtifactId( Exclusion target, Exclusion source, boolean sourceDominant, 1245 Map<Object, Object> context ) 1246 { 1247 String src = source.getArtifactId(); 1248 if ( src != null ) 1249 { 1250 if ( sourceDominant || target.getArtifactId() == null ) 1251 { 1252 target.setArtifactId( src ); 1253 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 1254 } 1255 } 1256 } 1257 1258 protected void mergeReporting( Reporting target, Reporting source, boolean sourceDominant, 1259 Map<Object, Object> context ) 1260 { 1261 mergeReporting_OutputDirectory( target, source, sourceDominant, context ); 1262 mergeReporting_ExcludeDefaults( target, source, sourceDominant, context ); 1263 mergeReporting_Plugins( target, source, sourceDominant, context ); 1264 } 1265 1266 protected void mergeReporting_OutputDirectory( Reporting target, Reporting source, boolean sourceDominant, 1267 Map<Object, Object> context ) 1268 { 1269 String src = source.getOutputDirectory(); 1270 if ( src != null ) 1271 { 1272 if ( sourceDominant || target.getOutputDirectory() == null ) 1273 { 1274 target.setOutputDirectory( src ); 1275 target.setLocation( "outputDirectory", source.getLocation( "outputDirectory" ) ); 1276 } 1277 } 1278 } 1279 1280 protected void mergeReporting_ExcludeDefaults( Reporting target, Reporting source, boolean sourceDominant, 1281 Map<Object, Object> context ) 1282 { 1283 String src = source.getExcludeDefaults(); 1284 if ( src != null ) 1285 { 1286 if ( sourceDominant || target.getExcludeDefaults() == null ) 1287 { 1288 target.setExcludeDefaults( src ); 1289 target.setLocation( "excludeDefaults", source.getLocation( "excludeDefaults" ) ); 1290 } 1291 } 1292 } 1293 1294 protected void mergeReporting_Plugins( Reporting target, Reporting source, boolean sourceDominant, 1295 Map<Object, Object> context ) 1296 { 1297 List<ReportPlugin> src = source.getPlugins(); 1298 if ( !src.isEmpty() ) 1299 { 1300 List<ReportPlugin> tgt = target.getPlugins(); 1301 Map<Object, ReportPlugin> merged = 1302 new LinkedHashMap<Object, ReportPlugin>( ( src.size() + tgt.size() ) * 2 ); 1303 1304 for ( ReportPlugin element : tgt ) 1305 { 1306 Object key = getReportPluginKey( element ); 1307 merged.put( key, element ); 1308 } 1309 1310 for ( ReportPlugin element : src ) 1311 { 1312 Object key = getReportPluginKey( element ); 1313 if ( sourceDominant || !merged.containsKey( key ) ) 1314 { 1315 merged.put( key, element ); 1316 } 1317 } 1318 1319 target.setPlugins( new ArrayList<ReportPlugin>( merged.values() ) ); 1320 } 1321 } 1322 1323 protected void mergeReportPlugin( ReportPlugin target, ReportPlugin source, boolean sourceDominant, 1324 Map<Object, Object> context ) 1325 { 1326 mergeConfigurationContainer( target, source, sourceDominant, context ); 1327 mergeReportPlugin_GroupId( target, source, sourceDominant, context ); 1328 mergeReportPlugin_ArtifactId( target, source, sourceDominant, context ); 1329 mergeReportPlugin_Version( target, source, sourceDominant, context ); 1330 mergeReportPlugin_ReportSets( target, source, sourceDominant, context ); 1331 } 1332 1333 protected void mergeReportPlugin_GroupId( ReportPlugin target, ReportPlugin source, boolean sourceDominant, 1334 Map<Object, Object> context ) 1335 { 1336 String src = source.getGroupId(); 1337 if ( src != null ) 1338 { 1339 if ( sourceDominant || target.getGroupId() == null ) 1340 { 1341 target.setGroupId( src ); 1342 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 1343 } 1344 } 1345 } 1346 1347 protected void mergeReportPlugin_ArtifactId( ReportPlugin target, ReportPlugin source, boolean sourceDominant, 1348 Map<Object, Object> context ) 1349 { 1350 String src = source.getArtifactId(); 1351 if ( src != null ) 1352 { 1353 if ( sourceDominant || target.getArtifactId() == null ) 1354 { 1355 target.setArtifactId( src ); 1356 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 1357 } 1358 } 1359 } 1360 1361 protected void mergeReportPlugin_Version( ReportPlugin target, ReportPlugin source, boolean sourceDominant, 1362 Map<Object, Object> context ) 1363 { 1364 String src = source.getVersion(); 1365 if ( src != null ) 1366 { 1367 if ( sourceDominant || target.getVersion() == null ) 1368 { 1369 target.setVersion( src ); 1370 target.setLocation( "version", source.getLocation( "version" ) ); 1371 } 1372 } 1373 } 1374 1375 protected void mergeReportPlugin_ReportSets( ReportPlugin target, ReportPlugin source, boolean sourceDominant, 1376 Map<Object, Object> context ) 1377 { 1378 List<ReportSet> src = source.getReportSets(); 1379 if ( !src.isEmpty() ) 1380 { 1381 List<ReportSet> tgt = target.getReportSets(); 1382 Map<Object, ReportSet> merged = new LinkedHashMap<Object, ReportSet>( ( src.size() + tgt.size() ) * 2 ); 1383 1384 for ( ReportSet element : tgt ) 1385 { 1386 Object key = getReportSetKey( element ); 1387 merged.put( key, element ); 1388 } 1389 1390 for ( ReportSet element : src ) 1391 { 1392 Object key = getReportSetKey( element ); 1393 if ( sourceDominant || !merged.containsKey( key ) ) 1394 { 1395 merged.put( key, element ); 1396 } 1397 } 1398 1399 target.setReportSets( new ArrayList<ReportSet>( merged.values() ) ); 1400 } 1401 } 1402 1403 protected void mergeReportSet( ReportSet target, ReportSet source, boolean sourceDominant, 1404 Map<Object, Object> context ) 1405 { 1406 mergeConfigurationContainer( target, source, sourceDominant, context ); 1407 mergeReportSet_Id( target, source, sourceDominant, context ); 1408 mergeReportSet_Reports( target, source, sourceDominant, context ); 1409 } 1410 1411 protected void mergeReportSet_Id( ReportSet target, ReportSet source, boolean sourceDominant, 1412 Map<Object, Object> context ) 1413 { 1414 String src = source.getId(); 1415 if ( src != null ) 1416 { 1417 if ( sourceDominant || target.getId() == null ) 1418 { 1419 target.setId( src ); 1420 target.setLocation( "id", source.getLocation( "id" ) ); 1421 } 1422 } 1423 } 1424 1425 protected void mergeReportSet_Reports( ReportSet target, ReportSet source, boolean sourceDominant, 1426 Map<Object, Object> context ) 1427 { 1428 List<String> src = source.getReports(); 1429 if ( !src.isEmpty() ) 1430 { 1431 List<String> tgt = target.getReports(); 1432 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 1433 merged.addAll( tgt ); 1434 merged.addAll( src ); 1435 target.setReports( merged ); 1436 } 1437 } 1438 1439 protected void mergeDependencyManagement( DependencyManagement target, DependencyManagement source, 1440 boolean sourceDominant, Map<Object, Object> context ) 1441 { 1442 mergeDependencyManagement_Dependencies( target, source, sourceDominant, context ); 1443 } 1444 1445 protected void mergeDependencyManagement_Dependencies( DependencyManagement target, DependencyManagement source, 1446 boolean sourceDominant, Map<Object, Object> context ) 1447 { 1448 List<Dependency> src = source.getDependencies(); 1449 if ( !src.isEmpty() ) 1450 { 1451 List<Dependency> tgt = target.getDependencies(); 1452 Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 ); 1453 1454 for ( Dependency element : tgt ) 1455 { 1456 Object key = getDependencyKey( element ); 1457 merged.put( key, element ); 1458 } 1459 1460 for ( Dependency element : src ) 1461 { 1462 Object key = getDependencyKey( element ); 1463 if ( sourceDominant || !merged.containsKey( key ) ) 1464 { 1465 merged.put( key, element ); 1466 } 1467 } 1468 1469 target.setDependencies( new ArrayList<Dependency>( merged.values() ) ); 1470 } 1471 } 1472 1473 protected void mergeParent( Parent target, Parent source, boolean sourceDominant, Map<Object, Object> context ) 1474 { 1475 mergeParent_GroupId( target, source, sourceDominant, context ); 1476 mergeParent_ArtifactId( target, source, sourceDominant, context ); 1477 mergeParent_Version( target, source, sourceDominant, context ); 1478 mergeParent_RelativePath( target, source, sourceDominant, context ); 1479 } 1480 1481 protected void mergeParent_GroupId( Parent target, Parent source, boolean sourceDominant, 1482 Map<Object, Object> context ) 1483 { 1484 String src = source.getGroupId(); 1485 if ( src != null ) 1486 { 1487 if ( sourceDominant || target.getGroupId() == null ) 1488 { 1489 target.setGroupId( src ); 1490 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 1491 } 1492 } 1493 } 1494 1495 protected void mergeParent_ArtifactId( Parent target, Parent source, boolean sourceDominant, 1496 Map<Object, Object> context ) 1497 { 1498 String src = source.getArtifactId(); 1499 if ( src != null ) 1500 { 1501 if ( sourceDominant || target.getArtifactId() == null ) 1502 { 1503 target.setArtifactId( src ); 1504 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 1505 } 1506 } 1507 } 1508 1509 protected void mergeParent_Version( Parent target, Parent source, boolean sourceDominant, 1510 Map<Object, Object> context ) 1511 { 1512 String src = source.getVersion(); 1513 if ( src != null ) 1514 { 1515 if ( sourceDominant || target.getVersion() == null ) 1516 { 1517 target.setVersion( src ); 1518 target.setLocation( "version", source.getLocation( "version" ) ); 1519 } 1520 } 1521 } 1522 1523 protected void mergeParent_RelativePath( Parent target, Parent source, boolean sourceDominant, 1524 Map<Object, Object> context ) 1525 { 1526 String src = source.getRelativePath(); 1527 if ( src != null ) 1528 { 1529 if ( sourceDominant || target.getRelativePath() == null ) 1530 { 1531 target.setRelativePath( src ); 1532 target.setLocation( "relativePath", source.getLocation( "relativePath" ) ); 1533 } 1534 } 1535 } 1536 1537 protected void mergeOrganization( Organization target, Organization source, boolean sourceDominant, 1538 Map<Object, Object> context ) 1539 { 1540 mergeOrganization_Name( target, source, sourceDominant, context ); 1541 mergeOrganization_Url( target, source, sourceDominant, context ); 1542 } 1543 1544 protected void mergeOrganization_Name( Organization target, Organization source, boolean sourceDominant, 1545 Map<Object, Object> context ) 1546 { 1547 String src = source.getName(); 1548 if ( src != null ) 1549 { 1550 if ( sourceDominant || target.getName() == null ) 1551 { 1552 target.setName( src ); 1553 target.setLocation( "name", source.getLocation( "name" ) ); 1554 } 1555 } 1556 } 1557 1558 protected void mergeOrganization_Url( Organization target, Organization source, boolean sourceDominant, 1559 Map<Object, Object> context ) 1560 { 1561 String src = source.getUrl(); 1562 if ( src != null ) 1563 { 1564 if ( sourceDominant || target.getUrl() == null ) 1565 { 1566 target.setUrl( src ); 1567 target.setLocation( "url", source.getLocation( "url" ) ); 1568 } 1569 } 1570 } 1571 1572 protected void mergeLicense( License target, License source, boolean sourceDominant, Map<Object, Object> context ) 1573 { 1574 mergeLicense_Name( target, source, sourceDominant, context ); 1575 mergeLicense_Url( target, source, sourceDominant, context ); 1576 mergeLicense_Distribution( target, source, sourceDominant, context ); 1577 mergeLicense_Comments( target, source, sourceDominant, context ); 1578 } 1579 1580 protected void mergeLicense_Name( License target, License source, boolean sourceDominant, 1581 Map<Object, Object> context ) 1582 { 1583 String src = source.getName(); 1584 if ( src != null ) 1585 { 1586 if ( sourceDominant || target.getName() == null ) 1587 { 1588 target.setName( src ); 1589 target.setLocation( "name", source.getLocation( "name" ) ); 1590 } 1591 } 1592 } 1593 1594 protected void mergeLicense_Url( License target, License source, boolean sourceDominant, 1595 Map<Object, Object> context ) 1596 { 1597 String src = source.getUrl(); 1598 if ( src != null ) 1599 { 1600 if ( sourceDominant || target.getUrl() == null ) 1601 { 1602 target.setUrl( src ); 1603 target.setLocation( "url", source.getLocation( "url" ) ); 1604 } 1605 } 1606 } 1607 1608 protected void mergeLicense_Distribution( License target, License source, boolean sourceDominant, 1609 Map<Object, Object> context ) 1610 { 1611 String src = source.getDistribution(); 1612 if ( src != null ) 1613 { 1614 if ( sourceDominant || target.getDistribution() == null ) 1615 { 1616 target.setDistribution( src ); 1617 target.setLocation( "distribution", source.getLocation( "distribution" ) ); 1618 } 1619 } 1620 } 1621 1622 protected void mergeLicense_Comments( License target, License source, boolean sourceDominant, 1623 Map<Object, Object> context ) 1624 { 1625 String src = source.getComments(); 1626 if ( src != null ) 1627 { 1628 if ( sourceDominant || target.getComments() == null ) 1629 { 1630 target.setComments( src ); 1631 target.setLocation( "comments", source.getLocation( "comments" ) ); 1632 } 1633 } 1634 } 1635 1636 protected void mergeMailingList( MailingList target, MailingList source, boolean sourceDominant, 1637 Map<Object, Object> context ) 1638 { 1639 mergeMailingList_Name( target, source, sourceDominant, context ); 1640 mergeMailingList_Subscribe( target, source, sourceDominant, context ); 1641 mergeMailingList_Unsubscribe( target, source, sourceDominant, context ); 1642 mergeMailingList_Post( target, source, sourceDominant, context ); 1643 mergeMailingList_OtherArchives( target, source, sourceDominant, context ); 1644 } 1645 1646 protected void mergeMailingList_Name( MailingList target, MailingList source, boolean sourceDominant, 1647 Map<Object, Object> context ) 1648 { 1649 String src = source.getName(); 1650 if ( src != null ) 1651 { 1652 if ( sourceDominant || target.getName() == null ) 1653 { 1654 target.setName( src ); 1655 target.setLocation( "name", source.getLocation( "name" ) ); 1656 } 1657 } 1658 } 1659 1660 protected void mergeMailingList_Subscribe( MailingList target, MailingList source, boolean sourceDominant, 1661 Map<Object, Object> context ) 1662 { 1663 String src = source.getSubscribe(); 1664 if ( src != null ) 1665 { 1666 if ( sourceDominant || target.getSubscribe() == null ) 1667 { 1668 target.setSubscribe( src ); 1669 target.setLocation( "subscribe", source.getLocation( "subscribe" ) ); 1670 } 1671 } 1672 } 1673 1674 protected void mergeMailingList_Unsubscribe( MailingList target, MailingList source, boolean sourceDominant, 1675 Map<Object, Object> context ) 1676 { 1677 String src = source.getUnsubscribe(); 1678 if ( src != null ) 1679 { 1680 if ( sourceDominant || target.getUnsubscribe() == null ) 1681 { 1682 target.setUnsubscribe( src ); 1683 target.setLocation( "unsubscribe", source.getLocation( "unsubscribe" ) ); 1684 } 1685 } 1686 } 1687 1688 protected void mergeMailingList_Post( MailingList target, MailingList source, boolean sourceDominant, 1689 Map<Object, Object> context ) 1690 { 1691 String src = source.getPost(); 1692 if ( src != null ) 1693 { 1694 if ( sourceDominant || target.getPost() == null ) 1695 { 1696 target.setPost( src ); 1697 target.setLocation( "post", source.getLocation( "post" ) ); 1698 } 1699 } 1700 } 1701 1702 protected void mergeMailingList_Archive( MailingList target, MailingList source, boolean sourceDominant, 1703 Map<Object, Object> context ) 1704 { 1705 String src = source.getArchive(); 1706 if ( src != null ) 1707 { 1708 if ( sourceDominant || target.getArchive() == null ) 1709 { 1710 target.setArchive( src ); 1711 target.setLocation( "archive", source.getLocation( "archive" ) ); 1712 } 1713 } 1714 } 1715 1716 protected void mergeMailingList_OtherArchives( MailingList target, MailingList source, boolean sourceDominant, 1717 Map<Object, Object> context ) 1718 { 1719 List<String> src = source.getOtherArchives(); 1720 if ( !src.isEmpty() ) 1721 { 1722 List<String> tgt = target.getOtherArchives(); 1723 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 1724 merged.addAll( tgt ); 1725 merged.addAll( src ); 1726 target.setOtherArchives( merged ); 1727 } 1728 } 1729 1730 protected void mergeDeveloper( Developer target, Developer source, boolean sourceDominant, 1731 Map<Object, Object> context ) 1732 { 1733 mergeContributor( target, source, sourceDominant, context ); 1734 mergeDeveloper_Id( target, source, sourceDominant, context ); 1735 } 1736 1737 protected void mergeDeveloper_Id( Developer target, Developer source, boolean sourceDominant, 1738 Map<Object, Object> context ) 1739 { 1740 String src = source.getId(); 1741 if ( src != null ) 1742 { 1743 if ( sourceDominant || target.getId() == null ) 1744 { 1745 target.setId( src ); 1746 target.setLocation( "id", source.getLocation( "id" ) ); 1747 } 1748 } 1749 } 1750 1751 protected void mergeContributor( Contributor target, Contributor source, boolean sourceDominant, 1752 Map<Object, Object> context ) 1753 { 1754 mergeContributor_Name( target, source, sourceDominant, context ); 1755 mergeContributor_Email( target, source, sourceDominant, context ); 1756 mergeContributor_Url( target, source, sourceDominant, context ); 1757 mergeContributor_Organization( target, source, sourceDominant, context ); 1758 mergeContributor_OrganizationUrl( target, source, sourceDominant, context ); 1759 mergeContributor_Timezone( target, source, sourceDominant, context ); 1760 mergeContributor_Roles( target, source, sourceDominant, context ); 1761 mergeContributor_Properties( target, source, sourceDominant, context ); 1762 } 1763 1764 protected void mergeContributor_Name( Contributor target, Contributor source, boolean sourceDominant, 1765 Map<Object, Object> context ) 1766 { 1767 String src = source.getName(); 1768 if ( src != null ) 1769 { 1770 if ( sourceDominant || target.getName() == null ) 1771 { 1772 target.setName( src ); 1773 target.setLocation( "name", source.getLocation( "name" ) ); 1774 } 1775 } 1776 } 1777 1778 protected void mergeContributor_Email( Contributor target, Contributor source, boolean sourceDominant, 1779 Map<Object, Object> context ) 1780 { 1781 String src = source.getEmail(); 1782 if ( src != null ) 1783 { 1784 if ( sourceDominant || target.getEmail() == null ) 1785 { 1786 target.setEmail( src ); 1787 target.setLocation( "email", source.getLocation( "email" ) ); 1788 } 1789 } 1790 } 1791 1792 protected void mergeContributor_Url( Contributor target, Contributor source, boolean sourceDominant, 1793 Map<Object, Object> context ) 1794 { 1795 String src = source.getUrl(); 1796 if ( src != null ) 1797 { 1798 if ( sourceDominant || target.getUrl() == null ) 1799 { 1800 target.setUrl( src ); 1801 target.setLocation( "url", source.getLocation( "url" ) ); 1802 } 1803 } 1804 } 1805 1806 protected void mergeContributor_Organization( Contributor target, Contributor source, boolean sourceDominant, 1807 Map<Object, Object> context ) 1808 { 1809 String src = source.getOrganization(); 1810 if ( src != null ) 1811 { 1812 if ( sourceDominant || target.getOrganization() == null ) 1813 { 1814 target.setOrganization( src ); 1815 target.setLocation( "organization", source.getLocation( "organization" ) ); 1816 } 1817 } 1818 } 1819 1820 protected void mergeContributor_OrganizationUrl( Contributor target, Contributor source, boolean sourceDominant, 1821 Map<Object, Object> context ) 1822 { 1823 String src = source.getOrganizationUrl(); 1824 if ( src != null ) 1825 { 1826 if ( sourceDominant || target.getOrganizationUrl() == null ) 1827 { 1828 target.setOrganizationUrl( src ); 1829 target.setLocation( "organizationUrl", source.getLocation( "organizationUrl" ) ); 1830 } 1831 } 1832 } 1833 1834 protected void mergeContributor_Timezone( Contributor target, Contributor source, boolean sourceDominant, 1835 Map<Object, Object> context ) 1836 { 1837 String src = source.getTimezone(); 1838 if ( src != null ) 1839 { 1840 if ( sourceDominant || target.getTimezone() == null ) 1841 { 1842 target.setTimezone( src ); 1843 target.setLocation( "timezone", source.getLocation( "timezone" ) ); 1844 } 1845 } 1846 } 1847 1848 protected void mergeContributor_Roles( Contributor target, Contributor source, boolean sourceDominant, 1849 Map<Object, Object> context ) 1850 { 1851 List<String> src = source.getRoles(); 1852 if ( !src.isEmpty() ) 1853 { 1854 List<String> tgt = target.getRoles(); 1855 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 1856 merged.addAll( tgt ); 1857 merged.addAll( src ); 1858 target.setRoles( merged ); 1859 } 1860 } 1861 1862 protected void mergeContributor_Properties( Contributor target, Contributor source, boolean sourceDominant, 1863 Map<Object, Object> context ) 1864 { 1865 Properties merged = new Properties(); 1866 if ( sourceDominant ) 1867 { 1868 merged.putAll( target.getProperties() ); 1869 merged.putAll( source.getProperties() ); 1870 } 1871 else 1872 { 1873 merged.putAll( source.getProperties() ); 1874 merged.putAll( target.getProperties() ); 1875 } 1876 target.setProperties( merged ); 1877 target.setLocation( "properties", InputLocation.merge( target.getLocation( "properties" ), 1878 source.getLocation( "properties" ), sourceDominant ) ); 1879 } 1880 1881 protected void mergeIssueManagement( IssueManagement target, IssueManagement source, boolean sourceDominant, 1882 Map<Object, Object> context ) 1883 { 1884 mergeIssueManagement_Url( target, source, sourceDominant, context ); 1885 mergeIssueManagement_System( target, source, sourceDominant, context ); 1886 } 1887 1888 protected void mergeIssueManagement_System( IssueManagement target, IssueManagement source, boolean sourceDominant, 1889 Map<Object, Object> context ) 1890 { 1891 String src = source.getSystem(); 1892 if ( src != null ) 1893 { 1894 if ( sourceDominant || target.getSystem() == null ) 1895 { 1896 target.setSystem( src ); 1897 target.setLocation( "system", source.getLocation( "system" ) ); 1898 } 1899 } 1900 } 1901 1902 protected void mergeIssueManagement_Url( IssueManagement target, IssueManagement source, boolean sourceDominant, 1903 Map<Object, Object> context ) 1904 { 1905 String src = source.getUrl(); 1906 if ( src != null ) 1907 { 1908 if ( sourceDominant || target.getUrl() == null ) 1909 { 1910 target.setUrl( src ); 1911 target.setLocation( "url", source.getLocation( "url" ) ); 1912 } 1913 } 1914 } 1915 1916 protected void mergeScm( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context ) 1917 { 1918 mergeScm_Url( target, source, sourceDominant, context ); 1919 mergeScm_Connection( target, source, sourceDominant, context ); 1920 mergeScm_DeveloperConnection( target, source, sourceDominant, context ); 1921 mergeScm_Tag( target, source, sourceDominant, context ); 1922 } 1923 1924 protected void mergeScm_Url( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context ) 1925 { 1926 String src = source.getUrl(); 1927 if ( src != null ) 1928 { 1929 if ( sourceDominant || target.getUrl() == null ) 1930 { 1931 target.setUrl( src ); 1932 target.setLocation( "url", source.getLocation( "url" ) ); 1933 } 1934 } 1935 } 1936 1937 protected void mergeScm_Connection( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context ) 1938 { 1939 String src = source.getConnection(); 1940 if ( src != null ) 1941 { 1942 if ( sourceDominant || target.getConnection() == null ) 1943 { 1944 target.setConnection( src ); 1945 target.setLocation( "connection", source.getLocation( "connection" ) ); 1946 } 1947 } 1948 } 1949 1950 protected void mergeScm_DeveloperConnection( Scm target, Scm source, boolean sourceDominant, 1951 Map<Object, Object> context ) 1952 { 1953 String src = source.getDeveloperConnection(); 1954 if ( src != null ) 1955 { 1956 if ( sourceDominant || target.getDeveloperConnection() == null ) 1957 { 1958 target.setDeveloperConnection( src ); 1959 target.setLocation( "developerConnection", source.getLocation( "developerConnection" ) ); 1960 } 1961 } 1962 } 1963 1964 protected void mergeScm_Tag( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context ) 1965 { 1966 String src = source.getTag(); 1967 if ( src != null ) 1968 { 1969 if ( sourceDominant || target.getTag() == null ) 1970 { 1971 target.setTag( src ); 1972 target.setLocation( "tag", source.getLocation( "tag" ) ); 1973 } 1974 } 1975 } 1976 1977 protected void mergeCiManagement( CiManagement target, CiManagement source, boolean sourceDominant, 1978 Map<Object, Object> context ) 1979 { 1980 mergeCiManagement_System( target, source, sourceDominant, context ); 1981 mergeCiManagement_Url( target, source, sourceDominant, context ); 1982 mergeCiManagement_Notifiers( target, source, sourceDominant, context ); 1983 } 1984 1985 protected void mergeCiManagement_System( CiManagement target, CiManagement source, boolean sourceDominant, 1986 Map<Object, Object> context ) 1987 { 1988 String src = source.getSystem(); 1989 if ( src != null ) 1990 { 1991 if ( sourceDominant || target.getSystem() == null ) 1992 { 1993 target.setSystem( src ); 1994 target.setLocation( "system", source.getLocation( "system" ) ); 1995 } 1996 } 1997 } 1998 1999 protected void mergeCiManagement_Url( CiManagement target, CiManagement source, boolean sourceDominant, 2000 Map<Object, Object> context ) 2001 { 2002 String src = source.getUrl(); 2003 if ( src != null ) 2004 { 2005 if ( sourceDominant || target.getUrl() == null ) 2006 { 2007 target.setUrl( src ); 2008 target.setLocation( "url", source.getLocation( "url" ) ); 2009 } 2010 } 2011 } 2012 2013 protected void mergeCiManagement_Notifiers( CiManagement target, CiManagement source, boolean sourceDominant, 2014 Map<Object, Object> context ) 2015 { 2016 List<Notifier> src = source.getNotifiers(); 2017 if ( !src.isEmpty() ) 2018 { 2019 List<Notifier> tgt = target.getNotifiers(); 2020 Map<Object, Notifier> merged = new LinkedHashMap<Object, Notifier>( ( src.size() + tgt.size() ) * 2 ); 2021 2022 for ( Notifier element : tgt ) 2023 { 2024 Object key = getNotifierKey( element ); 2025 merged.put( key, element ); 2026 } 2027 2028 for ( Notifier element : src ) 2029 { 2030 Object key = getNotifierKey( element ); 2031 if ( sourceDominant || !merged.containsKey( key ) ) 2032 { 2033 merged.put( key, element ); 2034 } 2035 } 2036 2037 target.setNotifiers( new ArrayList<Notifier>( merged.values() ) ); 2038 } 2039 } 2040 2041 protected void mergeNotifier( Notifier target, Notifier source, boolean sourceDominant, 2042 Map<Object, Object> context ) 2043 { 2044 mergeNotifier_Type( target, source, sourceDominant, context ); 2045 mergeNotifier_Address( target, source, sourceDominant, context ); 2046 mergeNotifier_Configuration( target, source, sourceDominant, context ); 2047 mergeNotifier_SendOnError( target, source, sourceDominant, context ); 2048 mergeNotifier_SendOnFailure( target, source, sourceDominant, context ); 2049 mergeNotifier_SendOnSuccess( target, source, sourceDominant, context ); 2050 mergeNotifier_SendOnWarning( target, source, sourceDominant, context ); 2051 } 2052 2053 protected void mergeNotifier_Type( Notifier target, Notifier source, boolean sourceDominant, 2054 Map<Object, Object> context ) 2055 { 2056 String src = source.getType(); 2057 if ( src != null ) 2058 { 2059 if ( sourceDominant || target.getType() == null ) 2060 { 2061 target.setType( src ); 2062 } 2063 } 2064 } 2065 2066 protected void mergeNotifier_Address( Notifier target, Notifier source, boolean sourceDominant, 2067 Map<Object, Object> context ) 2068 { 2069 String src = source.getAddress(); 2070 if ( src != null ) 2071 { 2072 if ( sourceDominant || target.getAddress() == null ) 2073 { 2074 target.setAddress( src ); 2075 } 2076 } 2077 } 2078 2079 protected void mergeNotifier_Configuration( Notifier target, Notifier source, boolean sourceDominant, 2080 Map<Object, Object> context ) 2081 { 2082 Properties merged = new Properties(); 2083 if ( sourceDominant ) 2084 { 2085 merged.putAll( target.getConfiguration() ); 2086 merged.putAll( source.getConfiguration() ); 2087 } 2088 else 2089 { 2090 merged.putAll( source.getConfiguration() ); 2091 merged.putAll( target.getConfiguration() ); 2092 } 2093 target.setConfiguration( merged ); 2094 } 2095 2096 protected void mergeNotifier_SendOnError( Notifier target, Notifier source, boolean sourceDominant, 2097 Map<Object, Object> context ) 2098 { 2099 if ( sourceDominant ) 2100 { 2101 target.setSendOnError( source.isSendOnError() ); 2102 } 2103 } 2104 2105 protected void mergeNotifier_SendOnFailure( Notifier target, Notifier source, boolean sourceDominant, 2106 Map<Object, Object> context ) 2107 { 2108 if ( sourceDominant ) 2109 { 2110 target.setSendOnFailure( source.isSendOnFailure() ); 2111 } 2112 } 2113 2114 protected void mergeNotifier_SendOnSuccess( Notifier target, Notifier source, boolean sourceDominant, 2115 Map<Object, Object> context ) 2116 { 2117 if ( sourceDominant ) 2118 { 2119 target.setSendOnSuccess( source.isSendOnSuccess() ); 2120 } 2121 } 2122 2123 protected void mergeNotifier_SendOnWarning( Notifier target, Notifier source, boolean sourceDominant, 2124 Map<Object, Object> context ) 2125 { 2126 if ( sourceDominant ) 2127 { 2128 target.setSendOnWarning( source.isSendOnWarning() ); 2129 } 2130 } 2131 2132 protected void mergePrerequisites( Prerequisites target, Prerequisites source, boolean sourceDominant, 2133 Map<Object, Object> context ) 2134 { 2135 mergePrerequisites_Maven( target, source, sourceDominant, context ); 2136 } 2137 2138 protected void mergePrerequisites_Maven( Prerequisites target, Prerequisites source, boolean sourceDominant, 2139 Map<Object, Object> context ) 2140 { 2141 String src = source.getMaven(); 2142 if ( src != null ) 2143 { 2144 if ( sourceDominant || target.getMaven() == null ) 2145 { 2146 target.setMaven( src ); 2147 target.setLocation( "maven", source.getLocation( "maven" ) ); 2148 } 2149 } 2150 } 2151 2152 protected void mergeBuild( Build target, Build source, boolean sourceDominant, Map<Object, Object> context ) 2153 { 2154 mergeBuildBase( target, source, sourceDominant, context ); 2155 mergeBuild_SourceDirectory( target, source, sourceDominant, context ); 2156 mergeBuild_ScriptSourceDirectory( target, source, sourceDominant, context ); 2157 mergeBuild_TestSourceDirectory( target, source, sourceDominant, context ); 2158 mergeBuild_OutputDirectory( target, source, sourceDominant, context ); 2159 mergeBuild_TestOutputDirectory( target, source, sourceDominant, context ); 2160 mergeBuild_Extensions( target, source, sourceDominant, context ); 2161 } 2162 2163 protected void mergeBuild_SourceDirectory( Build target, Build source, boolean sourceDominant, 2164 Map<Object, Object> context ) 2165 { 2166 String src = source.getSourceDirectory(); 2167 if ( src != null ) 2168 { 2169 if ( sourceDominant || target.getSourceDirectory() == null ) 2170 { 2171 target.setSourceDirectory( src ); 2172 target.setLocation( "sourceDirectory", source.getLocation( "sourceDirectory" ) ); 2173 } 2174 } 2175 } 2176 2177 protected void mergeBuild_ScriptSourceDirectory( Build target, Build source, boolean sourceDominant, 2178 Map<Object, Object> context ) 2179 { 2180 String src = source.getScriptSourceDirectory(); 2181 if ( src != null ) 2182 { 2183 if ( sourceDominant || target.getScriptSourceDirectory() == null ) 2184 { 2185 target.setScriptSourceDirectory( src ); 2186 target.setLocation( "scriptSourceDirectory", source.getLocation( "scriptSourceDirectory" ) ); 2187 } 2188 } 2189 } 2190 2191 protected void mergeBuild_TestSourceDirectory( Build target, Build source, boolean sourceDominant, 2192 Map<Object, Object> context ) 2193 { 2194 String src = source.getTestSourceDirectory(); 2195 if ( src != null ) 2196 { 2197 if ( sourceDominant || target.getTestSourceDirectory() == null ) 2198 { 2199 target.setTestSourceDirectory( src ); 2200 target.setLocation( "testSourceDirectory", source.getLocation( "testSourceDirectory" ) ); 2201 } 2202 } 2203 } 2204 2205 protected void mergeBuild_OutputDirectory( Build target, Build source, boolean sourceDominant, 2206 Map<Object, Object> context ) 2207 { 2208 String src = source.getOutputDirectory(); 2209 if ( src != null ) 2210 { 2211 if ( sourceDominant || target.getOutputDirectory() == null ) 2212 { 2213 target.setOutputDirectory( src ); 2214 target.setLocation( "outputDirectory", source.getLocation( "outputDirectory" ) ); 2215 } 2216 } 2217 } 2218 2219 protected void mergeBuild_TestOutputDirectory( Build target, Build source, boolean sourceDominant, 2220 Map<Object, Object> context ) 2221 { 2222 String src = source.getTestOutputDirectory(); 2223 if ( src != null ) 2224 { 2225 if ( sourceDominant || target.getTestOutputDirectory() == null ) 2226 { 2227 target.setTestOutputDirectory( src ); 2228 target.setLocation( "testOutputDirectory", source.getLocation( "testOutputDirectory" ) ); 2229 } 2230 } 2231 } 2232 2233 protected void mergeBuild_Extensions( Build target, Build source, boolean sourceDominant, 2234 Map<Object, Object> context ) 2235 { 2236 List<Extension> src = source.getExtensions(); 2237 if ( !src.isEmpty() ) 2238 { 2239 List<Extension> tgt = target.getExtensions(); 2240 Map<Object, Extension> merged = new LinkedHashMap<Object, Extension>( ( src.size() + tgt.size() ) * 2 ); 2241 2242 for ( Extension element : tgt ) 2243 { 2244 Object key = getExtensionKey( element ); 2245 merged.put( key, element ); 2246 } 2247 2248 for ( Extension element : src ) 2249 { 2250 Object key = getExtensionKey( element ); 2251 if ( sourceDominant || !merged.containsKey( key ) ) 2252 { 2253 merged.put( key, element ); 2254 } 2255 } 2256 2257 target.setExtensions( new ArrayList<Extension>( merged.values() ) ); 2258 } 2259 } 2260 2261 protected void mergeExtension( Extension target, Extension source, boolean sourceDominant, 2262 Map<Object, Object> context ) 2263 { 2264 mergeExtension_GroupId( target, source, sourceDominant, context ); 2265 mergeExtension_ArtifactId( target, source, sourceDominant, context ); 2266 mergeExtension_Version( target, source, sourceDominant, context ); 2267 } 2268 2269 protected void mergeExtension_GroupId( Extension target, Extension source, boolean sourceDominant, 2270 Map<Object, Object> context ) 2271 { 2272 String src = source.getGroupId(); 2273 if ( src != null ) 2274 { 2275 if ( sourceDominant || target.getGroupId() == null ) 2276 { 2277 target.setGroupId( src ); 2278 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 2279 } 2280 } 2281 } 2282 2283 protected void mergeExtension_ArtifactId( Extension target, Extension source, boolean sourceDominant, 2284 Map<Object, Object> context ) 2285 { 2286 String src = source.getArtifactId(); 2287 if ( src != null ) 2288 { 2289 if ( sourceDominant || target.getArtifactId() == null ) 2290 { 2291 target.setArtifactId( src ); 2292 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 2293 } 2294 } 2295 } 2296 2297 protected void mergeExtension_Version( Extension target, Extension source, boolean sourceDominant, 2298 Map<Object, Object> context ) 2299 { 2300 String src = source.getVersion(); 2301 if ( src != null ) 2302 { 2303 if ( sourceDominant || target.getVersion() == null ) 2304 { 2305 target.setVersion( src ); 2306 target.setLocation( "version", source.getLocation( "version" ) ); 2307 } 2308 } 2309 } 2310 2311 protected void mergeBuildBase( BuildBase target, BuildBase source, boolean sourceDominant, 2312 Map<Object, Object> context ) 2313 { 2314 mergePluginConfiguration( target, source, sourceDominant, context ); 2315 mergeBuildBase_DefaultGoal( target, source, sourceDominant, context ); 2316 mergeBuildBase_FinalName( target, source, sourceDominant, context ); 2317 mergeBuildBase_Directory( target, source, sourceDominant, context ); 2318 mergeBuildBase_Resources( target, source, sourceDominant, context ); 2319 mergeBuildBase_TestResources( target, source, sourceDominant, context ); 2320 mergeBuildBase_Filters( target, source, sourceDominant, context ); 2321 } 2322 2323 protected void mergeBuildBase_DefaultGoal( BuildBase target, BuildBase source, boolean sourceDominant, 2324 Map<Object, Object> context ) 2325 { 2326 String src = source.getDefaultGoal(); 2327 if ( src != null ) 2328 { 2329 if ( sourceDominant || target.getDefaultGoal() == null ) 2330 { 2331 target.setDefaultGoal( src ); 2332 target.setLocation( "defaultGoal", source.getLocation( "defaultGoal" ) ); 2333 } 2334 } 2335 } 2336 2337 protected void mergeBuildBase_Directory( BuildBase target, BuildBase source, boolean sourceDominant, 2338 Map<Object, Object> context ) 2339 { 2340 String src = source.getDirectory(); 2341 if ( src != null ) 2342 { 2343 if ( sourceDominant || target.getDirectory() == null ) 2344 { 2345 target.setDirectory( src ); 2346 target.setLocation( "directory", source.getLocation( "directory" ) ); 2347 } 2348 } 2349 } 2350 2351 protected void mergeBuildBase_FinalName( BuildBase target, BuildBase source, boolean sourceDominant, 2352 Map<Object, Object> context ) 2353 { 2354 String src = source.getFinalName(); 2355 if ( src != null ) 2356 { 2357 if ( sourceDominant || target.getFinalName() == null ) 2358 { 2359 target.setFinalName( src ); 2360 target.setLocation( "finalName", source.getLocation( "finalName" ) ); 2361 } 2362 } 2363 } 2364 2365 protected void mergeBuildBase_Filters( BuildBase target, BuildBase source, boolean sourceDominant, 2366 Map<Object, Object> context ) 2367 { 2368 List<String> src = source.getFilters(); 2369 if ( !src.isEmpty() ) 2370 { 2371 List<String> tgt = target.getFilters(); 2372 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 2373 merged.addAll( tgt ); 2374 merged.addAll( src ); 2375 target.setFilters( merged ); 2376 } 2377 } 2378 2379 protected void mergeBuildBase_Resources( BuildBase target, BuildBase source, boolean sourceDominant, 2380 Map<Object, Object> context ) 2381 { 2382 List<Resource> src = source.getResources(); 2383 if ( !src.isEmpty() ) 2384 { 2385 List<Resource> tgt = target.getResources(); 2386 Map<Object, Resource> merged = new LinkedHashMap<Object, Resource>( ( src.size() + tgt.size() ) * 2 ); 2387 2388 for ( Resource element : tgt ) 2389 { 2390 Object key = getResourceKey( element ); 2391 merged.put( key, element ); 2392 } 2393 2394 for ( Resource element : src ) 2395 { 2396 Object key = getResourceKey( element ); 2397 if ( sourceDominant || !merged.containsKey( key ) ) 2398 { 2399 merged.put( key, element ); 2400 } 2401 } 2402 2403 target.setResources( new ArrayList<Resource>( merged.values() ) ); 2404 } 2405 } 2406 2407 protected void mergeBuildBase_TestResources( BuildBase target, BuildBase source, boolean sourceDominant, 2408 Map<Object, Object> context ) 2409 { 2410 List<Resource> src = source.getTestResources(); 2411 if ( !src.isEmpty() ) 2412 { 2413 List<Resource> tgt = target.getTestResources(); 2414 Map<Object, Resource> merged = new LinkedHashMap<Object, Resource>( ( src.size() + tgt.size() ) * 2 ); 2415 2416 for ( Resource element : tgt ) 2417 { 2418 Object key = getResourceKey( element ); 2419 merged.put( key, element ); 2420 } 2421 2422 for ( Resource element : src ) 2423 { 2424 Object key = getResourceKey( element ); 2425 if ( sourceDominant || !merged.containsKey( key ) ) 2426 { 2427 merged.put( key, element ); 2428 } 2429 } 2430 2431 target.setTestResources( new ArrayList<Resource>( merged.values() ) ); 2432 } 2433 } 2434 2435 protected void mergePluginConfiguration( PluginConfiguration target, PluginConfiguration source, 2436 boolean sourceDominant, Map<Object, Object> context ) 2437 { 2438 mergePluginContainer( target, source, sourceDominant, context ); 2439 mergePluginConfiguration_PluginManagement( target, source, sourceDominant, context ); 2440 } 2441 2442 protected void mergePluginConfiguration_PluginManagement( PluginConfiguration target, PluginConfiguration source, 2443 boolean sourceDominant, Map<Object, Object> context ) 2444 { 2445 PluginManagement src = source.getPluginManagement(); 2446 if ( src != null ) 2447 { 2448 PluginManagement tgt = target.getPluginManagement(); 2449 if ( tgt == null ) 2450 { 2451 tgt = new PluginManagement(); 2452 target.setPluginManagement( tgt ); 2453 } 2454 mergePluginManagement( tgt, src, sourceDominant, context ); 2455 } 2456 } 2457 2458 protected void mergePluginContainer( PluginContainer target, PluginContainer source, boolean sourceDominant, 2459 Map<Object, Object> context ) 2460 { 2461 mergePluginContainer_Plugins( target, source, sourceDominant, context ); 2462 } 2463 2464 protected void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source, 2465 boolean sourceDominant, Map<Object, Object> context ) 2466 { 2467 List<Plugin> src = source.getPlugins(); 2468 if ( !src.isEmpty() ) 2469 { 2470 List<Plugin> tgt = target.getPlugins(); 2471 Map<Object, Plugin> merged = new LinkedHashMap<Object, Plugin>( ( src.size() + tgt.size() ) * 2 ); 2472 2473 for ( Plugin element : tgt ) 2474 { 2475 Object key = getPluginKey( element ); 2476 merged.put( key, element ); 2477 } 2478 2479 for ( Plugin element : src ) 2480 { 2481 Object key = getPluginKey( element ); 2482 if ( sourceDominant || !merged.containsKey( key ) ) 2483 { 2484 merged.put( key, element ); 2485 } 2486 } 2487 2488 target.setPlugins( new ArrayList<Plugin>( merged.values() ) ); 2489 } 2490 } 2491 2492 protected void mergePluginManagement( PluginManagement target, PluginManagement source, boolean sourceDominant, 2493 Map<Object, Object> context ) 2494 { 2495 mergePluginContainer( target, source, sourceDominant, context ); 2496 } 2497 2498 protected void mergePlugin( Plugin target, Plugin source, boolean sourceDominant, Map<Object, Object> context ) 2499 { 2500 mergeConfigurationContainer( target, source, sourceDominant, context ); 2501 mergePlugin_GroupId( target, source, sourceDominant, context ); 2502 mergePlugin_ArtifactId( target, source, sourceDominant, context ); 2503 mergePlugin_Version( target, source, sourceDominant, context ); 2504 mergePlugin_Extensions( target, source, sourceDominant, context ); 2505 mergePlugin_Dependencies( target, source, sourceDominant, context ); 2506 mergePlugin_Executions( target, source, sourceDominant, context ); 2507 } 2508 2509 protected void mergePlugin_GroupId( Plugin target, Plugin source, boolean sourceDominant, 2510 Map<Object, Object> context ) 2511 { 2512 String src = source.getGroupId(); 2513 if ( src != null ) 2514 { 2515 if ( sourceDominant || target.getGroupId() == null ) 2516 { 2517 target.setGroupId( src ); 2518 target.setLocation( "groupId", source.getLocation( "groupId" ) ); 2519 } 2520 } 2521 } 2522 2523 protected void mergePlugin_ArtifactId( Plugin target, Plugin source, boolean sourceDominant, 2524 Map<Object, Object> context ) 2525 { 2526 String src = source.getArtifactId(); 2527 if ( src != null ) 2528 { 2529 if ( sourceDominant || target.getArtifactId() == null ) 2530 { 2531 target.setArtifactId( src ); 2532 target.setLocation( "artifactId", source.getLocation( "artifactId" ) ); 2533 } 2534 } 2535 } 2536 2537 protected void mergePlugin_Version( Plugin target, Plugin source, boolean sourceDominant, 2538 Map<Object, Object> context ) 2539 { 2540 String src = source.getVersion(); 2541 if ( src != null ) 2542 { 2543 if ( sourceDominant || target.getVersion() == null ) 2544 { 2545 target.setVersion( src ); 2546 target.setLocation( "version", source.getLocation( "version" ) ); 2547 } 2548 } 2549 } 2550 2551 protected void mergePlugin_Extensions( Plugin target, Plugin source, boolean sourceDominant, 2552 Map<Object, Object> context ) 2553 { 2554 String src = source.getExtensions(); 2555 if ( src != null ) 2556 { 2557 if ( sourceDominant || target.getExtensions() == null ) 2558 { 2559 target.setExtensions( src ); 2560 target.setLocation( "extensions", source.getLocation( "extensions" ) ); 2561 } 2562 } 2563 } 2564 2565 protected void mergePlugin_Dependencies( Plugin target, Plugin source, boolean sourceDominant, 2566 Map<Object, Object> context ) 2567 { 2568 List<Dependency> src = source.getDependencies(); 2569 if ( !src.isEmpty() ) 2570 { 2571 List<Dependency> tgt = target.getDependencies(); 2572 Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 ); 2573 2574 for ( Dependency element : tgt ) 2575 { 2576 Object key = getDependencyKey( element ); 2577 merged.put( key, element ); 2578 } 2579 2580 for ( Dependency element : src ) 2581 { 2582 Object key = getDependencyKey( element ); 2583 if ( sourceDominant || !merged.containsKey( key ) ) 2584 { 2585 merged.put( key, element ); 2586 } 2587 } 2588 2589 target.setDependencies( new ArrayList<Dependency>( merged.values() ) ); 2590 } 2591 } 2592 2593 protected void mergePlugin_Executions( Plugin target, Plugin source, boolean sourceDominant, 2594 Map<Object, Object> context ) 2595 { 2596 List<PluginExecution> src = source.getExecutions(); 2597 if ( !src.isEmpty() ) 2598 { 2599 List<PluginExecution> tgt = target.getExecutions(); 2600 2601 Map<Object, PluginExecution> merged = 2602 new LinkedHashMap<Object, PluginExecution>( ( src.size() + tgt.size() ) * 2 ); 2603 2604 for ( PluginExecution element : tgt ) 2605 { 2606 Object key = getPluginExecutionKey( element ); 2607 merged.put( key, element ); 2608 } 2609 2610 for ( PluginExecution element : src ) 2611 { 2612 Object key = getPluginExecutionKey( element ); 2613 if ( sourceDominant || !merged.containsKey( key ) ) 2614 { 2615 merged.put( key, element ); 2616 } 2617 } 2618 2619 target.setExecutions( new ArrayList<PluginExecution>( merged.values() ) ); 2620 } 2621 } 2622 2623 protected void mergeConfigurationContainer( ConfigurationContainer target, ConfigurationContainer source, 2624 boolean sourceDominant, Map<Object, Object> context ) 2625 { 2626 mergeConfigurationContainer_Inherited( target, source, sourceDominant, context ); 2627 mergeConfigurationContainer_Configuration( target, source, sourceDominant, context ); 2628 } 2629 2630 protected void mergeConfigurationContainer_Inherited( ConfigurationContainer target, ConfigurationContainer source, 2631 boolean sourceDominant, Map<Object, Object> context ) 2632 { 2633 String src = source.getInherited(); 2634 if ( src != null ) 2635 { 2636 if ( sourceDominant || target.getInherited() == null ) 2637 { 2638 target.setInherited( src ); 2639 target.setLocation( "inherited", source.getLocation( "inherited" ) ); 2640 } 2641 } 2642 } 2643 2644 protected void mergeConfigurationContainer_Configuration( ConfigurationContainer target, 2645 ConfigurationContainer source, boolean sourceDominant, 2646 Map<Object, Object> context ) 2647 { 2648 Xpp3Dom src = (Xpp3Dom) source.getConfiguration(); 2649 if ( src != null ) 2650 { 2651 Xpp3Dom tgt = (Xpp3Dom) target.getConfiguration(); 2652 if ( sourceDominant || tgt == null ) 2653 { 2654 tgt = Xpp3Dom.mergeXpp3Dom( new Xpp3Dom( src ), tgt ); 2655 } 2656 else 2657 { 2658 tgt = Xpp3Dom.mergeXpp3Dom( tgt, src ); 2659 } 2660 target.setConfiguration( tgt ); 2661 } 2662 } 2663 2664 protected void mergePluginExecution( PluginExecution target, PluginExecution source, boolean sourceDominant, 2665 Map<Object, Object> context ) 2666 { 2667 mergeConfigurationContainer( target, source, sourceDominant, context ); 2668 mergePluginExecution_Id( target, source, sourceDominant, context ); 2669 mergePluginExecution_Phase( target, source, sourceDominant, context ); 2670 mergePluginExecution_Goals( target, source, sourceDominant, context ); 2671 } 2672 2673 protected void mergePluginExecution_Id( PluginExecution target, PluginExecution source, boolean sourceDominant, 2674 Map<Object, Object> context ) 2675 { 2676 String src = source.getId(); 2677 if ( src != null ) 2678 { 2679 if ( sourceDominant || target.getId() == null ) 2680 { 2681 target.setId( src ); 2682 target.setLocation( "id", source.getLocation( "id" ) ); 2683 } 2684 } 2685 } 2686 2687 protected void mergePluginExecution_Phase( PluginExecution target, PluginExecution source, boolean sourceDominant, 2688 Map<Object, Object> context ) 2689 { 2690 String src = source.getPhase(); 2691 if ( src != null ) 2692 { 2693 if ( sourceDominant || target.getPhase() == null ) 2694 { 2695 target.setPhase( src ); 2696 target.setLocation( "phase", source.getLocation( "phase" ) ); 2697 } 2698 } 2699 } 2700 2701 protected void mergePluginExecution_Goals( PluginExecution target, PluginExecution source, boolean sourceDominant, 2702 Map<Object, Object> context ) 2703 { 2704 List<String> src = source.getGoals(); 2705 if ( !src.isEmpty() ) 2706 { 2707 List<String> tgt = target.getGoals(); 2708 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 2709 merged.addAll( tgt ); 2710 merged.addAll( src ); 2711 target.setGoals( merged ); 2712 } 2713 } 2714 2715 protected void mergeResource( Resource target, Resource source, boolean sourceDominant, 2716 Map<Object, Object> context ) 2717 { 2718 mergeFileSet( target, source, sourceDominant, context ); 2719 mergeResource_TargetPath( target, source, sourceDominant, context ); 2720 mergeResource_Filtering( target, source, sourceDominant, context ); 2721 mergeResource_MergeId( target, source, sourceDominant, context ); 2722 } 2723 2724 protected void mergeResource_TargetPath( Resource target, Resource source, boolean sourceDominant, 2725 Map<Object, Object> context ) 2726 { 2727 String src = source.getTargetPath(); 2728 if ( src != null ) 2729 { 2730 if ( sourceDominant || target.getTargetPath() == null ) 2731 { 2732 target.setTargetPath( src ); 2733 target.setLocation( "targetPath", source.getLocation( "targetPath" ) ); 2734 } 2735 } 2736 } 2737 2738 protected void mergeResource_Filtering( Resource target, Resource source, boolean sourceDominant, 2739 Map<Object, Object> context ) 2740 { 2741 String src = source.getFiltering(); 2742 if ( src != null ) 2743 { 2744 if ( sourceDominant || target.getFiltering() == null ) 2745 { 2746 target.setFiltering( src ); 2747 target.setLocation( "filtering", source.getLocation( "filtering" ) ); 2748 } 2749 } 2750 } 2751 2752 protected void mergeResource_MergeId( Resource target, Resource source, boolean sourceDominant, 2753 Map<Object, Object> context ) 2754 { 2755 String src = source.getMergeId(); 2756 if ( src != null ) 2757 { 2758 if ( sourceDominant || target.getMergeId() == null ) 2759 { 2760 target.setMergeId( src ); 2761 } 2762 } 2763 } 2764 2765 protected void mergeFileSet( FileSet target, FileSet source, boolean sourceDominant, Map<Object, Object> context ) 2766 { 2767 mergePatternSet( target, source, sourceDominant, context ); 2768 mergeFileSet_Directory( target, source, sourceDominant, context ); 2769 } 2770 2771 protected void mergeFileSet_Directory( FileSet target, FileSet source, boolean sourceDominant, 2772 Map<Object, Object> context ) 2773 { 2774 String src = source.getDirectory(); 2775 if ( src != null ) 2776 { 2777 if ( sourceDominant || target.getDirectory() == null ) 2778 { 2779 target.setDirectory( src ); 2780 target.setLocation( "directory", source.getLocation( "directory" ) ); 2781 } 2782 } 2783 } 2784 2785 protected void mergePatternSet( PatternSet target, PatternSet source, boolean sourceDominant, 2786 Map<Object, Object> context ) 2787 { 2788 mergePatternSet_Includes( target, source, sourceDominant, context ); 2789 mergePatternSet_Excludes( target, source, sourceDominant, context ); 2790 } 2791 2792 protected void mergePatternSet_Includes( PatternSet target, PatternSet source, boolean sourceDominant, 2793 Map<Object, Object> context ) 2794 { 2795 List<String> src = source.getIncludes(); 2796 if ( !src.isEmpty() ) 2797 { 2798 List<String> tgt = target.getIncludes(); 2799 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 2800 merged.addAll( tgt ); 2801 merged.addAll( src ); 2802 target.setIncludes( merged ); 2803 } 2804 } 2805 2806 protected void mergePatternSet_Excludes( PatternSet target, PatternSet source, boolean sourceDominant, 2807 Map<Object, Object> context ) 2808 { 2809 List<String> src = source.getExcludes(); 2810 if ( !src.isEmpty() ) 2811 { 2812 List<String> tgt = target.getExcludes(); 2813 List<String> merged = new ArrayList<String>( tgt.size() + src.size() ); 2814 merged.addAll( tgt ); 2815 merged.addAll( src ); 2816 target.setExcludes( merged ); 2817 } 2818 } 2819 2820 protected void mergeProfile( Profile target, Profile source, boolean sourceDominant, Map<Object, Object> context ) 2821 { 2822 mergeModelBase( target, source, sourceDominant, context ); 2823 // TODO 2824 } 2825 2826 protected void mergeActivation( Activation target, Activation source, boolean sourceDominant, 2827 Map<Object, Object> context ) 2828 { 2829 // TODO 2830 } 2831 2832 protected Object getDependencyKey( Dependency dependency ) 2833 { 2834 return dependency; 2835 } 2836 2837 protected Object getPluginKey( Plugin object ) 2838 { 2839 return object; 2840 } 2841 2842 protected Object getPluginExecutionKey( PluginExecution object ) 2843 { 2844 return object; 2845 } 2846 2847 protected Object getReportPluginKey( ReportPlugin object ) 2848 { 2849 return object; 2850 } 2851 2852 protected Object getReportSetKey( ReportSet object ) 2853 { 2854 return object; 2855 } 2856 2857 protected Object getLicenseKey( License object ) 2858 { 2859 return object; 2860 } 2861 2862 protected Object getMailingListKey( MailingList object ) 2863 { 2864 return object; 2865 } 2866 2867 protected Object getDeveloperKey( Developer object ) 2868 { 2869 return object; 2870 } 2871 2872 protected Object getContributorKey( Contributor object ) 2873 { 2874 return object; 2875 } 2876 2877 protected Object getProfileKey( Profile object ) 2878 { 2879 return object; 2880 } 2881 2882 protected Object getRepositoryKey( Repository object ) 2883 { 2884 return getRepositoryBaseKey( object ); 2885 } 2886 2887 protected Object getRepositoryBaseKey( RepositoryBase object ) 2888 { 2889 return object; 2890 } 2891 2892 protected Object getNotifierKey( Notifier object ) 2893 { 2894 return object; 2895 } 2896 2897 protected Object getResourceKey( Resource object ) 2898 { 2899 return object; 2900 } 2901 2902 protected Object getExtensionKey( Extension object ) 2903 { 2904 return object; 2905 } 2906 2907 protected Object getExclusionKey( Exclusion object ) 2908 { 2909 return object; 2910 } 2911 2912 }