[direct-certificate-discovery-tool] 7 new revisions pushed by Elizabet...@esacinc.com on 2015-05-22 12:18 GMT

6 views
Skip to first unread message

direct-certifica...@googlecode.com

unread,
May 22, 2015, 8:18:32 AM5/22/15
to dcdt...@googlegroups.com
7 new revisions:

Revision: 550c98bc0afe
Branch: default
Author: Elizab...@esacinc.com
Date: Thu Jan 15 18:38:43 2015 UTC
Log: - Supports DCDT-309 (Upgrade non-Apache Directory-related Maven
depend...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=550c98bc0afe

Revision: d3ea86e68274
Branch: default
Author: Elizab...@esacinc.com
Date: Thu Apr 2 21:24:55 2015 UTC
Log: - Supports DCDT-306, DCDT-309, DCDT-310...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=d3ea86e68274

Revision: 8cfe60bb0354
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 15 13:19:57 2015 UTC
Log: - Supports DCDT-249, DCDT-309, DCDT-310, DCDT-312...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=8cfe60bb0354

Revision: d4aca6ae687e
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 15 14:01:47 2015 UTC
Log: - Merge heads in default branch
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=d4aca6ae687e

Revision: 2623e23000af
Branch: default
Author: Elizab...@esacinc.com
Date: Tue May 19 16:30:04 2015 UTC
Log: - Supports DCDT-312 (subject alt name validator only considers
one val...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=2623e23000af

Revision: 51b6274e8eca
Branch: default
Author: Elizab...@esacinc.com
Date: Thu May 21 20:19:17 2015 UTC
Log: - Further supports DCDT-312...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=51b6274e8eca

Revision: b818bc975521
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 22 12:05:30 2015 UTC
Log: - Made additional changes requested in review DCDT-107...
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=b818bc975521

==============================================================================
Revision: 550c98bc0afe
Branch: default
Author: Elizab...@esacinc.com
Date: Thu Jan 15 18:38:43 2015 UTC
Log: - Supports DCDT-309 (Upgrade non-Apache Directory-related Maven
dependencies)
- Upgraded Maven dependencies such as FindBugs, Clover, Bouncy Castle, etc.
and Maven plugin versions and made associated code changes
- Removed unnecessary import statements
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=550c98bc0afe

Modified:
/dcdt-core/pom.xml
/dcdt-core/src/findbugs/filter-exclude-core.xml
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolConnectionBean.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceConfigJsonDtoImpl.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/keys/impl/KeyInfoImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonSerializer.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtilsFunctionalTests.java
/dcdt-parent/pom.xml
/dcdt-service-core/pom.xml
/dcdt-service-dns/pom.xml
/dcdt-service-ldap/pom.xml
/dcdt-service-mail/pom.xml
/dcdt-service-parent/pom.xml
/dcdt-web/pom.xml
/pom.xml

=======================================
--- /dcdt-core/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-core/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -242,7 +242,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /dcdt-core/src/findbugs/filter-exclude-core.xml Sun Jun 8 00:00:00
2014 UTC
+++ /dcdt-core/src/findbugs/filter-exclude-core.xml Thu Jan 15 18:38:43
2015 UTC
@@ -74,6 +74,13 @@
<Match>
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
</Match>
+
+
<!--====================================================================================================
+ = MATCH BUGS: INEFFICIENT INDEX OF
+
=====================================================================================================-->
+ <Match>
+ <Bug pattern="IIO_INEFFICIENT_INDEX_OF"/>
+ </Match>


<!--====================================================================================================
= MATCH BUGS: INCORRECT SYNCHRONIZATION
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolConnectionBean.java
Fri Mar 14 08:15:20 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolConnectionBean.java
Thu Jan 15 18:38:43 2015 UTC
@@ -3,7 +3,6 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import java.net.InetAddress;
import java.net.InetSocketAddress;
-import javax.annotation.Nonnegative;
import javax.annotation.Nullable;

public interface ToolConnectionBean extends ToolNamedBean {
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java
Sun Jan 26 06:23:34 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java
Thu Jan 15 18:38:43 2015 UTC
@@ -2,11 +2,8 @@

import gov.hhs.onc.dcdt.beans.factory.xml.ToolBeanDefinitionParser;
import gov.hhs.onc.dcdt.beans.factory.xml.ToolNamespaceHandler;
-import gov.hhs.onc.dcdt.mail.MailAddress;
-import gov.hhs.onc.dcdt.mail.impl.MailAddressImpl;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
import org.springframework.beans.factory.xml.ParserContext;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceConfigJsonDtoImpl.java
Wed Apr 30 15:10:26 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceConfigJsonDtoImpl.java
Thu Jan 15 18:38:43 2015 UTC
@@ -20,7 +20,6 @@
public class InstanceConfigJsonDtoImpl extends
AbstractToolBeanJsonDto<InstanceConfig> implements InstanceConfigJsonDto {
private String domainName;
private String ipAddr;
- private String msg;

public InstanceConfigJsonDtoImpl() {
super(InstanceConfig.class, InstanceConfigImpl.class);
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/keys/impl/KeyInfoImpl.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/keys/impl/KeyInfoImpl.java
Thu Jan 15 18:38:43 2015 UTC
@@ -8,6 +8,7 @@
import gov.hhs.onc.dcdt.utils.ToolNumberUtils;
import java.security.Key;
import java.security.KeyPair;
+import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAKey;
@@ -22,6 +23,7 @@
import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;
import org.bouncycastle.asn1.x509.SubjectKeyIdentifier;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
+import org.bouncycastle.cert.jcajce.JcaX509ExtensionUtils;

@Embeddable
public class KeyInfoImpl extends AbstractCryptographyDescriptor implements
KeyInfo {
@@ -48,7 +50,13 @@
@Override
@Transient
public AuthorityKeyIdentifier getAuthorityKeyId() {
- return this.hasSubjectPublicKeyInfo() ? new
AuthorityKeyIdentifier(this.getSubjectPublicKeyInfo()) : null;
+ try {
+ // noinspection ConstantConditions
+ return this.hasSubjectPublicKeyInfo() ? new
JcaX509ExtensionUtils().createAuthorityKeyIdentifier(this.getSubjectPublicKeyInfo()) :
null;
+ } catch (NoSuchAlgorithmException ignored) {
+ }
+
+ return null;
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
Thu Oct 9 08:50:08 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
Thu Jan 15 18:38:43 2015 UTC
@@ -12,7 +12,7 @@
import javax.annotation.Nullable;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
-import org.bouncycastle.jcajce.ProviderJcaJceHelper;
+import org.bouncycastle.jcajce.util.ProviderJcaJceHelper;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder;
import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonSerializer.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonSerializer.java
Thu Jan 15 18:38:43 2015 UTC
@@ -9,6 +9,8 @@
import org.springframework.core.convert.ConversionService;

public class ConvertingJsonSerializer<T, U> extends StdSerializer<T> {
+ protected final static long serialVersionUID = 0L;
+
@Autowired
protected ConversionService convService;

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Tue Apr 29 05:33:14 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Thu Jan 15 18:38:43 2015 UTC
@@ -1,6 +1,8 @@
package gov.hhs.onc.dcdt.mail.impl;

import gov.hhs.onc.dcdt.mail.MailContentTransferEncoding;
+import gov.hhs.onc.dcdt.utils.ToolClassUtils;
+import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ByteArrayResource;
@@ -51,4 +53,20 @@
public String getFilename() {
return this.filename;
}
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj != null && ToolClassUtils.isAssignable(obj.getClass(),
MimeAttachmentResource.class)) {
+ MimeAttachmentResource mimeAttachmentResource =
(MimeAttachmentResource) obj;
+
+ return super.equals(mimeAttachmentResource) &&
Objects.equals(this.contentType, mimeAttachmentResource.getContentType())
&& Objects.equals(this.contentXferEnc,
mimeAttachmentResource.getContentXferEncoding()) &&
Objects.equals(this.filename, mimeAttachmentResource.getFilename());
+ }
+
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(this);
+ }
}
=======================================
---
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtilsFunctionalTests.java
Wed Oct 22 14:12:48 2014 UTC
+++
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtilsFunctionalTests.java
Thu Jan 15 18:38:43 2015 UTC
@@ -237,7 +237,6 @@
throws MessagingException {
boolean success = result.isSuccess();
DiscoveryTestcaseCredential decryptCred =
result.getDecryptionCredential();
- CertificateInfo senderCertInfo = result.getSignerCertificateInfo();
String msgs =
ToolStringUtils.joinDelimit(result.getMessages(), "; ");

Assert.assertEquals(success, testSuccess, String.format(
=======================================
--- /dcdt-parent/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-parent/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -188,32 +188,32 @@
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
- <version>2.3.0</version>
+ <version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
- <version>2.3.1</version>
+ <version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
- <version>2.3.1</version>
+ <version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-hibernate4</artifactId>
- <version>2.3.1</version>
+ <version>2.3.2</version>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
- <version>2.0.3</version>
+ <version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
- <version>0.9.5-pre8</version>
+ <version>0.9.5</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
@@ -223,7 +223,7 @@
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
- <version>1.9</version>
+ <version>1.10</version>
</dependency>
<dependency>
<groupId>commons-configuration</groupId>
@@ -292,12 +292,12 @@
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
- <version>2.6.9</version>
+ <version>2.6.10</version>
</dependency>
<dependency>
<groupId>net.sourceforge.htmlcleaner</groupId>
<artifactId>htmlcleaner</artifactId>
- <version>2.8</version>
+ <version>2.10</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -307,7 +307,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
- <version>1.8.1</version>
+ <version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
@@ -322,7 +322,7 @@
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
- <version>10.10.2.0</version>
+ <version>10.11.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.directory.api</groupId>
@@ -352,32 +352,32 @@
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-el</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
- <version>3.0.4</version>
+ <version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
@@ -398,22 +398,22 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
- <version>1.50</version>
+ <version>1.51</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
- <version>1.50</version>
+ <version>1.51</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
- <version>1.50</version>
+ <version>1.51</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
- <version>2.6.1</version>
+ <version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
@@ -429,7 +429,7 @@
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
- <version>1.2.2</version>
+ <version>1.2.4</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
@@ -444,12 +444,12 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
- <version>4.3.5.Final</version>
+ <version>4.3.8.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
- <version>5.1.1.Final</version>
+ <version>5.1.3.Final</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
@@ -459,52 +459,52 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
- <version>1.7.7</version>
+ <version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
- <version>1.7.7</version>
+ <version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
- <version>1.7.7</version>
+ <version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.7.7</version>
+ <version>1.7.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
@@ -519,29 +519,29 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
- <version>3.2.3.RELEASE</version>
+ <version>3.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@@ -558,15 +558,15 @@
</dependency>
<!-- Test dependencies -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
- <version>3.3.0</version>
+ <version>4.0.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
- <version>2.41.0</version>
+ <version>2.44.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
@@ -582,13 +582,13 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
- <version>6.8.8</version>
+ <version>6.8.13</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -614,7 +614,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
- <version>1.7</version>
+ <version>1.8</version>
<inherited>true</inherited>
<dependencies>
<dependency>
@@ -629,14 +629,14 @@
</exclusions>
</dependency>
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
- <version>3.3.0</version>
+ <version>4.0.2</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
- <version>1.9.2</version>
+ <version>1.9.4</version>
</dependency>
<dependency>
<groupId>org.apache.ant.props</groupId>
@@ -676,13 +676,13 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
- <version>2.4</version>
+ <version>2.5.3</version>
<inherited>true</inherited>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
+ <version>3.2</version>
<inherited>true</inherited>
<configuration>
<compilerArgs combine.children="append">
@@ -717,7 +717,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
- <version>2.8</version>
+ <version>2.9</version>
<inherited>true</inherited>
<configuration>
<silent>true</silent>
@@ -762,7 +762,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
- <version>2.4</version>
+ <version>2.5</version>
<inherited>true</inherited>
<executions>
<execution>
@@ -785,7 +785,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
- <version>2.6</version>
+ <version>2.7</version>
<inherited>true</inherited>
<configuration>
<delimiters>
@@ -1065,7 +1065,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
- <version>3.3</version>
+ <version>3.4</version>
<inherited>true</inherited>
<configuration>

<relativizeDecorationLinks>false</relativizeDecorationLinks>
@@ -1086,7 +1086,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
- <version>2.2.1</version>
+ <version>2.4</version>
<inherited>true</inherited>
<executions>
<execution>
@@ -1108,7 +1108,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
- <version>2.17</version>
+ <version>2.18.1</version>
<inherited>true</inherited>
<configuration>
<additionalClasspathElements
combine.children="append">
@@ -1199,7 +1199,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
- <version>2.3</version>
+ <version>2.5</version>
<inherited>true</inherited>
<configuration>
<archiveClasses>true</archiveClasses>
@@ -1260,7 +1260,7 @@
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
- <version>2.6.1</version>
+ <version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
@@ -1279,7 +1279,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
- <version>1.7</version>
+ <version>1.9</version>
<inherited>true</inherited>
<configuration>
<repositoryLayout>flat</repositoryLayout>
@@ -1294,17 +1294,17 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
- <version>16.0</version>
+ <version>18.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
- <version>2.43.1</version>
+ <version>2.44.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
- <version>2.43.1</version>
+ <version>2.44.0</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
@@ -1315,12 +1315,12 @@
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
- <version>2.43.1</version>
+ <version>2.44.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
- <version>2.43.1</version>
+ <version>2.44.0</version>
</dependency>
</dependencies>
</plugin>
@@ -1494,12 +1494,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
- <version>2.3</version>
+ <version>2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
- <version>2.7</version>
+ <version>2.8</version>
<configuration>

<dependencyDetailsEnabled>false</dependencyDetailsEnabled>

<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
@@ -1694,7 +1694,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
- <version>3.1</version>
+ <version>3.3</version>
<inherited>true</inherited>
<executions>
<execution>
@@ -1720,12 +1720,12 @@
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
- <version>3.3.0</version>
+ <version>4.0.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
- <version>2.12</version>
+ <version>2.13</version>
<configuration>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
@@ -1748,7 +1748,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
- <version>3.1</version>
+ <version>3.3</version>
<configuration>
<includeTests>true</includeTests>
<includeXmlInSite>true</includeXmlInSite>
@@ -1777,7 +1777,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
- <version>2.5.4</version>
+ <version>3.0.0</version>
<configuration>
<effort>Max</effort>

<excludeFilterFile>${project.basedir.all}/dcdt-core/src/findbugs/filter-exclude-core.xml</excludeFilterFile>
@@ -1815,7 +1815,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-changes-plugin</artifactId>
- <version>2.9</version>
+ <version>2.11</version>
<configuration>
<addActionDate>true</addActionDate>
<useJql>true</useJql>
@@ -1833,7 +1833,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
- <version>2.9.1</version>
+ <version>2.10.1</version>
<configuration>
<additionalJOptions>

<additionalJOption>-J-XX:PermSize=64m</additionalJOption>
@@ -1906,7 +1906,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-report-plugin</artifactId>
- <version>2.17</version>
+ <version>2.18.1</version>
<reportSets>
<reportSet>
<id>default</id>
=======================================
--- /dcdt-service-core/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-service-core/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -192,7 +192,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /dcdt-service-dns/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-service-dns/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -217,7 +217,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /dcdt-service-ldap/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-service-ldap/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -245,7 +245,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /dcdt-service-mail/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-service-mail/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -297,7 +297,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /dcdt-service-parent/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-service-parent/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -49,17 +49,17 @@
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
- <version>5.9.1</version>
+ <version>5.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
- <version>5.9.1</version>
+ <version>5.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
- <version>2.12.3</version>
+ <version>2.14.1</version>
<exclusions>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
@@ -70,7 +70,7 @@
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-spring</artifactId>
- <version>2.12.3</version>
+ <version>2.14.1</version>
<exclusions>
<exclusion>
<groupId>com.sun.xml.bind</groupId>
@@ -303,7 +303,7 @@
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
- <version>3.17</version>
+ <version>4.1</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
@@ -318,7 +318,7 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
- <version>4.0.5.RELEASE</version>
+ <version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>tanukisoft</groupId>
=======================================
--- /dcdt-web/pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /dcdt-web/pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -388,7 +388,7 @@
</dependency>
<!-- Test dependencies (inherited) -->
<dependency>
- <groupId>com.cenqua.clover</groupId>
+ <groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
<scope>test</scope>
</dependency>
=======================================
--- /pom.xml Fri Dec 5 01:39:45 2014 UTC
+++ /pom.xml Thu Jan 15 18:38:43 2015 UTC
@@ -210,7 +210,7 @@
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
- <version>3.3.0</version>
+ <version>4.0.2</version>
<inherited>false</inherited>
<executions>
<execution>

==============================================================================
Revision: d3ea86e68274
Branch: default
Author: Elizab...@esacinc.com
Date: Thu Apr 2 21:24:55 2015 UTC
Log: - Supports DCDT-306, DCDT-309, DCDT-310
- Refactored classes that are used as predicates, transformers,
comparators, etc. to use Java 8 syntax
- Upgraded Java dependencies to be compatible with Java 8 such as Java
compiler version for Maven, JVM options, code formatter
- Upgraded Maven dependencies, including those for Clover, Bouncy Castle,
Spring Framework, Spring Security, etc. and Maven plugin versions
- Fixed 508-compliance issues (added document language and alt text for
logo)
- Upgraded versions of JQuery and Bootstrap used for the web front-end
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=d3ea86e68274

Added:
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Function.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Predicate.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolStreamUtils.java
Deleted:

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/impl/AbstractToolPredicate.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/impl/AbstractToolTransformer.java
Modified:
/code-formatter-java.xml
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolResultBean.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanFactoryUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolPredicate.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolTransformer.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/concurrent/impl/AbstractToolListenableFutureTask.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceDnsConfigImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/impl/AbstractToolConverter.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/utils/ToolConversionUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyAlgorithmIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyObjectIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTaggedIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTypeIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/path/impl/CertificatePathResolverImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/X500Utils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/dao/impl/AbstractToolBeanDao.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanDataInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/CompositeBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/LoggingBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/impl/ToolLocalSessionFactoryBean.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/utils/ToolRestrictionsUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/DnsLookupStep.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/AbstractDnsLookupStep.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/DnsCertRecordLookupStepImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsCodeIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsJavaOptions.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsKeyAlgorithmType.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsNameLabelIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/impl/DnsMessageFormatter.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupResult.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupService.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupResultImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupServiceImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsMessageUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsNameUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordOrderUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsResolverUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/format/impl/ToolFormatterRegistrarImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonDeserializer.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonSerializer.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ToolObjectMapper.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/ldap/utils/ToolLdapAttributeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeContentTypeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/ToolMimeMessageHelper.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/utils/ToolMimePartUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/mime/utils/ToolMimeTypeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/sockets/impl/AbstractSocketListener.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/sockets/impl/AbstractTcpSocketListener.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/utils/ToolInetAddressUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/DiscoveryTestcase.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/credentials/DiscoveryTestcaseCredential.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseProcessorImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseRegistryImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/mail/DiscoveryTestcaseMailMapping.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/hosting/HostingTestcase.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/results/ToolTestcaseResultJsonDto.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/results/impl/AbstractToolTestcaseResult.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolAnnotationUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolArrayUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolClassUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolCollectionUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolEnumUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolIteratorUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolListUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolMapUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolMessageUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolOrderUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolPropertyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolRegexUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolResourceUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolValidationUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/validation/impl/ToolValidatorFactory.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/velocity/impl/ToolVelocityEngineFactoryBean.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordOrderUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/ldap/lookup/LdapLookupServiceUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtilsFunctionalTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/testcases/discovery/mail/DiscoveryTestcaseMailMappingFunctionalTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/testcases/hosting/HostingTestcaseProcessorFunctionalTests.java
/dcdt-parent/pom.xml

/dcdt-service-core/src/main/java/gov/hhs/onc/dcdt/service/wrapper/impl/AbstractToolServiceWrapper.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/config/impl/DnsServerConfigImpl.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/impl/DnsServiceImpl.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/server/impl/DnsServerRequestProcessorImpl.java

/dcdt-service-dns/src/test/java/gov/hhs/onc/dcdt/service/dns/DnsServiceFunctionalTests.java

/dcdt-service-ldap/src/main/java/gov/hhs/onc/dcdt/service/ldap/config/impl/ToolDirectoryServiceBean.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/impl/MailServiceImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolDnsServiceImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolDomainListImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolUsersRepositoryImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/mailet/impl/AbstractToolMailet.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/mailet/impl/ProcessDiscoveryTestcaseMailet.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/matcher/impl/AbstractToolMatcher.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/matcher/impl/RecipientIsDiscoveryTestcaseMatcher.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/utils/ToolJamesUtils.java

/dcdt-service-mail/src/test/java/gov/hhs/onc/dcdt/service/mail/MailServiceFunctionalTests.java
/dcdt-service-parent/pom.xml

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/controller/impl/AdminController.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/controller/impl/DiscoveryController.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/filter/impl/MutableFilterConfig.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/handler/impl/ExceptionHandlerExceptionResolverBeanPostProcessor.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/handler/impl/RequestMappingHandlerAdapterBeanPostProcessor.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/json/impl/ResponseJsonWrapperBuilder.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/media/utils/ToolMediaTypeUtils.java
/dcdt-web/src/main/resources/META-INF/spring/spring-web-security.xml
/dcdt-web/src/main/webapp/WEB-INF/views/include/head.jsp
/dcdt-web/src/main/webapp/WEB-INF/views/include/nav.jsp
/dcdt-web/src/main/webapp/WEB-INF/views/layout.jsp
/dcdt-web/src/main/webapp/static/styles/web.css
/pom.xml

=======================================
--- /dev/null
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Function.java Thu
Apr 2 21:24:55 2015 UTC
@@ -0,0 +1,5 @@
+package gov.hhs.onc.dcdt.collections;
+
+public interface Function<T, U> {
+ public U apply(T input) throws Exception;
+}
=======================================
--- /dev/null
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Predicate.java
Thu Apr 2 21:24:55 2015 UTC
@@ -0,0 +1,5 @@
+package gov.hhs.onc.dcdt.collections;
+
+public interface Predicate<T> {
+ public boolean test(T input) throws Exception;
+}
=======================================
--- /dev/null
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolStreamUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -0,0 +1,66 @@
+package gov.hhs.onc.dcdt.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+import javax.annotation.Nullable;
+
+public abstract class ToolStreamUtils {
+ public static <T> Stream<T> stream(@Nullable Iterable<T> iterable) {
+ return stream(iterable, false);
+ }
+
+ public static <T> Stream<T> stream(@Nullable Iterable<T> iterable,
boolean parallel) {
+ return iterable != null ?
StreamSupport.stream(iterable.spliterator(), parallel) : Stream.empty();
+ }
+
+ public static <T, U> Collection<U> transform(@Nullable Iterable<T>
iterable, @Nullable Function<? super T, ? extends U> mapper) {
+ return transform(iterable, mapper, ArrayList::new);
+ }
+
+ public static <T, U, V extends Collection<U>> Collection<U>
transform(@Nullable Iterable<T> iterable, @Nullable Function<? super T, ?
extends U> mapper,
+ Supplier<V> collFactory) {
+ return transform(iterable, mapper, collFactory, new ArrayList<>());
+ }
+
+ public static <T, U, V extends Collection<U>> Collection<U>
transform(@Nullable Iterable<T> iterable, @Nullable Function<? super T, ?
extends U> mapper,
+ Supplier<V> collFactory, Collection<U> defaultIfNull) {
+ return (iterable != null && mapper != null) ?
stream(iterable).map(mapper).collect(Collectors.toCollection(collFactory)) :
defaultIfNull;
+ }
+
+ public static <T> Collection<T> filter(@Nullable Iterable<T> iterable,
@Nullable Predicate<T> predicate) {
+ return filter(stream(iterable).collect(Collectors.toList()),
predicate);
+ }
+
+ public static <T> Collection<T> filter(@Nullable Collection<T> coll,
@Nullable Predicate<T> predicate) {
+ return filter(coll, predicate, ArrayList::new);
+ }
+
+ public static <T, U extends Collection<T>> Collection<T>
filter(@Nullable Collection<T> coll, @Nullable Predicate<T> predicate,
Supplier<U> collFactory) {
+ return filter(coll, predicate, collFactory, new ArrayList<>());
+ }
+
+ public static <T, U extends Collection<T>> Collection<T>
filter(@Nullable Collection<T> coll, @Nullable Predicate<T> predicate,
Supplier<U> collFactory,
+ Collection<T> defaultIfNull) {
+ return coll != null ? (predicate != null ?
coll.stream().filter(predicate).collect(Collectors.toCollection(collFactory)) :
coll.stream().collect(
+ Collectors.toCollection(collFactory))) : defaultIfNull;
+ }
+
+ public static <T> T find(@Nullable Iterable<T> iterable) {
+ return find(iterable, null);
+ }
+
+ public static <T> T find(@Nullable Iterable<T> iterable, @Nullable
Predicate<T> predicate) {
+ return iterable != null ? (predicate != null ?
stream(iterable).filter(predicate).findFirst().orElse(null) :
stream(iterable).findFirst().orElse(
+ null)) : null;
+ }
+
+ public static <T> boolean exists(@Nullable Iterable<T> iterable,
@Nullable Predicate<T> predicate) {
+ return iterable != null && predicate != null &&
stream(iterable).anyMatch(predicate);
+ }
+}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/impl/AbstractToolPredicate.java
Sun Mar 9 13:27:34 2014 UTC
+++ /dev/null
@@ -1,20 +0,0 @@
-package gov.hhs.onc.dcdt.collections.impl;
-
-import gov.hhs.onc.dcdt.collections.PredicateRuntimeException;
-import gov.hhs.onc.dcdt.collections.ToolPredicate;
-import gov.hhs.onc.dcdt.utils.ToolClassUtils;
-import javax.annotation.Nullable;
-
-public abstract class AbstractToolPredicate<T> implements ToolPredicate<T>
{
- @Override
- public boolean evaluate(@Nullable T obj) {
- try {
- return this.evaluateInternal(obj);
- } catch (Exception e) {
- throw new PredicateRuntimeException(String.format("Unable to
evaluate predicate (class=%s) for object (class=%s): %s",
- ToolClassUtils.getName(this), ToolClassUtils.getName(obj),
obj), e);
- }
- }
-
- protected abstract boolean evaluateInternal(@Nullable T obj) throws
Exception;
-}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/impl/AbstractToolTransformer.java
Sun Mar 9 13:27:34 2014 UTC
+++ /dev/null
@@ -1,22 +0,0 @@
-package gov.hhs.onc.dcdt.collections.impl;
-
-import gov.hhs.onc.dcdt.collections.ToolTransformer;
-import gov.hhs.onc.dcdt.collections.TransformerRuntimeException;
-import gov.hhs.onc.dcdt.utils.ToolClassUtils;
-import javax.annotation.Nullable;
-
-public abstract class AbstractToolTransformer<T, U> implements
ToolTransformer<T, U> {
- @Nullable
- @Override
- public U transform(@Nullable T input) {
- try {
- return this.transformInternal(input);
- } catch (Exception e) {
- throw new TransformerRuntimeException(String.format("Unable to
transform (class=%s) input object (class=%s): %s",
ToolClassUtils.getName(this),
- ToolClassUtils.getName(input), input), e);
- }
- }
-
- @Nullable
- protected abstract U transformInternal(@Nullable T input) throws
Exception;
-}
=======================================
--- /code-formatter-java.xml Wed Apr 30 07:37:27 2014 UTC
+++ /code-formatter-java.xml Thu Apr 2 21:24:55 2015 UTC
@@ -2,11 +2,11 @@
<profiles version="12">
<profile kind="CodeFormatterProfile" name="code-formatter-java"
version="12">
<setting
id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode"
value="enabled"/>
- <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform"
value="1.7"/>
- <setting id="org.eclipse.jdt.core.compiler.compliance"
value="1.7"/>
+ <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform"
value="1.8"/>
+ <setting id="org.eclipse.jdt.core.compiler.compliance"
value="1.8"/>
<setting
id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier"
value="error"/>
- <setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
+ <setting id="org.eclipse.jdt.core.compiler.source" value="1.8"/>
<setting
id="org.eclipse.jdt.core.formatter.align_type_members_on_columns"
value="false"/>
<setting
id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression"
value="16"/>
<setting
id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation"
value="16"/>
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolResultBean.java Fri
Apr 18 03:30:00 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolResultBean.java Thu
Apr 2 21:24:55 2015 UTC
@@ -1,18 +1,8 @@
package gov.hhs.onc.dcdt.beans;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import java.util.List;

public interface ToolResultBean extends ToolBean {
- public static class ToolResultBeanMessageExtractor extends
AbstractToolTransformer<ToolResultBean, List<String>> {
- public final static ToolResultBeanMessageExtractor INSTANCE = new
ToolResultBeanMessageExtractor();
-
- @Override
- protected List<String> transformInternal(ToolResultBean
resultBean) throws Exception {
- return resultBean.getMessages();
- }
- }
-
public boolean hasMessages();

public List<String> getMessages();
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java
Thu Jan 15 18:38:43 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -2,6 +2,7 @@

import gov.hhs.onc.dcdt.beans.factory.xml.ToolBeanDefinitionParser;
import gov.hhs.onc.dcdt.beans.factory.xml.ToolNamespaceHandler;
+import java.util.stream.Stream;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -28,8 +29,6 @@

@Override
public void init() {
- for (ToolBeanDefinitionParser<?> beanDefParser : BEAN_DEF_PARSERS)
{
-
this.registerBeanDefinitionParser(beanDefParser.getElementName(),
beanDefParser);
- }
+ Stream.of(BEAN_DEF_PARSERS).forEach(beanDefParser ->
this.registerBeanDefinitionParser(beanDefParser.getElementName(),
beanDefParser));
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanFactoryUtils.java
Fri Apr 18 03:30:00 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanFactoryUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,10 +1,9 @@
package gov.hhs.onc.dcdt.beans.utils;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolPredicate;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
import gov.hhs.onc.dcdt.utils.ToolListUtils;
-import java.util.ArrayList;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
@@ -23,67 +22,24 @@
import
org.springframework.beans.factory.support.AutowireCandidateQualifier;

public abstract class ToolBeanFactoryUtils {
- public static class QualifiedBeanNamePredicate extends
AbstractToolPredicate<String> {
- private ConfigurableListableBeanFactory beanFactory;
- private Collection<AutowireCandidateQualifier> quals;
-
- public QualifiedBeanNamePredicate(ConfigurableListableBeanFactory
beanFactory, AutowireCandidateQualifier ... quals) {
- this(beanFactory, ToolArrayUtils.asList(quals));
- }
-
- public QualifiedBeanNamePredicate(ConfigurableListableBeanFactory
beanFactory, Collection<AutowireCandidateQualifier> quals) {
- this.beanFactory = beanFactory;
- this.quals = quals;
- }
-
- @Override
- protected boolean evaluateInternal(String beanName) throws
Exception {
- return
CollectionUtils.containsAll(ToolBeanFactoryUtils.getQualifiers(this.beanFactory,
beanName), this.quals);
- }
+ public static boolean isQualifiedBeanName(String beanName,
ConfigurableListableBeanFactory beanFactory, AutowireCandidateQualifier...
quals) {
+ return isQualifiedBeanName(beanName, beanFactory,
ToolArrayUtils.asList(quals));
}

- public static class RegisteredScopedBeanNamePredicate extends
AbstractScopedBeanNamePredicate<ConfigurableListableBeanFactory> {
- public
RegisteredScopedBeanNamePredicate(ConfigurableListableBeanFactory
beanFactory, String beanScopeName) {
- super(beanFactory, beanScopeName);
- }
-
- @Override
- protected boolean evaluateInternal(@Nullable String beanName)
throws Exception {
- return Objects.equals(getRegisteredBeanScope(this.beanFactory,
beanName), this.beanScopeName);
- }
+ public static boolean isQualifiedBeanName(String beanName,
ConfigurableListableBeanFactory beanFactory,
Collection<AutowireCandidateQualifier> quals) {
+ return
CollectionUtils.containsAll(ToolBeanFactoryUtils.getQualifiers(beanFactory,
beanName), quals);
}

- public static class SingletonScopedBeanNamePredicate extends
AbstractBuiltinScopedBeanNamePredicate {
- public SingletonScopedBeanNamePredicate(ListableBeanFactory
beanFactory) {
- super(beanFactory, BeanDefinition.SCOPE_SINGLETON);
- }
+ public static <T extends ListableBeanFactory> boolean
isRegisteredScopedBeanName(@Nullable String beanName, T beanFactory, String
beanScopeName) {
+ return
Objects.equals(getRegisteredBeanScope((ConfigurableListableBeanFactory)
beanFactory, beanName), beanScopeName);
}

- public static class PrototypeScopedBeanNamePredicate extends
AbstractBuiltinScopedBeanNamePredicate {
- public PrototypeScopedBeanNamePredicate(ListableBeanFactory
beanFactory) {
- super(beanFactory, BeanDefinition.SCOPE_PROTOTYPE);
- }
- }
-
- private abstract static class AbstractBuiltinScopedBeanNamePredicate
extends AbstractScopedBeanNamePredicate<ListableBeanFactory> {
- protected
AbstractBuiltinScopedBeanNamePredicate(ListableBeanFactory beanFactory,
String beanScopeName) {
- super(beanFactory, beanScopeName);
- }
-
- @Override
- protected boolean evaluateInternal(@Nullable String beanName)
throws Exception {
- return Objects.equals(getBuiltinBeanScope(this.beanFactory,
beanName), this.beanScopeName);
- }
+ public static <T extends ListableBeanFactory> boolean
isSingletonScopedBeanName(@Nullable String beanName, T beanFactory) {
+ return Objects.equals(getBuiltinBeanScope(beanFactory, beanName),
BeanDefinition.SCOPE_SINGLETON);
}

- public static abstract class AbstractScopedBeanNamePredicate<T extends
ListableBeanFactory> extends AbstractToolPredicate<String> {
- protected T beanFactory;
- protected String beanScopeName;
-
- protected AbstractScopedBeanNamePredicate(T beanFactory, String
beanScopeName) {
- this.beanFactory = beanFactory;
- this.beanScopeName = beanScopeName;
- }
+ public static <T extends ListableBeanFactory> boolean
isPrototypeScopedBeanName(@Nullable String beanName, T beanFactory) {
+ return Objects.equals(getBuiltinBeanScope(beanFactory, beanName),
BeanDefinition.SCOPE_PROTOTYPE);
}

public final static Set<String> SCOPE_NAMES_BUILTIN = new
HashSet<>(ToolArrayUtils.asList(BeanDefinition.SCOPE_SINGLETON,
BeanDefinition.SCOPE_PROTOTYPE));
@@ -111,14 +67,10 @@
}

public static <T> List<T> createBeansOfType(ListableBeanFactory
beanFactory, Class<T> beanClass, @Nullable Object ... beanCreationArgs) {
- Collection<String> beanNames =
CollectionUtils.select(getBeanNamesOfType(beanFactory, beanClass), new
PrototypeScopedBeanNamePredicate(beanFactory));
- List<T> beans = new ArrayList<>(beanNames.size());
-
- for (String beanName : beanNames) {
- beans.add(createBean(beanFactory, beanName, beanClass,
beanCreationArgs));
- }
+ Collection<String> beanNames =
ToolStreamUtils.filter(getBeanNamesOfType(beanFactory, beanClass), beanName
-> isPrototypeScopedBeanName(beanName,
+ beanFactory));

- return beans;
+ return (List<T>) ToolStreamUtils.transform(beanNames, beanName ->
createBean(beanFactory, beanName, beanClass, beanCreationArgs));
}

@Nullable
@@ -128,7 +80,7 @@

@Nullable
public static <T> T createBeanOfType(ListableBeanFactory beanFactory,
Class<T> beanClass, @Nullable Object ... beanCreationArgs) {
- String beanName =
CollectionUtils.find(getBeanNamesOfType(beanFactory, beanClass), new
PrototypeScopedBeanNamePredicate(beanFactory));
+ String beanName =
ToolStreamUtils.find(getBeanNamesOfType(beanFactory, beanClass), name ->
isPrototypeScopedBeanName(name, beanFactory));

return ((beanName != null) ? createBean(beanFactory, beanName,
beanClass, beanCreationArgs) : null);
}
@@ -154,13 +106,8 @@

public static <T> List<T> getBeansOfType(ListableBeanFactory
beanFactory, Class<T> beanClass) {
List<String> beanNames = getBeanNamesOfType(beanFactory,
beanClass);
- List<T> beans = new ArrayList<>(beanNames.size());
-
- for (String beanName : beanNames) {
- beans.add(beanFactory.getBean(beanName, beanClass));
- }

- return beans;
+ return (List<T>) ToolStreamUtils.transform(beanNames, beanName ->
beanFactory.getBean(beanName, beanClass));
}

@Nullable
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtils.java
Fri Oct 3 01:10:43 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,144 +1,21 @@
package gov.hhs.onc.dcdt.beans.utils;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolPredicate;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.beans.PropertyDescriptor;
import java.util.Collection;
import java.util.List;
+import java.util.Objects;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Predicate;
-import org.apache.commons.collections4.PredicateUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanWrapper;

public abstract class ToolBeanPropertyUtils {
- public static class BeanPropertyValueTransformer<T> extends
AbstractToolTransformer<Object, T> {
- private String beanPropName;
- private Class<T> beanPropValueClass;
-
- public BeanPropertyValueTransformer(String beanPropName, Class<T>
beanPropValueClass) {
- this.beanPropName = beanPropName;
- this.beanPropValueClass = beanPropValueClass;
- }
-
- @Nullable
- @Override
- protected T transformInternal(@Nullable Object bean) throws
Exception {
- return getValue(ToolBeanUtils.wrap(bean), this.beanPropName,
this.beanPropValueClass);
- }
- }
-
- public static class BeanPropertyReadablePredicate extends
AbstractNamedBeanPropertyPredicate<Object> {
- public BeanPropertyReadablePredicate(String beanPropName) {
- this(beanPropName, null);
- }
-
- public BeanPropertyReadablePredicate(String beanPropName,
@Nullable Class<?> beanPropValueClass) {
- super(beanPropName, beanPropValueClass);
- }
-
- @Override
- protected boolean evaluateInternal(@Nullable Object bean) throws
Exception {
- return isReadable(ToolBeanUtils.wrap(bean), this.beanPropName,
beanPropValueClass);
- }
- }
-
- public static class BeanPropertyWriteablePredicate extends
AbstractNamedBeanPropertyPredicate<Object> {
- public BeanPropertyWriteablePredicate(String beanPropName) {
- this(beanPropName, null);
- }
-
- public BeanPropertyWriteablePredicate(String beanPropName,
@Nullable Class<?> beanPropValueClass) {
- super(beanPropName, beanPropValueClass);
- }
-
- @Override
- protected boolean evaluateInternal(@Nullable Object bean) throws
Exception {
- return isWriteable(ToolBeanUtils.wrap(bean),
this.beanPropName, beanPropValueClass);
- }
- }
-
- public static class BeanPropertyDescriptorReadablePredicate extends
AbstractBeanPropertyDescriptorPredicate {
- public BeanPropertyDescriptorReadablePredicate(BeanWrapper
beanWrapper) {
- this(beanWrapper, null);
- }
-
- public BeanPropertyDescriptorReadablePredicate(BeanWrapper
beanWrapper, @Nullable Class<?> beanPropValueClass) {
- super(beanWrapper, beanPropValueClass);
- }
-
- @Override
- protected boolean evaluateInternal(PropertyDescriptor
beanPropDesc) throws Exception {
- return isReadable(this.beanWrapper, beanPropDesc.getName(),
this.beanPropValueClass);
- }
- }
-
- public static class BeanPropertyDescriptorWriteablePredicate extends
AbstractBeanPropertyDescriptorPredicate {
- public BeanPropertyDescriptorWriteablePredicate(BeanWrapper
beanWrapper) {
- this(beanWrapper, null);
- }
-
- public BeanPropertyDescriptorWriteablePredicate(BeanWrapper
beanWrapper, @Nullable Class<?> beanPropValueClass) {
- super(beanWrapper, beanPropValueClass);
- }
-
- @Override
- protected boolean evaluateInternal(PropertyDescriptor
beanPropDesc) throws Exception {
- return isWriteable(this.beanWrapper, beanPropDesc.getName(),
this.beanPropValueClass);
- }
- }
-
- private static abstract class AbstractBeanPropertyDescriptorPredicate
extends AbstractBeanPropertyPredicate<PropertyDescriptor> {
- protected BeanWrapper beanWrapper;
-
- protected AbstractBeanPropertyDescriptorPredicate(BeanWrapper
beanWrapper) {
- this(beanWrapper, null);
- }
-
- protected AbstractBeanPropertyDescriptorPredicate(BeanWrapper
beanWrapper, @Nullable Class<?> beanPropValueClass) {
- super(beanPropValueClass);
-
- this.beanWrapper = beanWrapper;
- }
- }
-
- private static abstract class AbstractNamedBeanPropertyPredicate<T>
extends AbstractBeanPropertyPredicate<T> {
- protected String beanPropName;
-
- protected AbstractNamedBeanPropertyPredicate(String beanPropName) {
- this(beanPropName, null);
- }
-
- protected AbstractNamedBeanPropertyPredicate(String beanPropName,
@Nullable Class<?> beanPropValueClass) {
- super(beanPropValueClass);
-
- this.beanPropName = beanPropName;
- }
- }
-
- private static abstract class AbstractBeanPropertyPredicate<T> extends
AbstractToolPredicate<T> {
- protected Class<?> beanPropValueClass;
-
- protected AbstractBeanPropertyPredicate() {
- this(null);
- }
-
- protected AbstractBeanPropertyPredicate(@Nullable Class<?>
beanPropValueClass) {
- this.beanPropValueClass =
ObjectUtils.defaultIfNull(beanPropValueClass, Object.class);
- }
- }
-
public static void copy(BeanWrapper beanWrapper1, BeanWrapper
beanWrapper2) {
- String beanPropName;
-
- for (PropertyDescriptor beanPropDesc :
describeReadable(beanWrapper1)) {
- if (isWriteable(beanWrapper2, (beanPropName =
beanPropDesc.getName()))) {
- beanWrapper2.setPropertyValue(beanPropName,
beanWrapper1.getPropertyValue(beanPropName));
- }
- }
+
describeReadable(beanWrapper1).stream().map(PropertyDescriptor::getName).filter(beanPropName
-> isWriteable(beanWrapper2, beanPropName)).forEach(
+ beanPropName -> beanWrapper2.setPropertyValue(beanPropName,
beanWrapper1.getPropertyValue(beanPropName)));
}

public static Collection<PropertyDescriptor>
describeReadable(BeanWrapper beanWrapper) {
@@ -165,25 +42,32 @@
return describe(beanWrapper, beanPropValueClass, null, null);
}

- @SuppressWarnings({ "unchecked" })
public static Collection<PropertyDescriptor> describe(BeanWrapper
beanWrapper, Class<?> beanPropValueClass, @Nullable Boolean
beanPropsReadable,
@Nullable Boolean beanPropsWriteable) {
Predicate<PropertyDescriptor> beanPropsPredicate = null;

if ((beanPropsReadable != null) && beanPropsReadable) {
- beanPropsPredicate = new
BeanPropertyDescriptorReadablePredicate(beanWrapper, beanPropValueClass);
+ beanPropsPredicate = beanPropDesc -> isReadable(beanPropDesc,
beanWrapper, beanPropValueClass);
}

if ((beanPropsWriteable != null) && beanPropsWriteable) {
- Predicate<PropertyDescriptor> beanPropDescWriteablePredicate =
new BeanPropertyDescriptorWriteablePredicate(beanWrapper,
beanPropValueClass);
+ Predicate<PropertyDescriptor> beanPropDescWriteablePredicate =
beanPropDesc -> isWriteable(beanPropDesc, beanWrapper,
+ beanPropValueClass);

beanPropsPredicate =
- (beanPropsPredicate != null) ?
PredicateUtils.allPredicate(beanPropsPredicate,
beanPropDescWriteablePredicate) : beanPropDescWriteablePredicate;
+ (beanPropsPredicate != null) ?
beanPropsPredicate.and(beanPropDescWriteablePredicate) :
beanPropDescWriteablePredicate;
}

List<PropertyDescriptor> beanPropDescs =
ToolArrayUtils.asList(beanWrapper.getPropertyDescriptors());

- return (beanPropsPredicate != null) ?
CollectionUtils.select(beanPropDescs, beanPropsPredicate) : beanPropDescs;
+ return (beanPropsPredicate != null) ?
ToolStreamUtils.filter(beanPropDescs, beanPropsPredicate) : beanPropDescs;
+ }
+
+ public static <T> boolean hasBeanPropertyValue(@Nullable Object bean,
String beanPropName, @Nullable T beanPropValue) {
+ Class<?> beanPropValueClass =
ObjectUtils.defaultIfNull(ToolClassUtils.getClass(beanPropValue,
Object.class), Object.class);
+
+ return isReadable(ToolBeanUtils.wrap(bean), beanPropName,
beanPropValueClass) && Objects.equals(getValue(ToolBeanUtils.wrap(bean),
beanPropName,
+ beanPropValueClass), beanPropValue);
}

public static boolean hasValue(@Nullable BeanWrapper beanWrapper,
String beanPropName) {
@@ -231,6 +115,10 @@
return beanWrapper != null &&
beanWrapper.isReadableProperty(beanPropName)
&&
ToolClassUtils.isAssignable(beanWrapper.getPropertyType(beanPropName),
beanPropValueClass);
}
+
+ public static boolean isReadable(PropertyDescriptor beanPropDesc,
BeanWrapper beanWrapper, @Nullable Class<?> beanPropValueClass) {
+ return isReadable(beanWrapper, beanPropDesc.getName(),
ObjectUtils.defaultIfNull(beanPropValueClass, Object.class));
+ }

public static boolean isWriteable(@Nullable BeanWrapper beanWrapper,
String beanPropName) {
return isWriteable(beanWrapper, beanPropName, Object.class);
@@ -240,4 +128,8 @@
return beanWrapper != null &&
beanWrapper.isWritableProperty(beanPropName)
&&
ToolClassUtils.isAssignable(beanWrapper.getPropertyType(beanPropName),
beanPropValueClass);
}
+
+ public static boolean isWriteable(PropertyDescriptor beanPropDesc,
BeanWrapper beanWrapper, @Nullable Class<?> beanPropValueClass) {
+ return isWriteable(beanWrapper, beanPropDesc.getName(),
ObjectUtils.defaultIfNull(beanPropValueClass, Object.class));
+ }
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanUtils.java
Fri Oct 3 01:10:43 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,14 +1,12 @@
package gov.hhs.onc.dcdt.beans.utils;

import gov.hhs.onc.dcdt.beans.ToolNamedBean;
-import
gov.hhs.onc.dcdt.beans.utils.ToolBeanPropertyUtils.BeanPropertyValueTransformer;
import gov.hhs.onc.dcdt.utils.ToolAnnotationUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.beans.PropertyDescriptor;
import java.io.Serializable;
import javax.annotation.Nullable;
import javax.persistence.Id;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.PredicateUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.factory.ListableBeanFactory;
@@ -17,6 +15,10 @@
public abstract class ToolBeanUtils {
public final static String PROP_NAME_NAME = "name";

+ public static boolean isNamedBeanName(@Nullable Object bean, String
namedBeanName) {
+ return ToolBeanPropertyUtils.hasBeanPropertyValue(bean,
PROP_NAME_NAME, namedBeanName);
+ }
+
@Nullable
public static Serializable getId(BeanWrapper beanWrapper) {
for (PropertyDescriptor beanPropDesc :
ToolBeanPropertyUtils.describeReadable(beanWrapper)) {
@@ -35,10 +37,8 @@

@Nullable
public static <T extends ToolNamedBean> T
findNamed(ListableBeanFactory beanFactory, String namedBeanName, Class<T>
namedBeanClass) {
- return CollectionUtils.find(
- ToolBeanFactoryUtils.getBeansOfType(beanFactory,
namedBeanClass),
- PredicateUtils.transformedPredicate(new
BeanPropertyValueTransformer<>(PROP_NAME_NAME, Object.class),
- PredicateUtils.equalPredicate(((Object) namedBeanName))));
+ return
ToolStreamUtils.find(ToolBeanFactoryUtils.getBeansOfType(beanFactory,
namedBeanClass), bean ->
+ isNamedBeanName(bean, namedBeanName));
}

@Nullable
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolPredicate.java
Sun Mar 9 13:27:34 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolPredicate.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,6 +1,15 @@
package gov.hhs.onc.dcdt.collections;

-import org.apache.commons.collections4.Predicate;
+import gov.hhs.onc.dcdt.utils.ToolClassUtils;

-public interface ToolPredicate<T> extends Predicate<T> {
+public interface ToolPredicate<T> {
+ public static <T> java.util.function.Predicate<T> wrap(Predicate<T>
predicate) {
+ return t -> {
+ try {
+ return predicate.test(t);
+ } catch (Exception e) {
+ throw new PredicateRuntimeException(String.format("Unable
to evaluate predicate for object (class=%s): %s",
ToolClassUtils.getName(t), t), e);
+ }
+ };
+ }
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolTransformer.java
Sun Mar 9 13:27:34 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolTransformer.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,6 +1,15 @@
package gov.hhs.onc.dcdt.collections;

-import org.apache.commons.collections4.Transformer;
+import gov.hhs.onc.dcdt.utils.ToolClassUtils;

-public interface ToolTransformer<T, U> extends Transformer<T, U> {
+public interface ToolTransformer<T, U> {
+ public static <T, U> java.util.function.Function<T, U>
wrap(Function<T, U> transformer) {
+ return t -> {
+ try {
+ return transformer.apply(t);
+ } catch (Exception e) {
+ throw new
TransformerRuntimeException(String.format("Unable to transform input object
(class=%s): %s", ToolClassUtils.getName(t), t), e);
+ }
+ };
+ }
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtils.java
Sun May 4 20:51:50 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,6 +1,5 @@
package gov.hhs.onc.dcdt.compress.utils;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import gov.hhs.onc.dcdt.compress.ArchiveType;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import java.io.ByteArrayOutputStream;
@@ -17,26 +16,16 @@
import org.apache.commons.lang3.tuple.Pair;

public abstract class ArchiveUtils {
- public static class ZipArchiveEntryPairTransformer extends
AbstractArchiveEntryPairTransformer<ZipArchiveEntry> {
- public final static ZipArchiveEntryPairTransformer INSTANCE = new
ZipArchiveEntryPairTransformer();
-
- @Override
- protected ZipArchiveEntry createEntry(Entry<String, byte[]>
entryDescPair) {
- ZipArchiveEntry entry = new
ZipArchiveEntry(entryDescPair.getKey());
- entry.setSize(entryDescPair.getValue().length);
-
- return entry;
- }
+ @SuppressWarnings({ "unchecked" })
+ public static <T extends ArchiveEntry> Pair<T, byte[]>
transformZipArchiveEntryPair(Entry<String, byte[]> entryDescPair) {
+ return new MutablePair<>((T) createEntry(entryDescPair),
entryDescPair.getValue());
}

- public abstract static class AbstractArchiveEntryPairTransformer<T
extends ArchiveEntry> extends
- AbstractToolTransformer<Entry<String, byte[]>, Pair<T, byte[]>> {
- @Override
- protected Pair<T, byte[]> transformInternal(Entry<String, byte[]>
entryDescPair) throws Exception {
- return new MutablePair<>(this.createEntry(entryDescPair),
entryDescPair.getValue());
- }
+ protected static ZipArchiveEntry createEntry(Entry<String, byte[]>
entryDescPair) {
+ ZipArchiveEntry entry = new
ZipArchiveEntry(entryDescPair.getKey());
+ entry.setSize(entryDescPair.getValue().length);

- protected abstract T createEntry(Entry<String, byte[]>
entryDescPair);
+ return entry;
}

// @formatter:off
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/concurrent/impl/AbstractToolListenableFutureTask.java
Wed Jun 11 12:39:46 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/concurrent/impl/AbstractToolListenableFutureTask.java
Thu Apr 2 21:24:55 2015 UTC
@@ -22,9 +22,7 @@

@Override
public void run() {
- for (ListenableFutureCallback<? super T> callback :
this.callbacks) {
- super.addCallback(callback);
- }
+ this.callbacks.forEach(super::addCallback);

super.run();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceDnsConfigImpl.java
Thu Oct 9 11:11:26 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceDnsConfigImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -3,8 +3,8 @@
import com.fasterxml.jackson.annotation.JsonTypeName;
import gov.hhs.onc.dcdt.beans.impl.AbstractToolDomainAddressBean;
import gov.hhs.onc.dcdt.beans.utils.ToolBeanFactoryUtils;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolPredicate;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
+import gov.hhs.onc.dcdt.collections.ToolPredicate;
+import gov.hhs.onc.dcdt.collections.ToolTransformer;
import gov.hhs.onc.dcdt.config.instance.InstanceDnsConfig;
import gov.hhs.onc.dcdt.crypto.DataEncoding;
import gov.hhs.onc.dcdt.crypto.certs.CertificateInfo;
@@ -29,18 +29,19 @@
import gov.hhs.onc.dcdt.dns.utils.ToolDnsUtils;
import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.testcases.discovery.DiscoveryTestcase;
-import
gov.hhs.onc.dcdt.testcases.discovery.DiscoveryTestcase.DiscoveryTestcaseCredentialsExtractor;
import
gov.hhs.onc.dcdt.testcases.discovery.credentials.DiscoveryTestcaseCredential;
import
gov.hhs.onc.dcdt.testcases.discovery.credentials.DiscoveryTestcaseCredentialLocation;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
import gov.hhs.onc.dcdt.utils.ToolEnumUtils;
import gov.hhs.onc.dcdt.utils.ToolIteratorUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.TreeMap;
import javax.annotation.Nullable;
import org.apache.commons.collections4.CollectionUtils;
@@ -54,78 +55,54 @@

@JsonTypeName("instanceDnsConfig")
public class InstanceDnsConfigImpl extends AbstractToolDomainAddressBean
implements InstanceDnsConfig {
- public static class AuthoritativeDnsConfigPredicate extends
AbstractToolPredicate<InstanceDnsConfig> {
- private DnsRecordType questionRecordType;
- private Name questionName;
+ private PtrRecordConfig
transformReverseMapPtrRecordConfig(ARecordConfig aRecordConfig) {
+ PtrRecordConfig ptrRecordConfig =
ToolBeanFactoryUtils.createBeanOfType(InstanceDnsConfigImpl.this.appContext,
PtrRecordConfig.class);
+ // noinspection ConstantConditions
+
ptrRecordConfig.setName(ReverseMap.fromAddress(aRecordConfig.getAddress()));
+ ptrRecordConfig.setTarget(aRecordConfig.getName());

- public AuthoritativeDnsConfigPredicate(DnsRecordType
questionRecordType, Name questionName) {
- this.questionRecordType = questionRecordType;
- this.questionName = questionName;
- }
-
- @Override
- protected boolean evaluateInternal(InstanceDnsConfig dnsConfig)
throws Exception {
- return dnsConfig.isAuthoritative(this.questionRecordType,
this.questionName);
- }
+ return ptrRecordConfig;
}

- private class ReverseMapPtrRecordConfigTransformer extends
AbstractToolTransformer<ARecordConfig, PtrRecordConfig> {
- @Override
- protected PtrRecordConfig transformInternal(ARecordConfig
aRecordConfig) throws Exception {
- PtrRecordConfig ptrRecordConfig =
ToolBeanFactoryUtils.createBeanOfType(InstanceDnsConfigImpl.this.appContext,
PtrRecordConfig.class);
- // noinspection ConstantConditions
-
ptrRecordConfig.setName(ReverseMap.fromAddress(aRecordConfig.getAddress()));
- ptrRecordConfig.setTarget(aRecordConfig.getName());
+ private CertRecordConfig
transformDiscoveryTestcaseCredentialCertRecordConfig(DiscoveryTestcaseCredential
discoveryTestcaseCred) throws Exception {
+ CertRecordConfig certRecordConfig =
ToolBeanFactoryUtils.createBeanOfType(InstanceDnsConfigImpl.this.appContext,
CertRecordConfig.class);
+ // noinspection ConstantConditions
+
certRecordConfig.setName(ToolDnsNameUtils.toAbsolute(discoveryTestcaseCred.getLocation().getMailAddress().toAddressName()));

- return ptrRecordConfig;
- }
- }
+ // noinspection ConstantConditions
+ KeyInfo discoveryTestcaseCredKeyInfo =
discoveryTestcaseCred.getCredentialInfo().getKeyDescriptor();
+ CertificateInfo discoveryTestcaseCredCertInfo =
discoveryTestcaseCred.getCredentialInfo().getCertificateDescriptor();

- private class DiscoveryTestcaseCredentialCertRecordConfigTransformer
extends AbstractToolTransformer<DiscoveryTestcaseCredential,
CertRecordConfig> {
- @Override
- protected CertRecordConfig
transformInternal(DiscoveryTestcaseCredential discoveryTestcaseCred) throws
Exception {
- CertRecordConfig certRecordConfig =
ToolBeanFactoryUtils.createBeanOfType(InstanceDnsConfigImpl.this.appContext,
CertRecordConfig.class);
- // noinspection ConstantConditions
-
certRecordConfig.setName(ToolDnsNameUtils.toAbsolute(discoveryTestcaseCred.getLocation().getMailAddress().toAddressName()));
-
- // noinspection ConstantConditions
- KeyInfo discoveryTestcaseCredKeyInfo =
discoveryTestcaseCred.getCredentialInfo().getKeyDescriptor();
- CertificateInfo discoveryTestcaseCredCertInfo =
discoveryTestcaseCred.getCredentialInfo().getCertificateDescriptor();
-
- // noinspection ConstantConditions
- DnsKeyAlgorithmType discoveryTestcaseCredKeyAlgType =
-
ToolEnumUtils.findByPropertyValue(DnsKeyAlgorithmType.class,
DnsKeyAlgorithmType.PROP_NAME_SIG_ALG,
- discoveryTestcaseCredCertInfo.getSignatureAlgorithm());
- // noinspection ConstantConditions
-
certRecordConfig.setKeyAlgorithmType(discoveryTestcaseCredKeyAlgType);
- // noinspection ConstantConditions
-
certRecordConfig.setKeyTag(ToolDnsRecordUtils.getKeyTag(discoveryTestcaseCredKeyAlgType,
discoveryTestcaseCredKeyInfo.getPublicKey()));
+ // noinspection ConstantConditions
+ DnsKeyAlgorithmType discoveryTestcaseCredKeyAlgType =
+ ToolEnumUtils.findByPredicate(DnsKeyAlgorithmType.class,
sigAlgEnum -> Objects.equals(sigAlgEnum.getSignatureAlgorithm(),
+ discoveryTestcaseCredCertInfo.getSignatureAlgorithm()));
+ // noinspection ConstantConditions
+
certRecordConfig.setKeyAlgorithmType(discoveryTestcaseCredKeyAlgType);
+ // noinspection ConstantConditions
+
certRecordConfig.setKeyTag(ToolDnsRecordUtils.getKeyTag(discoveryTestcaseCredKeyAlgType,
discoveryTestcaseCredKeyInfo.getPublicKey()));

- // noinspection ConstantConditions
-
certRecordConfig.setCertificateData(CertificateUtils.writeCertificate(discoveryTestcaseCredCertInfo.getCertificate(),
DataEncoding.DER));
+ // noinspection ConstantConditions
+
certRecordConfig.setCertificateData(CertificateUtils.writeCertificate(discoveryTestcaseCredCertInfo.getCertificate(),
DataEncoding.DER));

- return certRecordConfig;
- }
+ return certRecordConfig;
}

- private class DiscoveryTestcaseCredentialCertRecordPredicate extends
AbstractToolPredicate<DiscoveryTestcaseCredential> {
- @Override
- protected boolean evaluateInternal(DiscoveryTestcaseCredential
discoveryTestcaseCred) throws Exception {
- DiscoveryTestcaseCredentialLocation discoveryTestcaseCredLoc;
- MailAddress discoveryTestcaseCredLocMailAddr;
- CredentialInfo discoveryTestcaseCredInfo;
- KeyInfo discoveryTestcaseCredKeyInfo;
+ private boolean
hasDiscoveryTestcaseCredentialCertRecord(DiscoveryTestcaseCredential
discoveryTestcaseCred) throws Exception {
+ DiscoveryTestcaseCredentialLocation discoveryTestcaseCredLoc;
+ MailAddress discoveryTestcaseCredLocMailAddr;
+ CredentialInfo discoveryTestcaseCredInfo;
+ KeyInfo discoveryTestcaseCredKeyInfo;

- // noinspection ConstantConditions
- return discoveryTestcaseCred.hasLocation() &&
(discoveryTestcaseCredLoc =
discoveryTestcaseCred.getLocation()).getType().isDns()
- && discoveryTestcaseCredLoc.hasMailAddress()
- && (discoveryTestcaseCredLocMailAddr =
discoveryTestcaseCredLoc.getMailAddress()).getBindingType().isBound()
- &&
ToolDnsNameUtils.toAbsolute(discoveryTestcaseCredLocMailAddr.getDomainName()).equals(InstanceDnsConfigImpl.this.domainName)
- && discoveryTestcaseCred.hasCredentialInfo() &&
(discoveryTestcaseCredInfo =
discoveryTestcaseCred.getCredentialInfo()).hasKeyDescriptor()
- && (discoveryTestcaseCredKeyInfo =
discoveryTestcaseCredInfo.getKeyDescriptor()).hasKeyAlgorithm()
- && discoveryTestcaseCredKeyInfo.hasPublicKey() &&
discoveryTestcaseCredInfo.hasCertificateDescriptor()
- &&
discoveryTestcaseCredInfo.getCertificateDescriptor().hasCertificate();
- }
+ // noinspection ConstantConditions
+ return discoveryTestcaseCred.hasLocation() &&
(discoveryTestcaseCredLoc =
discoveryTestcaseCred.getLocation()).getType().isDns()
+ && discoveryTestcaseCredLoc.hasMailAddress()
+ && (discoveryTestcaseCredLocMailAddr =
discoveryTestcaseCredLoc.getMailAddress()).getBindingType().isBound()
+ &&
ToolDnsNameUtils.toAbsolute(discoveryTestcaseCredLocMailAddr.getDomainName()).equals(InstanceDnsConfigImpl.this.domainName)
+ && discoveryTestcaseCred.hasCredentialInfo() &&
(discoveryTestcaseCredInfo =
discoveryTestcaseCred.getCredentialInfo()).hasKeyDescriptor()
+ && (discoveryTestcaseCredKeyInfo =
discoveryTestcaseCredInfo.getKeyDescriptor()).hasKeyAlgorithm()
+ && discoveryTestcaseCredKeyInfo.hasPublicKey() &&
discoveryTestcaseCredInfo.hasCertificateDescriptor()
+ &&
discoveryTestcaseCredInfo.getCertificateDescriptor().hasCertificate();
}

private AbstractApplicationContext appContext;
@@ -200,11 +177,13 @@

case CERT:
recordConfigs =
- (this.certRecordConfigs =
-
ToolCollectionUtils.nullIfEmpty(CollectionUtils.collect(CollectionUtils.select(IteratorUtils.asIterable(ToolIteratorUtils
- .chainedIterator(CollectionUtils.collect(ToolBeanFactoryUtils.getBeansOfType(this.appContext,
DiscoveryTestcase.class),
-
DiscoveryTestcaseCredentialsExtractor.INSTANCE))), new
DiscoveryTestcaseCredentialCertRecordPredicate()),
- new
DiscoveryTestcaseCredentialCertRecordConfigTransformer(), new
ArrayList<CertRecordConfig>())));
+ this.certRecordConfigs =
+ (List<CertRecordConfig>)
ToolCollectionUtils.nullIfEmpty(ToolStreamUtils.transform(ToolStreamUtils.filter(IteratorUtils
+ .asIterable(ToolIteratorUtils
+ .chainedIterator(ToolStreamUtils.transform(ToolBeanFactoryUtils.getBeansOfType(this.appContext,
DiscoveryTestcase.class),
+
DiscoveryTestcase::extractCredentials))), ToolPredicate.wrap(
+
this::hasDiscoveryTestcaseCredentialCertRecord)), ToolTransformer.wrap(
+
this::transformDiscoveryTestcaseCredentialCertRecordConfig)));
break;

case CNAME:
@@ -221,9 +200,9 @@

case PTR:
recordConfigs =
- (this.ptrRecordConfigs =
-
ToolCollectionUtils.nullIfEmpty(CollectionUtils.collect(this.aRecordsConfigs,
new ReverseMapPtrRecordConfigTransformer(),
- new ArrayList<PtrRecordConfig>())));
+ this.ptrRecordConfigs =
+ (List<PtrRecordConfig>)
ToolCollectionUtils.nullIfEmpty(ToolStreamUtils.transform(this.aRecordsConfigs,
+ this::transformReverseMapPtrRecordConfig));
break;

case SOA:
@@ -273,14 +252,9 @@

recordConfig.setName(ToolDnsNameUtils.toAbsolute(ToolDnsNameUtils.fromLabels(recordName,
this.domainName)));
}

- if (!this.nameRecordsMap.containsKey((recordName = (record
= recordConfig.toRecord()).getName()))) {
- this.nameRecordsMap.put(recordName, new
EnumMap<DnsRecordType, List<Record>>(DnsRecordType.class));
- }
-
- if (!(recordsMap =
this.nameRecordsMap.get(recordName)).containsKey(recordType)) {
- recordsMap.put(recordType, new ArrayList<Record>());
- }
+ this.nameRecordsMap.putIfAbsent((recordName = (record =
recordConfig.toRecord()).getName()), new EnumMap<>(DnsRecordType.class));

+ (recordsMap =
this.nameRecordsMap.get(recordName)).putIfAbsent(recordType, new
ArrayList<>());
recordsMap.get(recordType).add(record);
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/impl/AbstractToolConverter.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/impl/AbstractToolConverter.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,19 +1,19 @@
package gov.hhs.onc.dcdt.convert.impl;

import gov.hhs.onc.dcdt.beans.impl.AbstractToolBean;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import gov.hhs.onc.dcdt.convert.Converts;
import gov.hhs.onc.dcdt.convert.Converts.Convert;
import gov.hhs.onc.dcdt.convert.ToolConverter;
-import
gov.hhs.onc.dcdt.convert.utils.ToolConversionUtils.IsAssignableConvertiblePredicate;
+import gov.hhs.onc.dcdt.convert.utils.ToolConversionUtils;
import gov.hhs.onc.dcdt.utils.ToolAnnotationUtils;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
import gov.hhs.onc.dcdt.utils.ToolIteratorUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IteratorUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,13 +21,8 @@
import org.springframework.core.convert.TypeDescriptor;

public abstract class AbstractToolConverter extends AbstractToolBean
implements ToolConverter {
- protected static class ConvertAnnotationTransformer extends
AbstractToolTransformer<Convert, ConvertiblePair> {
- public final static ConvertAnnotationTransformer INSTANCE = new
ConvertAnnotationTransformer();
-
- @Override
- protected ConvertiblePair transformInternal(Convert convAnno)
throws Exception {
- return new ConvertiblePair(convAnno.from(), convAnno.to());
- }
+ protected static ConvertiblePair transformConvertAnnotation(Convert
convAnno) {
+ return new ConvertiblePair(convAnno.from(), convAnno.to());
}

protected final static TypeDescriptor TYPE_DESC_BYTE =
TypeDescriptor.valueOf(byte.class);
@@ -77,22 +72,21 @@
@Nullable
@Override
public ConvertiblePair findConvertibleType(@Nullable Object src,
TypeDescriptor srcType, TypeDescriptor targetType) {
- return CollectionUtils.find(this.convTypes, new
IsAssignableConvertiblePredicate(srcType, targetType));
+ return ToolStreamUtils.find(this.convTypes, convType ->
ToolConversionUtils.isAssignable(srcType, targetType, convType));
}

@Override
public boolean matches(TypeDescriptor srcType, TypeDescriptor
targetType) {
- return CollectionUtils.exists(this.convTypes, new
IsAssignableConvertiblePredicate(srcType, targetType));
+ return ToolStreamUtils.exists(this.convTypes, convType ->
ToolConversionUtils.isAssignable(srcType, targetType, convType));
}

@Override
public void afterPropertiesSet() throws Exception {
Class<? extends ToolConverter> convClass = this.getClass();

- ToolCollectionUtils.addAll(this.convTypes, CollectionUtils.collect(
-
ToolCollectionUtils.addAll(ToolAnnotationUtils.findAnnotations(Convert.class,
convClass),
-
IteratorUtils.asIterable(ToolIteratorUtils.chainedArrayIterator(ToolAnnotationUtils.getValues(Converts.class,
Convert[].class, convClass)))),
- ConvertAnnotationTransformer.INSTANCE));
+ ToolCollectionUtils.addAll(this.convTypes, (List<ConvertiblePair>)
(ToolStreamUtils.transform(ToolCollectionUtils.addAll(ToolAnnotationUtils
+ .findAnnotations(Convert.class, convClass),
IteratorUtils.asIterable(ToolIteratorUtils.chainedArrayIterator(ToolAnnotationUtils.getValues(
+ Converts.class, Convert[].class, convClass)))),
AbstractToolConverter::transformConvertAnnotation)));
}

@Nullable
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/utils/ToolConversionUtils.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/utils/ToolConversionUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,35 +1,11 @@
package gov.hhs.onc.dcdt.convert.utils;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolPredicate;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.core.convert.TypeDescriptor;
import
org.springframework.core.convert.converter.GenericConverter.ConvertiblePair;

public abstract class ToolConversionUtils {
- public static class IsAssignableConvertiblePredicate extends
AbstractToolPredicate<ConvertiblePair> {
- private Class<?> srcClass;
- private Class<?> targetClass;
-
- public IsAssignableConvertiblePredicate(ConvertiblePair convType) {
- this(convType.getSourceType(), convType.getTargetType());
- }
-
- public IsAssignableConvertiblePredicate(TypeDescriptor srcType,
TypeDescriptor targetType) {
- this(srcType.getType(), targetType.getType());
- }
-
- public IsAssignableConvertiblePredicate(Class<?> srcClass,
Class<?> targetClass) {
- this.srcClass = srcClass;
- this.targetClass = targetClass;
- }
-
- @Override
- protected boolean evaluateInternal(ConvertiblePair convType)
throws Exception {
- return isAssignable(this.srcClass, this.targetClass, convType);
- }
- }
-
public static boolean isAssignable(ConvertiblePair convType1,
ConvertiblePair convType2) {
return isAssignable(convType1.getSourceType(),
convType1.getTargetType(), convType2);
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyAlgorithmIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyAlgorithmIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -3,7 +3,5 @@
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;

public interface CryptographyAlgorithmIdentifier extends
CryptographyObjectIdentifier {
- public final static String PROP_NAME_ALG_ID = "algId";
-
public AlgorithmIdentifier getAlgorithmId();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,7 +1,5 @@
package gov.hhs.onc.dcdt.crypto;

public interface CryptographyIdentifier {
- public final static String PROP_NAME_ID = "id";
-
public String getId();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyObjectIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyObjectIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -3,7 +3,5 @@
import org.bouncycastle.asn1.ASN1ObjectIdentifier;

public interface CryptographyObjectIdentifier extends
CryptographyIdentifier {
- public final static String PROP_NAME_OID = "oid";
-
public ASN1ObjectIdentifier getOid();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTaggedIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTaggedIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,7 +1,5 @@
package gov.hhs.onc.dcdt.crypto;

public interface CryptographyTaggedIdentifier extends
CryptographyIdentifier {
- public final static String PROP_NAME_TAG = "tag";
-
public int getTag();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTypeIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTypeIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,7 +1,5 @@
package gov.hhs.onc.dcdt.crypto;

public interface CryptographyTypeIdentifier extends CryptographyIdentifier
{
- public final static String PROP_NAME_TYPE = "type";
-
public Class<?> getType();
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/path/impl/CertificatePathResolverImpl.java
Fri Apr 18 03:30:00 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/path/impl/CertificatePathResolverImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,8 +1,6 @@
package gov.hhs.onc.dcdt.crypto.certs.path.impl;

import gov.hhs.onc.dcdt.beans.impl.AbstractToolBean;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolPredicate;
-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import gov.hhs.onc.dcdt.crypto.CryptographyException;
import gov.hhs.onc.dcdt.crypto.DataEncoding;
import gov.hhs.onc.dcdt.crypto.certs.CertificateException;
@@ -19,6 +17,7 @@
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolListUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
@@ -27,9 +26,9 @@
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
+import java.util.stream.Collectors;
import javax.annotation.Nonnegative;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.CollectionUtils;
import org.bouncycastle.asn1.x509.AccessDescription;
import org.bouncycastle.asn1.x509.AuthorityInformationAccess;
import org.bouncycastle.asn1.x509.Extension;
@@ -38,22 +37,12 @@
import org.springframework.beans.factory.annotation.Autowired;

public class CertificatePathResolverImpl extends AbstractToolBean
implements CertificatePathResolver {
- private static class AccessLocationAccessDescriptionTransformer
extends AbstractToolTransformer<AccessDescription, String> {
- public final static AccessLocationAccessDescriptionTransformer
INSTANCE = new AccessLocationAccessDescriptionTransformer();
-
- @Override
- protected String transformInternal(AccessDescription accessDesc)
throws Exception {
- return accessDesc.getAccessLocation().getName().toString();
- }
+ private static String
transformAccessLocationAccessDescription(AccessDescription accessDesc) {
+ return accessDesc.getAccessLocation().getName().toString();
}

- private static class CaIssuersAccessDescriptionPredicate extends
AbstractToolPredicate<AccessDescription> {
- public final static CaIssuersAccessDescriptionPredicate INSTANCE =
new CaIssuersAccessDescriptionPredicate();
-
- @Override
- protected boolean evaluateInternal(AccessDescription accessDesc)
throws Exception {
- return
accessDesc.getAccessMethod().equals(AccessDescription.id_ad_caIssuers);
- }
+ private static boolean hasCaIssuersAccessDescription(AccessDescription
accessDesc) {
+ return
accessDesc.getAccessMethod().equals(AccessDescription.id_ad_caIssuers);
}

private final static Logger LOGGER =
LoggerFactory.getLogger(CertificatePathResolverImpl.class);
@@ -98,9 +87,9 @@
if (certInfo.hasExtension(Extension.authorityInfoAccess)) {
URLConnection issuerAccessLocUrlConn;

- for (String issuerAccessLoc :
CollectionUtils.collect(CollectionUtils.select(
-
ToolArrayUtils.asList(AuthorityInformationAccess.getInstance(certInfo.getExtension(Extension.authorityInfoAccess)).getAccessDescriptions()),
- CaIssuersAccessDescriptionPredicate.INSTANCE),
AccessLocationAccessDescriptionTransformer.INSTANCE)) {
+ for (String issuerAccessLoc :
ToolStreamUtils.stream(ToolArrayUtils.asList(AuthorityInformationAccess.getInstance(certInfo.getExtension(Extension
+ .authorityInfoAccess)).getAccessDescriptions())).filter(CertificatePathResolverImpl::hasCaIssuersAccessDescription).map(
+
CertificatePathResolverImpl::transformAccessLocationAccessDescription).collect(Collectors.toList()))
{
try {
issuerAccessLocUrlConn = new
URL(issuerAccessLoc).openConnection();

issuerAccessLocUrlConn.setConnectTimeout(this.issuerAccessLocUrlConnectTimeout);
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,6 +1,5 @@
package gov.hhs.onc.dcdt.crypto.utils;

-import gov.hhs.onc.dcdt.collections.impl.AbstractToolTransformer;
import gov.hhs.onc.dcdt.crypto.certs.CertificateAltNameType;
import gov.hhs.onc.dcdt.crypto.certs.CertificateException;
import gov.hhs.onc.dcdt.crypto.certs.impl.CertificateSerialNumberImpl;
@@ -8,44 +7,32 @@
import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
-import gov.hhs.onc.dcdt.utils.ToolMapUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.PredicateUtils;
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import org.bouncycastle.asn1.x509.GeneralName;
import org.bouncycastle.asn1.x509.GeneralNames;

public abstract class CertificateNameUtils {
- public static class CertificateAltNameListEntryTransformer extends
AbstractToolTransformer<List<?>, Pair<CertificateAltNameType, GeneralName>>
{
- public final static CertificateAltNameListEntryTransformer
INSTANCE = new CertificateAltNameListEntryTransformer();
+ public static Pair<CertificateAltNameType, GeneralName>
transformCertificateAltNameListEntry(List<?> altNameList) {
+ CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class, ((Integer)
altNameList.get(0)));

- @Nullable
- @Override
- protected Pair<CertificateAltNameType, GeneralName>
transformInternal(List<?> altNameList) throws Exception {
- CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class, ((Integer)
altNameList.get(0)));
-
- return ((altNameType != null) ? new MutablePair<>(altNameType,
new GeneralName(altNameType.getTag(), ((String) altNameList.get(1)))) :
null);
- }
+ return ((altNameType != null) ? new MutablePair<>(altNameType, new
GeneralName(altNameType.getTag(), ((String) altNameList.get(1)))) : null);
}

- public static class CertificateAltNameEntryTransformer extends
AbstractToolTransformer<GeneralName, Pair<CertificateAltNameType,
GeneralName>> {
- public final static CertificateAltNameEntryTransformer INSTANCE =
new CertificateAltNameEntryTransformer();
-
- @Nullable
- @Override
- protected Pair<CertificateAltNameType, GeneralName>
transformInternal(GeneralName altName) throws Exception {
- CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class,
altName.getTagNo());
+ public static Pair<CertificateAltNameType, GeneralName>
transformCertificateAltNameEntry(GeneralName altName) {
+ CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class,
altName.getTagNo());

- return ((altNameType != null) ? new MutablePair<>(altNameType,
altName) : null);
- }
+ return ((altNameType != null) ? new MutablePair<>(altNameType,
altName) : null);
}

@Nullable
@@ -104,17 +91,15 @@

@Nullable
public static Map<CertificateAltNameType, GeneralName>
mapAltNames(@Nullable Collection<List<?>> altNames) {
- return ((altNames != null)
- ? ToolMapUtils.putAll(new
LinkedHashMap<CertificateAltNameType,
GeneralName>(CertificateAltNameType.values().length),
- CollectionUtils.select(CollectionUtils.collect(altNames,
CertificateAltNameListEntryTransformer.INSTANCE),
PredicateUtils.notNullPredicate()))
- : null);
+ return altNames != null ?
ToolStreamUtils.stream(altNames).map(CertificateNameUtils::transformCertificateAltNameListEntry).filter(Objects::nonNull)
+ .collect(Collectors.toMap(Pair::getLeft, Pair::getRight, (a,
b) -> b, LinkedHashMap::new)) : null;
}

@Nullable
public static Map<CertificateAltNameType, GeneralName>
mapAltNames(@Nullable GeneralNames altNames) {
- return ((altNames != null) ? ToolMapUtils.putAll(new
LinkedHashMap<CertificateAltNameType,
GeneralName>(CertificateAltNameType.values().length),
-
CollectionUtils.select(CollectionUtils.collect(ToolArrayUtils.asList(altNames.getNames()),
CertificateAltNameEntryTransformer.INSTANCE),
- PredicateUtils.notNullPredicate())) : null);
+ return altNames != null ?
ToolStreamUtils.stream(ToolArrayUtils.asList(altNames.getNames())).map(
+
CertificateNameUtils::transformCertificateAltNameEntry).filter(Objects::nonNull).collect(Collectors.toMap(Pair::getLeft,
Pair::getRight, (a, b)
+ -> b, LinkedHashMap::new)) : null;
}

@Nullable
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -15,7 +15,6 @@
import java.io.Reader;
import java.io.Writer;
import java.math.BigInteger;
-import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
@@ -111,7 +110,7 @@
public static CertificateFactory
getCertificateFactory(ToolProviderJcaJceHelper provHelper, CertificateType
certType) throws CryptographyException {
try {
return provHelper.createCertificateFactory(certType.getId());
- } catch (CertificateException | NoSuchAlgorithmException e) {
+ } catch (CertificateException e) {
throw new
gov.hhs.onc.dcdt.crypto.certs.CertificateException(String.format(
"Unable to get certificate factory instance for
certificate type (id=%s, providerName=%s).", certType.getId(),
provHelper.getProvider()
.getName()), e);
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
Thu Jan 15 18:38:43 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -5,10 +5,11 @@
import gov.hhs.onc.dcdt.crypto.CryptographyObjectIdentifier;
import gov.hhs.onc.dcdt.crypto.CryptographyTaggedIdentifier;
import gov.hhs.onc.dcdt.crypto.CryptographyTypeIdentifier;
-import gov.hhs.onc.dcdt.utils.ToolClassUtils.IsAssignablePredicate;
+import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolEnumUtils;
import java.security.Provider;
import java.security.Security;
+import java.util.Objects;
import javax.annotation.Nullable;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
@@ -47,27 +48,27 @@

@Nullable
public static <T extends Enum<T> & CryptographyAlgorithmIdentifier> T
findByAlgorithmId(Class<T> enumClass, AlgorithmIdentifier algId) {
- return ToolEnumUtils.findByPropertyValue(enumClass,
CryptographyAlgorithmIdentifier.PROP_NAME_ALG_ID, algId);
+ return ToolEnumUtils.findByPredicate(enumClass, algEnum ->
Objects.equals(algEnum.getAlgorithmId(), algId));
}

@Nullable
public static <T extends Enum<T> & CryptographyObjectIdentifier> T
findByOid(Class<T> enumClass, ASN1ObjectIdentifier oid) {
- return ToolEnumUtils.findByPropertyValue(enumClass,
CryptographyObjectIdentifier.PROP_NAME_OID, oid);
+ return ToolEnumUtils.findByPredicate(enumClass, oidEnum ->
Objects.equals(oidEnum.getOid(), oid));
}

@Nullable
public static <T extends Enum<T> & CryptographyTaggedIdentifier> T
findByTag(Class<T> enumClass, int tag) {
- return ToolEnumUtils.findByPropertyValue(enumClass,
CryptographyTaggedIdentifier.PROP_NAME_TAG, tag);
+ return ToolEnumUtils.findByPredicate(enumClass, tagEnum ->
Objects.equals(tagEnum.getTag(), tag));
}

@Nullable
public static <T extends Enum<T> & CryptographyTypeIdentifier> T
findByType(Class<T> enumClass, Class<?> type) {
- return ToolEnumUtils.findByPropertyValue(enumClass,
CryptographyTypeIdentifier.PROP_NAME_TYPE, new
IsAssignablePredicate<>(type, true, true));
+ return ToolEnumUtils.findByPredicate(enumClass, typeEnum ->
ToolClassUtils.isAssignable(typeEnum.getType(), type, true, true));
}

@Nullable
public static <T extends Enum<T> & CryptographyIdentifier> T
findById(Class<T> enumClass, String id) {
- return ToolEnumUtils.findByPropertyValue(enumClass,
CryptographyIdentifier.PROP_NAME_ID, id);
+ return ToolEnumUtils.findByPredicate(enumClass, idEnum ->
Objects.equals(idEnum.getId(), id));
}

public static void initializeProvider() {
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/X500Utils.java
Thu Jan 23 15:39:04 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/X500Utils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -1,10 +1,13 @@
package gov.hhs.onc.dcdt.crypto.utils;

import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javax.annotation.Nullable;
import org.apache.commons.collections4.list.SetUniqueList;
import org.bouncycastle.asn1.ASN1Encodable;
@@ -35,10 +38,7 @@

public static X500Name buildName(Map<ASN1ObjectIdentifier,
ASN1Encodable> attrMap) {
X500NameBuilder x500NameBuilder = new
X500NameBuilder(BC_X500_NAME_STYLE);
-
- for (ASN1ObjectIdentifier attrOid : attrMap.keySet()) {
- x500NameBuilder.addRDN(attrOid, attrMap.get(attrOid));
- }
+ attrMap.keySet().forEach(attrOid ->
x500NameBuilder.addRDN(attrOid, attrMap.get(attrOid)));

return x500NameBuilder.build();
}
@@ -48,15 +48,8 @@
}

public static Map<ASN1ObjectIdentifier, ASN1Encodable>
mapAttributes(Iterable<RDN> rdns) {
- Map<ASN1ObjectIdentifier, ASN1Encodable> attrMap = new
LinkedHashMap<>();
-
- for (RDN rdn : rdns) {
- for (AttributeTypeAndValue attr : rdn.getTypesAndValues()) {
- attrMap.put(attr.getType(), attr.getValue());
- }
- }
-
- return attrMap;
+ return ToolStreamUtils.stream(rdns).flatMap(rdn ->
Stream.of(rdn.getTypesAndValues())).collect(Collectors.toMap(AttributeTypeAndValue::getType,
+ AttributeTypeAndValue::getValue, (a, b) -> b,
LinkedHashMap::new));
}

@Nullable
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/dao/impl/AbstractToolBeanDao.java
Mon Mar 24 00:21:31 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/dao/impl/AbstractToolBeanDao.java
Thu Apr 2 21:24:55 2015 UTC
@@ -9,8 +9,8 @@
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolListUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.io.Serializable;
-import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import javax.annotation.Resource;
@@ -107,14 +107,7 @@

@Override
public List<T> loadBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansLoaded = new ArrayList<>();
-
- for (T bean : beans) {
- beansLoaded.add(this.loadBean(session, bean));
- }
-
- return beansLoaded;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.loadBean(this.getCheckedSession(), bean));
}

@Override
@@ -130,14 +123,7 @@

@Override
public List<T> refreshBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansRefreshed = new ArrayList<>();
-
- for (T bean : beans) {
- beansRefreshed.add(this.refreshBean(session, bean));
- }
-
- return beansRefreshed;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.refreshBean(this.getCheckedSession(), bean));
}

@Override
@@ -153,14 +139,7 @@

@Override
public List<T> setBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansSet = new ArrayList<>();
-
- for (T bean : beans) {
- beansSet.add(this.setBean(session, bean));
- }
-
- return beansSet;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.setBean(this.getCheckedSession(), bean));
}

@Override
@@ -176,14 +155,7 @@

@Override
public List<T> addBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansAdded = new ArrayList<>();
-
- for (T bean : beans) {
- beansAdded.add(this.addBean(session, bean));
- }
-
- return beansAdded;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.addBean(this.getCheckedSession(), bean));
}

@Override
@@ -199,14 +171,7 @@

@Override
public List<T> updateBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansUpdated = new ArrayList<>();
-
- for (T bean : beans) {
- beansUpdated.add(this.updateBean(session, bean));
- }
-
- return beansUpdated;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.updateBean(this.getCheckedSession(), bean));
}

@Override
@@ -227,14 +192,7 @@

@Override
public List<T> removeBeans(Iterable<T> beans) throws
ToolBeanDataAccessException {
- Session session = this.getCheckedSession();
- List<T> beansRemoved = new ArrayList<>();
-
- for (T bean : beans) {
- beansRemoved.add(this.removeBean(session, bean));
- }
-
- return beansRemoved;
+ return (List<T>) ToolStreamUtils.transform(beans, bean ->
this.removeBean(this.getCheckedSession(), bean));
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanDataInterceptor.java
Thu Jan 23 15:39:04 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanDataInterceptor.java
Thu Apr 2 21:24:55 2015 UTC
@@ -4,4 +4,5 @@
import org.hibernate.EmptyInterceptor;

public abstract class AbstractToolBeanDataInterceptor extends
EmptyInterceptor implements ToolBeanDataInterceptor {
+ protected final static long serialVersionUID = 0L;
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanEntityInterceptor.java
Thu Jan 23 15:39:04 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanEntityInterceptor.java
Thu Apr 2 21:24:55 2015 UTC
@@ -12,6 +12,7 @@

@SuppressWarnings({ "SpringJavaAutowiringInspection" })
public abstract class AbstractToolBeanEntityInterceptor<T extends
ToolBean> extends AbstractToolBeanDataInterceptor implements
ToolBeanEntityInterceptor<T> {
+ protected final static long serialVersionUID = 0L;
protected int order = Ordered.LOWEST_PRECEDENCE;
protected Class<T> beanEntityClass;

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/CompositeBeanEntityInterceptor.java
Sat Feb 8 18:10:52 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/CompositeBeanEntityInterceptor.java
Thu Apr 2 21:24:55 2015 UTC
@@ -21,9 +21,7 @@

@Override
public void onDelete(Object entity, Serializable id, Object[] state,
String[] propertyNames, Type[] types) {
- for (ToolBeanEntityInterceptor<? extends ToolBean>
beanEntityInterceptor : this.beanEntityInterceptors) {
- beanEntityInterceptor.onDelete(entity, id, state,
propertyNames, types);
- }
+ this.beanEntityInterceptors.forEach(beanEntityInterceptor ->
beanEntityInterceptor.onDelete(entity, id, state, propertyNames, types));
}

@Override
@@ -50,21 +48,16 @@

@Override
public void afterTransactionBegin(Transaction tx) {
- for (ToolBeanEntityInterceptor<? extends ToolBean>
beanEntityInterceptor : beanEntityInterceptors) {
- beanEntityInterceptor.afterTransactionBegin(tx);
- }
+ this.beanEntityInterceptors.forEach(beanEntityInterceptor ->
beanEntityInterceptor.afterTransactionBegin(tx));
}

@Override
public void afterTransactionCompletion(Transaction tx) {
- for (ToolBeanEntityInterceptor<? extends ToolBean>
beanEntityInterceptor : beanEntityInterceptors) {
- beanEntityInterceptor.afterTransactionCompletion(tx);
- }
+ this.beanEntityInterceptors.forEach(beanEntityInterceptor ->
beanEntityInterceptor.afterTransactionCompletion(tx));
}

@Autowired(required = false)
private void setBeanEntityInterceptors(@Nullable
List<ToolBeanEntityInterceptor<? extends ToolBean>> beanEntityInterceptors)
{
- this.beanEntityInterceptors =
- ToolCollectionUtils.addAll(new
PriorityOrderedQueue<ToolBeanEntityInterceptor<? extends ToolBean>>(),
beanEntityInterceptors);
+ this.beanEntityInterceptors = ToolCollectionUtils.addAll(new
PriorityOrderedQueue<>(), beanEntityInterceptors);
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/LoggingBeanEntityInterceptor.java
Sat Feb 8 18:10:52 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/LoggingBeanEntityInterceptor.java
Thu Apr 2 21:24:55 2015 UTC
@@ -4,6 +4,7 @@
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolStringUtils;
import java.io.Serializable;
+import java.util.stream.IntStream;
import org.hibernate.Transaction;
import org.hibernate.type.Type;
import org.slf4j.Logger;
@@ -68,13 +69,6 @@
}

private static String[] getTypeNames(Type[] types) {
- int numTypes = types.length;
- String[] typeNames = new String[numTypes];
-
- for (int a = 0; a < numTypes; a++) {
- typeNames[a] = types[a].getName();
- }
-
- return typeNames;
+ return IntStream.range(0, types.length).mapToObj(a ->
types[a].getName()).toArray(String[]::new);
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/impl/ToolLocalSessionFactoryBean.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/impl/ToolLocalSessionFactoryBean.java
Thu Apr 2 21:24:55 2015 UTC
@@ -43,9 +43,7 @@
@Override
@SuppressWarnings({ "ConstantConditions" })
protected SessionFactory
buildSessionFactory(LocalSessionFactoryBuilder localSessionFactoryBuilder) {
- for (ToolUserType<?, ?, ?, ?> userType : this.userTypes) {
- localSessionFactoryBuilder.registerTypeOverride(userType,
userType.getKeys());
- }
+ this.userTypes.forEach(userType ->
localSessionFactoryBuilder.registerTypeOverride(userType,
userType.getKeys()));

return super.buildSessionFactory(localSessionFactoryBuilder);
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/utils/ToolRestrictionsUtils.java
Thu Jan 23 15:39:04 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/utils/ToolRestrictionsUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -7,9 +7,7 @@
public abstract class ToolRestrictionsUtils {
public static DetachedCriteria addAll(DetachedCriteria
detachedCriteria, @Nullable Iterable<Criterion> criterions) {
if (criterions != null) {
- for (Criterion criterion : criterions) {
- detachedCriteria.add(criterion);
- }
+ criterions.forEach(detachedCriteria::add);
}

return detachedCriteria;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/DnsLookupStep.java
Fri Apr 18 03:30:00 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/DnsLookupStep.java
Thu Apr 2 21:24:55 2015 UTC
@@ -5,8 +5,8 @@
import gov.hhs.onc.dcdt.dns.DnsResultType;
import gov.hhs.onc.dcdt.dns.lookup.DnsLookupResult;
import gov.hhs.onc.dcdt.dns.lookup.DnsLookupService;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.Record;

public interface DnsLookupStep<T extends Record> extends LookupStep<T,
DnsResultType, DnsLookupResult<T>, DnsLookupService> {
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/AbstractDnsLookupStep.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/AbstractDnsLookupStep.java
Thu Apr 2 21:24:55 2015 UTC
@@ -14,8 +14,8 @@
import gov.hhs.onc.dcdt.mail.ToolMailAddressException;
import gov.hhs.onc.dcdt.utils.ToolStringUtils;
import java.util.List;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/DnsCertRecordLookupStepImpl.java
Mon Jun 23 13:21:03 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/DnsCertRecordLookupStepImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -9,9 +9,10 @@
import gov.hhs.onc.dcdt.discovery.BindingType;
import gov.hhs.onc.dcdt.discovery.steps.CertificateDiscoveryStep;
import gov.hhs.onc.dcdt.discovery.steps.dns.DnsCertRecordLookupStep;
+import gov.hhs.onc.dcdt.dns.DnsCertificateType;
import gov.hhs.onc.dcdt.dns.DnsRecordType;
import gov.hhs.onc.dcdt.dns.lookup.DnsLookupService;
-import
gov.hhs.onc.dcdt.dns.utils.ToolDnsRecordUtils.CertRecordParameterPredicate;
+import gov.hhs.onc.dcdt.dns.utils.ToolDnsRecordUtils;
import gov.hhs.onc.dcdt.mail.MailAddress;
import java.util.ArrayList;
import java.util.List;
@@ -23,7 +24,8 @@
private List<CertificateInfo> certInfos;

public DnsCertRecordLookupStepImpl(BindingType bindingType,
DnsLookupService lookupService) {
- super(bindingType, lookupService, DnsRecordType.CERT,
CERTRecord.class, CertRecordParameterPredicate.INSTANCE_PKIX);
+ super(bindingType, lookupService, DnsRecordType.CERT,
CERTRecord.class, certRecord ->
ToolDnsRecordUtils.hasCertRecordParameter(certRecord,
+ DnsCertificateType.PKIX));
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
Wed May 7 21:01:36 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -8,6 +8,7 @@
import gov.hhs.onc.dcdt.discovery.steps.CertificateValidationStep;
import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
@@ -28,7 +29,7 @@

@Override
public boolean execute(List<CertificateDiscoveryStep> prevSteps,
MailAddress directAddr) {
- for (CertificateLookupStep<?, ?, ?, ?> certLookupStep :
CollectionUtils.collect(prevSteps, new
ToolCollectionUtils.AssignableTransformer<>(
+ for (CertificateLookupStep<?, ?, ?, ?> certLookupStep :
ToolStreamUtils.transform(prevSteps, obj ->
ToolCollectionUtils.transformAssignable(obj,
CertificateLookupStep.class))) {
if (certLookupStep != null && certLookupStep.isSuccess() &&
certLookupStep.hasCertificateInfos()) {
Pair<Boolean, List<String>> certInfoValidationResultPair;
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsCodeIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsCodeIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -3,8 +3,6 @@
import javax.annotation.Nonnegative;

public interface DnsCodeIdentifier {
- public final static String PROP_NAME_CODE = "code";
-
@Nonnegative
public int getCode();
}
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsIdentifier.java Mon
Jun 23 06:12:33 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsIdentifier.java Thu
Apr 2 21:24:55 2015 UTC
@@ -1,7 +1,5 @@
package gov.hhs.onc.dcdt.dns;

public interface DnsIdentifier {
- public final static String PROP_NAME_ID = "id";
-
public String getId();
}
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsJavaOptions.java Fri
Apr 18 03:30:00 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsJavaOptions.java Thu
Apr 2 21:24:55 2015 UTC
@@ -17,10 +17,7 @@
Options.clear();

if (!MapUtils.isEmpty(optMap)) {
- // noinspection ConstantConditions
- for (String optName : optMap.keySet()) {
- Options.set(optName, optMap.get(optName));
- }
+ optMap.keySet().forEach(optName -> Options.set(optName,
optMap.get(optName)));
}
}
}
=======================================
--- /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsKeyAlgorithmType.java
Thu Oct 9 08:50:08 2014 UTC
+++ /dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsKeyAlgorithmType.java
Thu Apr 2 21:24:55 2015 UTC
@@ -16,8 +16,6 @@
Algorithm.RSA_NSEC3_SHA1), RSASHA256(Algorithm.RSASHA256),
RSASHA512(Algorithm.RSASHA512), ECDSAP256SHA256(Algorithm.ECDSAP256SHA256),
ECDSAP384SHA384(
Algorithm.ECDSAP384SHA384), INDIRECT(Algorithm.INDIRECT),
PRIVATEDNS(Algorithm.PRIVATEDNS), PRIVATEOID(Algorithm.PRIVATEOID);

- public final static String PROP_NAME_SIG_ALG = "signatureAlgorithm";
-
private final int code;
private final String id;
private SignatureAlgorithm sigAlg;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsNameLabelIdentifier.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsNameLabelIdentifier.java
Thu Apr 2 21:24:55 2015 UTC
@@ -3,7 +3,5 @@
import org.xbill.DNS.Name;

public interface DnsNameLabelIdentifier extends DnsIdentifier {
- public final static String PROP_NAME_NAME_LBL = "nameLabel";
-
public Name getNameLabel() throws DnsNameException;
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/impl/DnsMessageFormatter.java
Mon Jun 23 13:21:03 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/impl/DnsMessageFormatter.java
Thu Apr 2 21:24:55 2015 UTC
@@ -14,6 +14,7 @@
import java.util.EnumSet;
import java.util.Locale;
import java.util.Set;
+import java.util.stream.Stream;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@@ -118,9 +119,7 @@
strBuilder.append(PREFIX_SEC);
strBuilder.append(((op != DnsMessageOpcode.UPDATE) ?
sec.getIdDisplay() : sec.getIdUpdateDisplay()));

- for (Record record : obj.getSectionArray(secCode)) {
- printRecord(strBuilder, sec, record);
- }
+ Stream.of(obj.getSectionArray(secCode)).forEach(record ->
printRecord(strBuilder, sec, record));
}

return strBuilder.build();
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupResult.java
Fri Apr 18 03:30:00 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupResult.java
Thu Apr 2 21:24:55 2015 UTC
@@ -4,8 +4,8 @@
import gov.hhs.onc.dcdt.dns.DnsRecordType;
import gov.hhs.onc.dcdt.dns.DnsResultType;
import java.util.List;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupService.java
Thu Oct 2 12:23:45 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupService.java
Thu Apr 2 21:24:55 2015 UTC
@@ -8,8 +8,8 @@
import gov.hhs.onc.dcdt.dns.DnsServiceProtocol;
import gov.hhs.onc.dcdt.dns.DnsServiceType;
import java.util.Set;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.ARecord;
import org.xbill.DNS.CERTRecord;
import org.xbill.DNS.CNAMERecord;
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupResultImpl.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupResultImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -8,13 +8,14 @@
import gov.hhs.onc.dcdt.dns.utils.ToolDnsUtils;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
+import gov.hhs.onc.dcdt.utils.ToolStreamUtils;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IteratorUtils;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.Lookup;
import org.xbill.DNS.Name;
import org.xbill.DNS.Record;
@@ -62,11 +63,9 @@
List<Record> rawAnswers;
List<T> answers =
(this.isSuccess() ?
ToolCollectionUtils.collectAssignable(this.recordClass,
- new ArrayList<T>(CollectionUtils.size((rawAnswers =
this.getRawAnswers()))), rawAnswers) : null);
+ new ArrayList<>(CollectionUtils.size((rawAnswers =
this.getRawAnswers()))), rawAnswers) : null);

- CollectionUtils.filter(answers, this.recordPredicate);
-
- return answers;
+ return ToolCollectionUtils.nullIfEmpty((List<T>)
ToolStreamUtils.filter(answers, this.recordPredicate));
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupServiceImpl.java
Thu Oct 2 12:23:45 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupServiceImpl.java
Thu Apr 2 21:24:55 2015 UTC
@@ -10,12 +10,12 @@
import gov.hhs.onc.dcdt.dns.lookup.DnsLookupResult;
import gov.hhs.onc.dcdt.dns.lookup.DnsLookupService;
import gov.hhs.onc.dcdt.dns.utils.ToolDnsNameUtils;
-import
gov.hhs.onc.dcdt.dns.utils.ToolDnsRecordUtils.CertRecordParameterPredicate;
+import gov.hhs.onc.dcdt.dns.utils.ToolDnsRecordUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
import java.util.Set;
+import java.util.function.Predicate;
import javax.annotation.Nullable;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.collections4.Predicate;
import org.xbill.DNS.ARecord;
import org.xbill.DNS.CERTRecord;
import org.xbill.DNS.CNAMERecord;
@@ -49,7 +49,8 @@
@Override
public DnsLookupResult<CERTRecord> lookupCertRecords(@Nullable
DnsCertificateType certType, @Nullable Set<DnsKeyAlgorithmType>
keyAlgTypes, Name name)
throws DnsException {
- return this.lookupRecords(DnsRecordType.CERT, CERTRecord.class,
name, new CertRecordParameterPredicate(certType, keyAlgTypes));
+ return this.lookupRecords(DnsRecordType.CERT, CERTRecord.class,
name, certRecord -> ToolDnsRecordUtils.hasCertRecordParameter(certRecord,
+ certType, keyAlgTypes));
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsMessageUtils.java
Tue Nov 4 19:42:30 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsMessageUtils.java
Thu Apr 2 21:24:55 2015 UTC
@@ -123,9 +123,7 @@

public static Message addRecords(Message msg, DnsMessageSection
section, @Nullable Iterable<? extends Record> records) {
if (records != null) {
- for (Record record : records) {
- msg.addRecord(record, section.getCode());
- }
+ records.forEach(record -> msg.addRecord(record,
section.getCode()));
}

return msg;
@@ -137,9 +135,7 @@

public static Message removeRecords(Message msg, DnsMessageSection
section, @Nullable Iterable<? extends Record> records) {
if (records != null) {
- for (Record record : records) {
- msg.removeRecord(record, section.getCode());
- }
+ records.forEach(record -> msg.removeRecord(record,
section.getCode()));
}

return msg;
@@ -193,12 +189,8 @@
OPTRecord optRecord = msg.getOPT();
Set<DnsMessageFlag> flags = EnumSet.noneOf(DnsMessageFlag.class);

- for (DnsMessageFlag flag : EnumSet.allOf(DnsMessageFlag.class)) {
- if ((!flag.isExtended() && header.getFlag(flag.getCode()))
- || (flag.isExtended() && (optRecord != null) &&
((optRecord.getFlags() & flag.getCode()) != 0))) {
- flags.add(flag);
- }
- }
+ EnumSet.allOf(DnsMessageFlag.class).stream().filter(flag ->
(!flag.isExtended() && header.getFlag(flag.getCode())) || (flag.isExtended()
+ && (optRecord != null) && ((optRecord.getFlags() &
flag.getCode()) != 0))).forEach(flags::add);

return flags;
}
=======================================
***Additional files exist in this changeset.***

==============================================================================
Revision: 8cfe60bb0354
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 15 13:19:57 2015 UTC
Log: - Supports DCDT-249, DCDT-309, DCDT-310, DCDT-312
- Upgraded Maven dependencies, including those for Clover, Bouncy Castle,
Spring Framework, Spring Security, and Maven plugin versions
- Fixed 508-compliance issues (added document language and alt text for
logo)
- Fixed issue where address-bound certificates without an rfc822Name and
domain-bound certificates without a dNSName in the subjectAltName extension
are considered valid
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=8cfe60bb0354

Modified:

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtils.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
/dcdt-core/src/test/resources/META-INF/core/core-test.properties
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml
/dcdt-parent/pom.xml
/dcdt-service-parent/pom.xml
/dcdt-web/src/main/resources/META-INF/spring/spring-web-security.xml
/dcdt-web/src/main/webapp/WEB-INF/views/include/nav.jsp
/dcdt-web/src/main/webapp/WEB-INF/views/layout.jsp
/pom.xml

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Wed May 21 19:44:24 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Fri May 15 13:19:57 2015 UTC
@@ -23,7 +23,12 @@
MailAddress directAddr = certValidInfo.getDirectAddress(),
directAddrBound, certSubjAltNameDirectAddr, certSubjDnDirectAddr;

// noinspection ConstantConditions
- if (certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME)) {
+ if (!certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME)
&& !certSubjName.hasAltName(CertificateAltNameType.DNS_NAME)) {
+ // noinspection ConstantConditions
+ throw new CertificateException(String.format(
+ "Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension does not contain a rfc822Name or a dNSName",
+ certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName()));
+ } else if
(certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME)) {
// noinspection ConstantConditions
certSubjAltNameDirectAddr = new
MailAddressImpl(certSubjName.getAltName(CertificateAltNameType.RFC822_NAME).getName().toString());
// noinspection ConstantConditions
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateUtils.java
Fri May 15 13:19:57 2015 UTC
@@ -15,7 +15,6 @@
import java.io.Reader;
import java.io.Writer;
import java.math.BigInteger;
-import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
@@ -111,7 +110,7 @@
public static CertificateFactory
getCertificateFactory(ToolProviderJcaJceHelper provHelper, CertificateType
certType) throws CryptographyException {
try {
return provHelper.createCertificateFactory(certType.getId());
- } catch (CertificateException | NoSuchAlgorithmException e) {
+ } catch (CertificateException e) {
throw new
gov.hhs.onc.dcdt.crypto.certs.CertificateException(String.format(
"Unable to get certificate factory instance for
certificate type (id=%s, providerName=%s).", certType.getId(),
provHelper.getProvider()
.getName()), e);
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtils.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtils.java
Fri May 15 13:19:57 2015 UTC
@@ -56,6 +56,7 @@
import org.bouncycastle.cms.CMSSignerDigestMismatchException;
import org.bouncycastle.cms.KeyTransRecipientId;
import org.bouncycastle.cms.KeyTransRecipientInformation;
+import org.bouncycastle.cms.RecipientInformation;
import org.bouncycastle.cms.SignerId;
import org.bouncycastle.cms.SignerInformation;
import org.bouncycastle.cms.SignerInformationVerifier;
@@ -91,14 +92,14 @@
public abstract class ToolSmimeUtils {
@SuppressWarnings({ "unchecked" })
public static Map<SignerId, CertificateInfo>
verifySignatures(SMIMESigned signed) throws MessagingException {
- Store signedCerts = signed.getCertificates();
+ Store<X509CertificateHolder> signedCerts =
(Store<X509CertificateHolder>) signed.getCertificates();
JcaSimpleSignerInfoVerifierBuilder signerInfoVerifierBuilder = new
JcaSimpleSignerInfoVerifierBuilder().setProvider(CryptographyUtils.PROVIDER);
Map<SignerId, SignerInformation> signerInfoMap =
mapSigners(signed);
Map<SignerId, CertificateInfo> signerCertMap = new
LinkedHashMap<>(signerInfoMap.size());
SignerInformation signerInfo = null;

for (SignerId signerId : signerInfoMap.keySet()) {
- for (X509CertificateHolder certHolder :
((Collection<X509CertificateHolder>) signedCerts.getMatches(signerId))) {
+ for (X509CertificateHolder certHolder :
signedCerts.getMatches(signerId)) {
try {
try {
SignerInformationVerifier verifier =
signerInfoVerifierBuilder.build(certHolder);
@@ -175,7 +176,7 @@

@SuppressWarnings({ "unchecked" })
public static Map<SignerId, SignerInformation> mapSigners(SMIMESigned
signed) throws MessagingException {
- Collection<SignerInformation> signerInfos =
((Collection<SignerInformation>) signed.getSignerInfos().getSigners());
+ Collection<SignerInformation> signerInfos =
signed.getSignerInfos().getSigners();
Map<SignerId, SignerInformation> signerInfoMap = new
LinkedHashMap<>(signerInfos.size());

for (SignerInformation signerInfo : signerInfos) {
@@ -258,18 +259,19 @@
@SuppressWarnings({ "unchecked" })
public static Map<KeyTransRecipientId, KeyTransRecipientInformation>
mapRecipients(ToolMimeMessageHelper msgHelper, SMIMEEnveloped enveloped)
throws MessagingException {
- Collection<KeyTransRecipientInformation> recipientInfos =
((Collection<KeyTransRecipientInformation>)
enveloped.getRecipientInfos().getRecipients());
+ Collection<RecipientInformation> recipientInfos =
enveloped.getRecipientInfos().getRecipients();
Map<KeyTransRecipientId, KeyTransRecipientInformation>
recipientInfoMap = new LinkedHashMap<>(recipientInfos.size());
KeyTransRecipientId recipientId;
X500Name recipientIssuer;
BigInteger recipientSerialNum;

- for (KeyTransRecipientInformation recipientInfo : recipientInfos) {
+ for (RecipientInformation recipientInfo : recipientInfos) {
recipientIssuer = (recipientId = ((KeyTransRecipientId)
recipientInfo.getRID())).getIssuer();
recipientSerialNum = recipientId.getSerialNumber();

try {
- recipientInfoMap.put(new JceKeyTransRecipientId(new
X500Principal(recipientIssuer.getEncoded()), recipientSerialNum),
recipientInfo);
+ recipientInfoMap.put(new JceKeyTransRecipientId(new
X500Principal(recipientIssuer.getEncoded()), recipientSerialNum),
+ (KeyTransRecipientInformation) recipientInfo);
} catch (IOException e) {
throw new ToolSmimeException(String.format(
"Unable to map mail MIME message (id=%s, from=%s,
to=%s) enveloped content (type=%s) recipient (issuer={%s}, serialNum=%s).",
msgHelper
=======================================
---
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
Sun Apr 6 03:15:28 2014 UTC
+++
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
Fri May 15 13:19:57 2015 UTC
@@ -1,16 +1,36 @@
package gov.hhs.onc.dcdt.crypto.certs;

import gov.hhs.onc.dcdt.crypto.certs.impl.CertificateNameImpl;
+import gov.hhs.onc.dcdt.crypto.credentials.CredentialConfig;
+import gov.hhs.onc.dcdt.crypto.credentials.CredentialInfo;
+import gov.hhs.onc.dcdt.crypto.credentials.impl.CredentialInfoImpl;
+import gov.hhs.onc.dcdt.crypto.keys.KeyGenerator;
+import gov.hhs.onc.dcdt.crypto.keys.KeyInfo;
+import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.test.impl.AbstractToolUnitTests;
+import java.util.List;
+import javax.annotation.Nullable;
import javax.annotation.Resource;
+import org.apache.commons.lang3.tuple.Pair;
import org.bouncycastle.asn1.x500.X500Name;
+import org.bouncycastle.asn1.x509.GeneralNames;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

-@Test(dependsOnGroups = { "dcdt.test.unit.crypto.keys.all" }, groups =
{ "dcdt.test.unit.crypto.all", "dcdt.test.unit.crypto.certs.all",
- "dcdt.test.unit.crypto.certs.name" })
+@Test(dependsOnGroups =
{ "dcdt.test.unit.crypto.keys.all", "dcdt.test.unit.crypto.certs.gen" },
+ groups =
{ "dcdt.test.unit.crypto.all", "dcdt.test.unit.crypto.certs.all", "dcdt.test.unit.crypto.certs.name"
})
public class CertificateNameUnitTests extends AbstractToolUnitTests {
+ @Autowired
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private KeyGenerator keyGen;
+
+ @Autowired
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CertificateGenerator certGen;
+
@Value("${dcdt.test.crypto.subject.x500.name.ca.1}")
private X500Name testCertSubjX500NameCa1;

@@ -31,18 +51,105 @@
@Resource(name = "testCertConfigDomain1")
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
private CertificateConfig testCertConfigDomain1;
+
+ @Resource(name = "testCredConfigCa1")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigCa1;
+
+ @Resource(name = "testCredConfigAddr1")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigAddr1;
+
+ @Resource(name = "testCredConfigAddr2")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigAddr2;
+
+ @Resource(name = "testCredConfigDomain1")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigDomain1;
+
+ @Resource(name = "testCertConfigAddr1SubjAltName")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private GeneralNames subjAltNamesAddr1;
+
+ @Resource(name = "testCertConfigDomain1SubjAltName")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private GeneralNames subjAltNamesDomain1;
+
+ @Value("${dcdt.test.instance.direct.addr.1}")
+ private MailAddress testDirectAddr1;
+
+ @Value("${dcdt.test.instance.direct.addr.2}")
+ private MailAddress testDirectAddr2;
+
+ private CertificateInfo testCertInfoAddr1;
+ private CertificateInfo testCertInfoAddr2;
+ private CertificateInfo testCertInfoDomain1;
+
+ @Autowired
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CertificateInfoValidator certInfoValidator;
+
+ @BeforeClass
+ public void setupCertificateInfos() throws Exception {
+ KeyInfo testCa1KeyPairInfo =
this.keyGen.generateKeys(this.testCredConfigCa1.getKeyDescriptor());
+ CredentialInfo testCredInfoCa1 =
+ new CredentialInfoImpl(testCa1KeyPairInfo,
this.certGen.generateCertificate(testCa1KeyPairInfo,
this.testCredConfigCa1.getCertificateDescriptor()));
+
+ this.testCertInfoAddr1 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr1);
+ this.testCertInfoAddr2 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr2);
+ this.testCertInfoDomain1 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain1);
+ }

@Test
public void testX500Name() throws Exception {
- assertCertificateSubjectsMatch(this.testCertConfigCa1,
this.testCertSubjX500NameCa1);
- assertCertificateSubjectsMatch(this.testCertConfigAddr1,
this.testCertSubjX500NameAddr1);
- assertCertificateSubjectsMatch(this.testCertConfigDomain1,
this.testCertSubjX500NameDomain1);
+ assertCertificateSubjectsMatch(this.testCertConfigCa1,
this.testCertSubjX500NameCa1, null);
+ assertCertificateSubjectsMatch(this.testCertConfigAddr1,
this.testCertSubjX500NameAddr1, this.subjAltNamesAddr1);
+ assertCertificateSubjectsMatch(this.testCertConfigDomain1,
this.testCertSubjX500NameDomain1, this.subjAltNamesDomain1);
}

- private static void assertCertificateSubjectsMatch(CertificateConfig
testCertConfig, X500Name testCertSubjX500Name) throws Exception {
+ @Test
+ public void testRfc822NamePresentInAddressBoundCertificate() throws
Exception {
+ assertCertificateSubjectAltNameValues(this.testDirectAddr1,
this.testCertInfoAddr1);
+ }
+
+ @Test
+ public void testDNSNamePresentInDomainBoundCertificate() throws
Exception {
+ assertCertificateSubjectAltNameValues(this.testDirectAddr1,
this.testCertInfoDomain1);
+ }
+
+ @Test
+ public void testNoRfc822OrDNSNamePresentInCertificate() throws
Exception {
+ // noinspection ConstantConditions
+
Assert.assertFalse(this.testCertInfoAddr2.getSubjectName().hasAltNames(), "Certificate
has subject alternative names.");
+
+ Pair<Boolean, List<String>> result =
this.certInfoValidator.validate(this.testDirectAddr2,
this.testCertInfoAddr2);
+ List<String> errorMsgs = result.getRight();
+
+ Assert.assertFalse(result.getLeft(), "Certificate is valid.");
+ Assert.assertEquals(errorMsgs.size(), 1,
String.format("Certificate validation result has %d error messages.",
errorMsgs.size()));
+ Assert.assertTrue(errorMsgs.get(0).contains("subjectAltName X509v3
extension does not contain a rfc822Name or a dNSName"),
+ "subjectAltName X509v3 extension contains a rfc822Name or a
dNSName.");
+ }
+
+ private CertificateInfo generateCertificateInfo(CredentialInfo
credInfoCa, CredentialConfig credConfig) throws Exception {
+ return this.certGen.generateCertificate(credInfoCa,
this.keyGen.generateKeys(credConfig.getKeyDescriptor()),
credConfig.getCertificateDescriptor());
+ }
+
+ private static void assertCertificateSubjectsMatch(CertificateConfig
testCertConfig, X500Name testCertSubjX500Name, @Nullable GeneralNames
generalNames)
+ throws Exception {
CertificateName testCertSubj = testCertConfig.getSubjectName();

Assert.assertNotNull(testCertSubj, "Certificate subject is null.");
- Assert.assertEquals(testCertSubj, new
CertificateNameImpl(testCertSubjX500Name), "Certificate subjects do not
match.");
+ Assert.assertEquals(testCertSubj, new
CertificateNameImpl(generalNames, testCertSubjX500Name), "Certificate
subjects do not match.");
+ }
+
+ private void assertCertificateSubjectAltNameValues(MailAddress
directAddr, CertificateInfo certInfo) throws Exception {
+ // noinspection ConstantConditions
+
Assert.assertTrue(certInfo.getSubjectName().hasAltNames(), "Certificate
does not have subject alternative names.");
+
+ Pair<Boolean, List<String>> result =
this.certInfoValidator.validate(directAddr, certInfo);
+ Assert.assertTrue(result.getLeft(), "Certificate is invalid.");
+ Assert.assertEquals(result.getRight().size(), 0, "Certificate
validation result has error messages.");
}
}
=======================================
--- /dcdt-core/src/test/resources/META-INF/core/core-test.properties Wed
Oct 22 14:12:48 2014 UTC
+++ /dcdt-core/src/test/resources/META-INF/core/core-test.properties Fri
May 15 13:19:57 2015 UTC
@@ -20,6 +20,8 @@

dcdt.test.instance.domain.rm.name=domain-rm.${dcdt.test.instance.domain.name}

dcdt.test.instance.domain.1.name=domain-test1.${dcdt.test.instance.domain.name}
dcdt.test.instance.ip.addr=127.0.0.1
+dcdt.test.instance.direct.addr.1=addr1@${dcdt.test.instance.domain.1.name}
+dcdt.test.instance.direct.addr.2=addr2@${dcdt.test.instance.domain.1.name}


#====================================================================================================
# INSTANCE DNS
@@ -116,6 +118,7 @@

#====================================================================================================

dcdt.test.crypto.subject.x500.name.ca.1=CN=${dcdt.test.instance.domain.name}_ca

dcdt.test.crypto.subject.x500.name.addr.1=E=addr1@${dcdt.test.instance.domain.1.name},CN=addr1@${dcdt.test.instance.domain.1.name}
+dcdt.test.crypto.subject.x500.name.addr.2=E=addr2@${dcdt.test.instance.domain.1.name},CN=addr2@${dcdt.test.instance.domain.1.name}

dcdt.test.crypto.subject.x500.name.domain.1=E=${dcdt.test.instance.domain.1.name},CN=${dcdt.test.instance.domain.1.name}


#====================================================================================================
=======================================
---
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml
Sun Apr 6 03:15:28 2014 UTC
+++
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml
Fri May 15 13:19:57 2015 UTC
@@ -40,21 +40,43 @@
<beans:bean id="testCertConfigAddr1" parent="testCertConfig">
<beans:property name="subjectName">
<beans:bean parent="certNameImpl"
- c:x500Name="${dcdt.test.crypto.subject.x500.name.addr.1}"/>
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.addr.1}"
+ c:altNames-ref="testCertConfigAddr1SubjAltName"/>
</beans:property>
</beans:bean>
+ <beans:bean id="testCertConfigAddr1SubjAltName"
class="org.bouncycastle.asn1.x509.GeneralName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).rfc822Name }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.direct.addr.1}"/>
+ </beans:bean>
<!--suppress InjectionValueTypeInspection -->
<beans:bean id="testCredConfigAddr1" parent="credConfigImpl"
p:certificateDescriptor-ref="testCertConfigAddr1"
p:keyDescriptor-ref="testKeyPairConfigAddr1"/>
-
+
+ <beans:bean id="testKeyPairConfigAddr2" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigAddr2" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.addr.2}"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigAddr2" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigAddr2"
+ p:keyDescriptor-ref="testKeyPairConfigAddr2"/>
+
<beans:bean id="testKeyConfigDomain1" parent="testKeyConfig"/>
<beans:bean id="testCertConfigDomain1" parent="testCertConfig">
<beans:property name="subjectName">
<beans:bean parent="certNameImpl"
-
c:x500Name="${dcdt.test.crypto.subject.x500.name.domain.1}"/>
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.domain.1}"
+ c:altNames-ref="testCertConfigDomain1SubjAltName"/>
</beans:property>
</beans:bean>
+ <beans:bean id="testCertConfigDomain1SubjAltName"
class="org.bouncycastle.asn1.x509.GeneralName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).dNSName }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.domain.1.name}"/>
+ </beans:bean>
<!--suppress InjectionValueTypeInspection -->
<beans:bean id="testCredConfigDomain1" parent="credConfigImpl"
p:certificateDescriptor-ref="testCertConfigDomain1"
=======================================
--- /dcdt-parent/pom.xml Thu Jan 15 18:38:43 2015 UTC
+++ /dcdt-parent/pom.xml Fri May 15 13:19:57 2015 UTC
@@ -178,12 +178,12 @@
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
- <version>1.1.2</version>
+ <version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
- <version>1.1.2</version>
+ <version>1.1.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
@@ -317,7 +317,7 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.3.2</version>
+ <version>3.4</version>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
@@ -398,22 +398,22 @@
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
- <version>1.51</version>
+ <version>1.52</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
- <version>1.51</version>
+ <version>1.52</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
- <version>1.51</version>
+ <version>1.52</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
- <version>2.7.7</version>
+ <version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
@@ -459,52 +459,52 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
- <version>1.7.10</version>
+ <version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
- <version>1.7.10</version>
+ <version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
- <version>1.7.10</version>
+ <version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
- <version>1.7.10</version>
+ <version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
@@ -519,29 +519,29 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
- <version>3.2.5.RELEASE</version>
+ <version>4.0.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@@ -560,13 +560,13 @@
<dependency>
<groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
- <version>4.0.2</version>
+ <version>4.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
- <version>2.44.0</version>
+ <version>2.45.0</version>
<scope>test</scope>
<exclusions>
<exclusion>
@@ -582,13 +582,13 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
- <version>6.8.13</version>
+ <version>6.8.21</version>
<scope>test</scope>
</dependency>
</dependencies>
@@ -631,7 +631,7 @@
<dependency>
<groupId>com.atlassian.clover</groupId>
<artifactId>clover</artifactId>
- <version>4.0.2</version>
+ <version>4.0.3</version>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
@@ -682,7 +682,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>3.2</version>
+ <version>3.3</version>
<inherited>true</inherited>
<configuration>
<compilerArgs combine.children="append">
@@ -762,7 +762,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
- <version>2.5</version>
+ <version>2.6</version>
<inherited>true</inherited>
<executions>
<execution>
@@ -1199,7 +1199,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
- <version>2.5</version>
+ <version>2.6</version>
<inherited>true</inherited>
<configuration>
<archiveClasses>true</archiveClasses>
@@ -1255,12 +1255,12 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.3.2</version>
+ <version>3.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
- <version>2.7.7</version>
+ <version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
@@ -1299,12 +1299,12 @@
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
- <version>2.44.0</version>
+ <version>2.45.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
- <version>2.44.0</version>
+ <version>2.45.0</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
@@ -1315,12 +1315,12 @@
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
- <version>2.44.0</version>
+ <version>2.45.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
- <version>2.44.0</version>
+ <version>2.45.0</version>
</dependency>
</dependencies>
</plugin>
@@ -1694,7 +1694,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
- <version>3.3</version>
+ <version>3.4</version>
<inherited>true</inherited>
<executions>
<execution>
@@ -1720,12 +1720,12 @@
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
- <version>4.0.2</version>
+ <version>4.0.3</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
- <version>2.13</version>
+ <version>2.15</version>
<configuration>
<consoleOutput>true</consoleOutput>
<failsOnError>true</failsOnError>
@@ -1748,7 +1748,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
- <version>3.3</version>
+ <version>3.4</version>
<configuration>
<includeTests>true</includeTests>
<includeXmlInSite>true</includeXmlInSite>
@@ -1833,7 +1833,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
- <version>2.10.1</version>
+ <version>2.10.2</version>
<configuration>
<additionalJOptions>

<additionalJOption>-J-XX:PermSize=64m</additionalJOption>
=======================================
--- /dcdt-service-parent/pom.xml Thu Jan 15 18:38:43 2015 UTC
+++ /dcdt-service-parent/pom.xml Fri May 15 13:19:57 2015 UTC
@@ -49,12 +49,12 @@
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
- <version>5.10.0</version>
+ <version>5.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
- <version>5.10.0</version>
+ <version>5.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
@@ -318,7 +318,7 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
- <version>4.1.3.RELEASE</version>
+ <version>4.1.6.RELEASE</version>
</dependency>
<dependency>
<groupId>tanukisoft</groupId>
=======================================
--- /dcdt-web/src/main/resources/META-INF/spring/spring-web-security.xml
Thu Jun 19 03:01:11 2014 UTC
+++ /dcdt-web/src/main/resources/META-INF/spring/spring-web-security.xml
Fri May 15 13:19:57 2015 UTC
@@ -58,6 +58,7 @@
= HTTP SECURITY

=====================================================================================================-->
<sec:http authentication-manager-ref="authManager"
use-expressions="true">
+ <sec:csrf disabled="true"/>
<sec:intercept-url pattern="/admin/login**" access="permitAll"/>
<sec:intercept-url pattern="/admin/logout**" access="permitAll"/>
<sec:intercept-url pattern="/admin**" access="hasAuthority('#{
T(gov.hhs.onc.dcdt.web.security.WebSecurityRoles).ADMIN }')"/>
=======================================
--- /dcdt-web/src/main/webapp/WEB-INF/views/include/nav.jsp Tue Apr 29
00:09:36 2014 UTC
+++ /dcdt-web/src/main/webapp/WEB-INF/views/include/nav.jsp Fri May 15
13:19:57 2015 UTC
@@ -12,7 +12,7 @@
<div class="container">
<div class="navbar-header">
<a href="${urlHome}" class="navbar-brand">
- <img src="${urlStaticImages}/dcdt-logo-32x32.png"/>
+ <img src="${urlStaticImages}/dcdt-logo-32x32.png"
alt="DCDT logo"/>
<strong><spring:message code="dcdt.web.title"/></strong>
</a>
</div>
=======================================
--- /dcdt-web/src/main/webapp/WEB-INF/views/layout.jsp Fri May 2 21:53:01
2014 UTC
+++ /dcdt-web/src/main/webapp/WEB-INF/views/layout.jsp Fri May 15 13:19:57
2015 UTC
@@ -10,7 +10,7 @@
<%@page contentType="text/html; charset=UTF-8" isELIgnored="false"
pageEncoding="UTF-8" %>
<dcdt:htmlcleaner>
<!DOCTYPE html>
- <html>
+ <html lang="en">
<head>
<tiles:insertAttribute name="head-common"/>
<tiles:insertAttribute name="head" ignore="true"/>
=======================================
--- /pom.xml Thu Jan 15 18:38:43 2015 UTC
+++ /pom.xml Fri May 15 13:19:57 2015 UTC
@@ -210,7 +210,7 @@
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
- <version>4.0.2</version>
+ <version>4.0.3</version>
<inherited>false</inherited>
<executions>
<execution>

==============================================================================
Revision: d4aca6ae687e
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 15 14:01:47 2015 UTC
Log: - Merge heads in default branch
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=d4aca6ae687e

Deleted:
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Function.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/Predicate.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolStreamUtils.java
Modified:
/code-formatter-java.xml
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/ToolResultBean.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/factory/xml/impl/ToolNamespaceHandlerImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanFactoryUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolPredicate.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/collections/ToolTransformer.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/concurrent/impl/AbstractToolListenableFutureTask.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/config/instance/impl/InstanceDnsConfigImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/impl/AbstractToolConverter.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/convert/utils/ToolConversionUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyAlgorithmIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyObjectIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTaggedIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/CryptographyTypeIdentifier.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/path/impl/CertificatePathResolverImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CryptographyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/X500Utils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/dao/impl/AbstractToolBeanDao.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanDataInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/AbstractToolBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/CompositeBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/events/impl/LoggingBeanEntityInterceptor.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/impl/ToolLocalSessionFactoryBean.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/data/utils/ToolRestrictionsUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/DnsLookupStep.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/AbstractDnsLookupStep.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/dns/impl/DnsCertRecordLookupStepImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsCodeIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsJavaOptions.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsKeyAlgorithmType.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/DnsNameLabelIdentifier.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/impl/DnsMessageFormatter.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupResult.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/DnsLookupService.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupResultImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/lookup/impl/DnsLookupServiceImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsMessageUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsNameUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordOrderUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsResolverUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/format/impl/ToolFormatterRegistrarImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonDeserializer.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ConvertingJsonSerializer.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/json/impl/ToolObjectMapper.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/ldap/utils/ToolLdapAttributeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeContentTypeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/ToolMimeMessageHelper.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/utils/ToolMimePartUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/mime/utils/ToolMimeTypeUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/sockets/impl/AbstractSocketListener.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/sockets/impl/AbstractTcpSocketListener.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/net/utils/ToolInetAddressUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/DiscoveryTestcase.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/credentials/DiscoveryTestcaseCredential.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseProcessorImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/impl/DiscoveryTestcaseRegistryImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/discovery/mail/DiscoveryTestcaseMailMapping.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/hosting/HostingTestcase.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/results/ToolTestcaseResultJsonDto.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/testcases/results/impl/AbstractToolTestcaseResult.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolAnnotationUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolArrayUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolClassUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolCollectionUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolEnumUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolIteratorUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolListUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolMapUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolMessageUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolOrderUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolPropertyUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolRegexUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolResourceUtils.java
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/utils/ToolValidationUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/validation/impl/ToolValidatorFactory.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/velocity/impl/ToolVelocityEngineFactoryBean.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/beans/utils/ToolBeanPropertyUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/compress/utils/ArchiveUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/dns/utils/ToolDnsRecordOrderUtilsUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/ldap/lookup/LdapLookupServiceUnitTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/mail/crypto/utils/ToolSmimeUtilsFunctionalTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/testcases/discovery/mail/DiscoveryTestcaseMailMappingFunctionalTests.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/testcases/hosting/HostingTestcaseProcessorFunctionalTests.java
/dcdt-parent/pom.xml

/dcdt-service-core/src/main/java/gov/hhs/onc/dcdt/service/wrapper/impl/AbstractToolServiceWrapper.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/config/impl/DnsServerConfigImpl.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/impl/DnsServiceImpl.java

/dcdt-service-dns/src/main/java/gov/hhs/onc/dcdt/service/dns/server/impl/DnsServerRequestProcessorImpl.java

/dcdt-service-dns/src/test/java/gov/hhs/onc/dcdt/service/dns/DnsServiceFunctionalTests.java

/dcdt-service-ldap/src/main/java/gov/hhs/onc/dcdt/service/ldap/config/impl/ToolDirectoryServiceBean.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/impl/MailServiceImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolDnsServiceImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolDomainListImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/impl/ToolUsersRepositoryImpl.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/mailet/impl/AbstractToolMailet.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/mailet/impl/ProcessDiscoveryTestcaseMailet.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/matcher/impl/AbstractToolMatcher.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/matcher/impl/RecipientIsDiscoveryTestcaseMatcher.java

/dcdt-service-mail/src/main/java/gov/hhs/onc/dcdt/service/mail/james/utils/ToolJamesUtils.java

/dcdt-service-mail/src/test/java/gov/hhs/onc/dcdt/service/mail/MailServiceFunctionalTests.java
/dcdt-service-parent/pom.xml

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/controller/impl/AdminController.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/controller/impl/DiscoveryController.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/filter/impl/MutableFilterConfig.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/handler/impl/ExceptionHandlerExceptionResolverBeanPostProcessor.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/handler/impl/RequestMappingHandlerAdapterBeanPostProcessor.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/json/impl/ResponseJsonWrapperBuilder.java

/dcdt-web/src/main/java/gov/hhs/onc/dcdt/web/media/utils/ToolMediaTypeUtils.java
/dcdt-web/src/main/webapp/WEB-INF/views/include/head.jsp
/dcdt-web/src/main/webapp/static/styles/web.css

=======================================
***Additional files exist in this changeset.***

==============================================================================
Revision: 2623e23000af
Branch: default
Author: Elizab...@esacinc.com
Date: Tue May 19 16:30:04 2015 UTC
Log: - Supports DCDT-312 (subject alt name validator only considers
one value for each GeneralName)
- Refactor CertificateName to allow for multiple subjectAltName values in
an rfc822Name and dNSName.
- Changed subject alt name validator algorithm to consider certificates
with multiple subjectAltName values in a rfc822Name and/or dNSName as valid
if at least one of the rfc822Name values matches the Direct address
(address-bound certificate) or one of the dNSName values matches the domain
(domain-bound certificate). A message is displayed if multiple
subjectAltName values are present.
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=2623e23000af

Modified:
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/CertificateName.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateNameImpl.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java

/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
/dcdt-core/src/test/resources/META-INF/core/core-test.properties
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/CertificateName.java
Tue Apr 1 19:19:58 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/CertificateName.java
Tue May 19 16:30:04 2015 UTC
@@ -3,6 +3,7 @@
import gov.hhs.onc.dcdt.beans.ToolBean;
import gov.hhs.onc.dcdt.mail.MailAddress;
import java.security.Principal;
+import java.util.Set;
import java.util.SortedMap;
import javax.annotation.Nullable;
import javax.security.auth.x500.X500Principal;
@@ -46,9 +47,9 @@
public boolean hasAltName(CertificateAltNameType altNameType);

@Nullable
- public GeneralName getAltName(CertificateAltNameType altNameType);
+ public Set<GeneralName> getAltNames(CertificateAltNameType
altNameType);

- public void setAltName(GeneralName altName);
+ public void setAltNames(Set<GeneralName> altName);

public boolean hasAltNames();

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Fri May 15 13:19:57 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Tue May 19 16:30:04 2015 UTC
@@ -13,6 +13,7 @@
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.lang3.StringUtils;
import org.bouncycastle.asn1.x500.style.BCStyle;
+import org.bouncycastle.asn1.x509.GeneralName;

public class CertificateInfoSubjectAltNamesConstraintValidator extends
AbstractCertificateInfoConstraintValidator<CertificateInfoSubjectAltNames> {
@Override
@@ -20,45 +21,57 @@
CertificateInfo certInfo = certValidInfo.getCertificateInfo();
X509Certificate cert = certInfo.getCertificate();
CertificateName certSubjName = certInfo.getSubjectName();
- MailAddress directAddr = certValidInfo.getDirectAddress(),
directAddrBound, certSubjAltNameDirectAddr, certSubjDnDirectAddr;
+ MailAddress directAddr = certValidInfo.getDirectAddress(),
directAddrBound = null, certSubjAltNameDirectAddr, certSubjDnDirectAddr;

// noinspection ConstantConditions
if (!certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME)
&& !certSubjName.hasAltName(CertificateAltNameType.DNS_NAME)) {
// noinspection ConstantConditions
throw new CertificateException(String.format(
"Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension does not contain a rfc822Name or a dNSName",
- certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName()));
- } else if
(certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME)) {
+ certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName()));
+ }
+
+ if (certSubjName.hasAltName(CertificateAltNameType.RFC822_NAME) &&
(directAddrBound = directAddr.forBindingType(BindingType.ADDRESS)) != null)
{
// noinspection ConstantConditions
- certSubjAltNameDirectAddr = new
MailAddressImpl(certSubjName.getAltName(CertificateAltNameType.RFC822_NAME).getName().toString());
+ for (GeneralName altName :
certSubjName.getAltNames(CertificateAltNameType.RFC822_NAME)) {
+ if
(StringUtils.equalsIgnoreCase((certSubjAltNameDirectAddr = new
MailAddressImpl(altName.getName().toString())).toAddress(),
+ directAddrBound.toAddress())) {
+ if (certSubjName.hasAttribute(BCStyle.EmailAddress)
&& !StringUtils.equalsIgnoreCase(certSubjAltNameDirectAddr.toAddress(),
+ (certSubjDnDirectAddr = new
MailAddressImpl(certSubjName.getAttributeValueString(BCStyle.EmailAddress))).toAddress()))
{
+ // noinspection ConstantConditions
+ throw new CertificateException(String.format(
+ "Certificate (subj={%s}, serialNum=%s,
issuer={%s}) subjectAltName X509v3 extension rf822Name value does not match
subject Distinguished Name EmailAddress value: %s != %s",
+ certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), certSubjAltNameDirectAddr,
certSubjDnDirectAddr));
+ }
+
+ return true;
+ }
+ }
+ }
+
+ // noinspection ConstantConditions
+ if (certSubjName.hasAltName(CertificateAltNameType.DNS_NAME)) {
+ directAddrBound =
directAddr.forBindingType(BindingType.DOMAIN);
// noinspection ConstantConditions
- if ((directAddrBound =
directAddr.forBindingType(BindingType.ADDRESS)) == null
- |
| !StringUtils.equalsIgnoreCase(certSubjAltNameDirectAddr.toAddress(),
directAddrBound.toAddress())) {
+ for (GeneralName altName :
certSubjName.getAltNames(CertificateAltNameType.DNS_NAME)) {
// noinspection ConstantConditions
- throw new CertificateException(String.format(
- "Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension rfc822Name value does not match: %s != %s",
- certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), certSubjAltNameDirectAddr,
directAddrBound));
- } else if (certSubjName.hasAttribute(BCStyle.EmailAddress)
-
&& !StringUtils.equalsIgnoreCase(certSubjAltNameDirectAddr.toAddress(),
- (certSubjDnDirectAddr = new
MailAddressImpl(certSubjName.getAttributeValueString(BCStyle.EmailAddress))).toAddress()))
{
- // noinspection ConstantConditions
- throw new CertificateException(
- String
- .format(
- "Certificate (subj={%s}, serialNum=%s,
issuer={%s}) subjectAltName X509v3 extension rfc822Name value does not
match subject Distinguished Name EmailAddress value: %s != %s",
- certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), certSubjAltNameDirectAddr,
certSubjDnDirectAddr));
+ if (StringUtils.equalsIgnoreCase(new
MailAddressImpl(altName.getName().toString()).toAddress(),
directAddrBound.toAddress())) {
+ return true;
+ }
}
- } else // noinspection ConstantConditions
- if (certSubjName.hasAltName(CertificateAltNameType.DNS_NAME)
- && !StringUtils.equalsIgnoreCase((certSubjAltNameDirectAddr =
- new
MailAddressImpl(certSubjName.getAltName(CertificateAltNameType.DNS_NAME).getName().toString())).toAddress(),
- (directAddrBound =
directAddr.forBindingType(BindingType.DOMAIN)).toAddress())) {
+ }
+
+ // noinspection ConstantConditions
+ if (directAddrBound.getBindingType() == BindingType.ADDRESS) {
+ // noinspection ConstantConditions
+ throw new CertificateException(String.format(
+ "Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension does not contain a rfc822Name value == %s",
+ certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), directAddrBound));
+ } else {
// noinspection ConstantConditions
throw new CertificateException(String.format(
- "Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension dNSName value does not match: %s != %s",
certSubjName,
- certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), certSubjAltNameDirectAddr,
directAddrBound));
+ "Certificate (subj={%s}, serialNum=%s, issuer={%s})
subjectAltName X509v3 extension does not contain a dNSName value == %s",
+ certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), directAddrBound));
}
-
- return true;
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateNameImpl.java
Mon Jun 23 06:12:33 2014 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateNameImpl.java
Tue May 19 16:30:04 2015 UTC
@@ -12,9 +12,11 @@
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.annotation.Nullable;
@@ -33,7 +35,7 @@
private final static List<ASN1ObjectIdentifier> ATTR_OIDS_ORDER =
ToolArrayUtils.asList(BCStyle.EmailAddress, BCStyle.CN);

private SortedMap<ASN1ObjectIdentifier, ASN1Encodable> attrMap = new
TreeMap<>(new OrderedOidComparator(ATTR_OIDS_ORDER));
- private Map<CertificateAltNameType, GeneralName> altNameMap;
+ private Map<CertificateAltNameType, Set<GeneralName>> altNameMap;

public CertificateNameImpl() {
this(null, ((Iterable<RDN>) null));
@@ -146,10 +148,10 @@

// noinspection ConstantConditions
return (((this.hasAltName(CertificateAltNameType.RFC822_NAME)
&& !StringUtils.isBlank((mailAddrStr =
-
Objects.toString(this.getAltName(CertificateAltNameType.RFC822_NAME).getName(),
null))))
+
Objects.toString(this.getAltNames(CertificateAltNameType.RFC822_NAME).iterator().next().getName(),
null))))
|| (this.hasAttribute(BCStyle.EmailAddress)
&& !StringUtils.isBlank((mailAddrStr =
this.getAttributeValueString(BCStyle.EmailAddress)))) || (this
.hasAltName(CertificateAltNameType.DNS_NAME)
&& !StringUtils.isBlank((mailAddrStr =
-
Objects.toString(this.getAltName(CertificateAltNameType.DNS_NAME).getName(),
null))))) ? new MailAddressImpl(mailAddrStr) : null);
+
Objects.toString(this.getAltNames(CertificateAltNameType.DNS_NAME).iterator().next().getName(),
null))))) ? new MailAddressImpl(mailAddrStr) : null);
}

@Override
@@ -165,27 +167,27 @@

@Override
public boolean hasAltName(CertificateAltNameType altNameType) {
- return (this.hasAltNames() &&
this.altNameMap.containsKey(altNameType));
+ return (this.hasAltNames() &&
this.altNameMap.containsKey(altNameType) &&
this.altNameMap.get(altNameType) != null);
}

@Nullable
@Override
- public GeneralName getAltName(CertificateAltNameType altNameType) {
+ public Set<GeneralName> getAltNames(CertificateAltNameType
altNameType) {
return (this.hasAltName(altNameType) ?
this.altNameMap.get(altNameType) : null);
}

@Override
- public void setAltName(GeneralName altName) {
- CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class,
altName.getTagNo());
+ public void setAltNames(Set<GeneralName> altNames) {
+ CertificateAltNameType altNameType =
CryptographyUtils.findByTag(CertificateAltNameType.class,
altNames.iterator().next().getTagNo());

if (altNameType == null) {
return;
}

if (!this.hasAltNames()) {
- this.setAltNames(new GeneralNames(altName));
+ this.setAltNames(new
GeneralNames(ToolCollectionUtils.toArray(new ArrayList<>(altNames),
GeneralName.class)));
} else {
- this.altNameMap.put(altNameType, altName);
+ this.altNameMap.put(altNameType, altNames);
}
}

@@ -197,7 +199,8 @@
@Nullable
@Override
public GeneralNames getAltNames() {
- return (this.hasAltNames() ? new
GeneralNames(ToolCollectionUtils.toArray(this.altNameMap.values(),
GeneralName.class)) : null);
+ return (this.hasAltNames() ? new GeneralNames(
+ ToolCollectionUtils.toArray(ToolCollectionUtils.addAll(new
ArrayList<GeneralName>(), this.altNameMap.values()), GeneralName.class)) :
null);
}

@Override
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java
Fri May 15 14:01:47 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/utils/CertificateNameUtils.java
Tue May 19 16:30:04 2015 UTC
@@ -8,13 +8,15 @@
import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.utils.ToolArrayUtils;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
-import gov.hhs.onc.dcdt.utils.ToolMapUtils;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.annotation.Nullable;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.PredicateUtils;
@@ -56,17 +58,19 @@
return altNames;
}

- Map<CertificateAltNameType, GeneralName> altNameMap =
mapAltNames(altNames);
+ Map<CertificateAltNameType, Set<GeneralName>> altNameMap =
mapAltNames(altNames);
+ Set<GeneralName> generalNames = new HashSet<>();

if (altNameMap == null) {
altNameMap = new LinkedHashMap<>();
}

if (mailAddrBindingType.isAddressBound()) {
- altNameMap.put(CertificateAltNameType.RFC822_NAME,
- new
GeneralName(CertificateAltNameType.RFC822_NAME.getTag(),
mailAddr.toAddress(mailAddrBindingType)));
+ generalNames.add(new
GeneralName(CertificateAltNameType.RFC822_NAME.getTag(),
mailAddr.toAddress(mailAddrBindingType)));
+ altNameMap.put(CertificateAltNameType.RFC822_NAME,
generalNames);
} else {
- altNameMap.put(CertificateAltNameType.DNS_NAME, new
GeneralName(CertificateAltNameType.DNS_NAME.getTag(),
mailAddr.toAddress(mailAddrBindingType)));
+ generalNames.add(new
GeneralName(CertificateAltNameType.DNS_NAME.getTag(),
mailAddr.toAddress(mailAddrBindingType)));
+ altNameMap.put(CertificateAltNameType.DNS_NAME, generalNames);
}

return buildAltNames(altNameMap);
@@ -78,7 +82,7 @@
}

@Nullable
- public static Map<CertificateAltNameType, GeneralName>
mapIssuerAltNames(X509Certificate cert) throws CertificateException {
+ public static Map<CertificateAltNameType, Set<GeneralName>>
mapIssuerAltNames(X509Certificate cert) throws CertificateException {
try {
return mapAltNames(cert.getIssuerAlternativeNames());
} catch (CertificateParsingException e) {
@@ -93,7 +97,7 @@
}

@Nullable
- public static Map<CertificateAltNameType, GeneralName>
mapSubjectAltNames(X509Certificate cert) throws CertificateException {
+ public static Map<CertificateAltNameType, Set<GeneralName>>
mapSubjectAltNames(X509Certificate cert) throws CertificateException {
try {
return mapAltNames(cert.getSubjectAlternativeNames());
} catch (CertificateParsingException e) {
@@ -103,22 +107,38 @@
}

@Nullable
- public static Map<CertificateAltNameType, GeneralName>
mapAltNames(@Nullable Collection<List<?>> altNames) {
- return ((altNames != null)
- ? ToolMapUtils.putAll(new
LinkedHashMap<CertificateAltNameType,
GeneralName>(CertificateAltNameType.values().length),
- CollectionUtils.select(CollectionUtils.collect(altNames,
CertificateAltNameListEntryTransformer.INSTANCE),
PredicateUtils.notNullPredicate()))
- : null);
+ public static Map<CertificateAltNameType, Set<GeneralName>>
mapAltNames(@Nullable Collection<List<?>> altNames) {
+ return (altNames != null) ? mapAltNamePairs(
+ CollectionUtils.select(CollectionUtils.collect(altNames,
CertificateAltNameListEntryTransformer.INSTANCE),
PredicateUtils.notNullPredicate()))
+ : null;
}

@Nullable
- public static Map<CertificateAltNameType, GeneralName>
mapAltNames(@Nullable GeneralNames altNames) {
- return ((altNames != null) ? ToolMapUtils.putAll(new
LinkedHashMap<CertificateAltNameType,
GeneralName>(CertificateAltNameType.values().length),
+ public static Map<CertificateAltNameType, Set<GeneralName>>
mapAltNames(@Nullable GeneralNames altNames) {
+ return ((altNames != null) ? mapAltNamePairs(

CollectionUtils.select(CollectionUtils.collect(ToolArrayUtils.asList(altNames.getNames()),
CertificateAltNameEntryTransformer.INSTANCE),
PredicateUtils.notNullPredicate())) : null);
}
+
+ public static Map<CertificateAltNameType, Set<GeneralName>>
mapAltNamePairs(Collection<Pair<CertificateAltNameType, GeneralName>>
pairs) {
+ Map<CertificateAltNameType, Set<GeneralName>> altNameMap = new
LinkedHashMap<>(CertificateAltNameType.values().length);
+
+ for (Pair<CertificateAltNameType, GeneralName> pair : pairs) {
+ CertificateAltNameType certAltNameType = pair.getLeft();
+
+ if (!altNameMap.containsKey(certAltNameType)) {
+ altNameMap.put(certAltNameType, new
HashSet<GeneralName>());
+ }
+
+ altNameMap.get(certAltNameType).add(pair.getRight());
+ }
+
+ return altNameMap;
+ }

@Nullable
- public static GeneralNames buildAltNames(@Nullable
Map<CertificateAltNameType, GeneralName> altNameMap) {
- return ((altNameMap != null) ? new
GeneralNames(ToolCollectionUtils.toArray(altNameMap.values(),
GeneralName.class)) : null);
+ public static GeneralNames buildAltNames(@Nullable
Map<CertificateAltNameType, Set<GeneralName>> altNameMap) {
+ return ((altNameMap != null) ? new
GeneralNames(ToolCollectionUtils.toArray(
+ ToolCollectionUtils.addAll(new ArrayList<GeneralName>(),
altNameMap.values()), GeneralName.class)) : null);
}
}
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
Fri May 15 14:01:47 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/discovery/steps/impl/CertificateValidationStepImpl.java
Tue May 19 16:30:04 2015 UTC
@@ -1,18 +1,22 @@
package gov.hhs.onc.dcdt.discovery.steps.impl;

+import gov.hhs.onc.dcdt.crypto.certs.CertificateException;
import gov.hhs.onc.dcdt.crypto.certs.CertificateInfo;
import gov.hhs.onc.dcdt.crypto.certs.CertificateInfoValidator;
+import gov.hhs.onc.dcdt.crypto.certs.CertificateName;
import gov.hhs.onc.dcdt.discovery.BindingType;
import gov.hhs.onc.dcdt.discovery.steps.CertificateDiscoveryStep;
import gov.hhs.onc.dcdt.discovery.steps.CertificateLookupStep;
import gov.hhs.onc.dcdt.discovery.steps.CertificateValidationStep;
import gov.hhs.onc.dcdt.mail.MailAddress;
import gov.hhs.onc.dcdt.utils.ToolCollectionUtils;
+import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.tuple.Pair;
+import org.bouncycastle.asn1.x509.GeneralNames;
import org.springframework.beans.factory.annotation.Autowired;

public class CertificateValidationStepImpl extends
AbstractCertificateDiscoveryStep implements CertificateValidationStep {
@@ -38,6 +42,23 @@
for (CertificateInfo certInfo :
certLookupStep.getCertificateInfos()) {
this.execMsgs.addAll((certInfoValidationResultPair =
this.certInfoValidator.validate(directAddr, certInfo)).getRight());

+ if (certInfoValidationResultPair.getLeft()) {
+ try {
+ X509Certificate cert =
certInfo.getCertificate();
+ CertificateName certSubjName =
certInfo.getSubjectName();
+ // noinspection ConstantConditions
+ GeneralNames altNames =
certInfo.getSubjectName().getAltNames();
+
+ if (altNames != null &&
altNames.getNames().length > 1) {
+ // noinspection ConstantConditions
+ this.execMsgs.add(String.format(
+ "Certificate (subj={%s}, serialNum=%s,
issuer={%s}) subjectAltName X509v3 extension contains multiple rfc822
and/or dNSName values.",
+ certSubjName,
certInfo.getSerialNumber(), cert.getIssuerX500Principal().getName()));
+ }
+ } catch (CertificateException e) {
+ }
+ }
+
if (certInfoValidationResultPair.getLeft()) {
this.validCertInfo = certInfo;
} else {
=======================================
---
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
Fri May 15 13:19:57 2015 UTC
+++
/dcdt-core/src/test/java/gov/hhs/onc/dcdt/crypto/certs/CertificateNameUnitTests.java
Tue May 19 16:30:04 2015 UTC
@@ -64,17 +64,37 @@
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
private CredentialConfig testCredConfigAddr2;

+ @Resource(name = "testCredConfigAddr3")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigAddr3;
+
+ @Resource(name = "testCredConfigAddr4")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigAddr4;
+
@Resource(name = "testCredConfigDomain1")
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
private CredentialConfig testCredConfigDomain1;

+ @Resource(name = "testCredConfigDomain2")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigDomain2;
+
+ @Resource(name = "testCredConfigDomain3")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigDomain3;
+
+ @Resource(name = "testCredConfigDomain4")
+ @SuppressWarnings({ "SpringJavaAutowiringInspection" })
+ private CredentialConfig testCredConfigDomain4;
+
@Resource(name = "testCertConfigAddr1SubjAltName")
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
- private GeneralNames subjAltNamesAddr1;
+ private GeneralNames testSubjAltNamesAddr1;

@Resource(name = "testCertConfigDomain1SubjAltName")
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
- private GeneralNames subjAltNamesDomain1;
+ private GeneralNames testSubjAltNamesDomain1;

@Value("${dcdt.test.instance.direct.addr.1}")
private MailAddress testDirectAddr1;
@@ -82,54 +102,85 @@
@Value("${dcdt.test.instance.direct.addr.2}")
private MailAddress testDirectAddr2;

- private CertificateInfo testCertInfoAddr1;
- private CertificateInfo testCertInfoAddr2;
- private CertificateInfo testCertInfoDomain1;
+ @Value("${dcdt.test.instance.direct.addr.3}")
+ private MailAddress testDirectAddr3;
+
+ @Value("${dcdt.test.instance.direct.addr.4}")
+ private MailAddress testDirectAddr4;
+
+ @Value("${dcdt.test.instance.domain.1.name}")
+ private MailAddress testDomain1;
+
+ @Value("${dcdt.test.instance.domain.2.name}")
+ private MailAddress testDomain2;
+
+ @Value("${dcdt.test.instance.domain.3.name}")
+ private MailAddress testDomain3;
+
+ @Value("${dcdt.test.instance.domain.4.name}")
+ private MailAddress testDomain4;
+
+ private CredentialInfo testCredInfoCa1;

@Autowired
@SuppressWarnings({ "SpringJavaAutowiringInspection" })
private CertificateInfoValidator certInfoValidator;

@BeforeClass
- public void setupCertificateInfos() throws Exception {
+ public void setupCaCredentialInfo() throws Exception {
KeyInfo testCa1KeyPairInfo =
this.keyGen.generateKeys(this.testCredConfigCa1.getKeyDescriptor());
- CredentialInfo testCredInfoCa1 =
+ this.testCredInfoCa1 =
new CredentialInfoImpl(testCa1KeyPairInfo,
this.certGen.generateCertificate(testCa1KeyPairInfo,
this.testCredConfigCa1.getCertificateDescriptor()));
-
- this.testCertInfoAddr1 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr1);
- this.testCertInfoAddr2 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr2);
- this.testCertInfoDomain1 =
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain1);
}

@Test
public void testX500Name() throws Exception {
assertCertificateSubjectsMatch(this.testCertConfigCa1,
this.testCertSubjX500NameCa1, null);
- assertCertificateSubjectsMatch(this.testCertConfigAddr1,
this.testCertSubjX500NameAddr1, this.subjAltNamesAddr1);
- assertCertificateSubjectsMatch(this.testCertConfigDomain1,
this.testCertSubjX500NameDomain1, this.subjAltNamesDomain1);
+ assertCertificateSubjectsMatch(this.testCertConfigAddr1,
this.testCertSubjX500NameAddr1, this.testSubjAltNamesAddr1);
+ assertCertificateSubjectsMatch(this.testCertConfigDomain1,
this.testCertSubjX500NameDomain1, this.testSubjAltNamesDomain1);
}

@Test
public void testRfc822NamePresentInAddressBoundCertificate() throws
Exception {
- assertCertificateSubjectAltNameValues(this.testDirectAddr1,
this.testCertInfoAddr1);
+ assertCertificateSubjectAltNameValues(this.testDirectAddr1,
this.generateCertificateInfo(this.testCredInfoCa1,
this.testCredConfigAddr1), 1, true);
}

@Test
public void testDNSNamePresentInDomainBoundCertificate() throws
Exception {
- assertCertificateSubjectAltNameValues(this.testDirectAddr1,
this.testCertInfoDomain1);
+ assertCertificateSubjectAltNameValues(this.testDomain1,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain1),
1, true);
}

@Test
public void testNoRfc822OrDNSNamePresentInCertificate() throws
Exception {
- // noinspection ConstantConditions
-
Assert.assertFalse(this.testCertInfoAddr2.getSubjectName().hasAltNames(), "Certificate
has subject alternative names.");
+ assertCertificateSubjectAltNameValues(this.testDirectAddr2,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr2), 0,
false,
+ "subjectAltName X509v3 extension does not contain a rfc822Name
or a dNSName");
+ }
+
+ @Test
+ public void testMultipleRfc822NamesPresentOneMatch() throws Exception {
+ assertCertificateSubjectAltNameValues(this.testDirectAddr3,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr3), 2,
true);
+ }
+
+ @Test
+ public void testMultipleRfc822NamesPresentNoneMatch() throws Exception
{
+ assertCertificateSubjectAltNameValues(this.testDirectAddr4,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigAddr4), 2,
false,
+ String.format("subjectAltName X509v3 extension does not
contain a rfc822Name value == %s", this.testDirectAddr4));
+ }
+
+ @Test
+ public void testMultipleDNSNamesPresentOneMatch() throws Exception {
+ assertCertificateSubjectAltNameValues(this.testDomain2,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain2),
2, true);
+ }

- Pair<Boolean, List<String>> result =
this.certInfoValidator.validate(this.testDirectAddr2,
this.testCertInfoAddr2);
- List<String> errorMsgs = result.getRight();
+ @Test
+ public void testMultipleDNSNamesPresentNoneMatch() throws Exception {
+ assertCertificateSubjectAltNameValues(this.testDomain3,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain3),
2, false,
+ String.format("subjectAltName X509v3 extension does not
contain a dNSName value == %s", this.testDomain3));
+ }

- Assert.assertFalse(result.getLeft(), "Certificate is valid.");
- Assert.assertEquals(errorMsgs.size(), 1,
String.format("Certificate validation result has %d error messages.",
errorMsgs.size()));
- Assert.assertTrue(errorMsgs.get(0).contains("subjectAltName X509v3
extension does not contain a rfc822Name or a dNSName"),
- "subjectAltName X509v3 extension contains a rfc822Name or a
dNSName.");
+ @Test
+ public void testRfc822NameAndDNSNamePresentDNSNameMatch() throws
Exception {
+ assertCertificateSubjectAltNameValues(this.testDomain4,
this.generateCertificateInfo(testCredInfoCa1, this.testCredConfigDomain4),
2, true);
}

private CertificateInfo generateCertificateInfo(CredentialInfo
credInfoCa, CredentialConfig credConfig) throws Exception {
@@ -144,12 +195,34 @@
Assert.assertEquals(testCertSubj, new
CertificateNameImpl(generalNames, testCertSubjX500Name), "Certificate
subjects do not match.");
}

- private void assertCertificateSubjectAltNameValues(MailAddress
directAddr, CertificateInfo certInfo) throws Exception {
- // noinspection ConstantConditions
-
Assert.assertTrue(certInfo.getSubjectName().hasAltNames(), "Certificate
does not have subject alternative names.");
+ private void assertCertificateSubjectAltNameValues(MailAddress
directAddr, CertificateInfo certInfo, int numAltNames, boolean isValidCert,
+ String... errorMsgStrs) throws Exception {
+ CertificateName certName = certInfo.getSubjectName();
+
+ if (numAltNames > 0) {
+ // noinspection ConstantConditions
+ Assert.assertTrue(certName.hasAltNames(), "Certificate does
not have subject alternative names.");
+ // noinspection ConstantConditions
+ Assert.assertEquals(certName.getAltNames().getNames().length,
numAltNames);
+ } else {
+ // noinspection ConstantConditions
+
Assert.assertFalse(certInfo.getSubjectName().hasAltNames(), "Certificate
has subject alternative names.");
+ }

Pair<Boolean, List<String>> result =
this.certInfoValidator.validate(directAddr, certInfo);
- Assert.assertTrue(result.getLeft(), "Certificate is invalid.");
- Assert.assertEquals(result.getRight().size(), 0, "Certificate
validation result has error messages.");
+ List<String> errorMsgs = result.getRight();
+ int errorMsgSize = errorMsgs.size();
+
+ if (isValidCert) {
+ Assert.assertTrue(result.getLeft(), "Certificate is invalid.");
+ Assert.assertEquals(errorMsgSize, 0,
String.format("Certificate validation result has %d error messages.",
errorMsgSize));
+ } else {
+ Assert.assertFalse(result.getLeft(), "Certificate is valid.");
+ Assert.assertEquals(errorMsgSize, 1,
String.format("Certificate validation result has %d error messages.",
errorMsgSize));
+
+ if (errorMsgStrs.length > 0) {
+
Assert.assertTrue(errorMsgs.get(0).contains(errorMsgStrs[0]));
+ }
+ }
}
}
=======================================
--- /dcdt-core/src/test/resources/META-INF/core/core-test.properties Fri
May 15 13:19:57 2015 UTC
+++ /dcdt-core/src/test/resources/META-INF/core/core-test.properties Tue
May 19 16:30:04 2015 UTC
@@ -19,9 +19,14 @@
dcdt.test.instance.domain.name=test.direct-test.com

dcdt.test.instance.domain.rm.name=domain-rm.${dcdt.test.instance.domain.name}

dcdt.test.instance.domain.1.name=domain-test1.${dcdt.test.instance.domain.name}
+dcdt.test.instance.domain.2.name=domain-test2.${dcdt.test.instance.domain.name}
+dcdt.test.instance.domain.3.name=domain-test3.${dcdt.test.instance.domain.name}
+dcdt.test.instance.domain.4.name=domain-test4.${dcdt.test.instance.domain.name}
dcdt.test.instance.ip.addr=127.0.0.1
dcdt.test.instance.direct.addr.1=addr1@${dcdt.test.instance.domain.1.name}
dcdt.test.instance.direct.addr.2=addr2@${dcdt.test.instance.domain.1.name}
+dcdt.test.instance.direct.addr.3=addr3@${dcdt.test.instance.domain.1.name}
+dcdt.test.instance.direct.addr.4=addr4@${dcdt.test.instance.domain.1.name}


#====================================================================================================
# INSTANCE DNS
@@ -119,7 +124,12 @@

dcdt.test.crypto.subject.x500.name.ca.1=CN=${dcdt.test.instance.domain.name}_ca

dcdt.test.crypto.subject.x500.name.addr.1=E=addr1@${dcdt.test.instance.domain.1.name},CN=addr1@${dcdt.test.instance.domain.1.name}

dcdt.test.crypto.subject.x500.name.addr.2=E=addr2@${dcdt.test.instance.domain.1.name},CN=addr2@${dcdt.test.instance.domain.1.name}
+dcdt.test.crypto.subject.x500.name.addr.3=E=addr3@${dcdt.test.instance.domain.1.name},CN=addr3@${dcdt.test.instance.domain.1.name}
+dcdt.test.crypto.subject.x500.name.addr.4=E=addr4@${dcdt.test.instance.domain.1.name},CN=addr4@${dcdt.test.instance.domain.1.name}

dcdt.test.crypto.subject.x500.name.domain.1=E=${dcdt.test.instance.domain.1.name},CN=${dcdt.test.instance.domain.1.name}
+dcdt.test.crypto.subject.x500.name.domain.2=E=${dcdt.test.instance.domain.2.name},CN=${dcdt.test.instance.domain.2.name}
+dcdt.test.crypto.subject.x500.name.domain.3=E=${dcdt.test.instance.domain.3.name},CN=${dcdt.test.instance.domain.3.name}
+dcdt.test.crypto.subject.x500.name.domain.4=E=${dcdt.test.instance.domain.4.name},CN=${dcdt.test.instance.domain.4.name}


#====================================================================================================
# MAIL CRYPTOGRAPHY
=======================================
---
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml
Fri May 15 13:19:57 2015 UTC
+++
/dcdt-core/src/test/resources/META-INF/spring/spring-core-crypto-test.xml
Tue May 19 16:30:04 2015 UTC
@@ -15,6 +15,9 @@
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd">

+
<!--====================================================================================================
+ = CONFIGS
+
=====================================================================================================-->
<beans:bean id="testKeyConfig" parent="keyConfigImpl" abstract="true"
autowire-candidate="false"/>
<beans:bean id="testKeyConfigCa" parent="keyConfigCa" abstract="true"
autowire-candidate="false"/>

@@ -23,7 +26,7 @@

<beans:bean id="testCredConfig" parent="credConfigImpl"
abstract="true" autowire-candidate="false"/>
<beans:bean id="testCredConfigCa" parent="credConfigCa"
abstract="true" autowire-candidate="false"/>
-
+
<beans:bean id="testKeyConfigCa1" parent="testKeyConfigCa"/>
<beans:bean id="testCertConfigCa1" parent="testCertConfigCa">
<beans:property name="subjectName">
@@ -35,7 +38,10 @@
<beans:bean id="testCredConfigCa1" parent="testCredConfigCa"
p:certificateDescriptor-ref="testCertConfigCa1"
p:keyDescriptor-ref="testKeyConfigCa1"/>
-
+
+
<!--====================================================================================================
+ = ONE RFC822NAME VALUE MATCHING DIRECT ADDRESS
+
=====================================================================================================-->
<beans:bean id="testKeyPairConfigAddr1" parent="testKeyConfig"/>
<beans:bean id="testCertConfigAddr1" parent="testCertConfig">
<beans:property name="subjectName">
@@ -44,15 +50,14 @@
c:altNames-ref="testCertConfigAddr1SubjAltName"/>
</beans:property>
</beans:bean>
- <beans:bean id="testCertConfigAddr1SubjAltName"
class="org.bouncycastle.asn1.x509.GeneralName">
- <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).rfc822Name }"/>
- <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.direct.addr.1}"/>
- </beans:bean>
<!--suppress InjectionValueTypeInspection -->
<beans:bean id="testCredConfigAddr1" parent="credConfigImpl"
p:certificateDescriptor-ref="testCertConfigAddr1"
p:keyDescriptor-ref="testKeyPairConfigAddr1"/>

+
<!--====================================================================================================
+ = NO SUBJECT ALTERNATIVE NAME EXTENSION
+
=====================================================================================================-->
<beans:bean id="testKeyPairConfigAddr2" parent="testKeyConfig"/>
<beans:bean id="testCertConfigAddr2" parent="testCertConfig">
<beans:property name="subjectName">
@@ -65,6 +70,41 @@
p:certificateDescriptor-ref="testCertConfigAddr2"
p:keyDescriptor-ref="testKeyPairConfigAddr2"/>

+
<!--====================================================================================================
+ = MULTIPLE RFC822NAME VALUES PRESENT, ONE MATCHING DIRECT ADDRESS
+
=====================================================================================================-->
+ <beans:bean id="testKeyPairConfigAddr3" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigAddr3" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.addr.3}"
+ c:altNames-ref="testCertConfigAddr3SubjAltNames"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigAddr3" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigAddr3"
+ p:keyDescriptor-ref="testKeyPairConfigAddr3"/>
+
+
<!--====================================================================================================
+ = MULTIPLE RFC822NAME VALUES PRESENT, NONE MATCHING DIRECT ADDRESS
+
=====================================================================================================-->
+ <beans:bean id="testKeyPairConfigAddr4" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigAddr4" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.addr.4}"
+ c:altNames-ref="testCertConfigAddr4SubjAltNames"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigAddr4" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigAddr4"
+ p:keyDescriptor-ref="testKeyPairConfigAddr4"/>
+
+
<!--====================================================================================================
+ = ONE DNSNAME VALUE MATCHING DIRECT ADDRESS DOMAIN
+
=====================================================================================================-->
<beans:bean id="testKeyConfigDomain1" parent="testKeyConfig"/>
<beans:bean id="testCertConfigDomain1" parent="testCertConfig">
<beans:property name="subjectName">
@@ -73,12 +113,118 @@
c:altNames-ref="testCertConfigDomain1SubjAltName"/>
</beans:property>
</beans:bean>
- <beans:bean id="testCertConfigDomain1SubjAltName"
class="org.bouncycastle.asn1.x509.GeneralName">
- <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).dNSName }"/>
- <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.domain.1.name}"/>
- </beans:bean>
<!--suppress InjectionValueTypeInspection -->
<beans:bean id="testCredConfigDomain1" parent="credConfigImpl"
p:certificateDescriptor-ref="testCertConfigDomain1"
p:keyDescriptor-ref="testKeyConfigDomain1"/>
+
+
<!--====================================================================================================
+ = MULTIPLE DNSNAME VALUES PRESENT, ONE MATCHING DIRECT ADDRESS DOMAIN
+
=====================================================================================================-->
+ <beans:bean id="testKeyConfigDomain2" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigDomain2" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.domain.2}"
+ c:altNames-ref="testCertConfigDomain2SubjAltNames"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigDomain2" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigDomain2"
+ p:keyDescriptor-ref="testKeyConfigDomain2"/>
+
+
<!--====================================================================================================
+ = MULTIPLE DNSNAME VALUES PRESENT, NONE MATCHING DIRECT ADDRESS DOMAIN
+
=====================================================================================================-->
+ <beans:bean id="testKeyConfigDomain3" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigDomain3" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.domain.3}"
+ c:altNames-ref="testCertConfigDomain3SubjAltNames"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigDomain3" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigDomain3"
+ p:keyDescriptor-ref="testKeyConfigDomain3"/>
+
+
<!--====================================================================================================
+ = RFC822NAME AND DNSNAME VALUES PRESENT, DNSNAME VALUE MATCHING DIRECT
ADDRESS DOMAIN
+
=====================================================================================================-->
+ <beans:bean id="testKeyConfigDomain4" parent="testKeyConfig"/>
+ <beans:bean id="testCertConfigDomain4" parent="testCertConfig">
+ <beans:property name="subjectName">
+ <beans:bean parent="certNameImpl"
+ c:x500Name="${dcdt.test.crypto.subject.x500.name.domain.4}"
+ c:altNames-ref="testCertConfigDomain4SubjAltNames"/>
+ </beans:property>
+ </beans:bean>
+ <!--suppress InjectionValueTypeInspection -->
+ <beans:bean id="testCredConfigDomain4" parent="credConfigImpl"
+ p:certificateDescriptor-ref="testCertConfigDomain4"
+ p:keyDescriptor-ref="testKeyConfigDomain4"/>
+
+
<!--====================================================================================================
+ = SUBJECT ALTERNATIVE NAMES
+
=====================================================================================================-->
+ <beans:bean id="generalName"
class="org.bouncycastle.asn1.x509.GeneralName" abstract="true"/>
+ <beans:bean id="generalNames"
class="org.bouncycastle.asn1.x509.GeneralNames" abstract="true"/>
+
+ <beans:bean id="testCertConfigAddr1SubjAltName" parent="generalName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).rfc822Name }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.direct.addr.1}"/>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigAddr3SubjAltName" parent="generalName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).rfc822Name }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.direct.addr.3}"/>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigAddr3SubjAltNames" parent="generalNames">
+ <beans:constructor-arg>
+ <beans:array
value-type="org.bouncycastle.asn1.x509.GeneralName">
+ <beans:ref bean="testCertConfigAddr1SubjAltName"/>
+ <beans:ref bean="testCertConfigAddr3SubjAltName"/>
+ </beans:array>
+ </beans:constructor-arg>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigAddr4SubjAltNames"
parent="testCertConfigAddr3SubjAltNames"/>
+
+ <beans:bean id="testCertConfigDomain1SubjAltName" parent="generalName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).dNSName }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.domain.1.name}"/>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigDomain2SubjAltName" parent="generalName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).dNSName }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.domain.2.name}"/>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigDomain4SubjAltName" parent="generalName">
+ <beans:constructor-arg index="0" type="int" value="#{
T(org.bouncycastle.asn1.x509.GeneralName).dNSName }"/>
+ <beans:constructor-arg index="1" type="java.lang.String"
value="${dcdt.test.instance.domain.4.name}"/>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigDomain2SubjAltNames"
parent="generalNames">
+ <beans:constructor-arg>
+ <beans:array
value-type="org.bouncycastle.asn1.x509.GeneralName">
+ <beans:ref bean="testCertConfigDomain1SubjAltName"/>
+ <beans:ref bean="testCertConfigDomain2SubjAltName"/>
+ </beans:array>
+ </beans:constructor-arg>
+ </beans:bean>
+
+ <beans:bean id="testCertConfigDomain3SubjAltNames"
parent="testCertConfigDomain2SubjAltNames"/>
+
+ <beans:bean id="testCertConfigDomain4SubjAltNames"
parent="generalNames">
+ <beans:constructor-arg>
+ <beans:array
value-type="org.bouncycastle.asn1.x509.GeneralName">
+ <beans:ref bean="testCertConfigAddr1SubjAltName"/>
+ <beans:ref bean="testCertConfigDomain4SubjAltName"/>
+ </beans:array>
+ </beans:constructor-arg>
+ </beans:bean>
</beans:beans>

==============================================================================
Revision: 51b6274e8eca
Branch: default
Author: Elizab...@esacinc.com
Date: Thu May 21 20:19:17 2015 UTC
Log: - Further supports DCDT-312
- Fixed typo involving rfc822Name in certificate subject alt validator
error message
- Fixed equals and hashCode methods in MimeAttachmentResource
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=51b6274e8eca

Modified:

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Tue May 19 16:30:04 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/crypto/certs/impl/CertificateInfoSubjectAltNamesConstraintValidator.java
Thu May 21 20:19:17 2015 UTC
@@ -40,7 +40,7 @@
(certSubjDnDirectAddr = new
MailAddressImpl(certSubjName.getAttributeValueString(BCStyle.EmailAddress))).toAddress()))
{
// noinspection ConstantConditions
throw new CertificateException(String.format(
- "Certificate (subj={%s}, serialNum=%s,
issuer={%s}) subjectAltName X509v3 extension rf822Name value does not match
subject Distinguished Name EmailAddress value: %s != %s",
+ "Certificate (subj={%s}, serialNum=%s,
issuer={%s}) subjectAltName X509v3 extension rfc822Name value does not
match subject Distinguished Name EmailAddress value: %s != %s",
certSubjName, certInfo.getSerialNumber(),
cert.getIssuerX500Principal().getName(), certSubjAltNameDirectAddr,
certSubjDnDirectAddr));
}

=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Fri May 15 14:01:47 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Thu May 21 20:19:17 2015 UTC
@@ -1,10 +1,10 @@
package gov.hhs.onc.dcdt.mail.impl;

import gov.hhs.onc.dcdt.mail.MailContentTransferEncoding;
-import gov.hhs.onc.dcdt.utils.ToolClassUtils;
-import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.util.MimeType;

@@ -55,18 +55,13 @@
}

@Override
+ @SuppressWarnings({ "EqualsWhichDoesntCheckParameterClass" })
public boolean equals(Object obj) {
- if (obj != null && ToolClassUtils.isAssignable(obj.getClass(),
MimeAttachmentResource.class)) {
- MimeAttachmentResource mimeAttachmentResource =
(MimeAttachmentResource) obj;
-
- return super.equals(mimeAttachmentResource) &&
Objects.equals(this.contentType, mimeAttachmentResource.getContentType())
&& Objects.equals(this.contentXferEnc,
mimeAttachmentResource.getContentXferEncoding()) &&
Objects.equals(this.filename, mimeAttachmentResource.getFilename());
- }
-
- return false;
+ return EqualsBuilder.reflectionEquals(this, obj, false);
}

@Override
public int hashCode() {
- return Objects.hashCode(this);
+ return HashCodeBuilder.reflectionHashCode(this, false);
}
}

==============================================================================
Revision: b818bc975521
Branch: default
Author: Elizab...@esacinc.com
Date: Fri May 22 12:05:30 2015 UTC
Log: - Made additional changes requested in review DCDT-107
- Altered equals and hashCode methods in MimeAttachmentResource
https://code.google.com/p/direct-certificate-discovery-tool/source/detail?r=b818bc975521

Modified:
/dcdt-core/src/checkstyle/checkstyle-suppressions.xml
/dcdt-core/src/findbugs/filter-exclude-core.xml

/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java

=======================================
--- /dcdt-core/src/checkstyle/checkstyle-suppressions.xml Sun Mar 9
09:38:59 2014 UTC
+++ /dcdt-core/src/checkstyle/checkstyle-suppressions.xml Fri May 22
12:05:30 2015 UTC
@@ -7,6 +7,7 @@
<suppress files="\.java$" checks="AvoidInlineConditionalsCheck"/>
<suppress files="\.java$" checks="DesignForExtensionCheck"/>
<suppress files="\.java$" checks="EmptyBlockCheck"/>
+ <suppress files="\.java$" checks="EqualsHashCode"/>
<suppress files="\.java$" checks="FinalParametersCheck"/>
<suppress files="\.java$" checks="HiddenFieldCheck"/>
<suppress files="\.java$" checks="InnerAssignmentCheck"/>
=======================================
--- /dcdt-core/src/findbugs/filter-exclude-core.xml Thu Jan 15 18:38:43
2015 UTC
+++ /dcdt-core/src/findbugs/filter-exclude-core.xml Fri May 22 12:05:30
2015 UTC
@@ -75,6 +75,13 @@
<Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/>
</Match>

+
<!--====================================================================================================
+ = MATCH BUGS: HASHCODE
+
=====================================================================================================-->
+ <Match>
+ <Bug pattern="HE_EQUALS_NO_HASHCODE"/>
+ </Match>
+

<!--====================================================================================================
= MATCH BUGS: INEFFICIENT INDEX OF

=====================================================================================================-->
=======================================
---
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Thu May 21 20:19:17 2015 UTC
+++
/dcdt-core/src/main/java/gov/hhs/onc/dcdt/mail/impl/MimeAttachmentResource.java
Fri May 22 12:05:30 2015 UTC
@@ -1,10 +1,10 @@
package gov.hhs.onc.dcdt.mail.impl;

import gov.hhs.onc.dcdt.mail.MailContentTransferEncoding;
+import gov.hhs.onc.dcdt.utils.ToolClassUtils;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.util.MimeType;

@@ -55,13 +55,12 @@
}

@Override
- @SuppressWarnings({ "EqualsWhichDoesntCheckParameterClass" })
public boolean equals(Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj, false);
- }
+ MimeAttachmentResource mimeAttachmentResource;

- @Override
- public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this, false);
+ return ((obj != null) && (this == obj) &&
ToolClassUtils.isAssignable(obj.getClass(), MimeAttachmentResource.class)
&& (new EqualsBuilder().appendSuper(
+ super.equals((mimeAttachmentResource =
(MimeAttachmentResource) obj))).append(this.contentType,
mimeAttachmentResource.getContentType())
+ .append(this.contentXferEnc,
mimeAttachmentResource.getContentXferEncoding()).append(this.filename,
mimeAttachmentResource.getFilename())
+ .isEquals()));
}
}
Reply all
Reply to author
Forward
0 new messages