<?xml version="1.0" encoding="UTF-8"?>

<!--
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see http://www.gnu.org/licenses/
-->

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.phenotips</groupId>
    <artifactId>phenotips-components</artifactId>
    <version>1.3.6</version>
    <relativePath />
  </parent>
  <artifactId>patient-network</artifactId>
  <version>1.1.9</version>
  <packaging>pom</packaging>
  <name>PhenoTips - Patient network</name>

  <scm>
    <connection>scm:git:git://github.com/phenotips/patient-network.git</connection>
    <developerConnection>scm:git:git@github.com:phenotips/patient-network.git</developerConnection>
    <url>https://github.com/phenotips/remote-matching.git/tree/stable-1.1.x/</url>
    <tag>patient-network-1.1.9</tag>
  </scm>

  <!-- We need to list repositories for finding the parent. Other settings will be correctly inherited from the parent. -->
  <repositories>
    <repository>
      <id>phenotips-releases</id>
      <name>PhenoTips Releases repository</name>
      <url>https://nexus.phenotips.org/nexus/content/repositories/releases/</url>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
    <repository>
      <id>phenotips-snapshots</id>
      <name>PhenoTips Snapshots repository</name>
      <url>https://nexus.phenotips.org/nexus/content/repositories/snapshots/</url>
      <releases>
        <enabled>false</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
    </repository>
  </repositories>

  <properties>
    <project.version.previous>1.0</project.version.previous>
  </properties>

  <modules>
    <module>access-rules</module>
    <module>similarity-data-api</module>
    <module>similarity-data-impl</module>
    <module>similarity-genotype-view</module>
    <module>similarity-phenotype-view</module>
    <module>similarity-data-rest</module>
    <module>similarity-search</module>
    <module>communication</module>
    <module>ui</module>
    <module>matching-notification-resources</module>
    <module>matching-notification-ui</module>
    <module>matching-notification-api</module>
    <module>matching-notification-migrations</module>
    <module>matching-notification-rest</module>
  </modules>

  <build>
    <plugins>
      <plugin>
        <!-- API backwards compatibility check -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>clirr-maven-plugin</artifactId>
        <configuration>
          <comparisonVersion>${project.version.previous}</comparisonVersion>
          <!-- List of specific CLIRR excludes.
               See http://mojo.codehaus.org/clirr-maven-plugin/examples/ignored-differences.html
          -->
          <ignored>
            <!-- Remove the following ignores after we release the current version as final -->
            <difference>
              <className>org/phenotips/data/similarity/Exome</className>
              <differenceType>7004</differenceType>
              <method>java.util.List getTopVariants(java.lang.String)</method>
              <justification>Allow to specify _how many_ top variants to return.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientSimilarityView</className>
              <differenceType>7002</differenceType>
              <method>org.json.JSONObject getOwnerJSON()</method>
              <justification>Removed for better patient contact acces via getData() method.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotype</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getGenesStatus()</method>
              <justification>Provide a status of genes stored in the class.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getHref()</method>
              <justification>Provide a contact url for patient owner.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.data.Patient getPatient()</method>
              <justification>Provide a patient object of patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7002</differenceType>
              <method>boolean markRejected(java.util.List, boolean)</method>
              <justification>Removed in favour setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(java.util.List, java.lang.String)</method>
              <justification>Added in place of markRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getStatus()</method>
              <justification>Provide a status of the match (rejected, saved or uncategorized).</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7002</differenceType>
              <method>boolean isRejected()</method>
              <justification>Removed in favour of getStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7002</differenceType>
              <method>void setRejected(boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setStatus(java.lang.String)</method>
              <justification>Added in place of setRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7002</differenceType>
              <method>java.lang.String rejectMatches(java.lang.String, boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>boolean markRejected(org.hibernate.Session, java.util.List, boolean)</method>
              <justification>Removed in favour of setStatus().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(org.hibernate.Session, java.util.List, java.lang.String)</method>
              <justification>Added in place of markRejected().</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientSimilarityView</className>
              <differenceType>7012</differenceType>
              <method>org.json.JSONArray getFeatureMatchesJSON()</method>
              <justification>Added to have access to structured phenotypes similarity list brokedown by cateries for email notification UI.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7005</differenceType>
              <method>java.util.List sendNotifications(java.util.List)</method>
              <to>java.util.List sendNotifications(java.util.Map)</to>
              <justification>Add option to send matching notification to one user only.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchNotifier</className>
              <differenceType>7004</differenceType>
              <method>java.util.List createEmails(java.util.List)</method>
              <justification>Add option to send matching notification to one user only.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/Variant</className>
              <differenceType>7012</differenceType>
              <method>void setAnnotation(java.lang.String, java.lang.String)</method>
              <justification>Allow setting annotation properties after Variant creation.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.sql.Timestamp getFoundTimestamp()</method>
              <justification>Allow access to the timestamp of the match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean deleteMatches(org.hibernate.Session, java.util.List)</method>
              <justification>Allow bulk delete for matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getMatchedDetails()</method>
              <justification>Added to have access to matched details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getReferenceDetails()</method>
              <justification>Added to have access to reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setFoundTimestamp(java.sql.Timestamp)</method>
              <justification>Added to set match found timestamp.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setGenotypeScore(java.lang.Double)</method>
              <justification>Added to set genotype score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setMatchedDetails(java.lang.String)</method>
              <justification>Added to set reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setMatchedPatientInMatch(org.phenotips.matchingnotification.match.PatientInMatch)</method>
              <justification>Added to set matched patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setPhenotypeScore(java.lang.Double)</method>
              <justification>Added set phenotype score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setReferenceDetails(java.lang.String)</method>
              <justification>Added to set reference details.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setReferencePatientInMatch(org.phenotips.matchingnotification.match.PatientInMatch)</method>
              <justification>Added to set reference patient in match.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientMatch</className>
              <differenceType>7012</differenceType>
              <method>void setScore(java.lang.Double)</method>
              <justification>Added to set score.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotype</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/PatientGenotypeSimilarityView</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>boolean hasExomeData()</method>
              <justification>Added to determine whether patient has any exome data.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.data.permissions.AccessLevel getAccess()</method>
              <justification>Added to determine what type of access does the user have to this patient profile.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/FeatureClusterView</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getId()</method>
              <justification>Added to determine the root/ancestor id of the cluster.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/FeatureClusterView</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getName()</method>
              <justification>Added to determine the root/ancestor name of the cluster.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/FeatureClusterView</className>
              <differenceType>7002</differenceType>
              <method>double getScore()</method>
              <justification>Relocated to PatientSimilarityView.</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/FeatureClusterView</className>
              <differenceType>4001</differenceType>
              <to>org/phenotips/data/Feature</to>
              <justification>Removed org.phenotips.data.Feature from the set of implemented interfaces</justification>
            </difference>
            <difference>
              <className>org/phenotips/data/similarity/FeatureClusterView</className>
              <differenceType>4001</differenceType>
              <to>org/phenotips/data/VocabularyProperty</to>
              <justification>Removed org.phenotips.data.VocabularyProperty from the set of implemented interfaces</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PhenotypesMap</className>
              <differenceType>8001</differenceType>
              <justification>Relocating PhenotypesMap to new phenotype-view component.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7006</differenceType>
              <method>org.phenotips.matchingnotification.match.PhenotypesMap getPhenotypes()</method>
              <to>org.phenotips.data.similarity.phenotype.PhenotypesMap</to>
              <justification>Relocating PhenotypesMap to new phenotype-view component.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>boolean saveOutgoingMatches(java.util.List, java.lang.String, java.lang.String)</method>
              <justification>Added to save outgoing remote matches ffom remore server.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>boolean saveLocalMatchesViews(java.util.List, java.lang.String)</method>
              <justification>Added to save local remote matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>java.util.List loadMatchesByReferencePatientId(java.lang.String)</method>
              <justification>Renamed to loadMatchesByPatientId().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>void saveMatches(java.util.List)</method>
              <justification>Removed, substituted by saveLocalMatchesViews() and saveLocalMatches().</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean deleteMatches(java.lang.String)</method>
              <justification>Added to delete all matches by this local patient ID.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>java.util.List loadMatchesBetweenPatients(java.lang.String, java.lang.String, java.lang.String, java.lang.String)</method>
              <justification>Used to collect matches for notifications.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>java.util.List loadMatchesByPatientIds(java.lang.String, java.lang.String)</method>
              <justification>Added to search matches with provided paient IDs of matched patients.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean saveLocalMatches(java.util.List, java.lang.String)</method>
              <justification>Added to save local matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean saveLocalMatchesViews(java.util.List, java.lang.String)</method>
              <justification>Added to save local matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean saveRemoteMatches(java.util.List, java.lang.String, java.lang.String, boolean)</method>
              <justification>Added to save outgoing or incoming remote matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7004</differenceType>
              <method>boolean saveIncomingMatches(java.util.List, java.lang.String)</method>
              <justification>Added patient ID parameter to save incoming remote matches.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>org.hibernate.Session beginNotificationMarkingTransaction()</method>
              <justification>Cleaning API, decoupling implementation from API</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7002</differenceType>
              <method>boolean endNotificationMarkingTransaction(org.hibernate.Session)</method>
              <justification>Cleaning API, decoupling implementation from API</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean deleteMatchesForLocalPatient(java.lang.String)</method>
              <justification>Cleaning API, decoupling implementation from API</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(java.util.List, java.lang.String)</method>
              <justification>Cleaning API, decoupling implementation from API</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7004</differenceType>
              <method>boolean markNotified(org.hibernate.Session, java.util.List)</method>
              <justification>Cleaning API, decoupling implementation from API</justification>
            </difference>
            <difference>
              <className>org/phenotips/similarity/SimilarPatientsFinder</className>
              <differenceType>7012</differenceType>
              <method>java.util.List findSimilarPatients(org.phenotips.data.Patient, java.lang.String)</method>
              <justification>Allows finding only matching patients which are consented to be found</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7004</differenceType>
              <method>java.util.List loadMatches(double, boolean)</method>
              <justification>Added phenotypical and genotypical score parameters.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7004</differenceType>
              <method>java.util.List findAndSaveMatches(double)</method>
              <justification>Removed score parameter.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7004</differenceType>
              <method>java.lang.String findAndSaveMatches(double)</method>
              <justification>Removed score parameter.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7004</differenceType>
              <method>java.lang.String getMatches(double, boolean)</method>
              <justification>Added phenotypical and genotypical score parameters.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7006</differenceType>
              <method>java.util.List findAndSaveMatches(double)</method>
              <to>void</to>
              <justification>Removed unused return.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7006</differenceType>
              <method>java.lang.String findAndSaveMatches(double)</method>
              <to>void</to>
              <justification>Removed unused return.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>void recordStartMatchesSearch()</method>
              <justification>Record the beginning time of matches search for each server</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>void recordEndMatchesSearch()</method>
              <justification>Record the completion time of matches search for each server</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinderManager</className>
              <differenceType>7012</differenceType>
              <method>void findMatchesForAllPatients()</method>
              <justification>Record the completion time of matches search for each match finder</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>java.util.List findMatches(org.phenotips.data.Patient, boolean)</method>
              <justification>Added an option to check matches for either all patients or only changed patients</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getName()</method>
              <justification>Ability to select matchers by name</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinderManager</className>
              <differenceType>7012</differenceType>
              <method>void findMatchesForAllPatients(java.util.Set, boolean)</method>
              <justification>A method with more control over which matches are searched for</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>7002</differenceType>
              <method>java.lang.String findAndSaveMatches(double)</method>
              <justification>Updating API to match back-end changes and provide new functionality for better control over matchers</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7002</differenceType>
              <method>java.util.List findAndSaveMatches(double)</method>
              <justification>Updating API to match back-end changes and provide new functionality for better control over matchers</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinderManager</className>
              <differenceType>7002</differenceType>
              <method>java.util.List findMatches(org.phenotips.data.Patient)</method>
              <justification>Updating API to match back-end changes and provide new functionality for better control over matchers</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7004</differenceType>
              <method>java.util.List findMatches(org.phenotips.data.Patient)</method>
              <justification>A method with more control over which matches are searched for</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>void recordStartMatchesSearch(java.lang.String)</method>
              <justification>Record the completion time of matches search for each server</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/finder/MatchFinder</className>
              <differenceType>7012</differenceType>
              <method>void recordEndMatchesSearch(java.lang.String)</method>
              <justification>Record the completion time of matches search for each server</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/match/PatientInMatch</className>
              <differenceType>7012</differenceType>
              <method>java.lang.String getGenesStatus()</method>
              <justification>Record the completion time of matches search for each server</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/script/MatchingNotificationScriptService</className>
              <differenceType>8001</differenceType>
              <justification>Removing script service in favour of REST service.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7012</differenceType>
              <method>java.util.List getMatchesToBePlacedIntoNotificationTable(java.util.List)</method>
              <justification>New helper method</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>org.json.JSONObject getEmailContent(java.lang.Long, java.lang.String)</method>
              <justification>New helper method</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchEmail</className>
              <differenceType>7012</differenceType>
              <method>org.json.JSONObject getEmail()</method>
              <justification>New helper method</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>org.json.JSONObject getUserEmailContent(java.lang.Long, java.lang.String, java.lang.String)</method>
              <justification>Added to enable preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>java.util.List sendAdminNotificationsToLocalUsers(java.util.Map)</method>
              <justification>Added to enable preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7002</differenceType>
              <method>java.util.List sendNotifications(java.util.List)</method>
              <justification>Removed in refactoring user notification.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.matchingnotification.notification.PatientMatchNotificationResponse sendUserNotification(java.lang.Long, java.lang.String, java.lang.String, java.lang.String, java.lang.String)</method>
              <justification>Added to implement preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/MatchingNotificationManager</className>
              <differenceType>7012</differenceType>
              <method>boolean setStatus(java.util.Set, java.lang.String)</method>
              <justification>Added to implement preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchNotifier</className>
              <differenceType>7012</differenceType>
              <method>java.util.List createAdminEmailsToLocalUsers(java.util.List, java.util.Map)</method>
              <justification>Added to implement preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchNotifier</className>
              <differenceType>7002</differenceType>
              <method>java.util.List createEmails(java.util.List)</method>
              <justification>Removed in refactoring user notification.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/notification/PatientMatchNotifier</className>
              <differenceType>7012</differenceType>
              <method>org.phenotips.matchingnotification.notification.PatientMatchEmail createUserEmail(org.phenotips.matchingnotification.match.PatientMatch, java.lang.String, java.lang.String, java.lang.String, java.lang.String)</method>
              <justification>Added to implement preview for notification emails before sending.</justification>
            </difference>
            <difference>
              <className>org/phenotips/matchingnotification/storage/MatchStorageManager</className>
              <differenceType>7005</differenceType>
              <method>java.util.List loadMatchesByIds(java.util.List)</method>
              <to>java.util.List loadMatchesByIds(java.util.Set)</to>
              <justification>Changed to implement preview for notification emails before sending.</justification>
            </difference>
          </ignored>
          <excludes>
            <exclude>**/internal/**</exclude>
            <exclude>**/test/**</exclude>
            <!-- Remove the following excludes after we release the current version as final -->
          </excludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
