summaryrefslogtreecommitdiffstats
path: root/framework/src/maven/apache-maven-3.3.3/maven-model
diff options
context:
space:
mode:
authorAshlee Young <ashlee@onosfw.com>2015-10-23 10:00:02 -0700
committerAshlee Young <ashlee@onosfw.com>2015-10-23 10:00:02 -0700
commit753a6c60f47f3ac4f270005b65e9d6481de8eb68 (patch)
tree3d0a1ae3b4d994550f6614b417b991eee3eb8911 /framework/src/maven/apache-maven-3.3.3/maven-model
parentc62d20eb3b4620c06d833be06f50b2600d96dd42 (diff)
Adding maven and ant source trees
Change-Id: I0a39b9add833a31b9c3f98d193983ae2f3a5a445 Signed-off-by: Ashlee Young <ashlee@onosfw.com>
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-model')
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/pom.xml132
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/io/xpp3/package-info.java30
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java2924
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/package-info.java24
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/package-info.java25
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/main/mdo/maven.mdo3649
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/site/apt/index.apt39
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/site/site.xml36
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/site/xdoc/navigation.xml35
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationFileTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationOSTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationPropertyTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/BuildTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/CiManagementTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ContributorTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyManagementTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeploymentRepositoryTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeveloperTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DistributionManagementTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExclusionTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExtensionTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/IssueManagementTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/LicenseTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/MailingListTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ModelTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/NotifierTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/OrganizationTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ParentTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginConfigurationTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginContainerTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginExecutionTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginManagementTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PrerequisitesTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ProfileTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RelocationTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportPluginTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportSetTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportingTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryPolicyTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ResourceTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ScmTest.java56
-rw-r--r--framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/SiteTest.java56
46 files changed, 8966 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/pom.xml b/framework/src/maven/apache-maven-3.3.3/maven-model/pom.xml
new file mode 100644
index 00000000..851c3e32
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/pom.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven</artifactId>
+ <version>3.3.3</version>
+ </parent>
+
+ <artifactId>maven-model</artifactId>
+
+ <name>Maven Model</name>
+ <description>Model for Maven POM (Project Object Model)</description>
+
+ <scm><!-- remove when git scm url format can accept artifact-id at the end, as automatically inherited -->
+ <connection>scm:git:https://git-wip-us.apache.org/repos/asf/maven.git</connection>
+ <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven.git</developerConnection>
+ <tag>maven-3.3.3</tag>
+ </scm>
+
+ <properties>
+ <checkstyle.violation.ignore>FileLength</checkstyle.violation.ignore>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.modello</groupId>
+ <artifactId>modello-maven-plugin</artifactId>
+ <configuration>
+ <version>4.0.0</version>
+ <models>
+ <model>src/main/mdo/maven.mdo</model>
+ </models>
+ </configuration>
+ <executions>
+ <execution>
+ <id>standard</id>
+ <goals>
+ <goal>java</goal>
+ <goal>xpp3-reader</goal>
+ <goal>xpp3-extended-reader</goal>
+ <goal>xpp3-writer</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <configuration>
+ <!-- Exclude the navigation file for Maven 1 sites
+ as it interferes with the site generation. -->
+ <moduleExcludes>
+ <xdoc>navigation.xml</xdoc>
+ </moduleExcludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>all-models</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.modello</groupId>
+ <artifactId>modello-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>v3</id>
+ <goals>
+ <goal>java</goal>
+ <goal>xpp3-writer</goal>
+ <goal>xpp3-reader</goal>
+ <goal>xsd</goal>
+ </goals>
+ <configuration>
+ <version>3.0.0</version>
+ <packageWithVersion>true</packageWithVersion>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <classifier>all</classifier>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/io/xpp3/package-info.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/io/xpp3/package-info.java
new file mode 100644
index 00000000..648607ce
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/io/xpp3/package-info.java
@@ -0,0 +1,30 @@
+// CHECKSTYLE_OFF: RegexpHeader|LineLength
+/**
+ * XML reader and writer classes for Maven POM, generated from <code>maven.mdo</code> model.
+ * These classes use
+ * <a href="http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/pull/package-summary.html">plexus-utils'
+ * XML Pull Parser API</a> for their internal XML handling and
+ * <a href="http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomBuilder.html">Xpp3DomBuilder</a> +
+ * <a href="http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3Dom.html">Xpp3Dom</a> for
+ * DOM content representation (see <code>&lt;configuration&gt;</code> elements).
+ */
+package org.apache.maven.model.io.xpp3;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */ \ No newline at end of file
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
new file mode 100644
index 00000000..b671d981
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/ModelMerger.java
@@ -0,0 +1,2924 @@
+package org.apache.maven.model.merge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.maven.model.Activation;
+import org.apache.maven.model.Build;
+import org.apache.maven.model.BuildBase;
+import org.apache.maven.model.CiManagement;
+import org.apache.maven.model.ConfigurationContainer;
+import org.apache.maven.model.Contributor;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.DeploymentRepository;
+import org.apache.maven.model.Developer;
+import org.apache.maven.model.DistributionManagement;
+import org.apache.maven.model.Exclusion;
+import org.apache.maven.model.Extension;
+import org.apache.maven.model.FileSet;
+import org.apache.maven.model.InputLocation;
+import org.apache.maven.model.IssueManagement;
+import org.apache.maven.model.License;
+import org.apache.maven.model.MailingList;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.ModelBase;
+import org.apache.maven.model.Notifier;
+import org.apache.maven.model.Organization;
+import org.apache.maven.model.Parent;
+import org.apache.maven.model.PatternSet;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.PluginConfiguration;
+import org.apache.maven.model.PluginContainer;
+import org.apache.maven.model.PluginExecution;
+import org.apache.maven.model.PluginManagement;
+import org.apache.maven.model.Prerequisites;
+import org.apache.maven.model.Profile;
+import org.apache.maven.model.Relocation;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.model.ReportSet;
+import org.apache.maven.model.Reporting;
+import org.apache.maven.model.Repository;
+import org.apache.maven.model.RepositoryBase;
+import org.apache.maven.model.RepositoryPolicy;
+import org.apache.maven.model.Resource;
+import org.apache.maven.model.Scm;
+import org.apache.maven.model.Site;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+
+/**
+ * This is a hand-crafted prototype of the default model merger that should eventually be generated by Modello by a new
+ * Java plugin. Code structure to merge source (read-only) object into the target object is:<ul>
+ * <li><code>merge<i>Classname</i>( <i>Classname</i> target, <i>Classname</i> source, boolean sourceDominant,
+ * Map<Object, Object> context )</code> for each model class</li>
+ * <li><code>merge<i>Classname</i>_<i>FieldName</i>( <i>Classname</i> target, <i>Classname</i> source, boolean
+ * sourceDominant, Map<Object, Object> context )</code> for each field of each model class</li>
+ * <li><code>Object get<i>Classname</i>Key( <i>Classname</i> <i>classname</i> )</code>
+ * for each class that is used in a list</li>
+ * </ul>
+ * Code is written like it could be generated, with default behaviour to be overridden when necessary.
+ * This is particularly the case for <code>Object get<i>Classname</i>Key( <i>Classname</i> <i>classname</i> )</code>
+ * method, which by default return the object itself and is expected to be overridden to calculate better suited key
+ * value.
+ *
+ * @author Benjamin Bentmann
+ */
+@SuppressWarnings( { "checkstyle:methodname" } )
+public class ModelMerger
+{
+
+ /**
+ * Merges the specified source object into the given target object.
+ *
+ * @param target The target object whose existing contents should be merged with the source, must not be
+ * <code>null</code>.
+ * @param source The (read-only) source object that should be merged into the target object, may be
+ * <code>null</code>.
+ * @param sourceDominant A flag indicating whether either the target object or the source object provides the
+ * dominant data.
+ * @param hints A set of key-value pairs that customized merger implementations can use to carry domain-specific
+ * information along, may be <code>null</code>.
+ */
+ public void merge( Model target, Model source, boolean sourceDominant, Map<?, ?> hints )
+ {
+ if ( target == null )
+ {
+ throw new IllegalArgumentException( "target missing" );
+ }
+
+ if ( source == null )
+ {
+ return;
+ }
+
+ Map<Object, Object> context = new HashMap<Object, Object>();
+ if ( hints != null )
+ {
+ context.putAll( hints );
+ }
+
+ mergeModel( target, source, sourceDominant, context );
+ }
+
+ protected void mergeModel( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeModelBase( target, source, sourceDominant, context );
+
+ mergeModel_ModelVersion( target, source, sourceDominant, context );
+ mergeModel_Parent( target, source, sourceDominant, context );
+ mergeModel_GroupId( target, source, sourceDominant, context );
+ mergeModel_ArtifactId( target, source, sourceDominant, context );
+ mergeModel_Version( target, source, sourceDominant, context );
+ mergeModel_Packaging( target, source, sourceDominant, context );
+ mergeModel_Name( target, source, sourceDominant, context );
+ mergeModel_Description( target, source, sourceDominant, context );
+ mergeModel_Url( target, source, sourceDominant, context );
+ mergeModel_InceptionYear( target, source, sourceDominant, context );
+ mergeModel_Organization( target, source, sourceDominant, context );
+ mergeModel_Licenses( target, source, sourceDominant, context );
+ mergeModel_MailingLists( target, source, sourceDominant, context );
+ mergeModel_Developers( target, source, sourceDominant, context );
+ mergeModel_Contributors( target, source, sourceDominant, context );
+ mergeModel_IssueManagement( target, source, sourceDominant, context );
+ mergeModel_Scm( target, source, sourceDominant, context );
+ mergeModel_CiManagement( target, source, sourceDominant, context );
+ mergeModel_Prerequisites( target, source, sourceDominant, context );
+ mergeModel_Build( target, source, sourceDominant, context );
+ mergeModel_Profiles( target, source, sourceDominant, context );
+ }
+
+ protected void mergeModel_ModelVersion( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getModelVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getModelVersion() == null )
+ {
+ target.setModelVersion( src );
+ target.setLocation( "modelVersion", source.getLocation( "modelVersion" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Parent( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ Parent src = source.getParent();
+ if ( src != null )
+ {
+ Parent tgt = target.getParent();
+ if ( tgt == null )
+ {
+ tgt = new Parent();
+ tgt.setRelativePath( null );
+ target.setParent( tgt );
+ }
+ mergeParent( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_GroupId( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_ArtifactId( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Version( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Packaging( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getPackaging();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getPackaging() == null )
+ {
+ target.setPackaging( src );
+ target.setLocation( "packaging", source.getLocation( "packaging" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Name( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Description( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDescription();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDescription() == null )
+ {
+ target.setDescription( src );
+ target.setLocation( "description", source.getLocation( "description" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Url( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_InceptionYear( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getInceptionYear();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getInceptionYear() == null )
+ {
+ target.setInceptionYear( src );
+ target.setLocation( "inceptionYear", source.getLocation( "inceptionYear" ) );
+ }
+ }
+ }
+
+ protected void mergeModel_Organization( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Organization src = source.getOrganization();
+ if ( src != null )
+ {
+ Organization tgt = target.getOrganization();
+ if ( tgt == null )
+ {
+ tgt = new Organization();
+ target.setOrganization( tgt );
+ }
+ mergeOrganization( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_Licenses( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<License> src = source.getLicenses();
+ if ( !src.isEmpty() )
+ {
+ List<License> tgt = target.getLicenses();
+ Map<Object, License> merged = new LinkedHashMap<Object, License>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( License element : tgt )
+ {
+ Object key = getLicenseKey( element );
+ merged.put( key, element );
+ }
+
+ for ( License element : src )
+ {
+ Object key = getLicenseKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setLicenses( new ArrayList<License>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModel_MailingLists( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<MailingList> src = source.getMailingLists();
+ if ( !src.isEmpty() )
+ {
+ List<MailingList> tgt = target.getMailingLists();
+ Map<Object, MailingList> merged = new LinkedHashMap<Object, MailingList>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( MailingList element : tgt )
+ {
+ Object key = getMailingListKey( element );
+ merged.put( key, element );
+ }
+
+ for ( MailingList element : src )
+ {
+ Object key = getMailingListKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setMailingLists( new ArrayList<MailingList>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModel_Developers( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Developer> src = source.getDevelopers();
+ if ( !src.isEmpty() )
+ {
+ List<Developer> tgt = target.getDevelopers();
+ Map<Object, Developer> merged = new LinkedHashMap<Object, Developer>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Developer element : tgt )
+ {
+ Object key = getDeveloperKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Developer element : src )
+ {
+ Object key = getDeveloperKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setDevelopers( new ArrayList<Developer>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModel_Contributors( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Contributor> src = source.getContributors();
+ if ( !src.isEmpty() )
+ {
+ List<Contributor> tgt = target.getContributors();
+ Map<Object, Contributor> merged = new LinkedHashMap<Object, Contributor>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Contributor element : tgt )
+ {
+ Object key = getContributorKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Contributor element : src )
+ {
+ Object key = getContributorKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setContributors( new ArrayList<Contributor>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModel_IssueManagement( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ IssueManagement src = source.getIssueManagement();
+ if ( src != null )
+ {
+ IssueManagement tgt = target.getIssueManagement();
+ if ( tgt == null )
+ {
+ tgt = new IssueManagement();
+ target.setIssueManagement( tgt );
+ }
+ mergeIssueManagement( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_Scm( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ Scm src = source.getScm();
+ if ( src != null )
+ {
+ Scm tgt = target.getScm();
+ if ( tgt == null )
+ {
+ tgt = new Scm();
+ tgt.setTag( null );
+ target.setScm( tgt );
+ }
+ mergeScm( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_CiManagement( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ CiManagement src = source.getCiManagement();
+ if ( src != null )
+ {
+ CiManagement tgt = target.getCiManagement();
+ if ( tgt == null )
+ {
+ tgt = new CiManagement();
+ target.setCiManagement( tgt );
+ }
+ mergeCiManagement( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_Prerequisites( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Prerequisites src = source.getPrerequisites();
+ if ( src != null )
+ {
+ Prerequisites tgt = target.getPrerequisites();
+ if ( tgt == null )
+ {
+ tgt = new Prerequisites();
+ tgt.setMaven( null );
+ target.setPrerequisites( tgt );
+ }
+ mergePrerequisites( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_Build( Model target, Model source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ Build src = source.getBuild();
+ if ( src != null )
+ {
+ Build tgt = target.getBuild();
+ if ( tgt == null )
+ {
+ tgt = new Build();
+ target.setBuild( tgt );
+ }
+ mergeBuild( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModel_Profiles( Model target, Model source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Profile> src = source.getProfiles();
+ if ( !src.isEmpty() )
+ {
+ List<Profile> tgt = target.getProfiles();
+ Map<Object, Profile> merged = new LinkedHashMap<Object, Profile>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Profile element : tgt )
+ {
+ Object key = getProfileKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Profile element : src )
+ {
+ Object key = getProfileKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setProfiles( new ArrayList<Profile>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModelBase( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeModelBase_DistributionManagement( target, source, sourceDominant, context );
+ mergeModelBase_Modules( target, source, sourceDominant, context );
+ mergeModelBase_Repositories( target, source, sourceDominant, context );
+ mergeModelBase_PluginRepositories( target, source, sourceDominant, context );
+ mergeModelBase_Dependencies( target, source, sourceDominant, context );
+ mergeModelBase_Reporting( target, source, sourceDominant, context );
+ mergeModelBase_DependencyManagement( target, source, sourceDominant, context );
+ mergeModelBase_Properties( target, source, sourceDominant, context );
+ }
+
+ protected void mergeModelBase_Modules( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getModules();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getModules();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setModules( merged );
+ }
+ }
+
+ protected void mergeModelBase_Dependencies( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Dependency> src = source.getDependencies();
+ if ( !src.isEmpty() )
+ {
+ List<Dependency> tgt = target.getDependencies();
+ Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Dependency element : tgt )
+ {
+ Object key = getDependencyKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Dependency element : src )
+ {
+ Object key = getDependencyKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setDependencies( new ArrayList<Dependency>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModelBase_Repositories( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Repository> src = source.getRepositories();
+ if ( !src.isEmpty() )
+ {
+ List<Repository> tgt = target.getRepositories();
+ Map<Object, Repository> merged = new LinkedHashMap<Object, Repository>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Repository element : tgt )
+ {
+ Object key = getRepositoryKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Repository element : src )
+ {
+ Object key = getRepositoryKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setRepositories( new ArrayList<Repository>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModelBase_PluginRepositories( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Repository> src = source.getPluginRepositories();
+ if ( !src.isEmpty() )
+ {
+ List<Repository> tgt = target.getPluginRepositories();
+ Map<Object, Repository> merged = new LinkedHashMap<Object, Repository>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Repository element : tgt )
+ {
+ Object key = getRepositoryKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Repository element : src )
+ {
+ Object key = getRepositoryKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setPluginRepositories( new ArrayList<Repository>( merged.values() ) );
+ }
+ }
+
+ protected void mergeModelBase_DistributionManagement( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ DistributionManagement src = source.getDistributionManagement();
+ if ( src != null )
+ {
+ DistributionManagement tgt = target.getDistributionManagement();
+ if ( tgt == null )
+ {
+ tgt = new DistributionManagement();
+ target.setDistributionManagement( tgt );
+ }
+ mergeDistributionManagement( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModelBase_Reporting( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Reporting src = source.getReporting();
+ if ( src != null )
+ {
+ Reporting tgt = target.getReporting();
+ if ( tgt == null )
+ {
+ tgt = new Reporting();
+ target.setReporting( tgt );
+ }
+ mergeReporting( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModelBase_DependencyManagement( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ DependencyManagement src = source.getDependencyManagement();
+ if ( src != null )
+ {
+ DependencyManagement tgt = target.getDependencyManagement();
+ if ( tgt == null )
+ {
+ tgt = new DependencyManagement();
+ target.setDependencyManagement( tgt );
+ }
+ mergeDependencyManagement( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeModelBase_Properties( ModelBase target, ModelBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Properties merged = new Properties();
+ if ( sourceDominant )
+ {
+ merged.putAll( target.getProperties() );
+ merged.putAll( source.getProperties() );
+ }
+ else
+ {
+ merged.putAll( source.getProperties() );
+ merged.putAll( target.getProperties() );
+ }
+ target.setProperties( merged );
+ target.setLocation( "properties", InputLocation.merge( target.getLocation( "properties" ),
+ source.getLocation( "properties" ), sourceDominant ) );
+ }
+
+ protected void mergeDistributionManagement( DistributionManagement target, DistributionManagement source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeDistributionManagement_Repository( target, source, sourceDominant, context );
+ mergeDistributionManagement_SnapshotRepository( target, source, sourceDominant, context );
+ mergeDistributionManagement_Site( target, source, sourceDominant, context );
+ mergeDistributionManagement_Status( target, source, sourceDominant, context );
+ mergeDistributionManagement_DownloadUrl( target, source, sourceDominant, context );
+ }
+
+ protected void mergeDistributionManagement_Repository( DistributionManagement target,
+ DistributionManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ DeploymentRepository src = source.getRepository();
+ if ( src != null )
+ {
+ DeploymentRepository tgt = target.getRepository();
+ if ( tgt == null )
+ {
+ tgt = new DeploymentRepository();
+ target.setRepository( tgt );
+ }
+ mergeDeploymentRepository( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeDistributionManagement_SnapshotRepository( DistributionManagement target,
+ DistributionManagement source,
+ boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ DeploymentRepository src = source.getSnapshotRepository();
+ if ( src != null )
+ {
+ DeploymentRepository tgt = target.getSnapshotRepository();
+ if ( tgt == null )
+ {
+ tgt = new DeploymentRepository();
+ target.setSnapshotRepository( tgt );
+ }
+ mergeDeploymentRepository( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeDistributionManagement_Site( DistributionManagement target, DistributionManagement source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ Site src = source.getSite();
+ if ( src != null )
+ {
+ Site tgt = target.getSite();
+ if ( tgt == null )
+ {
+ tgt = new Site();
+ target.setSite( tgt );
+ }
+ mergeSite( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeDistributionManagement_Status( DistributionManagement target, DistributionManagement source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getStatus();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getStatus() == null )
+ {
+ target.setStatus( src );
+ target.setLocation( "status", source.getLocation( "status" ) );
+ }
+ }
+ }
+
+ protected void mergeDistributionManagement_DownloadUrl( DistributionManagement target,
+ DistributionManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDownloadUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDownloadUrl() == null )
+ {
+ target.setDownloadUrl( src );
+ target.setLocation( "downloadUrl", source.getLocation( "downloadUrl" ) );
+ }
+ }
+ }
+
+ protected void mergeRelocation( Relocation target, Relocation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeRelocation_GroupId( target, source, sourceDominant, context );
+ mergeRelocation_ArtifactId( target, source, sourceDominant, context );
+ mergeRelocation_Version( target, source, sourceDominant, context );
+ mergeRelocation_Message( target, source, sourceDominant, context );
+ }
+
+ protected void mergeRelocation_GroupId( Relocation target, Relocation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeRelocation_ArtifactId( Relocation target, Relocation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeRelocation_Version( Relocation target, Relocation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeRelocation_Message( Relocation target, Relocation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getMessage();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getMessage() == null )
+ {
+ target.setMessage( src );
+ target.setLocation( "message", source.getLocation( "message" ) );
+ }
+ }
+ }
+
+ protected void mergeDeploymentRepository( DeploymentRepository target, DeploymentRepository source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeRepository( target, source, sourceDominant, context );
+ mergeDeploymentRepository_UniqueVersion( target, source, sourceDominant, context );
+ }
+
+ protected void mergeDeploymentRepository_UniqueVersion( DeploymentRepository target, DeploymentRepository source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ if ( sourceDominant )
+ {
+ target.setUniqueVersion( source.isUniqueVersion() );
+ target.setLocation( "uniqueVersion", source.getLocation( "uniqueVersion" ) );
+ }
+ }
+
+ protected void mergeSite( Site target, Site source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeSite_Id( target, source, sourceDominant, context );
+ mergeSite_Name( target, source, sourceDominant, context );
+ mergeSite_Url( target, source, sourceDominant, context );
+ }
+
+ protected void mergeSite_Id( Site target, Site source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getId() == null )
+ {
+ target.setId( src );
+ target.setLocation( "id", source.getLocation( "id" ) );
+ }
+ }
+ }
+
+ protected void mergeSite_Name( Site target, Site source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeSite_Url( Site target, Site source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeRepository( Repository target, Repository source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeRepositoryBase( target, source, sourceDominant, context );
+ mergeRepository_Releases( target, source, sourceDominant, context );
+ mergeRepository_Snapshots( target, source, sourceDominant, context );
+ }
+
+ protected void mergeRepository_Releases( Repository target, Repository source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ RepositoryPolicy src = source.getReleases();
+ if ( src != null )
+ {
+ RepositoryPolicy tgt = target.getReleases();
+ if ( tgt == null )
+ {
+ tgt = new RepositoryPolicy();
+ target.setReleases( tgt );
+ }
+ mergeRepositoryPolicy( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeRepository_Snapshots( Repository target, Repository source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ RepositoryPolicy src = source.getSnapshots();
+ if ( src != null )
+ {
+ RepositoryPolicy tgt = target.getSnapshots();
+ if ( tgt == null )
+ {
+ tgt = new RepositoryPolicy();
+ target.setSnapshots( tgt );
+ }
+ mergeRepositoryPolicy( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergeRepositoryBase( RepositoryBase target, RepositoryBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeRepositoryBase_Id( target, source, sourceDominant, context );
+ mergeRepositoryBase_Name( target, source, sourceDominant, context );
+ mergeRepositoryBase_Url( target, source, sourceDominant, context );
+ mergeRepositoryBase_Layout( target, source, sourceDominant, context );
+ }
+
+ protected void mergeRepositoryBase_Id( RepositoryBase target, RepositoryBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getId() == null )
+ {
+ target.setId( src );
+ target.setLocation( "id", source.getLocation( "id" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryBase_Url( RepositoryBase target, RepositoryBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryBase_Name( RepositoryBase target, RepositoryBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryBase_Layout( RepositoryBase target, RepositoryBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getLayout();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getLayout() == null )
+ {
+ target.setLayout( src );
+ target.setLocation( "layout", source.getLocation( "layout" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryPolicy( RepositoryPolicy target, RepositoryPolicy source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeRepositoryPolicy_Enabled( target, source, sourceDominant, context );
+ mergeRepositoryPolicy_UpdatePolicy( target, source, sourceDominant, context );
+ mergeRepositoryPolicy_ChecksumPolicy( target, source, sourceDominant, context );
+ }
+
+ protected void mergeRepositoryPolicy_Enabled( RepositoryPolicy target, RepositoryPolicy source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getEnabled();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getEnabled() == null )
+ {
+ target.setEnabled( src );
+ target.setLocation( "enabled", source.getLocation( "enabled" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryPolicy_UpdatePolicy( RepositoryPolicy target, RepositoryPolicy source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getUpdatePolicy();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUpdatePolicy() == null )
+ {
+ target.setUpdatePolicy( src );
+ target.setLocation( "updatePolicy", source.getLocation( "updatePolicy" ) );
+ }
+ }
+ }
+
+ protected void mergeRepositoryPolicy_ChecksumPolicy( RepositoryPolicy target, RepositoryPolicy source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getChecksumPolicy();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getChecksumPolicy() == null )
+ {
+ target.setChecksumPolicy( src );
+ target.setLocation( "checksumPolicy", source.getLocation( "checksumPolicy" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeDependency_GroupId( target, source, sourceDominant, context );
+ mergeDependency_ArtifactId( target, source, sourceDominant, context );
+ mergeDependency_Version( target, source, sourceDominant, context );
+ mergeDependency_Type( target, source, sourceDominant, context );
+ mergeDependency_Classifier( target, source, sourceDominant, context );
+ mergeDependency_Scope( target, source, sourceDominant, context );
+ mergeDependency_SystemPath( target, source, sourceDominant, context );
+ mergeDependency_Optional( target, source, sourceDominant, context );
+ mergeDependency_Exclusions( target, source, sourceDominant, context );
+ }
+
+ protected void mergeDependency_GroupId( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_ArtifactId( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Version( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Type( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getType();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getType() == null )
+ {
+ target.setType( src );
+ target.setLocation( "type", source.getLocation( "type" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Classifier( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getClassifier();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getClassifier() == null )
+ {
+ target.setClassifier( src );
+ target.setLocation( "classifier", source.getLocation( "classifier" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Scope( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getScope();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getScope() == null )
+ {
+ target.setScope( src );
+ target.setLocation( "scope", source.getLocation( "scope" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_SystemPath( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getSystemPath();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getSystemPath() == null )
+ {
+ target.setSystemPath( src );
+ target.setLocation( "systemPath", source.getLocation( "systemPath" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Optional( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getOptional();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getOptional() == null )
+ {
+ target.setOptional( src );
+ target.setLocation( "optional", source.getLocation( "optional" ) );
+ }
+ }
+ }
+
+ protected void mergeDependency_Exclusions( Dependency target, Dependency source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Exclusion> src = source.getExclusions();
+ if ( !src.isEmpty() )
+ {
+ List<Exclusion> tgt = target.getExclusions();
+
+ Map<Object, Exclusion> merged = new LinkedHashMap<Object, Exclusion>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Exclusion element : tgt )
+ {
+ Object key = getExclusionKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Exclusion element : src )
+ {
+ Object key = getExclusionKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setExclusions( new ArrayList<Exclusion>( merged.values() ) );
+ }
+ }
+
+ protected void mergeExclusion( Exclusion target, Exclusion source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeExclusion_GroupId( target, source, sourceDominant, context );
+ mergeExclusion_ArtifactId( target, source, sourceDominant, context );
+ }
+
+ protected void mergeExclusion_GroupId( Exclusion target, Exclusion source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeExclusion_ArtifactId( Exclusion target, Exclusion source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeReporting( Reporting target, Reporting source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeReporting_OutputDirectory( target, source, sourceDominant, context );
+ mergeReporting_ExcludeDefaults( target, source, sourceDominant, context );
+ mergeReporting_Plugins( target, source, sourceDominant, context );
+ }
+
+ protected void mergeReporting_OutputDirectory( Reporting target, Reporting source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getOutputDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getOutputDirectory() == null )
+ {
+ target.setOutputDirectory( src );
+ target.setLocation( "outputDirectory", source.getLocation( "outputDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeReporting_ExcludeDefaults( Reporting target, Reporting source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getExcludeDefaults();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getExcludeDefaults() == null )
+ {
+ target.setExcludeDefaults( src );
+ target.setLocation( "excludeDefaults", source.getLocation( "excludeDefaults" ) );
+ }
+ }
+ }
+
+ protected void mergeReporting_Plugins( Reporting target, Reporting source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<ReportPlugin> src = source.getPlugins();
+ if ( !src.isEmpty() )
+ {
+ List<ReportPlugin> tgt = target.getPlugins();
+ Map<Object, ReportPlugin> merged =
+ new LinkedHashMap<Object, ReportPlugin>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( ReportPlugin element : tgt )
+ {
+ Object key = getReportPluginKey( element );
+ merged.put( key, element );
+ }
+
+ for ( ReportPlugin element : src )
+ {
+ Object key = getReportPluginKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setPlugins( new ArrayList<ReportPlugin>( merged.values() ) );
+ }
+ }
+
+ protected void mergeReportPlugin( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeConfigurationContainer( target, source, sourceDominant, context );
+ mergeReportPlugin_GroupId( target, source, sourceDominant, context );
+ mergeReportPlugin_ArtifactId( target, source, sourceDominant, context );
+ mergeReportPlugin_Version( target, source, sourceDominant, context );
+ mergeReportPlugin_ReportSets( target, source, sourceDominant, context );
+ }
+
+ protected void mergeReportPlugin_GroupId( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeReportPlugin_ArtifactId( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeReportPlugin_Version( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeReportPlugin_ReportSets( ReportPlugin target, ReportPlugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<ReportSet> src = source.getReportSets();
+ if ( !src.isEmpty() )
+ {
+ List<ReportSet> tgt = target.getReportSets();
+ Map<Object, ReportSet> merged = new LinkedHashMap<Object, ReportSet>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( ReportSet element : tgt )
+ {
+ Object key = getReportSetKey( element );
+ merged.put( key, element );
+ }
+
+ for ( ReportSet element : src )
+ {
+ Object key = getReportSetKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setReportSets( new ArrayList<ReportSet>( merged.values() ) );
+ }
+ }
+
+ protected void mergeReportSet( ReportSet target, ReportSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeConfigurationContainer( target, source, sourceDominant, context );
+ mergeReportSet_Id( target, source, sourceDominant, context );
+ mergeReportSet_Reports( target, source, sourceDominant, context );
+ }
+
+ protected void mergeReportSet_Id( ReportSet target, ReportSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getId() == null )
+ {
+ target.setId( src );
+ target.setLocation( "id", source.getLocation( "id" ) );
+ }
+ }
+ }
+
+ protected void mergeReportSet_Reports( ReportSet target, ReportSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getReports();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getReports();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setReports( merged );
+ }
+ }
+
+ protected void mergeDependencyManagement( DependencyManagement target, DependencyManagement source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeDependencyManagement_Dependencies( target, source, sourceDominant, context );
+ }
+
+ protected void mergeDependencyManagement_Dependencies( DependencyManagement target, DependencyManagement source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ List<Dependency> src = source.getDependencies();
+ if ( !src.isEmpty() )
+ {
+ List<Dependency> tgt = target.getDependencies();
+ Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Dependency element : tgt )
+ {
+ Object key = getDependencyKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Dependency element : src )
+ {
+ Object key = getDependencyKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setDependencies( new ArrayList<Dependency>( merged.values() ) );
+ }
+ }
+
+ protected void mergeParent( Parent target, Parent source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeParent_GroupId( target, source, sourceDominant, context );
+ mergeParent_ArtifactId( target, source, sourceDominant, context );
+ mergeParent_Version( target, source, sourceDominant, context );
+ mergeParent_RelativePath( target, source, sourceDominant, context );
+ }
+
+ protected void mergeParent_GroupId( Parent target, Parent source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeParent_ArtifactId( Parent target, Parent source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeParent_Version( Parent target, Parent source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeParent_RelativePath( Parent target, Parent source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getRelativePath();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getRelativePath() == null )
+ {
+ target.setRelativePath( src );
+ target.setLocation( "relativePath", source.getLocation( "relativePath" ) );
+ }
+ }
+ }
+
+ protected void mergeOrganization( Organization target, Organization source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeOrganization_Name( target, source, sourceDominant, context );
+ mergeOrganization_Url( target, source, sourceDominant, context );
+ }
+
+ protected void mergeOrganization_Name( Organization target, Organization source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeOrganization_Url( Organization target, Organization source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeLicense( License target, License source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeLicense_Name( target, source, sourceDominant, context );
+ mergeLicense_Url( target, source, sourceDominant, context );
+ mergeLicense_Distribution( target, source, sourceDominant, context );
+ mergeLicense_Comments( target, source, sourceDominant, context );
+ }
+
+ protected void mergeLicense_Name( License target, License source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeLicense_Url( License target, License source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeLicense_Distribution( License target, License source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDistribution();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDistribution() == null )
+ {
+ target.setDistribution( src );
+ target.setLocation( "distribution", source.getLocation( "distribution" ) );
+ }
+ }
+ }
+
+ protected void mergeLicense_Comments( License target, License source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getComments();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getComments() == null )
+ {
+ target.setComments( src );
+ target.setLocation( "comments", source.getLocation( "comments" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeMailingList_Name( target, source, sourceDominant, context );
+ mergeMailingList_Subscribe( target, source, sourceDominant, context );
+ mergeMailingList_Unsubscribe( target, source, sourceDominant, context );
+ mergeMailingList_Post( target, source, sourceDominant, context );
+ mergeMailingList_OtherArchives( target, source, sourceDominant, context );
+ }
+
+ protected void mergeMailingList_Name( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList_Subscribe( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getSubscribe();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getSubscribe() == null )
+ {
+ target.setSubscribe( src );
+ target.setLocation( "subscribe", source.getLocation( "subscribe" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList_Unsubscribe( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUnsubscribe();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUnsubscribe() == null )
+ {
+ target.setUnsubscribe( src );
+ target.setLocation( "unsubscribe", source.getLocation( "unsubscribe" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList_Post( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getPost();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getPost() == null )
+ {
+ target.setPost( src );
+ target.setLocation( "post", source.getLocation( "post" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList_Archive( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArchive();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArchive() == null )
+ {
+ target.setArchive( src );
+ target.setLocation( "archive", source.getLocation( "archive" ) );
+ }
+ }
+ }
+
+ protected void mergeMailingList_OtherArchives( MailingList target, MailingList source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getOtherArchives();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getOtherArchives();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setOtherArchives( merged );
+ }
+ }
+
+ protected void mergeDeveloper( Developer target, Developer source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeContributor( target, source, sourceDominant, context );
+ mergeDeveloper_Id( target, source, sourceDominant, context );
+ }
+
+ protected void mergeDeveloper_Id( Developer target, Developer source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getId() == null )
+ {
+ target.setId( src );
+ target.setLocation( "id", source.getLocation( "id" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeContributor_Name( target, source, sourceDominant, context );
+ mergeContributor_Email( target, source, sourceDominant, context );
+ mergeContributor_Url( target, source, sourceDominant, context );
+ mergeContributor_Organization( target, source, sourceDominant, context );
+ mergeContributor_OrganizationUrl( target, source, sourceDominant, context );
+ mergeContributor_Timezone( target, source, sourceDominant, context );
+ mergeContributor_Roles( target, source, sourceDominant, context );
+ mergeContributor_Properties( target, source, sourceDominant, context );
+ }
+
+ protected void mergeContributor_Name( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getName() == null )
+ {
+ target.setName( src );
+ target.setLocation( "name", source.getLocation( "name" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_Email( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getEmail();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getEmail() == null )
+ {
+ target.setEmail( src );
+ target.setLocation( "email", source.getLocation( "email" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_Url( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_Organization( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getOrganization();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getOrganization() == null )
+ {
+ target.setOrganization( src );
+ target.setLocation( "organization", source.getLocation( "organization" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_OrganizationUrl( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getOrganizationUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getOrganizationUrl() == null )
+ {
+ target.setOrganizationUrl( src );
+ target.setLocation( "organizationUrl", source.getLocation( "organizationUrl" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_Timezone( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getTimezone();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getTimezone() == null )
+ {
+ target.setTimezone( src );
+ target.setLocation( "timezone", source.getLocation( "timezone" ) );
+ }
+ }
+ }
+
+ protected void mergeContributor_Roles( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getRoles();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getRoles();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setRoles( merged );
+ }
+ }
+
+ protected void mergeContributor_Properties( Contributor target, Contributor source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Properties merged = new Properties();
+ if ( sourceDominant )
+ {
+ merged.putAll( target.getProperties() );
+ merged.putAll( source.getProperties() );
+ }
+ else
+ {
+ merged.putAll( source.getProperties() );
+ merged.putAll( target.getProperties() );
+ }
+ target.setProperties( merged );
+ target.setLocation( "properties", InputLocation.merge( target.getLocation( "properties" ),
+ source.getLocation( "properties" ), sourceDominant ) );
+ }
+
+ protected void mergeIssueManagement( IssueManagement target, IssueManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeIssueManagement_Url( target, source, sourceDominant, context );
+ mergeIssueManagement_System( target, source, sourceDominant, context );
+ }
+
+ protected void mergeIssueManagement_System( IssueManagement target, IssueManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getSystem();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getSystem() == null )
+ {
+ target.setSystem( src );
+ target.setLocation( "system", source.getLocation( "system" ) );
+ }
+ }
+ }
+
+ protected void mergeIssueManagement_Url( IssueManagement target, IssueManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeScm( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeScm_Url( target, source, sourceDominant, context );
+ mergeScm_Connection( target, source, sourceDominant, context );
+ mergeScm_DeveloperConnection( target, source, sourceDominant, context );
+ mergeScm_Tag( target, source, sourceDominant, context );
+ }
+
+ protected void mergeScm_Url( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeScm_Connection( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getConnection();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getConnection() == null )
+ {
+ target.setConnection( src );
+ target.setLocation( "connection", source.getLocation( "connection" ) );
+ }
+ }
+ }
+
+ protected void mergeScm_DeveloperConnection( Scm target, Scm source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDeveloperConnection();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDeveloperConnection() == null )
+ {
+ target.setDeveloperConnection( src );
+ target.setLocation( "developerConnection", source.getLocation( "developerConnection" ) );
+ }
+ }
+ }
+
+ protected void mergeScm_Tag( Scm target, Scm source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getTag();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getTag() == null )
+ {
+ target.setTag( src );
+ target.setLocation( "tag", source.getLocation( "tag" ) );
+ }
+ }
+ }
+
+ protected void mergeCiManagement( CiManagement target, CiManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeCiManagement_System( target, source, sourceDominant, context );
+ mergeCiManagement_Url( target, source, sourceDominant, context );
+ mergeCiManagement_Notifiers( target, source, sourceDominant, context );
+ }
+
+ protected void mergeCiManagement_System( CiManagement target, CiManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getSystem();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getSystem() == null )
+ {
+ target.setSystem( src );
+ target.setLocation( "system", source.getLocation( "system" ) );
+ }
+ }
+ }
+
+ protected void mergeCiManagement_Url( CiManagement target, CiManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getUrl();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getUrl() == null )
+ {
+ target.setUrl( src );
+ target.setLocation( "url", source.getLocation( "url" ) );
+ }
+ }
+ }
+
+ protected void mergeCiManagement_Notifiers( CiManagement target, CiManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Notifier> src = source.getNotifiers();
+ if ( !src.isEmpty() )
+ {
+ List<Notifier> tgt = target.getNotifiers();
+ Map<Object, Notifier> merged = new LinkedHashMap<Object, Notifier>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Notifier element : tgt )
+ {
+ Object key = getNotifierKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Notifier element : src )
+ {
+ Object key = getNotifierKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setNotifiers( new ArrayList<Notifier>( merged.values() ) );
+ }
+ }
+
+ protected void mergeNotifier( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeNotifier_Type( target, source, sourceDominant, context );
+ mergeNotifier_Address( target, source, sourceDominant, context );
+ mergeNotifier_Configuration( target, source, sourceDominant, context );
+ mergeNotifier_SendOnError( target, source, sourceDominant, context );
+ mergeNotifier_SendOnFailure( target, source, sourceDominant, context );
+ mergeNotifier_SendOnSuccess( target, source, sourceDominant, context );
+ mergeNotifier_SendOnWarning( target, source, sourceDominant, context );
+ }
+
+ protected void mergeNotifier_Type( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getType();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getType() == null )
+ {
+ target.setType( src );
+ }
+ }
+ }
+
+ protected void mergeNotifier_Address( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getAddress();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getAddress() == null )
+ {
+ target.setAddress( src );
+ }
+ }
+ }
+
+ protected void mergeNotifier_Configuration( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Properties merged = new Properties();
+ if ( sourceDominant )
+ {
+ merged.putAll( target.getConfiguration() );
+ merged.putAll( source.getConfiguration() );
+ }
+ else
+ {
+ merged.putAll( source.getConfiguration() );
+ merged.putAll( target.getConfiguration() );
+ }
+ target.setConfiguration( merged );
+ }
+
+ protected void mergeNotifier_SendOnError( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ if ( sourceDominant )
+ {
+ target.setSendOnError( source.isSendOnError() );
+ }
+ }
+
+ protected void mergeNotifier_SendOnFailure( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ if ( sourceDominant )
+ {
+ target.setSendOnFailure( source.isSendOnFailure() );
+ }
+ }
+
+ protected void mergeNotifier_SendOnSuccess( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ if ( sourceDominant )
+ {
+ target.setSendOnSuccess( source.isSendOnSuccess() );
+ }
+ }
+
+ protected void mergeNotifier_SendOnWarning( Notifier target, Notifier source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ if ( sourceDominant )
+ {
+ target.setSendOnWarning( source.isSendOnWarning() );
+ }
+ }
+
+ protected void mergePrerequisites( Prerequisites target, Prerequisites source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergePrerequisites_Maven( target, source, sourceDominant, context );
+ }
+
+ protected void mergePrerequisites_Maven( Prerequisites target, Prerequisites source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getMaven();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getMaven() == null )
+ {
+ target.setMaven( src );
+ target.setLocation( "maven", source.getLocation( "maven" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild( Build target, Build source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeBuildBase( target, source, sourceDominant, context );
+ mergeBuild_SourceDirectory( target, source, sourceDominant, context );
+ mergeBuild_ScriptSourceDirectory( target, source, sourceDominant, context );
+ mergeBuild_TestSourceDirectory( target, source, sourceDominant, context );
+ mergeBuild_OutputDirectory( target, source, sourceDominant, context );
+ mergeBuild_TestOutputDirectory( target, source, sourceDominant, context );
+ mergeBuild_Extensions( target, source, sourceDominant, context );
+ }
+
+ protected void mergeBuild_SourceDirectory( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getSourceDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getSourceDirectory() == null )
+ {
+ target.setSourceDirectory( src );
+ target.setLocation( "sourceDirectory", source.getLocation( "sourceDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild_ScriptSourceDirectory( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getScriptSourceDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getScriptSourceDirectory() == null )
+ {
+ target.setScriptSourceDirectory( src );
+ target.setLocation( "scriptSourceDirectory", source.getLocation( "scriptSourceDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild_TestSourceDirectory( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getTestSourceDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getTestSourceDirectory() == null )
+ {
+ target.setTestSourceDirectory( src );
+ target.setLocation( "testSourceDirectory", source.getLocation( "testSourceDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild_OutputDirectory( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getOutputDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getOutputDirectory() == null )
+ {
+ target.setOutputDirectory( src );
+ target.setLocation( "outputDirectory", source.getLocation( "outputDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild_TestOutputDirectory( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getTestOutputDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getTestOutputDirectory() == null )
+ {
+ target.setTestOutputDirectory( src );
+ target.setLocation( "testOutputDirectory", source.getLocation( "testOutputDirectory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuild_Extensions( Build target, Build source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Extension> src = source.getExtensions();
+ if ( !src.isEmpty() )
+ {
+ List<Extension> tgt = target.getExtensions();
+ Map<Object, Extension> merged = new LinkedHashMap<Object, Extension>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Extension element : tgt )
+ {
+ Object key = getExtensionKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Extension element : src )
+ {
+ Object key = getExtensionKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setExtensions( new ArrayList<Extension>( merged.values() ) );
+ }
+ }
+
+ protected void mergeExtension( Extension target, Extension source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeExtension_GroupId( target, source, sourceDominant, context );
+ mergeExtension_ArtifactId( target, source, sourceDominant, context );
+ mergeExtension_Version( target, source, sourceDominant, context );
+ }
+
+ protected void mergeExtension_GroupId( Extension target, Extension source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergeExtension_ArtifactId( Extension target, Extension source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergeExtension_Version( Extension target, Extension source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergeBuildBase( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergePluginConfiguration( target, source, sourceDominant, context );
+ mergeBuildBase_DefaultGoal( target, source, sourceDominant, context );
+ mergeBuildBase_FinalName( target, source, sourceDominant, context );
+ mergeBuildBase_Directory( target, source, sourceDominant, context );
+ mergeBuildBase_Resources( target, source, sourceDominant, context );
+ mergeBuildBase_TestResources( target, source, sourceDominant, context );
+ mergeBuildBase_Filters( target, source, sourceDominant, context );
+ }
+
+ protected void mergeBuildBase_DefaultGoal( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDefaultGoal();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDefaultGoal() == null )
+ {
+ target.setDefaultGoal( src );
+ target.setLocation( "defaultGoal", source.getLocation( "defaultGoal" ) );
+ }
+ }
+ }
+
+ protected void mergeBuildBase_Directory( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDirectory() == null )
+ {
+ target.setDirectory( src );
+ target.setLocation( "directory", source.getLocation( "directory" ) );
+ }
+ }
+ }
+
+ protected void mergeBuildBase_FinalName( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getFinalName();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getFinalName() == null )
+ {
+ target.setFinalName( src );
+ target.setLocation( "finalName", source.getLocation( "finalName" ) );
+ }
+ }
+ }
+
+ protected void mergeBuildBase_Filters( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getFilters();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getFilters();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setFilters( merged );
+ }
+ }
+
+ protected void mergeBuildBase_Resources( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Resource> src = source.getResources();
+ if ( !src.isEmpty() )
+ {
+ List<Resource> tgt = target.getResources();
+ Map<Object, Resource> merged = new LinkedHashMap<Object, Resource>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Resource element : tgt )
+ {
+ Object key = getResourceKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Resource element : src )
+ {
+ Object key = getResourceKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setResources( new ArrayList<Resource>( merged.values() ) );
+ }
+ }
+
+ protected void mergeBuildBase_TestResources( BuildBase target, BuildBase source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Resource> src = source.getTestResources();
+ if ( !src.isEmpty() )
+ {
+ List<Resource> tgt = target.getTestResources();
+ Map<Object, Resource> merged = new LinkedHashMap<Object, Resource>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Resource element : tgt )
+ {
+ Object key = getResourceKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Resource element : src )
+ {
+ Object key = getResourceKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setTestResources( new ArrayList<Resource>( merged.values() ) );
+ }
+ }
+
+ protected void mergePluginConfiguration( PluginConfiguration target, PluginConfiguration source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergePluginContainer( target, source, sourceDominant, context );
+ mergePluginConfiguration_PluginManagement( target, source, sourceDominant, context );
+ }
+
+ protected void mergePluginConfiguration_PluginManagement( PluginConfiguration target, PluginConfiguration source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ PluginManagement src = source.getPluginManagement();
+ if ( src != null )
+ {
+ PluginManagement tgt = target.getPluginManagement();
+ if ( tgt == null )
+ {
+ tgt = new PluginManagement();
+ target.setPluginManagement( tgt );
+ }
+ mergePluginManagement( tgt, src, sourceDominant, context );
+ }
+ }
+
+ protected void mergePluginContainer( PluginContainer target, PluginContainer source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergePluginContainer_Plugins( target, source, sourceDominant, context );
+ }
+
+ protected void mergePluginContainer_Plugins( PluginContainer target, PluginContainer source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ List<Plugin> src = source.getPlugins();
+ if ( !src.isEmpty() )
+ {
+ List<Plugin> tgt = target.getPlugins();
+ Map<Object, Plugin> merged = new LinkedHashMap<Object, Plugin>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Plugin element : tgt )
+ {
+ Object key = getPluginKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Plugin element : src )
+ {
+ Object key = getPluginKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setPlugins( new ArrayList<Plugin>( merged.values() ) );
+ }
+ }
+
+ protected void mergePluginManagement( PluginManagement target, PluginManagement source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergePluginContainer( target, source, sourceDominant, context );
+ }
+
+ protected void mergePlugin( Plugin target, Plugin source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeConfigurationContainer( target, source, sourceDominant, context );
+ mergePlugin_GroupId( target, source, sourceDominant, context );
+ mergePlugin_ArtifactId( target, source, sourceDominant, context );
+ mergePlugin_Version( target, source, sourceDominant, context );
+ mergePlugin_Extensions( target, source, sourceDominant, context );
+ mergePlugin_Dependencies( target, source, sourceDominant, context );
+ mergePlugin_Executions( target, source, sourceDominant, context );
+ }
+
+ protected void mergePlugin_GroupId( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getGroupId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getGroupId() == null )
+ {
+ target.setGroupId( src );
+ target.setLocation( "groupId", source.getLocation( "groupId" ) );
+ }
+ }
+ }
+
+ protected void mergePlugin_ArtifactId( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getArtifactId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getArtifactId() == null )
+ {
+ target.setArtifactId( src );
+ target.setLocation( "artifactId", source.getLocation( "artifactId" ) );
+ }
+ }
+ }
+
+ protected void mergePlugin_Version( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getVersion();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getVersion() == null )
+ {
+ target.setVersion( src );
+ target.setLocation( "version", source.getLocation( "version" ) );
+ }
+ }
+ }
+
+ protected void mergePlugin_Extensions( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getExtensions();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getExtensions() == null )
+ {
+ target.setExtensions( src );
+ target.setLocation( "extensions", source.getLocation( "extensions" ) );
+ }
+ }
+ }
+
+ protected void mergePlugin_Dependencies( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<Dependency> src = source.getDependencies();
+ if ( !src.isEmpty() )
+ {
+ List<Dependency> tgt = target.getDependencies();
+ Map<Object, Dependency> merged = new LinkedHashMap<Object, Dependency>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( Dependency element : tgt )
+ {
+ Object key = getDependencyKey( element );
+ merged.put( key, element );
+ }
+
+ for ( Dependency element : src )
+ {
+ Object key = getDependencyKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setDependencies( new ArrayList<Dependency>( merged.values() ) );
+ }
+ }
+
+ protected void mergePlugin_Executions( Plugin target, Plugin source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<PluginExecution> src = source.getExecutions();
+ if ( !src.isEmpty() )
+ {
+ List<PluginExecution> tgt = target.getExecutions();
+
+ Map<Object, PluginExecution> merged =
+ new LinkedHashMap<Object, PluginExecution>( ( src.size() + tgt.size() ) * 2 );
+
+ for ( PluginExecution element : tgt )
+ {
+ Object key = getPluginExecutionKey( element );
+ merged.put( key, element );
+ }
+
+ for ( PluginExecution element : src )
+ {
+ Object key = getPluginExecutionKey( element );
+ if ( sourceDominant || !merged.containsKey( key ) )
+ {
+ merged.put( key, element );
+ }
+ }
+
+ target.setExecutions( new ArrayList<PluginExecution>( merged.values() ) );
+ }
+ }
+
+ protected void mergeConfigurationContainer( ConfigurationContainer target, ConfigurationContainer source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeConfigurationContainer_Inherited( target, source, sourceDominant, context );
+ mergeConfigurationContainer_Configuration( target, source, sourceDominant, context );
+ }
+
+ protected void mergeConfigurationContainer_Inherited( ConfigurationContainer target, ConfigurationContainer source,
+ boolean sourceDominant, Map<Object, Object> context )
+ {
+ String src = source.getInherited();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getInherited() == null )
+ {
+ target.setInherited( src );
+ target.setLocation( "inherited", source.getLocation( "inherited" ) );
+ }
+ }
+ }
+
+ protected void mergeConfigurationContainer_Configuration( ConfigurationContainer target,
+ ConfigurationContainer source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ Xpp3Dom src = (Xpp3Dom) source.getConfiguration();
+ if ( src != null )
+ {
+ Xpp3Dom tgt = (Xpp3Dom) target.getConfiguration();
+ if ( sourceDominant || tgt == null )
+ {
+ tgt = Xpp3Dom.mergeXpp3Dom( new Xpp3Dom( src ), tgt );
+ }
+ else
+ {
+ tgt = Xpp3Dom.mergeXpp3Dom( tgt, src );
+ }
+ target.setConfiguration( tgt );
+ }
+ }
+
+ protected void mergePluginExecution( PluginExecution target, PluginExecution source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeConfigurationContainer( target, source, sourceDominant, context );
+ mergePluginExecution_Id( target, source, sourceDominant, context );
+ mergePluginExecution_Phase( target, source, sourceDominant, context );
+ mergePluginExecution_Goals( target, source, sourceDominant, context );
+ }
+
+ protected void mergePluginExecution_Id( PluginExecution target, PluginExecution source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getId() == null )
+ {
+ target.setId( src );
+ target.setLocation( "id", source.getLocation( "id" ) );
+ }
+ }
+ }
+
+ protected void mergePluginExecution_Phase( PluginExecution target, PluginExecution source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getPhase();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getPhase() == null )
+ {
+ target.setPhase( src );
+ target.setLocation( "phase", source.getLocation( "phase" ) );
+ }
+ }
+ }
+
+ protected void mergePluginExecution_Goals( PluginExecution target, PluginExecution source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getGoals();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getGoals();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setGoals( merged );
+ }
+ }
+
+ protected void mergeResource( Resource target, Resource source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergeFileSet( target, source, sourceDominant, context );
+ mergeResource_TargetPath( target, source, sourceDominant, context );
+ mergeResource_Filtering( target, source, sourceDominant, context );
+ mergeResource_MergeId( target, source, sourceDominant, context );
+ }
+
+ protected void mergeResource_TargetPath( Resource target, Resource source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getTargetPath();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getTargetPath() == null )
+ {
+ target.setTargetPath( src );
+ target.setLocation( "targetPath", source.getLocation( "targetPath" ) );
+ }
+ }
+ }
+
+ protected void mergeResource_Filtering( Resource target, Resource source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getFiltering();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getFiltering() == null )
+ {
+ target.setFiltering( src );
+ target.setLocation( "filtering", source.getLocation( "filtering" ) );
+ }
+ }
+ }
+
+ protected void mergeResource_MergeId( Resource target, Resource source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getMergeId();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getMergeId() == null )
+ {
+ target.setMergeId( src );
+ }
+ }
+ }
+
+ protected void mergeFileSet( FileSet target, FileSet source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergePatternSet( target, source, sourceDominant, context );
+ mergeFileSet_Directory( target, source, sourceDominant, context );
+ }
+
+ protected void mergeFileSet_Directory( FileSet target, FileSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ String src = source.getDirectory();
+ if ( src != null )
+ {
+ if ( sourceDominant || target.getDirectory() == null )
+ {
+ target.setDirectory( src );
+ target.setLocation( "directory", source.getLocation( "directory" ) );
+ }
+ }
+ }
+
+ protected void mergePatternSet( PatternSet target, PatternSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ mergePatternSet_Includes( target, source, sourceDominant, context );
+ mergePatternSet_Excludes( target, source, sourceDominant, context );
+ }
+
+ protected void mergePatternSet_Includes( PatternSet target, PatternSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getIncludes();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getIncludes();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setIncludes( merged );
+ }
+ }
+
+ protected void mergePatternSet_Excludes( PatternSet target, PatternSet source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ List<String> src = source.getExcludes();
+ if ( !src.isEmpty() )
+ {
+ List<String> tgt = target.getExcludes();
+ List<String> merged = new ArrayList<String>( tgt.size() + src.size() );
+ merged.addAll( tgt );
+ merged.addAll( src );
+ target.setExcludes( merged );
+ }
+ }
+
+ protected void mergeProfile( Profile target, Profile source, boolean sourceDominant, Map<Object, Object> context )
+ {
+ mergeModelBase( target, source, sourceDominant, context );
+ // TODO
+ }
+
+ protected void mergeActivation( Activation target, Activation source, boolean sourceDominant,
+ Map<Object, Object> context )
+ {
+ // TODO
+ }
+
+ protected Object getDependencyKey( Dependency dependency )
+ {
+ return dependency;
+ }
+
+ protected Object getPluginKey( Plugin plugin )
+ {
+ return plugin;
+ }
+
+ protected Object getPluginExecutionKey( PluginExecution pluginExecution )
+ {
+ return pluginExecution;
+ }
+
+ protected Object getReportPluginKey( ReportPlugin reportPlugin )
+ {
+ return reportPlugin;
+ }
+
+ protected Object getReportSetKey( ReportSet reportSet )
+ {
+ return reportSet;
+ }
+
+ protected Object getLicenseKey( License license )
+ {
+ return license;
+ }
+
+ protected Object getMailingListKey( MailingList mailingList )
+ {
+ return mailingList;
+ }
+
+ protected Object getDeveloperKey( Developer developer )
+ {
+ return developer;
+ }
+
+ protected Object getContributorKey( Contributor contributor )
+ {
+ return contributor;
+ }
+
+ protected Object getProfileKey( Profile profile )
+ {
+ return profile;
+ }
+
+ protected Object getRepositoryKey( Repository repository )
+ {
+ return getRepositoryBaseKey( repository );
+ }
+
+ protected Object getRepositoryBaseKey( RepositoryBase repositoryBase )
+ {
+ return repositoryBase;
+ }
+
+ protected Object getNotifierKey( Notifier notifier )
+ {
+ return notifier;
+ }
+
+ protected Object getResourceKey( Resource resource )
+ {
+ return resource;
+ }
+
+ protected Object getExtensionKey( Extension extension )
+ {
+ return extension;
+ }
+
+ protected Object getExclusionKey( Exclusion exclusion )
+ {
+ return exclusion;
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/package-info.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/package-info.java
new file mode 100644
index 00000000..eaa2d174
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/merge/package-info.java
@@ -0,0 +1,24 @@
+// CHECKSTYLE_OFF: RegexpHeader
+/**
+ * POM merger.
+ */
+package org.apache.maven.model.merge;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/package-info.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/package-info.java
new file mode 100644
index 00000000..88d3fa07
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/java/org/apache/maven/model/package-info.java
@@ -0,0 +1,25 @@
+// CHECKSTYLE_OFF: RegexpHeader
+/**
+ * Maven POM (Project Object Model) classes, generated from <code>maven.mdo</code> model.
+ * The root class is {@link org.apache.maven.model.Model}.
+ */
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */ \ No newline at end of file
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/mdo/maven.mdo b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/mdo/maven.mdo
new file mode 100644
index 00000000..2821ea62
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/main/mdo/maven.mdo
@@ -0,0 +1,3649 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+<!--
+ | Improvements:
+ |
+ | o add specification element to a field, this would be more a technical description of
+ | what is allowed in the field.
+ |
+ | o validators: there could be several levels of validation. Simple type validation could
+ | be done with a regex, but we need inter-field validation and rules which could be
+ | dealt with by something like drools.
+ |
+ | o i18n: would be good to be able to have names/descriptions/specifications
+ | in as many languages as possible. (see MNG-3626)
+ |
+ | o annotation mechanism so that changes to the model can be accurately tracked.
+ |
+ | o need to clean up all the descriptions, matching anything to the current project-descriptor.xml file and
+ | improving on that
+ |
+ | o use enums where appropriate (eg dependency scope)
+ |
+ | o a number of elements have a groupId/artifactId and sometimes version. It would be good to have them all extend one
+ | definition of these types
+ |
+-->
+<model xmlns="http://modello.codehaus.org/MODELLO/1.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://modello.codehaus.org/MODELLO/1.4.0 http://modello.codehaus.org/xsd/modello-1.4.0.xsd"
+ xml.namespace="http://maven.apache.org/POM/${version}"
+ xml.schemaLocation="http://maven.apache.org/xsd/maven-${version}.xsd">
+ <id>maven</id>
+ <name>Maven</name>
+ <description>
+ <![CDATA[
+ <p>This is a reference for the Maven project descriptor used in Maven.</p>
+ <p>An XSD is available at:</p>
+ <ul>
+ <li><a href="http://maven.apache.org/xsd/maven-v3_0_0.xsd">http://maven.apache.org/xsd/maven-v3_0_0.xsd</a> for Maven 1.1.</li>
+ <li><a href="http://maven.apache.org/xsd/maven-4.0.0.xsd">http://maven.apache.org/xsd/maven-4.0.0.xsd</a> for Maven 2.0.</li>
+ </ul>
+ ]]>
+ </description>
+ <defaults>
+ <default>
+ <key>package</key>
+ <value>org.apache.maven.model</value>
+ </default>
+ </defaults>
+ <classes>
+ <class rootElement="true" xml.tagName="project" java.clone.hook="cloneHook">
+ <name>Model</name>
+ <superClass>ModelBase</superClass>
+ <description>
+ <![CDATA[
+ The <code>&lt;project&gt;</code> element is the root of the descriptor.
+ The following table lists all of the possible child elements.
+ ]]>
+ </description>
+ <version>3.0.0+</version>
+ <fields>
+
+ <!-- ====================================================================== -->
+ <!-- Model Version -->
+ <!-- ====================================================================== -->
+
+ <field>
+ <name>pomVersion</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ Declares to which version of project descriptor this POM conforms.
+ The only valid value is <code>3</code>.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>modelVersion</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>Declares to which version of project descriptor this POM conforms.</description>
+ <type>String</type>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Parent Model -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>extend</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The location of the parent project, if one exists. Values from the
+ parent project will be the default for this project if they are
+ left unspecified. The path may be absolute, or relative to the
+ current <code>project.xml</code> file. For example,
+ <code>&lt;extend&gt;${basedir}/../project.xml&lt;/extend&gt;</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field xdoc.separator="blank">
+ <name>parent</name>
+ <version>4.0.0+</version>
+ <description>The location of the parent project, if one exists. Values from the parent
+ project will be the default for this project if they are left unspecified. The location
+ is given as a group ID, artifact ID and version.</description>
+ <association>
+ <type>Parent</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- groupId/artifactId/Version/Packaging -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>groupId</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ A universally unique identifier for a project. It is normal to
+ use a fully-qualified package name to distinguish it from other
+ projects with a similar name (eg. <code>org.apache.maven</code>).
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>The identifier for this artifact that is unique within the group given by the
+ group ID. An artifact is something that is either produced or used by a project.
+ Examples of artifacts produced by Maven for a project include: JARs, source and binary
+ distributions, and WARs.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>id</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ <b>Deprecated</b>. When used, this sets both the <code>groupId</code>
+ and <code>artifactId</code> elements if they were previously empty.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>currentVersion</name>
+ <description>The current version of the artifact produced by this project.</description>
+ <version>3.0.0</version>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>The current version of the artifact produced by this project.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>versions</name>
+ <version>3.0.0</version>
+ <description>Contains information on previous versions of the project.</description>
+ <association>
+ <type>Version</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>packaging</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The type of artifact this project produces, for example <code>jar</code>
+ <code>war</code>
+ <code>ear</code>
+ <code>pom</code>.
+ Plugins can create their own packaging, and
+ therefore their own packaging types,
+ so this list does not contain all possible types.
+ ]]>
+ </description>
+ <type>String</type>
+ <defaultValue>jar</defaultValue>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Elements which describe a project -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>name</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>The full name of the project.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>shortDescription</name>
+ <version>3.0.0</version>
+ <description>A short description of the project. The short description should be limited
+ to a single line.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>description</name>
+ <version>3.0.0+</version>
+ <description>A detailed description of the project, used by Maven whenever it needs to
+ describe the project, such as on the web site. While this element can be specified as
+ CDATA to enable the use of HTML tags within the description, it is discouraged to allow
+ plain text representation. If you need to modify the index page of the generated web
+ site, you are able to specify your own instead of adjusting this text.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The URL to the project's homepage.
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>siteAddress</name>
+ <version>3.0.0</version>
+ <description>The hostname of the web server that hosts the project's web site. This is
+ used when the web site is deployed.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>siteDirectory</name>
+ <version>3.0.0</version>
+ <description>The directory on the web server where the public web site for this project
+ resides. This is used when the web site is deployed.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>inceptionYear</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>The year of the project's inception, specified with 4 digits. This value is
+ used when generating copyright notices as well as being informational.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>logo</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The URL of the project's logo image. This can be an URL relative
+ to the base directory of the generated web site,
+ (e.g., <code>/images/project-logo.png</code>) or an absolute URL
+ (e.g., <code>http://my.corp/project-logo.png</code>). This is used
+ when generating the project documentation.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>organization</name>
+ <version>3.0.0+</version>
+ <description>This element describes various attributes of the organization to which the
+ project belongs. These attributes are utilized when documentation is created (for
+ copyright notices and links).</description>
+ <alias>organisation</alias>
+ <association>
+ <type>Organization</type>
+ </association>
+ </field>
+ <field>
+ <name>licenses</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ This element describes all of the licenses for this project.
+ Each license is described by a <code>license</code> element, which
+ is then described by additional elements.
+ Projects should only list the license(s) that applies to the project
+ and not the licenses that apply to dependencies.
+ If multiple licenses are listed, it is assumed that the user can select
+ any of them, not that they must accept all.
+ ]]>
+ </description>
+ <association>
+ <type>License</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>developers</name>
+ <version>3.0.0+</version>
+ <description>Describes the committers of a project.</description>
+ <association>
+ <type>Developer</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>contributors</name>
+ <version>3.0.0+</version>
+ <description>Describes the contributors to a project that are not yet committers.</description>
+ <association>
+ <type>Contributor</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>mailingLists</name>
+ <version>3.0.0+</version>
+ <description>Contains information about a project's mailing lists.</description>
+ <association>
+ <type>MailingList</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Build prerequisites -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>prerequisites</name>
+ <version>4.0.0+</version>
+ <description>Describes the prerequisites in the build environment for this project.</description>
+ <association>
+ <type>Prerequisites</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- SCM -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>branches</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ Contains information on SCM branches of the project.
+ ]]>
+ </description>
+ <association>
+ <type>Branch</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>repository</name>
+ <version>3.0.0</version>
+ <description>Specification for the SCM used by the project, such as CVS, Subversion, etc.</description>
+ <association>
+ <type>Repository</type>
+ </association>
+ </field>
+ <field xdoc.separator="blank" xml.insertParentFieldsUpTo="modules">
+ <name>scm</name>
+ <version>4.0.0+</version>
+ <description>Specification for the SCM used by the project, such as CVS, Subversion, etc.</description>
+ <association>
+ <type>Scm</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Issue Tracking -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank">
+ <name>issueTrackingUrl</name>
+ <version>3.0.0</version>
+ <description>The URL of the project's issue tracking system.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>issueManagement</name>
+ <version>4.0.0+</version>
+ <description>The project's issue management system information.</description>
+ <association>
+ <type>IssueManagement</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- CI Management -->
+ <!-- ====================================================================== -->
+
+ <field>
+ <name>gumpRepositoryId</name>
+ <version>3.0.0</version>
+ <description>This is the repository identifier in Gump that this project is part of.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>ciManagement</name>
+ <version>4.0.0+</version>
+ <description>The project's continuous integration information.</description>
+ <association>
+ <type>CiManagement</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Distribution Management -->
+ <!-- ====================================================================== -->
+
+ <field>
+ <name>distributionSite</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The server where the final distributions will be published. This is used when the
+ distributions are deployed. If this isn't defined, the central repository is used instead as
+ determined by <code>maven.repo.central</code> and <code>maven.repo.central.directory</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>distributionDirectory</name>
+ <version>3.0.0</version>
+ <description>The directory on the web server where the final distributions will be
+ published. This is used when the distributions are deployed.</description>
+ <type>String</type>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Specific version 3 -->
+ <!-- ====================================================================== -->
+
+ <field>
+ <name>packageGroups</name>
+ <version>3.0.0</version>
+ <description>Package groups required for complete javadocs.</description>
+ <association>
+ <type>PackageGroup</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>reports</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ This element includes the specification of reports to be
+ included in a Maven-generated site. These reports will be run
+ when a user executes <code>maven site</code>. All of the
+ reports will be included in the navigation bar for browsing in
+ the order they are specified.
+ ]]>
+ </description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>properties</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ Project properties that will be used by various plugins.
+ The format is <code>&lt;name&gt;value&lt;/name&gt;</code>.
+ ]]>
+ </description>
+ <type>Properties</type>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xml.tagName="package">
+ <name>packageName</name>
+ <version>3.0.0</version>
+ <type>String</type>
+ <description>The Java package name of the project. This value is used when generating
+ JavaDoc.</description>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Build -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank" xml.insertParentFieldsUpTo="pluginRepositories">
+ <name>build</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>Information required to build the project.</description>
+ <association>
+ <type>Build</type>
+ </association>
+ </field>
+
+ <!-- ====================================================================== -->
+ <!-- Profiles -->
+ <!-- ====================================================================== -->
+
+ <field xdoc.separator="blank" xml.insertParentFieldsUpTo="reporting">
+ <name>profiles</name>
+ <version>4.0.0+</version>
+ <description>A listing of project-local build profiles which will modify the build process
+ when activated.</description>
+ <association>
+ <type>Profile</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>3.0.0</version>
+ <code>
+ <![CDATA[
+ public void setVersion(String version)
+ {
+ this.currentVersion = version;
+ }
+
+ public String getVersion()
+ {
+ return currentVersion;
+ }
+
+ /* We need this because we can't use package as a field name.*/
+ public void setPackage(String packageName)
+ {
+ this.packageName = packageName;
+ }
+
+ public String getPackage()
+ {
+ return packageName;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ private void cloneHook( Model copy )
+ {
+ copy.pomFile = pomFile;
+ }
+
+ /**
+ * The POM from which this model originated. This is transient runtime state and therefore not managed by Modello.
+ */
+ private java.io.File pomFile;
+
+ /**
+ * Gets the POM file for the corresponding project (if any).
+ *
+ * @return The POM file from which this model originated or {@code null} if this model does not belong to a local
+ * project (e.g. describes the metadata of some artifact from the repository).
+ */
+ public java.io.File getPomFile()
+ {
+ return pomFile;
+ }
+
+ public void setPomFile( java.io.File pomFile )
+ {
+ this.pomFile = ( pomFile != null ) ? pomFile.getAbsoluteFile() : null;
+ }
+
+ /**
+ * Gets the base directory for the corresponding project (if any).
+ *
+ * @return The base directory for the corresponding project or {@code null} if this model does not belong to a local
+ * project (e.g. describes the metadata of some artifact from the repository).
+ */
+ public java.io.File getProjectDirectory()
+ {
+ return ( pomFile != null ) ? pomFile.getParentFile() : null;
+ }
+
+ /**
+ * @return the model id as <code>groupId:artifactId:packaging:version</code>
+ */
+ public String getId()
+ {
+ StringBuilder id = new StringBuilder( 64 );
+
+ id.append( ( getGroupId() == null ) ? "[inherited]" : getGroupId() );
+ id.append( ":" );
+ id.append( getArtifactId() );
+ id.append( ":" );
+ id.append( getPackaging() );
+ id.append( ":" );
+ id.append( ( getVersion() == null ) ? "[inherited]" : getVersion() );
+
+ return id.toString();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getId();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>ModelBase</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ Base class for the <code>Model</code> and the <code>Profile</code> objects.
+ ]]>
+ </description>
+ <fields>
+ <field xdoc.separator="blank">
+ <name>modules</name>
+ <version>4.0.0+</version>
+ <description>The modules (sometimes called subprojects) to build as a part of this
+ project. Each module listed is a relative path to the directory containing the module.
+ To be consistent with the way default urls are calculated from parent, it is recommended
+ to have module names match artifact ids.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>distributionManagement</name>
+ <version>4.0.0+</version>
+ <description>Distribution information for a project that enables deployment of the site
+ and artifacts to remote web servers and repositories respectively.</description>
+ <association>
+ <type>DistributionManagement</type>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>properties</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Properties that can be used throughout the POM as a substitution, and
+ are used as filters in resources if enabled.
+ The format is <code>&lt;name&gt;value&lt;/name&gt;</code>.
+ ]]>
+ </description>
+ <type>Properties</type>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>dependencyManagement</name>
+ <version>4.0.0+</version>
+ <required>false</required>
+ <description>Default dependency information for projects that inherit from this one. The
+ dependencies in this section are not immediately resolved. Instead, when a POM derived
+ from this one declares a dependency described by a matching groupId and artifactId, the
+ version and other values from this section are used for that dependency if they were not
+ already specified.</description>
+ <association>
+ <type>DependencyManagement</type>
+ </association>
+ </field>
+ <field>
+ <name>dependencies</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ This element describes all of the dependencies associated with a
+ project.
+ These dependencies are used to construct a classpath for your
+ project during the build process. They are automatically downloaded from the
+ repositories defined in this project.
+ See <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">the
+ dependency mechanism</a> for more information.
+ ]]>
+ </description>
+ <association>
+ <type>Dependency</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>repositories</name>
+ <version>4.0.0+</version>
+ <description>The lists of the remote repositories for discovering dependencies and
+ extensions.</description>
+ <association>
+ <type>Repository</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>pluginRepositories</name>
+ <version>4.0.0+</version>
+ <description>The lists of the remote repositories for discovering plugins for builds and
+ reports.</description>
+ <association>
+ <type>Repository</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field xdoc.separator="blank">
+ <name>reports</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ <b>Deprecated</b>. Now ignored by Maven.
+ ]]>
+ </description>
+ <type>DOM</type>
+ </field>
+ <field>
+ <name>reporting</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ This element includes the specification of report plugins to use
+ to generate the reports on the Maven-generated site.
+ These reports will be run when a user executes <code>mvn site</code>.
+ All of the reports will be included in the navigation bar for browsing.
+ ]]>
+ </description>
+ <association>
+ <type>Reporting</type>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Branch</name>
+ <version>3.0.0</version>
+ <description>Contains information on the SCM branches of the project.</description>
+ <fields>
+ <field>
+ <name>tag</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>The branch tag in the version control system (e.g. cvs) used by the project
+ for the source code associated with this branch of the project.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>PluginContainer</name>
+ <version>3.0.0+</version>
+ <description>Contains the plugins informations for the project.</description>
+ <fields>
+ <field>
+ <name>plugins</name>
+ <version>4.0.0+</version>
+ <description>The list of plugins to use.</description>
+ <association>
+ <type>Plugin</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ java.util.Map<String, Plugin> pluginMap;
+
+ /**
+ * Reset the <code>pluginsMap</code> field to <code>null</code>
+ */
+ public synchronized void flushPluginMap()
+ {
+ this.pluginMap = null;
+ }
+
+ /**
+ * @return a Map of plugins field with <code>Plugins#getKey()</code> as key
+ * @see org.apache.maven.model.Plugin#getKey()
+ */
+ public synchronized java.util.Map<String, Plugin> getPluginsAsMap()
+ {
+ if ( pluginMap == null )
+ {
+ pluginMap = new java.util.LinkedHashMap<String, Plugin>();
+ if ( plugins != null )
+ {
+ for ( java.util.Iterator<Plugin> it = plugins.iterator(); it.hasNext(); )
+ {
+ Plugin plugin = (Plugin) it.next();
+ pluginMap.put( plugin.getKey(), plugin );
+ }
+ }
+ }
+
+ return pluginMap;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>PluginConfiguration</name>
+ <version>3.0.0+</version>
+ <superClass>PluginContainer</superClass>
+ <description>Contains the plugins management informations for the project.</description>
+ <fields>
+ <!-- [ jdcasey:06-Mar-2005 ] Added to handle version management, etc. for
+ | plugins to be used in sub-projects. -->
+ <field>
+ <name>pluginManagement</name>
+ <version>4.0.0+</version>
+ <required>false</required>
+ <description>Default plugin information to be made available for reference by projects
+ derived from this one. This plugin configuration will not be resolved or bound to the
+ lifecycle unless referenced. Any local configuration for a given plugin will override
+ the plugin's entire definition here.</description>
+ <association>
+ <type>PluginManagement</type>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>BuildBase</name>
+ <version>3.0.0+</version>
+ <superClass>PluginConfiguration</superClass>
+ <description>Generic informations for a build.</description>
+ <fields>
+ <field>
+ <name>defaultGoal</name>
+ <version>3.0.0+</version>
+ <description>The default goal (or phase in Maven 2) to execute when none is specified for
+ the project. Note that in case of a multi-module build, only the default goal of the top-level
+ project is relevant, i.e. the default goals of child modules are ignored. Since Maven 3,
+ multiple goals/phases can be separated by whitespace.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>resources</name>
+ <version>3.0.0+</version>
+ <description>This element describes all of the classpath resources such as properties
+ files associated with a project. These resources are often included in the final
+ package.</description>
+ <association>
+ <type>Resource</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>testResources</name>
+ <version>4.0.0+</version>
+ <description>This element describes all of the classpath resources such as properties
+ files associated with a project's unit tests.</description>
+ <association>
+ <type>Resource</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>directory</name>
+ <version>4.0.0+</version>
+ <description>The directory where all files generated by the build are placed.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>finalName</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The filename (excluding the extension, and with no path information) that
+ the produced artifact will be called.
+ The default value is <code>${artifactId}-${version}</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>filters</name>
+ <version>4.0.0+</version>
+ <description>The list of filter properties files that are used when filtering is enabled.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Build</name>
+ <version>3.0.0+</version>
+ <superClass>BuildBase</superClass>
+ <description>
+ <![CDATA[
+ The <code>&lt;build&gt;</code> element contains informations required to build the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>nagEmailAddress</name>
+ <version>3.0.0</version>
+ <description>An address to which notifications regarding the status of builds for this
+ project can be sent. This is intended for use by tools which do unattended builds, for
+ example those providing for continuous integration.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>sourceDirectory</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>This element specifies a directory containing the source of the project. The
+ generated build system will compile the source in this directory when the project is
+ built. The path given is relative to the project descriptor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>scriptSourceDirectory</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>This element specifies a directory containing the script sources of the
+ project. This directory is meant to be different from the sourceDirectory, in that its
+ contents will be copied to the output directory in most cases (since scripts are
+ interpreted rather than compiled).</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>unitTestSourceDirectory</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>This element specifies a directory containing the unit test source of the
+ project. The generated build system will compile these directories when the project is
+ being tested. The path given is relative to the project descriptor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>testSourceDirectory</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>This element specifies a directory containing the unit test source of the
+ project. The generated build system will compile these directories when the project is
+ being tested. The path given is relative to the project descriptor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>aspectSourceDirectory</name>
+ <version>3.0.0</version>
+ <description>This element specifies a directory containing Aspect sources of the project.
+ The generated build system will compile the Aspects in this directory when the project
+ is built if Aspects have been enabled. The path given is relative to the project
+ descriptor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>integrationUnitTestSourceDirectory</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ This element is <b>deprecated</b> and should no longer be used.
+ Initially it was used by the first Cactus plugin. Now
+ the location of the Cactus test sources is defined
+ through a plugin property. See the Cactus plugin
+ <a href="http://jakarta.apache.org/cactus/integration/maven/properties.html">properties</a>
+ page.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>sourceModifications</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>This element describes all of the sourceModifications associated with a
+ project. These modifications are used to exclude or include various source depending on
+ the environment the build is running in.</description>
+ <association>
+ <type>SourceModification</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>unitTest</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>This element specifies unit tests associated with the project.</description>
+ <defaultValue>new UnitTest()</defaultValue>
+ <association>
+ <type>UnitTest</type>
+ </association>
+ </field>
+ <field>
+ <name>outputDirectory</name>
+ <version>4.0.0+</version>
+ <description>The directory where compiled application classes are placed.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>testOutputDirectory</name>
+ <version>4.0.0+</version>
+ <description>The directory where compiled test classes are placed.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>extensions</name>
+ <version>4.0.0+</version>
+ <description>A set of build extensions to use from this project.</description>
+ <association>
+ <type>Extension</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>CiManagement</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;CiManagement&gt;</code> element contains informations required to the
+ continuous integration system of the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>system</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The name of the continuous integration system, e.g. <code>continuum</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>4.0.0+</version>
+ <description>URL for the continuous integration system used by the project if it has a web
+ interface.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>notifiers</name>
+ <version>4.0.0+</version>
+ <description>Configuration for notifying developers/users when a build is unsuccessful,
+ including user information and notification mode.</description>
+ <association>
+ <multiplicity>*</multiplicity>
+ <type>Notifier</type>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Notifier</name>
+ <description>Configures one method for notifying users/developers when a build breaks.</description>
+ <version>4.0.0+</version>
+ <fields>
+ <field>
+ <name>type</name>
+ <version>4.0.0+</version>
+ <defaultValue>mail</defaultValue>
+ <type>String</type>
+ <description>The mechanism used to deliver notifications.</description>
+ </field>
+ <field>
+ <name>sendOnError</name>
+ <version>4.0.0+</version>
+ <defaultValue>true</defaultValue>
+ <type>boolean</type>
+ <description>Whether to send notifications on error.</description>
+ </field>
+ <field>
+ <name>sendOnFailure</name>
+ <version>4.0.0+</version>
+ <defaultValue>true</defaultValue>
+ <type>boolean</type>
+ <description>Whether to send notifications on failure.</description>
+ </field>
+ <field>
+ <name>sendOnSuccess</name>
+ <version>4.0.0+</version>
+ <defaultValue>true</defaultValue>
+ <type>boolean</type>
+ <description>Whether to send notifications on success.</description>
+ </field>
+ <field>
+ <name>sendOnWarning</name>
+ <version>4.0.0+</version>
+ <defaultValue>true</defaultValue>
+ <type>boolean</type>
+ <description>Whether to send notifications on warning.</description>
+ </field>
+ <!-- TODO: Remove it after continuum alpha-3 release -->
+ <field>
+ <name>address</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ <b>Deprecated</b>. Where to send the notification to - eg email address.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>configuration</name>
+ <description>Extended configuration specific to this notifier goes here.</description>
+ <type>Properties</type>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Contributor</name>
+ <description>Description of a person who has contributed to the project, but who does not have
+ commit privileges. Usually, these contributions come in the form of patches submitted.</description>
+ <version>3.0.0+</version>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>3.0.0+</version>
+ <description>The full name of the contributor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>email</name>
+ <version>3.0.0+</version>
+ <description>The email address of the contributor.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0+</version>
+ <description>The URL for the homepage of the contributor.</description>
+ <type>String</type>
+ </field>
+ <!-- TODO: should this just be a single Organization element -->
+ <field>
+ <name>organization</name>
+ <alias>organisation</alias>
+ <version>3.0.0+</version>
+ <description>The organization to which the contributor belongs.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>organizationUrl</name>
+ <alias>organisationUrl</alias>
+ <version>3.0.0+</version>
+ <description>The URL of the organization.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>roles</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The roles the contributor plays in the project. Each role is described by a
+ <code>role</code> element, the body of which is a role name. This can also be used to
+ describe the contribution.
+ ]]>
+ </description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>timezone</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The timezone the contributor is in. Typically, this is a number in the range
+ <a href="http://en.wikipedia.org/wiki/UTC%E2%88%9212:00">-12</a> to <a href="http://en.wikipedia.org/wiki/UTC%2B14:00">+14</a>
+ or a valid time zone id like "America/Montreal" (UTC-05:00) or "Europe/Paris" (UTC+01:00).
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>properties</name>
+ <version>3.0.0+</version>
+ <description>Properties about the contributor, such as an instant messenger handle.</description>
+ <type>Properties</type>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Dependency</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;dependency&gt;</code> element contains information about a dependency
+ of the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>3.0.0</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ <b>Deprecated</b>. Please use <code>groupId</code> and
+ <code>artifactId</code> together instead.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>groupId</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ The project group that produced the dependency, e.g.
+ <code>org.apache.maven</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>3.0.0+</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ The unique id for an artifact produced by the project group, e.g.
+ <code>maven-artifact</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The version of the dependency, e.g. <code>3.2.1</code>. In Maven 2, this can also be
+ specified as a range of versions.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0</version>
+ <description>This url will be provided to the user if the jar file cannot be downloaded
+ from the central repository.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>jar</name>
+ <version>3.0.0</version>
+ <description>Literal name of the artifact in the repository. Used to override the
+ calculated artifact name.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>type</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The type of dependency. While it
+ usually represents the extension on the filename of the dependency,
+ that is not always the case.
+ Some examples are <code>jar</code>, <code>war</code>, and <code>plugin</code>.
+ A dependency of type <code>plugin</code> is loaded as a Maven plugin and
+ not added to the project build classpath.
+ ]]>
+ </description>
+ <type>String</type>
+ <defaultValue>jar</defaultValue>
+ </field>
+ <field>
+ <name>type</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The type of dependency. While it
+ usually represents the extension on the filename of the dependency,
+ that is not always the case. A type can be mapped to a different
+ extension and a classifier.
+ The type often corresponds to the packaging used, though this is also
+ not always the case.
+ Some examples are <code>jar</code>, <code>war</code>, <code>ejb-client</code>
+ and <code>test-jar</code>: see <a href="../maven-core/artifact-handlers.html">default
+ artifact handlers</a> for a list.
+ New types can be defined by plugins that set
+ <code>extensions</code> to <code>true</code>, so this is not a complete list.
+ ]]>
+ </description>
+ <type>String</type>
+ <defaultValue>jar</defaultValue>
+ </field>
+ <field>
+ <name>classifier</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The classifier of the dependency. It is appended to
+ the filename after the version. This allows:
+ <ul>
+ <li>refering to attached artifact, for example <code>sources</code> and <code>javadoc</code>:
+ see <a href="../maven-core/artifact-handlers.html">default artifact handlers</a> for a list,</li>
+ <li>distinguishing two artifacts
+ that belong to the same POM but were built differently.
+ For example, <code>jdk14</code> and <code>jdk15</code>.</li>
+ </ul>
+ ]]>
+ </description>
+ <type>String</type>
+ <required>false</required>
+ </field>
+ <field>
+ <name>properties</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ Properties about the dependency. Various plugins allow you to
+ mark dependencies with properties. For example the war plugin looks for a
+ <code>war.bundle</code> property, and if found will include the
+ dependency in <code>WEB-INF/lib</code>.
+ ]]>
+ </description>
+ <type>Properties</type>
+ <association xml.mapStyle="inline">
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>scope</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The scope of the dependency - <code>compile</code>, <code>runtime</code>,
+ <code>test</code>, <code>system</code>, and <code>provided</code>. Used to
+ calculate the various classpaths used for compilation, testing, and so on.
+ It also assists in determining which artifacts to include in a distribution of
+ this project. For more information, see
+ <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">the
+ dependency mechanism</a>.
+ ]]>
+ </description>
+ <type>String</type>
+ <!-- This default has to be enforced at the maven-artifact layer, to allow
+ | injection of defaults from <dependencyManagement/>.
+ | TODO: how can we document it?
+ |-->
+ <!-- defaultValue>compile</defaultValue -->
+ </field>
+ <field>
+ <name>systemPath</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ FOR SYSTEM SCOPE ONLY. Note that use of this property is <b>discouraged</b>
+ and may be replaced in later versions. This specifies the path on the filesystem
+ for this dependency.
+ Requires an absolute path for the value, not relative.
+ Use a property that gives the machine specific absolute path,
+ e.g. <code>${java.home}</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>exclusions</name>
+ <version>4.0.0+</version>
+ <description>Lists a set of artifacts that should be excluded from this dependency's
+ artifact list when it comes to calculating transitive dependencies.</description>
+ <association>
+ <type>Exclusion</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>optional</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Indicates the dependency is optional for use of this library. While the
+ version of the dependency will be taken into account for dependency calculation if the
+ library is used elsewhere, it will not be passed on transitively. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>false</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>3.0.0</version>
+ <code>
+ <![CDATA[
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return groupId + "/" + type + "s:" + artifactId + "-" + version;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public boolean isOptional()
+ {
+ return ( optional != null ) ? Boolean.parseBoolean( optional ) : false;
+ }
+
+ public void setOptional( boolean optional )
+ {
+ this.optional = String.valueOf( optional );
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return "Dependency {groupId=" + groupId + ", artifactId=" + artifactId + ", version=" + version + ", type=" + type + "}";
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ private String managementKey;
+
+ /**
+ * @return the management key as <code>groupId:artifactId:type</code>
+ */
+ public String getManagementKey()
+ {
+ if ( managementKey == null )
+ {
+ managementKey = groupId + ":" + artifactId + ":" + type + ( classifier != null ? ":" + classifier : "" );
+ }
+ return managementKey;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ <codeSegment>
+ <version>3.0.0</version>
+ <code>
+ <![CDATA[
+ /**
+ * @return the key as <code>id:type</code>
+ */
+ public String getKey()
+ {
+ return getId() + ":" + getType();
+ }
+
+ /**
+ * @return the groupId as artifact directory
+ */
+ public String getArtifactDirectory()
+ {
+ return getGroupId();
+ }
+
+ /**
+ * @return the artifact name as <code>artifactId-version.extension</code> if &lt;jar/&gt; not set
+ */
+ public String getArtifact()
+ {
+ // If the jar name has been explicty set then use that. This
+ // is when the <jar/> element is explicity used in the POM.
+ if ( getJar() != null)
+ {
+ return getJar();
+ }
+
+ String artifact;
+
+ if ("ejb-client".equals(getType())) {
+ artifact = getArtifactId() + "-" + getVersion() + "-client." + getExtension();
+ } else {
+ artifact = getArtifactId() + "-" + getVersion() + "." + getExtension();
+ }
+
+ return artifact;
+ }
+
+ public String getTypeDirectory()
+ {
+ String path;
+ if (getType().equals("ejb-client")) {
+ path = "ejbs";
+ } else {
+ path = getType() + "s";
+ }
+
+ return path;
+ }
+
+ public String getExtension()
+ {
+ if ("ejb".equals(getType()) || "ejb-client".equals(getType()) || "plugin".equals(getType()) || "aspect".equals(getType()) || "uberjar".equals(getType())) return "jar";
+ return getType();
+ }
+
+ public boolean isAddedToClasspath()
+ {
+ return ("jar".equals(getType()) || "ejb".equals(getType()) || "ejb-client".equals(getType()) || "sar".equals(getType()));
+ }
+
+ public boolean isPlugin()
+ {
+ return ("plugin".equals(getType()));
+ }
+
+ public String getProperty( String property )
+ {
+ return getProperties().getProperty( property );
+ }
+
+ /**
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+
+ if ( !( o instanceof Dependency ) )
+ {
+ return false;
+ }
+
+ Dependency d = (Dependency) o;
+ return getId().equals( d.getId() );
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode()
+ {
+ return getId().hashCode();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <superClass>Contributor</superClass>
+ <name>Developer</name>
+ <description>Information about one of the committers on this project.</description>
+ <version>3.0.0+</version>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>3.0.0+</version>
+ <description>The unique ID of the developer in the SCM.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Exclusion</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;exclusion&gt;</code> element contains informations required to exclude
+ an artifact to the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0+</version>
+ <description>The artifact ID of the project to exclude.</description>
+ <type>String</type>
+ <required>true</required>
+ </field>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0+</version>
+ <description>The group ID of the project to exclude.</description>
+ <type>String</type>
+ <required>true</required>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>IssueManagement</name>
+ <description>Information about the issue tracking (or bug tracking) system used to manage this
+ project.</description>
+ <version>4.0.0+</version>
+ <fields>
+ <field>
+ <name>system</name>
+ <version>4.0.0+</version>
+ <description>The name of the issue management system, e.g. Bugzilla</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>4.0.0+</version>
+ <description>URL for the issue management system used by the project.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>DistributionManagement</name>
+ <version>4.0.0+</version>
+ <description>This elements describes all that pertains to distribution for a project. It is
+ primarily used for deployment of artifacts and the site produced by the build.</description>
+ <fields>
+ <field>
+ <name>repository</name>
+ <version>4.0.0+</version>
+ <description>Information needed to deploy the artifacts generated by the project to a
+ remote repository.</description>
+ <association>
+ <type>DeploymentRepository</type>
+ </association>
+ </field>
+ <field>
+ <name>snapshotRepository</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Where to deploy snapshots of artifacts to. If not given, it defaults to the
+ <code>repository</code> element.
+ ]]>
+ </description>
+ <association>
+ <type>DeploymentRepository</type>
+ </association>
+ </field>
+ <field>
+ <name>site</name>
+ <description>Information needed for deploying the web site of the project.</description>
+ <version>4.0.0+</version>
+ <association>
+ <type>Site</type>
+ </association>
+ </field>
+ <field>
+ <name>downloadUrl</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The URL of the project's download page. If not given users will be
+ referred to the homepage given by <code>url</code>.
+ This is given to assist in locating artifacts that are not in the repository due to
+ licensing restrictions.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>relocation</name>
+ <version>4.0.0+</version>
+ <description>Relocation information of the artifact if it has been moved to a new group ID
+ and/or artifact ID.</description>
+ <association>
+ <type>Relocation</type>
+ </association>
+ </field>
+ <field>
+ <name>status</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Gives the status of this artifact in the remote repository.
+ This must not be set in your local project, as it is updated by
+ tools placing it in the reposiory. Valid values are: <code>none</code> (default),
+ <code>converted</code> (repository manager converted this from an Maven 1 POM),
+ <code>partner</code>
+ (directly synced from a partner Maven 2 repository), <code>deployed</code> (was deployed from a Maven 2
+ instance), <code>verified</code> (has been hand verified as correct and final).
+ ]]>
+ </description>
+ <required>false</required>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>License</name>
+ <description>Describes the licenses for this project. This is used to generate the license
+ page of the project's web site, as well as being taken into consideration in other reporting
+ and validation. The licenses listed for the project are that of the project itself, and not
+ of dependencies.</description>
+ <version>3.0.0+</version>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>3.0.0+</version>
+ <description>The full legal name of the license.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0+</version>
+ <description>The official url for the license text.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>distribution</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The primary method by which this project may be distributed.
+ <dl>
+ <dt>repo</dt>
+ <dd>may be downloaded from the Maven repository</dd>
+ <dt>manual</dt>
+ <dd>user must manually download and install the dependency.</dd>
+ </dl>
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>comments</name>
+ <description>Addendum information pertaining to this license.</description>
+ <version>3.0.0+</version>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>MailingList</name>
+ <version>3.0.0+</version>
+ <description>This element describes all of the mailing lists associated with a project. The
+ auto-generated site references this information.</description>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The name of the mailing list.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>subscribe</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The email address or link that can be used to subscribe to
+ the mailing list. If this is an email address, a
+ <code>mailto:</code> link will automatically be created
+ when the documentation is created.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>unsubscribe</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The email address or link that can be used to unsubscribe to
+ the mailing list. If this is an email address, a
+ <code>mailto:</code> link will automatically be created
+ when the documentation is created.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>post</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ The email address or link that can be used to post to
+ the mailing list. If this is an email address, a
+ <code>mailto:</code> link will automatically be created
+ when the documentation is created.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>archive</name>
+ <version>3.0.0+</version>
+ <description>The link to a URL where you can browse the mailing list archive.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>otherArchives</name>
+ <version>3.0.0+</version>
+ <description>The link to alternate URLs where you can browse the list archive.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <comment>We could probably have a specific element for a dev mailing list for things like CI,
+ and maybe even a specific element for the user and scm mailing lists. Then leave the more
+ lose structure for any other type of mailing list.</comment>
+ </class>
+ <class java.clone="deep">
+ <name>Organization</name>
+ <description>Specifies the organization that produces this project.</description>
+ <version>3.0.0+</version>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>3.0.0+</version>
+ <description>The full name of the organization.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0+</version>
+ <description>The URL to the organization's home page.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>logo</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The URL to the organization's logo image. This can be an URL relative
+ to the base directory of the generated web site,
+ (e.g., <code>/images/org-logo.png</code>) or an absolute URL
+ (e.g., <code>http://my.corp/logo.png</code>). This value is used
+ when generating the project documentation.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>PackageGroup</name>
+ <version>3.0.0</version>
+ <description>A JavaDoc package group.</description>
+ <fields>
+ <field>
+ <name>title</name>
+ <version>3.0.0</version>
+ <description>The title to use for the package group.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>packages</name>
+ <version>3.0.0</version>
+ <description>The packages in the group</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>PatternSet</name>
+ <version>3.0.0+</version>
+ <description>Definition of include or exclude patterns.</description>
+ <fields>
+ <field>
+ <name>includes</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ A list of patterns to include, e.g. <code>**&#47;*.xml</code>.
+ ]]>
+ </description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>excludes</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ A list of patterns to exclude, e.g. <code>**&#47;*.xml</code>
+ ]]>
+ </description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ StringBuilder sb = new StringBuilder( 128 );
+
+ sb.append("PatternSet [includes: {");
+ for (java.util.Iterator i = getIncludes().iterator(); i.hasNext(); )
+ {
+ String str = (String) i.next();
+ sb.append(str).append(", ");
+ }
+ if (sb.substring(sb.length() - 2).equals(", ")) sb.delete(sb.length() - 2, sb.length());
+
+ sb.append("}, excludes: {");
+ for (java.util.Iterator i = getExcludes().iterator(); i.hasNext(); )
+ {
+ String str = (String) i.next();
+ sb.append(str).append(", ");
+ }
+ if (sb.substring(sb.length() - 2).equals(", ")) sb.delete(sb.length() - 2, sb.length());
+
+ sb.append("}]");
+ return sb.toString();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>Parent</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;parent&gt;</code> element contains information required to locate the parent project from which
+ this project will inherit from.
+ <strong>Note:</strong> The children of this element are not interpolated and must be given as literal values.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0+</version>
+ <description>The group id of the parent project to inherit from.</description>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0+</version>
+ <description>The artifact id of the parent project to inherit from.</description>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <description>The version of the parent project to inherit.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>relativePath</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The relative path of the parent <code>pom.xml</code> file within the check out.
+ If not specified, it defaults to <code>../pom.xml</code>.
+ Maven looks for the parent POM first in this location on
+ the filesystem, then the local repository, and lastly in the remote repo.
+ <code>relativePath</code> allows you to select a different location,
+ for example when your structure is flat, or deeper without an intermediate parent POM.
+ However, the group ID, artifact ID and version are still required,
+ and must match the file in the location given or it will revert to the repository for the POM.
+ This feature is only for enhancing the development in a local checkout of that project.
+ Set the value to an empty string in case you want to disable the feature and always resolve
+ the parent POM from the repositories.
+ ]]>
+ </description>
+ <type>String</type>
+ <defaultValue>../pom.xml</defaultValue>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ /**
+ * @return the id as <code>groupId:artifactId:version</code>
+ */
+ public String getId()
+ {
+ StringBuilder id = new StringBuilder( 64 );
+
+ id.append( getGroupId() );
+ id.append( ":" );
+ id.append( getArtifactId() );
+ id.append( ":" );
+ id.append( "pom" );
+ id.append( ":" );
+ id.append( getVersion() );
+
+ return id.toString();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getId();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+
+ </class>
+ <class>
+ <name>Repository</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;repository&gt;</code> element contains informations required to a repository
+ used by the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>connection</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The source control management system URL
+ that describes the repository and how to connect to the
+ repository. For more information, see the
+ <a href="http://maven.apache.org/scm/scm-url-format.html">URL format</a>
+ and <a href="http://maven.apache.org/scm/scms-overview.html">list of supported SCMs</a>.
+ This connection is read-only.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>developerConnection</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ Just like <code>connection</code>, but for developers, i.e. this scm connection
+ will not be read only.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>3.0.0</version>
+ <description>The URL to the project's browsable SCM repository, such as ViewVC or Fisheye.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Scm</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The <code>&lt;scm&gt;</code> element contains informations required to the SCM
+ (Source Control Management) of the project.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>connection</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The source control management system URL
+ that describes the repository and how to connect to the
+ repository. For more information, see the
+ <a href="http://maven.apache.org/scm/scm-url-format.html">URL format</a>
+ and <a href="http://maven.apache.org/scm/scms-overview.html">list of supported SCMs</a>.
+ This connection is read-only.
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>developerConnection</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Just like <code>connection</code>, but for developers, i.e. this scm connection
+ will not be read only.
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>tag</name>
+ <version>4.0.0+</version>
+ <description>The tag of current code. By default, it's set to HEAD during development.</description>
+ <type>String</type>
+ <defaultValue>HEAD</defaultValue>
+ </field>
+ <field>
+ <name>url</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The URL to the project's browsable SCM repository, such as ViewVC or Fisheye.
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>FileSet</name>
+ <version>3.0.0+</version>
+ <superClass>PatternSet</superClass>
+ <description>A PatternSet for files.</description>
+ <fields>
+ <field>
+ <name>directory</name>
+ <version>3.0.0+</version>
+ <description>Describe the directory where the resources are stored. The path is relative
+ to the POM.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return "FileSet {directory: " + getDirectory() + ", " + super.toString() + "}";
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>Resource</name>
+ <description>This element describes all of the classpath resources associated with a project
+ or unit tests.</description>
+ <version>3.0.0+</version>
+ <superClass>FileSet</superClass>
+ <fields>
+ <field>
+ <name>targetPath</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ Describe the resource target path. The path is relative to the target/classes
+ directory (i.e. <code>${project.build.outputDirectory}</code>).
+ For example, if you want that resource to appear in a specific package
+ (<code>org.apache.maven.messages</code>), you must specify this
+ element with this value: <code>org/apache/maven/messages</code>.
+ This is not required if you simply put the resources in that directory
+ structure at the source, however.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>filtering</name>
+ <version>3.0.0+</version>
+ <description>
+ <![CDATA[
+ Whether resources are filtered to replace tokens with parameterised values or not.
+ The values are taken from the <code>properties</code> element and from the
+ properties in the files listed in the <code>filters</code> element. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>false</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field xml.transient="true">
+ <name>mergeId</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ FOR INTERNAL USE ONLY. This is a unique identifier assigned to each
+ resource to allow Maven to merge changes to this resource that take
+ place during the execution of a plugin. This field must be managed
+ by the generated parser and formatter classes in order to allow it
+ to survive model interpolation.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ private static int mergeIdCounter = 0;
+
+ public void initMergeId()
+ {
+ if ( getMergeId() == null )
+ {
+ setMergeId( "resource-" + (mergeIdCounter++) );
+ }
+ }
+
+ public boolean isFiltering()
+ {
+ return ( filtering != null ) ? Boolean.parseBoolean( filtering ) : false;
+ }
+
+ public void setFiltering( boolean filtering )
+ {
+ this.filtering = String.valueOf( filtering );
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return "Resource {targetPath: " + getTargetPath() + ", filtering: " + isFiltering() + ", " + super.toString() + "}";
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>SourceModification</name>
+ <description>This element describes all of the source modifications associated with a project.
+ These modifications are used to exclude or include various source depending on the
+ environment the build is running in.</description>
+ <version>3.0.0</version>
+ <superClass>FileSet</superClass>
+ <fields>
+ <field>
+ <name>className</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ If the class with this name can <b>not</b> be
+ loaded, then the includes and excludes specified below
+ will be applied to the contents of the <code>sourceDirectory</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>property</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ If the property with this name is <b>not</b> set,
+ then the includes and excludes specified below
+ will be applied to the contents of the <code>sourceDirectory</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>UnitTest</name>
+ <version>3.0.0</version>
+ <superClass>PatternSet</superClass>
+ <description>A PatternSet for unit tests.</description>
+ <fields>
+ <field>
+ <name>resources</name>
+ <version>3.0.0</version>
+ <description>The classpath resources to use when executing the unit tests.</description>
+ <association>
+ <type>Resource</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>Version</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ This element describes each of the previous versions of the
+ project. Each version is described by a <code>version</code>
+ element
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>3.0.0</version>
+ <description>
+ <![CDATA[
+ The external version number under which this release was distributed. Examples include:
+ <code>1.0</code>,
+ <code>1.1-alpha1</code>,
+ <code>1.2-beta</code>,
+ <code>1.3.2</code> etc.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>tag</name>
+ <version>3.0.0</version>
+ <description>The name given in the SCM (e.g. CVS) used by the project for the source code
+ associated with this version of the project.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>id</name>
+ <version>3.0.0</version>
+ <description>A unique identifier for a version. This is usually identical to the name.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>3.0.0</version>
+ <code>
+ <![CDATA[
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return getId();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+
+ <class java.clone="deep">
+ <name>RepositoryBase</name>
+ <version>4.0.0+</version>
+ <description>A repository contains the information needed for establishing connections with
+ remote repository.</description>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <identifier>true</identifier>
+ <description>
+ <![CDATA[
+ A unique identifier for a repository. This is used to match the repository
+ to configuration in the <code>settings.xml</code> file, for example. Furthermore, the identifier is
+ used during POM inheritance and profile injection to detect repositories that should be merged.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>name</name>
+ <version>4.0.0+</version>
+ <description>Human readable name of the repository.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>
+ <![CDATA[
+ The url of the repository, in the form <code>protocol://hostname/path</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>layout</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The type of layout this repository uses for locating and storing artifacts -
+ can be <code>legacy</code> or <code>default</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ <defaultValue>default</defaultValue>
+ </field>
+ </fields>
+ </class>
+
+ <class>
+ <name>Repository</name>
+ <superClass>RepositoryBase</superClass>
+ <version>4.0.0+</version>
+ <description>A repository contains the information needed for establishing connections with
+ remote repository.</description>
+ <fields>
+ <field>
+ <name>releases</name>
+ <version>4.0.0+</version>
+ <description>How to handle downloading of releases from this repository.</description>
+ <association>
+ <type>RepositoryPolicy</type>
+ </association>
+ </field>
+ <field>
+ <name>snapshots</name>
+ <version>4.0.0+</version>
+ <description>How to handle downloading of snapshots from this repository.</description>
+ <association>
+ <type>RepositoryPolicy</type>
+ </association>
+ </field>
+ </fields>
+ </class>
+
+ <class>
+ <name>DeploymentRepository</name>
+ <superClass>Repository</superClass>
+ <version>4.0.0+</version>
+ <description>Repository contains the information needed for deploying to the remote
+ repository.</description>
+ <fields>
+ <field>
+ <name>uniqueVersion</name>
+ <description>Whether to assign snapshots a unique version comprised of the timestamp and
+ build number, or to use the same version each time</description>
+ <type>boolean</type>
+ <defaultValue>true</defaultValue>
+ <version>4.0.0+</version>
+ </field>
+ </fields>
+ </class>
+
+ <class java.clone="deep">
+ <name>RepositoryPolicy</name>
+ <version>4.0.0+</version>
+ <description>Download policy.</description>
+ <fields>
+ <field>
+ <name>enabled</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Whether to use this repository for downloading this type of artifact. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>true</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>updatePolicy</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The frequency for downloading updates - can be
+ <code>always,</code>
+ <code>daily</code>
+ (default),
+ <code>interval:XXX</code>
+ (in minutes) or
+ <code>never</code>
+ (only if it doesn't exist locally).
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>checksumPolicy</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ What to do when verification of an artifact checksum fails. Valid values are
+ <code>ignore</code>
+ ,
+ <code>fail</code>
+ or
+ <code>warn</code>
+ (the default).
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+
+ public boolean isEnabled()
+ {
+ return ( enabled != null ) ? Boolean.parseBoolean( enabled ) : true;
+ }
+
+ public void setEnabled( boolean enabled )
+ {
+ this.enabled = String.valueOf( enabled );
+ }
+
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+
+ <!--@todo find better solution for management of site deployments -->
+ <class java.clone="deep">
+ <name>Site</name>
+ <version>4.0.0+</version>
+ <description>Contains the information needed for deploying websites.</description>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ A unique identifier for a deployment location. This is used to match the
+ site to configuration in the <code>settings.xml</code> file, for example.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>name</name>
+ <version>4.0.0+</version>
+ <description>Human readable name of the deployment location.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>url</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ The url of the location where website is deployed, in the form <code>protocol://hostname/path</code>.
+ <br /><b>Default value is</b>: parent value [+ path adjustment] + artifactId
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+
+ <class java.clone="deep">
+ <name>ConfigurationContainer</name>
+ <version>4.0.0+</version>
+ <description>Contains the configuration information of the container like Plugin.</description>
+ <fields>
+ <field>
+ <name>inherited</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Whether any configuration should be propagated to child POMs. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>true</code>.
+ ]]>
+ </description>
+ <type>String</type>
+ </field>
+ <field>
+ <description>
+ <![CDATA[
+ <p>The configuration as DOM object.</p>
+ <p>By default, every element content is trimmed, but starting with Maven 3.1.0, you can add
+ <code>xml:space="preserve"</code> to elements you want to preserve whitespace.</p>
+ <p>You can control how child POMs inherit configuration from parent POMs by adding <code>combine.children</code>
+ or <code>combine.self</code> attributes to the children of the configuration element:</p>
+ <ul>
+ <li><code>combine.children</code>: available values are <code>merge</code> (default) and <code>append</code>,</li>
+ <li><code>combine.self</code>: available values are <code>merge</code> (default) and <code>override</code>.</li>
+ </ul>
+ <p>See <a href="http://maven.apache.org/pom.html#Plugins">POM Reference documentation</a> and
+ <a href="http://plexus.codehaus.org/plexus-utils/apidocs/org/codehaus/plexus/util/xml/Xpp3DomUtils.html">Xpp3DomUtils</a>
+ for more information.</p>
+ ]]>
+ </description>
+ <name>configuration</name>
+ <type>DOM</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public boolean isInherited()
+ {
+ return ( inherited != null ) ? Boolean.parseBoolean( inherited ) : true;
+ }
+
+ public void setInherited( boolean inherited )
+ {
+ this.inherited = String.valueOf( inherited );
+ }
+
+ private boolean inheritanceApplied = true;
+
+ public void unsetInheritanceApplied()
+ {
+ this.inheritanceApplied = false;
+ }
+
+ public boolean isInheritanceApplied()
+ {
+ return inheritanceApplied;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>Plugin</name>
+ <version>4.0.0+</version>
+ <superClass>ConfigurationContainer</superClass>
+ <description>
+ <![CDATA[
+ The <code>&lt;plugin&gt;</code> element contains informations required for a plugin.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <description>The group ID of the plugin in the repository.</description>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <defaultValue>org.apache.maven.plugins</defaultValue>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <description>The artifact ID of the plugin in the repository.</description>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <description>The version (or valid range of versions) of the plugin to be used.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>extensions</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ Whether to load Maven extensions (such as packaging and type handlers) from
+ this plugin. For performance reasons, this should only be enabled when necessary. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>false</code>.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>executions</name>
+ <version>4.0.0+</version>
+ <description>Multiple specifications of a set of goals to execute during the build
+ lifecycle, each having (possibly) a different configuration.</description>
+ <association>
+ <type>PluginExecution</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>dependencies</name>
+ <description>Additional dependencies that this project needs to introduce to the plugin's
+ classloader.</description>
+ <version>4.0.0+</version>
+ <association>
+ <type>Dependency</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ <field>
+ <name>goals</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ <b>Deprecated</b>. Unused by Maven.
+ ]]>
+ </description>
+ <type>DOM</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public boolean isExtensions()
+ {
+ return ( extensions != null ) ? Boolean.parseBoolean( extensions ) : false;
+ }
+
+ public void setExtensions( boolean extensions )
+ {
+ this.extensions = String.valueOf( extensions );
+ }
+
+ private java.util.Map<String, PluginExecution> executionMap = null;
+
+ /**
+ * Reset the <code>executionMap</code> field to <code>null</code>
+ */
+ public void flushExecutionMap()
+ {
+ this.executionMap = null;
+ }
+
+ /**
+ * @return a Map of executions field with <code>PluginExecution#getId()</code> as key
+ * @see org.apache.maven.model.PluginExecution#getId()
+ */
+ public java.util.Map<String, PluginExecution> getExecutionsAsMap()
+ {
+ if ( executionMap == null )
+ {
+ executionMap = new java.util.LinkedHashMap<String, PluginExecution>();
+ if ( getExecutions() != null )
+ {
+ for ( java.util.Iterator<PluginExecution> i = getExecutions().iterator(); i.hasNext(); )
+ {
+ PluginExecution exec = (PluginExecution) i.next();
+
+ if ( executionMap.containsKey( exec.getId() ) )
+ {
+ throw new IllegalStateException( "You cannot have two plugin executions with the same (or missing) <id/> elements.\nOffending execution\n\nId: \'" + exec.getId() + "\'\nPlugin:\'" + getKey() + "\'\n\n" );
+ }
+
+ executionMap.put( exec.getId(), exec );
+ }
+ }
+ }
+
+ return executionMap;
+ }
+
+ /**
+ * Gets the identifier of the plugin.
+ *
+ * @return The plugin id in the form {@code <groupId>:<artifactId>:<version>}, never {@code null}.
+ */
+ public String getId()
+ {
+ StringBuilder id = new StringBuilder( 128 );
+
+ id.append( ( getGroupId() == null ) ? "[unknown-group-id]" : getGroupId() );
+ id.append( ":" );
+ id.append( ( getArtifactId() == null ) ? "[unknown-artifact-id]" : getArtifactId() );
+ id.append( ":" );
+ id.append( ( getVersion() == null ) ? "[unknown-version]" : getVersion() );
+
+ return id.toString();
+ }
+
+ //TODO we shall reset key variable when groupId/artifactId change
+ private String key = null;
+ /**
+ * @return the key of the plugin, ie <code>groupId:artifactId</code>
+ */
+ public String getKey()
+ {
+ if ( key == null )
+ {
+ key = constructKey( groupId, artifactId );
+ }
+ return key;
+ }
+
+ /**
+ * @param groupId
+ * @param artifactId
+ * @return the key of the plugin, ie <code>groupId:artifactId</code>
+ */
+ public static String constructKey( String groupId, String artifactId )
+ {
+ return groupId + ":" + artifactId;
+ }
+
+ /**
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object other )
+ {
+ if ( other instanceof Plugin )
+ {
+ Plugin otherPlugin = (Plugin) other;
+
+ return getKey().equals( otherPlugin.getKey() );
+ }
+
+ return false;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode()
+ {
+ return getKey().hashCode();
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return "Plugin [" + getKey() + "]";
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class>
+ <name>PluginExecution</name>
+ <version>4.0.0+</version>
+ <superClass>ConfigurationContainer</superClass>
+ <description>
+ <![CDATA[
+ The <code>&lt;execution&gt;</code> element contains informations required for the
+ execution of a plugin.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>id</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <defaultValue>default</defaultValue>
+ <description>The identifier of this execution for labelling the goals during the build,
+ and for matching executions to merge during inheritance and profile injection.</description>
+ </field>
+ <field>
+ <name>phase</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The build lifecycle phase to bind the goals in this execution to. If omitted,
+ the goals will be bound to the default phase specified by the plugin. </description>
+ </field>
+ <field xml.transient="true">
+ <name>priority</name>
+ <version>4.0.0+</version>
+ <type>int</type>
+ <description>
+ <![CDATA[
+ The priority of this execution compared to other executions which are bound to the same phase.
+ <strong>Warning:</strong> This is an internal utility property that is only public for technical reasons,
+ it is not part of the public API. In particular, this property can be changed or deleted without prior
+ notice.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>goals</name>
+ <version>4.0.0+</version>
+ <description>The goals to execute with the given configuration.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public static final String DEFAULT_EXECUTION_ID = "default";
+
+ @Override
+ public String toString()
+ {
+ return getId();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>DependencyManagement</name>
+ <version>4.0.0+</version>
+ <description>Section for management of default dependency information for use in a group of
+ POMs.</description>
+ <fields>
+ <field>
+ <name>dependencies</name>
+ <version>4.0.0+</version>
+ <description>The dependencies specified here are not used until they are referenced in a
+ POM within the group. This allows the specification of a "standard" version for a
+ particular dependency.</description>
+ <association>
+ <type>Dependency</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ </class>
+ <class>
+ <name>PluginManagement</name>
+ <version>4.0.0+</version>
+ <superClass>PluginContainer</superClass>
+ <description>Section for management of default plugin information for use in a group of POMs.
+ </description>
+ </class>
+ <class java.clone="deep">
+ <name>Reporting</name>
+ <version>4.0.0+</version>
+ <description>Section for management of reports and their configuration.</description>
+ <fields>
+ <field>
+ <name>excludeDefaults</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ If true, then the default reports are not included in the site generation.
+ This includes the reports in the "Project Info" menu. Note: While the type
+ of this field is <code>String</code> for technical reasons, the semantic type is actually
+ <code>Boolean</code>. Default value is <code>false</code>.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>outputDirectory</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ Where to store all of the generated reports. The default is
+ <code>${project.build.directory}/site</code>
+ .
+ ]]>
+ </description>
+ <!-- TODO: why isn't default set here? -->
+ </field>
+ <field>
+ <name>plugins</name>
+ <version>4.0.0+</version>
+ <description>The reporting plugins to use and their configuration.</description>
+ <association>
+ <type>ReportPlugin</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public boolean isExcludeDefaults()
+ {
+ return ( excludeDefaults != null ) ? Boolean.parseBoolean( excludeDefaults ) : false;
+ }
+
+ public void setExcludeDefaults( boolean excludeDefaults )
+ {
+ this.excludeDefaults = String.valueOf( excludeDefaults );
+ }
+
+ java.util.Map<String, ReportPlugin> reportPluginMap;
+
+ /**
+ * Reset the <code>reportPluginMap</code> field to <code>null</code>
+ */
+ public synchronized void flushReportPluginMap()
+ {
+ this.reportPluginMap = null;
+ }
+
+ /**
+ * @return a Map of plugins field with <code>ReportPlugin#getKey()</code> as key
+ * @see org.apache.maven.model.ReportPlugin#getKey()
+ */
+ public synchronized java.util.Map<String, ReportPlugin> getReportPluginsAsMap()
+ {
+ if ( reportPluginMap == null )
+ {
+ reportPluginMap = new java.util.LinkedHashMap<String, ReportPlugin>();
+ if ( getPlugins() != null )
+ {
+ for ( java.util.Iterator<ReportPlugin> it = getPlugins().iterator(); it.hasNext(); )
+ {
+ ReportPlugin reportPlugin = (ReportPlugin) it.next();
+ reportPluginMap.put( reportPlugin.getKey(), reportPlugin );
+ }
+ }
+ }
+
+ return reportPluginMap;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <!-- Profile support -->
+ <class>
+ <name>Profile</name>
+ <superClass>ModelBase</superClass>
+ <version>4.0.0+</version>
+ <description>Modifications to the build process which is activated based on environmental
+ parameters or command line arguments.</description>
+ <fields>
+ <field>
+ <name>id</name>
+ <required>true</required>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <defaultValue>default</defaultValue>
+ <description>The identifier of this build profile. This is used for command line
+ activation, and identifies profiles to be merged.
+ </description>
+ </field>
+ <field>
+ <name>activation</name>
+ <version>4.0.0+</version>
+ <description>The conditional logic which will automatically trigger the inclusion of this
+ profile.</description>
+ <association>
+ <type>Activation</type>
+ </association>
+ </field>
+ <field xml.tagName="build">
+ <name>build</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>Information required to build the project.</description>
+ <association>
+ <type>BuildBase</type>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ public static final String SOURCE_POM = "pom";
+
+ public static final String SOURCE_SETTINGS = "settings.xml";
+
+ // We don't want this to be parseable...it's sort of 'hidden'
+ // default source for this profile is in the pom itself.
+ private String source = SOURCE_POM;
+
+ public void setSource( String source )
+ {
+ this.source = source;
+ }
+
+ public String getSource()
+ {
+ return source;
+ }
+
+ /**
+ * @see java.lang.Object#toString()
+ */
+ public String toString()
+ {
+ return "Profile {id: " + getId() + ", source: " + getSource() + "}";
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>Activation</name>
+ <version>4.0.0+</version>
+ <description>The conditions within the build runtime environment which will trigger the
+ automatic inclusion of the build profile. Multiple conditions can be defined, which must
+ be all satisfied to activate the profile.
+ </description>
+ <fields>
+ <field>
+ <name>activeByDefault</name>
+ <version>4.0.0+</version>
+ <type>boolean</type>
+ <description>If set to true, this profile will be active unless another profile in this
+ pom is activated using the command line -P option or by one of that profile's
+ activators.</description>
+ </field>
+ <field>
+ <name>jdk</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ Specifies that this profile will be activated when a matching JDK is detected.
+ For example, <code>1.4</code> only activates on JDKs versioned 1.4,
+ while <code>!1.4</code> matches any JDK that is not version 1.4. Ranges are supported too:
+ <code>[1.5,)</code> activates when the JDK is 1.5 minimum.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>os</name>
+ <version>4.0.0+</version>
+ <description>Specifies that this profile will be activated when matching operating system
+ attributes are detected.</description>
+ <association>
+ <type>ActivationOS</type>
+ </association>
+ </field>
+ <field>
+ <name>property</name>
+ <version>4.0.0+</version>
+ <description>Specifies that this profile will be activated when this system property is
+ specified.</description>
+ <association>
+ <type>ActivationProperty</type>
+ </association>
+ </field>
+ <field>
+ <name>file</name>
+ <version>4.0.0+</version>
+ <description>Specifies that this profile will be activated based on existence of a file.</description>
+ <association>
+ <type>ActivationFile</type>
+ </association>
+ </field>
+ <!--
+ This could be included once we teach Maven to deal with multiple versions of the model
+ <field>
+ <name>custom</name>
+ <version>4.0.0+</version>
+ <description>Describes a custom profile activation trigger, brought in via build
+ extension.</description>
+ <association>
+ <type>ActivationCustom</type>
+ </association>
+ </field>
+ -->
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>ActivationProperty</name>
+ <version>4.0.0+</version>
+ <description>This is the property specification used to activate a profile. If the value field
+ is empty, then the existence of the named property will activate the profile, otherwise it
+ does a case-sensitive match against the property value as well.</description>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>The name of the property to be used to activate a profile.</description>
+ </field>
+ <field>
+ <name>value</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The value of the property required to activate a profile.</description>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>ActivationOS</name>
+ <version>4.0.0+</version>
+ <description>This is an activator which will detect an operating system's attributes in order
+ to activate its profile.</description>
+ <fields>
+ <field>
+ <name>name</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ The name of the operating system to be used to activate the profile. This must be an exact match
+ of the <code>${os.name}</code> Java property, such as <code>Windows XP</code>.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>family</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ The general family of the OS to be used to activate the profile, such as
+ <code>windows</code> or <code>unix</code>.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>arch</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The architecture of the operating system to be used to activate the
+ profile.</description>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The version of the operating system to be used to activate the
+ profile.</description>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>ActivationFile</name>
+ <version>4.0.0+</version>
+ <description><![CDATA[This is the file specification used to activate the profile. The <code>missing</code> value
+ is the location of a file that needs to exist, and if it doesn't, the profile will be
+ activated. On the other hand, <code>exists</code> will test for the existence of the file and if it is
+ there, the profile will be activated.<br/>
+ Variable interpolation for these file specifications is limited to <code>${basedir}</code>,
+ System properties and request properties.]]></description>
+ <fields>
+ <field>
+ <name>missing</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The name of the file that must be missing to activate the
+ profile.</description>
+ </field>
+ <field>
+ <name>exists</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The name of the file that must exist to activate the profile.</description>
+ </field>
+ </fields>
+ </class>
+ <!--
+ This can be put back in when we figure out how to have multiple model versions
+ <class>
+ <name>ActivationCustom</name>
+ <version>4.0.0+</version>
+ <description>This activation allows users to specify their own custom trigger for a profile.</description>
+ <fields>
+ <field>
+ <name>configuration</name>
+ <version>4.0.0+</version>
+ <type>DOM</type>
+ <description>The specification for triggering the profile according to the rules of the
+ custom activation type.</description>
+ </field>
+ <field>
+ <name>type</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>The type (role-hint) of activation which is to be used to activate the
+ profile.</description>
+ </field>
+ </fields>
+ </class>
+ -->
+ <!-- /BuildProfile support -->
+ <class xml.tagName="plugin" java.clone="deep">
+ <name>ReportPlugin</name>
+ <version>4.0.0+</version>
+ <superClass>ConfigurationContainer</superClass>
+ <description>
+ <![CDATA[
+ The <code>&lt;plugin&gt;</code> element contains informations required for a report plugin.
+ ]]>
+ </description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <defaultValue>org.apache.maven.plugins</defaultValue>
+ <description>The group ID of the reporting plugin in the repository.</description>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <required>true</required>
+ <description>The artifact ID of the reporting plugin in the repository.</description>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <description>The version of the reporting plugin to be used.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>reportSets</name>
+ <version>4.0.0+</version>
+ <description>
+ <![CDATA[
+ Multiple specifications of a set of reports, each having (possibly) different
+ configuration. This is the reporting parallel to an <code>execution</code> in the build.
+ ]]>
+ </description>
+ <association>
+ <type>ReportSet</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ private java.util.Map<String, ReportSet> reportSetMap = null;
+
+ /**
+ * Reset the <code>reportSetMap</code> field to <code>null</code>
+ */
+ public void flushReportSetMap()
+ {
+ this.reportSetMap = null;
+ }
+
+ /**
+ * @return a Map of reportSets field with <code>ReportSet#getId()</code> as key
+ * @see org.apache.maven.model.ReportSet#getId()
+ */
+ public java.util.Map<String, ReportSet> getReportSetsAsMap()
+ {
+ if ( reportSetMap == null )
+ {
+ reportSetMap = new java.util.LinkedHashMap<String, ReportSet>();
+ if ( getReportSets() != null )
+ {
+ for ( java.util.Iterator<ReportSet> i = getReportSets().iterator(); i.hasNext(); )
+ {
+ ReportSet reportSet = (ReportSet) i.next();
+ reportSetMap.put( reportSet.getId(), reportSet );
+ }
+ }
+ }
+
+ return reportSetMap;
+ }
+
+ /**
+ * @return the key of the report plugin, ie <code>groupId:artifactId</code>
+ */
+ public String getKey()
+ {
+ return constructKey( groupId, artifactId );
+ }
+
+ /**
+ * @param groupId
+ * @param artifactId
+ * @return the key of the report plugin, ie <code>groupId:artifactId</code>
+ */
+ public static String constructKey( String groupId, String artifactId )
+ {
+ return groupId + ":" + artifactId;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>ReportSet</name>
+ <version>4.0.0+</version>
+ <superClass>ConfigurationContainer</superClass>
+ <description>Represents a set of reports and configuration to be used to generate them.</description>
+ <fields>
+ <field>
+ <name>id</name>
+ <type>String</type>
+ <required>true</required>
+ <description>The unique id for this report set, to be used during POM inheritance and profile injection
+ for merging of report sets.
+ </description>
+ <defaultValue>default</defaultValue>
+ </field>
+ <field>
+ <name>reports</name>
+ <version>4.0.0+</version>
+ <required>true</required>
+ <description>The list of reports from this plugin which should be generated from this set.</description>
+ <association>
+ <type>String</type>
+ <multiplicity>*</multiplicity>
+ </association>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ @Override
+ public String toString()
+ {
+ return getId();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class java.clone="deep">
+ <name>Prerequisites</name>
+ <version>4.0.0+</version>
+ <description>Describes the prerequisites a project can have.</description>
+ <fields>
+ <field>
+ <name>maven</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <defaultValue>2.0</defaultValue>
+ <description><![CDATA[
+ The minimum version of Maven required to build the project.<br />
+ If this project builds a plugin, this is in addition the minimum version of Maven required to use
+ the resulting plugin.]]>
+ </description>
+ <required>false</required>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Relocation</name>
+ <version>4.0.0+</version>
+ <description>Describes where an artifact has moved to. If any of the values are omitted, it is
+ assumed to be the same as it was before.</description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0+</version>
+ <description>The group ID the artifact has moved to.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0+</version>
+ <description>The new artifact ID of the artifact.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <description>The new version of the artifact.</description>
+ <type>String</type>
+ </field>
+ <field>
+ <name>message</name>
+ <version>4.0.0+</version>
+ <description>An additional message to show the user about the move, such as the reason.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ </class>
+ <class java.clone="deep">
+ <name>Extension</name>
+ <version>4.0.0+</version>
+ <description>Describes a build extension to utilise.</description>
+ <fields>
+ <field>
+ <name>groupId</name>
+ <version>4.0.0+</version>
+ <description>The group ID of the extension's artifact.</description>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>artifactId</name>
+ <version>4.0.0+</version>
+ <description>The artifact ID of the extension.</description>
+ <required>true</required>
+ <type>String</type>
+ </field>
+ <field>
+ <name>version</name>
+ <version>4.0.0+</version>
+ <description>The version of the extension.</description>
+ <type>String</type>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ /**
+ * @see java.lang.Object#equals(java.lang.Object)
+ */
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+
+ if ( !( o instanceof Extension ) )
+ {
+ return false;
+ }
+
+ Extension e = (Extension) o;
+
+ if ( !equal( e.getArtifactId(), getArtifactId() ) )
+ {
+ return false;
+ }
+ else if ( !equal( e.getGroupId(), getGroupId() ) )
+ {
+ return false;
+ }
+ else if ( !equal( e.getVersion(), getVersion() ) )
+ {
+ return false;
+ }
+ return true;
+ }
+
+ private static <T> boolean equal( T obj1, T obj2 )
+ {
+ return ( obj1 != null ) ? obj1.equals( obj2 ) : obj2 == null;
+ }
+
+ /**
+ * @see java.lang.Object#hashCode()
+ */
+ public int hashCode()
+ {
+ int result = 17;
+ result = 37 * result + ( getArtifactId() != null ? getArtifactId().hashCode() : 0 );
+ result = 37 * result + ( getGroupId() != null ? getGroupId().hashCode() : 0 );
+ result = 37 * result + ( getVersion() != null ? getVersion().hashCode() : 0 );
+ return result;
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class locationTracker="locations" java.clone="shallow">
+ <name>InputLocation</name>
+ <version>4.0.0+</version>
+ <fields>
+ <!-- line, column and source fields are auto-generated by Modello -->
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+
+ @Override
+ public String toString()
+ {
+ return getLineNumber() + " : " + getColumnNumber() + ", " + getSource();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ <class sourceTracker="source" java.clone="shallow">
+ <name>InputSource</name>
+ <version>4.0.0+</version>
+ <fields>
+ <field>
+ <name>modelId</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ The identifier of the POM in the format {@code <groupId>:<artifactId>:<version>}.
+ ]]>
+ </description>
+ </field>
+ <field>
+ <name>location</name>
+ <version>4.0.0+</version>
+ <type>String</type>
+ <description>
+ <![CDATA[
+ The path/URL of the POM or {@code null} if unknown.
+ ]]>
+ </description>
+ </field>
+ </fields>
+ <codeSegments>
+ <codeSegment>
+ <version>4.0.0+</version>
+ <code>
+ <![CDATA[
+ @Override
+ public String toString()
+ {
+ return getModelId() + " " + getLocation();
+ }
+ ]]>
+ </code>
+ </codeSegment>
+ </codeSegments>
+ </class>
+ </classes>
+</model>
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/apt/index.apt b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/apt/index.apt
new file mode 100644
index 00000000..77ec5081
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/apt/index.apt
@@ -0,0 +1,39 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one
+~~ or more contributor license agreements. See the NOTICE file
+~~ distributed with this work for additional information
+~~ regarding copyright ownership. The ASF licenses this file
+~~ to you under the Apache License, Version 2.0 (the
+~~ "License"); you may not use this file except in compliance
+~~ with the License. You may obtain a copy of the License at
+~~
+~~ http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing,
+~~ software distributed under the License is distributed on an
+~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+~~ KIND, either express or implied. See the License for the
+~~ specific language governing permissions and limitations
+~~ under the License.
+
+ -----
+ Introduction
+ -----
+ Jason van Zyl
+ Vincent Siveton
+ Hervé Boutemy
+ -----
+ 2011-06-12
+ -----
+
+Maven Model
+
+ This is strictly the model for Maven POM (Project Object Model), so really just plain objects. All the effective model
+ building logic from multiple POMs and building context is done in {{{../maven-model-builder/}Maven Model Builder}}.
+
+ The following are generated from this model:
+
+ * {{{./apidocs/index.html}Java sources}} with Reader and Writers for the Xpp3 XML parser
+
+ * A {{{./maven.html}Descriptor Reference}}
+
+ * An XSD {{{http://maven.apache.org/xsd/maven-v3_0_0.xsd}for Maven 1.1}} and {{{http://maven.apache.org/xsd/maven-4.0.0.xsd}for Maven 2.0}}.
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/site.xml b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/site.xml
new file mode 100644
index 00000000..3a16bf98
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/site.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/DECORATION/1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd">
+ <body>
+ <menu name="Overview">
+ <item name="Introduction" href="index.html"/>
+ <item name="JavaDocs" href="apidocs/index.html"/>
+ <item name="Source Xref" href="xref/index.html"/>
+ <!--item name="FAQ" href="faq.html"/-->
+ </menu>
+
+ <menu ref="parent"/>
+ <menu ref="reports"/>
+ </body>
+</project> \ No newline at end of file
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/xdoc/navigation.xml b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/xdoc/navigation.xml
new file mode 100644
index 00000000..110a953d
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/site/xdoc/navigation.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<project name="Project Descriptor">
+ <title>Project Descriptor</title>
+ <body>
+ <breadcrumbs>
+ <item name="Apache" href="http://www.apache.org" />
+ <item name="Maven" href="http://maven.apache.org/" />
+ <item name="Maven 1.x" href="http://maven.apache.org/maven-1.x/" />
+ <item name="Reference" href="http://maven.apache.org/maven-1.x/reference/index.html" />
+ </breadcrumbs>
+ <menu name="Maven Project Descriptor">
+ <item name="About" href="/index.html" />
+ <item name="Model Documentation" href="/maven.html" />
+ <item name="API Docs" href="/apidocs/" target="_blank" />
+ </menu>
+ </body>
+</project> \ No newline at end of file
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationFileTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationFileTest.java
new file mode 100644
index 00000000..f88da581
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationFileTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code ActivationFile}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ActivationFileTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new ActivationFile().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new ActivationFile().equals( null ) );
+
+ new ActivationFile().equals( new ActivationFile() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ ActivationFile thing = new ActivationFile();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new ActivationFile().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationOSTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationOSTest.java
new file mode 100644
index 00000000..f0d30450
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationOSTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code ActivationOS}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ActivationOSTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new ActivationOS().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new ActivationOS().equals( null ) );
+
+ new ActivationOS().equals( new ActivationOS() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ ActivationOS thing = new ActivationOS();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new ActivationOS().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationPropertyTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationPropertyTest.java
new file mode 100644
index 00000000..5f5e048a
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationPropertyTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code ActivationProperty}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ActivationPropertyTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new ActivationProperty().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new ActivationProperty().equals( null ) );
+
+ new ActivationProperty().equals( new ActivationProperty() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ ActivationProperty thing = new ActivationProperty();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new ActivationProperty().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationTest.java
new file mode 100644
index 00000000..f6d0f910
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ActivationTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Activation}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ActivationTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Activation().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Activation().equals( null ) );
+
+ new Activation().equals( new Activation() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Activation thing = new Activation();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Activation().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/BuildTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/BuildTest.java
new file mode 100644
index 00000000..80a60d57
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/BuildTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Build}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class BuildTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Build().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Build().equals( null ) );
+
+ new Build().equals( new Build() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Build thing = new Build();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Build().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/CiManagementTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/CiManagementTest.java
new file mode 100644
index 00000000..7194c844
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/CiManagementTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code CiManagement}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class CiManagementTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new CiManagement().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new CiManagement().equals( null ) );
+
+ new CiManagement().equals( new CiManagement() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ CiManagement thing = new CiManagement();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new CiManagement().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ContributorTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ContributorTest.java
new file mode 100644
index 00000000..491b99ae
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ContributorTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Contributor}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ContributorTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Contributor().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Contributor().equals( null ) );
+
+ new Contributor().equals( new Contributor() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Contributor thing = new Contributor();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Contributor().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyManagementTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyManagementTest.java
new file mode 100644
index 00000000..7702c62f
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyManagementTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code DependencyManagement}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class DependencyManagementTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new DependencyManagement().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new DependencyManagement().equals( null ) );
+
+ new DependencyManagement().equals( new DependencyManagement() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ DependencyManagement thing = new DependencyManagement();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new DependencyManagement().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyTest.java
new file mode 100644
index 00000000..ec0a8336
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DependencyTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Dependency}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class DependencyTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Dependency().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Dependency().equals( null ) );
+
+ new Dependency().equals( new Dependency() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Dependency thing = new Dependency();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Dependency().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeploymentRepositoryTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeploymentRepositoryTest.java
new file mode 100644
index 00000000..169ec650
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeploymentRepositoryTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code DeploymentRepository}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class DeploymentRepositoryTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new DeploymentRepository().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new DeploymentRepository().equals( null ) );
+
+ new DeploymentRepository().equals( new DeploymentRepository() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ DeploymentRepository thing = new DeploymentRepository();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new DeploymentRepository().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeveloperTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeveloperTest.java
new file mode 100644
index 00000000..c0dfe56d
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DeveloperTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Developer}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class DeveloperTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Developer().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Developer().equals( null ) );
+
+ new Developer().equals( new Developer() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Developer thing = new Developer();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Developer().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DistributionManagementTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DistributionManagementTest.java
new file mode 100644
index 00000000..0314d61b
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/DistributionManagementTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code DistributionManagement}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class DistributionManagementTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new DistributionManagement().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new DistributionManagement().equals( null ) );
+
+ new DistributionManagement().equals( new DistributionManagement() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ DistributionManagement thing = new DistributionManagement();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new DistributionManagement().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExclusionTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExclusionTest.java
new file mode 100644
index 00000000..6febaceb
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExclusionTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Exclusion}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ExclusionTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Exclusion().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Exclusion().equals( null ) );
+
+ new Exclusion().equals( new Exclusion() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Exclusion thing = new Exclusion();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Exclusion().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExtensionTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExtensionTest.java
new file mode 100644
index 00000000..4b8cd8a1
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ExtensionTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Extension}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ExtensionTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Extension().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Extension().equals( null ) );
+
+ new Extension().equals( new Extension() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Extension thing = new Extension();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Extension().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/IssueManagementTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/IssueManagementTest.java
new file mode 100644
index 00000000..5e50c157
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/IssueManagementTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code IssueManagement}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class IssueManagementTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new IssueManagement().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new IssueManagement().equals( null ) );
+
+ new IssueManagement().equals( new IssueManagement() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ IssueManagement thing = new IssueManagement();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new IssueManagement().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/LicenseTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/LicenseTest.java
new file mode 100644
index 00000000..179921b2
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/LicenseTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code License}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class LicenseTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new License().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new License().equals( null ) );
+
+ new License().equals( new License() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ License thing = new License();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new License().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/MailingListTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/MailingListTest.java
new file mode 100644
index 00000000..61296952
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/MailingListTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code MailingList}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class MailingListTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new MailingList().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new MailingList().equals( null ) );
+
+ new MailingList().equals( new MailingList() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ MailingList thing = new MailingList();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new MailingList().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ModelTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ModelTest.java
new file mode 100644
index 00000000..c9ec4da9
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ModelTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Model}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ModelTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Model().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Model().equals( null ) );
+
+ new Model().equals( new Model() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Model thing = new Model();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Model().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/NotifierTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/NotifierTest.java
new file mode 100644
index 00000000..4e5d0685
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/NotifierTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Notifier}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class NotifierTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Notifier().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Notifier().equals( null ) );
+
+ new Notifier().equals( new Notifier() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Notifier thing = new Notifier();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Notifier().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/OrganizationTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/OrganizationTest.java
new file mode 100644
index 00000000..48abe77e
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/OrganizationTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Organization}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class OrganizationTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Organization().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Organization().equals( null ) );
+
+ new Organization().equals( new Organization() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Organization thing = new Organization();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Organization().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ParentTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ParentTest.java
new file mode 100644
index 00000000..78d45672
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ParentTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Parent}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ParentTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Parent().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Parent().equals( null ) );
+
+ new Parent().equals( new Parent() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Parent thing = new Parent();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Parent().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginConfigurationTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginConfigurationTest.java
new file mode 100644
index 00000000..cbb123d5
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginConfigurationTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code PluginConfiguration}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PluginConfigurationTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new PluginConfiguration().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new PluginConfiguration().equals( null ) );
+
+ new PluginConfiguration().equals( new PluginConfiguration() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ PluginConfiguration thing = new PluginConfiguration();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new PluginConfiguration().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginContainerTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginContainerTest.java
new file mode 100644
index 00000000..878298cf
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginContainerTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code PluginContainer}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PluginContainerTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new PluginContainer().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new PluginContainer().equals( null ) );
+
+ new PluginContainer().equals( new PluginContainer() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ PluginContainer thing = new PluginContainer();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new PluginContainer().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginExecutionTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginExecutionTest.java
new file mode 100644
index 00000000..e8fff512
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginExecutionTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code PluginExecution}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PluginExecutionTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new PluginExecution().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new PluginExecution().equals( null ) );
+
+ new PluginExecution().equals( new PluginExecution() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ PluginExecution thing = new PluginExecution();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new PluginExecution().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginManagementTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginManagementTest.java
new file mode 100644
index 00000000..571399fe
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginManagementTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code PluginManagement}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PluginManagementTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new PluginManagement().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new PluginManagement().equals( null ) );
+
+ new PluginManagement().equals( new PluginManagement() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ PluginManagement thing = new PluginManagement();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new PluginManagement().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginTest.java
new file mode 100644
index 00000000..582145e0
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PluginTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Plugin}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PluginTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Plugin().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Plugin().equals( null ) );
+
+ new Plugin().equals( new Plugin() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Plugin thing = new Plugin();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Plugin().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PrerequisitesTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PrerequisitesTest.java
new file mode 100644
index 00000000..727f2c3f
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/PrerequisitesTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Prerequisites}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class PrerequisitesTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Prerequisites().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Prerequisites().equals( null ) );
+
+ new Prerequisites().equals( new Prerequisites() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Prerequisites thing = new Prerequisites();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Prerequisites().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ProfileTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ProfileTest.java
new file mode 100644
index 00000000..512e2a88
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ProfileTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Profile}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ProfileTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Profile().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Profile().equals( null ) );
+
+ new Profile().equals( new Profile() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Profile thing = new Profile();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Profile().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RelocationTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RelocationTest.java
new file mode 100644
index 00000000..265304d8
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RelocationTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Relocation}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class RelocationTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Relocation().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Relocation().equals( null ) );
+
+ new Relocation().equals( new Relocation() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Relocation thing = new Relocation();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Relocation().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportPluginTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportPluginTest.java
new file mode 100644
index 00000000..d10cb791
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportPluginTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code ReportPlugin}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ReportPluginTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new ReportPlugin().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new ReportPlugin().equals( null ) );
+
+ new ReportPlugin().equals( new ReportPlugin() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ ReportPlugin thing = new ReportPlugin();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new ReportPlugin().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportSetTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportSetTest.java
new file mode 100644
index 00000000..2f514153
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportSetTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code ReportSet}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ReportSetTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new ReportSet().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new ReportSet().equals( null ) );
+
+ new ReportSet().equals( new ReportSet() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ ReportSet thing = new ReportSet();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new ReportSet().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportingTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportingTest.java
new file mode 100644
index 00000000..dbc0fa22
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ReportingTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Reporting}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ReportingTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Reporting().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Reporting().equals( null ) );
+
+ new Reporting().equals( new Reporting() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Reporting thing = new Reporting();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Reporting().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryPolicyTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryPolicyTest.java
new file mode 100644
index 00000000..3ae34350
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryPolicyTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code RepositoryPolicy}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class RepositoryPolicyTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new RepositoryPolicy().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new RepositoryPolicy().equals( null ) );
+
+ new RepositoryPolicy().equals( new RepositoryPolicy() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ RepositoryPolicy thing = new RepositoryPolicy();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new RepositoryPolicy().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryTest.java
new file mode 100644
index 00000000..b68b70a1
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/RepositoryTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Repository}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class RepositoryTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Repository().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Repository().equals( null ) );
+
+ new Repository().equals( new Repository() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Repository thing = new Repository();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Repository().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ResourceTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ResourceTest.java
new file mode 100644
index 00000000..fa40ab43
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ResourceTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Resource}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ResourceTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Resource().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Resource().equals( null ) );
+
+ new Resource().equals( new Resource() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Resource thing = new Resource();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Resource().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ScmTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ScmTest.java
new file mode 100644
index 00000000..4d769931
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/ScmTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Scm}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class ScmTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Scm().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Scm().equals( null ) );
+
+ new Scm().equals( new Scm() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Scm thing = new Scm();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Scm().toString() );
+ }
+
+}
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/SiteTest.java b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/SiteTest.java
new file mode 100644
index 00000000..84896bb4
--- /dev/null
+++ b/framework/src/maven/apache-maven-3.3.3/maven-model/src/test/java/org/apache/maven/model/SiteTest.java
@@ -0,0 +1,56 @@
+package org.apache.maven.model;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * Tests {@code Site}.
+ *
+ * @author Benjamin Bentmann
+ */
+public class SiteTest
+ extends TestCase
+{
+
+ public void testHashCodeNullSafe()
+ {
+ new Site().hashCode();
+ }
+
+ public void testEqualsNullSafe()
+ {
+ assertFalse( new Site().equals( null ) );
+
+ new Site().equals( new Site() );
+ }
+
+ public void testEqualsIdentity()
+ {
+ Site thing = new Site();
+ assertTrue( thing.equals( thing ) );
+ }
+
+ public void testToStringNullSafe()
+ {
+ assertNotNull( new Site().toString() );
+ }
+
+}