[java-shib-attribute] branch main updated: Fix null and annotation bugs.
Scott Cantor
cantor.2 at osu.edu
Mon Nov 14 20:00:57 UTC 2022
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-shib-attribute.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=3a1232ac4b96edc1bd49dca00c0742f9552e8cb4
The following commit(s) were added to refs/heads/main by this push:
new 3a1232ac4 Fix null and annotation bugs.
3a1232ac4 is described below
commit 3a1232ac4b96edc1bd49dca00c0742f9552e8cb4
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Nov 14 15:00:54 2022 -0500
Fix null and annotation bugs.
---
.../idp/attribute/ByteAttributeValue.java | 7 ++--
.../idp/attribute/DateTimeAttributeValue.java | 11 +++---
.../idp/attribute/EmptyAttributeValue.java | 13 +++---
.../idp/attribute/ScopedStringAttributeValue.java | 9 ++---
.../idp/attribute/StringAttributeValue.java | 8 ++--
.../idp/attribute/XMLObjectAttributeValue.java | 19 ++++-----
.../attribute/transcoding/TranscoderSupport.java | 3 +-
.../idp/attribute/transcoding/TranscodingRule.java | 20 ++++++----
.../shibboleth/idp/attribute/AttributeTest.java | 3 --
.../idp/attribute/ByteAttributeValueTest.java | 8 ++--
.../idp/attribute/EmptyAttributeValueTest.java | 6 +--
.../attribute/ScopedStringAttributeValueTest.java | 8 ++--
.../idp/attribute/StringAttributeValueTest.java | 8 ++--
.../idp/attribute/XMLObjectAttributeValueTest.java | 8 ++--
.../attribute/impl/ComputedPairwiseIdStore.java | 17 ++++----
.../idp/attribute/impl/JDBCPairwiseIdStore.java | 46 ++++++++++++++++------
.../impl/AttributeRegistryServiceStrategy.java | 4 ++
.../impl/AttributeTranscoderRegistryImpl.java | 37 ++++++++++++-----
.../impl/ComputedPairwiseIdStoreTest.java | 24 ++++++-----
.../attribute/impl/JDBCPairwiseIdStoreTest.java | 26 ++++++++----
.../impl/AttributeTranscoderRegistryImplTest.java | 8 +++-
.../attribute/transcoding/impl/PairTranscoder.java | 15 ++++---
22 files changed, 189 insertions(+), 119 deletions(-)
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ByteAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ByteAttributeValue.java
index 65256685f..54f8e4534 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ByteAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ByteAttributeValue.java
@@ -36,7 +36,7 @@ import net.shibboleth.shared.logic.Constraint;
public final class ByteAttributeValue implements IdPAttributeValue {
/** Value of the attribute. */
- private final byte[] value;
+ @Nonnull private final byte[] value;
/**
* Constructor.
@@ -55,13 +55,12 @@ public final class ByteAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return value;
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String getDisplayValue() {
+ @Nonnull @NotEmpty public String getDisplayValue() {
return toHex();
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/DateTimeAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/DateTimeAttributeValue.java
index b22e51366..e40ae9194 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/DateTimeAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/DateTimeAttributeValue.java
@@ -37,7 +37,7 @@ import com.google.common.base.MoreObjects;
public class DateTimeAttributeValue implements IdPAttributeValue {
/** The attribute value. */
- @Nonnull @NotEmpty private final Instant value;
+ @Nonnull private final Instant value;
/**
* Constructor.
@@ -45,7 +45,7 @@ public class DateTimeAttributeValue implements IdPAttributeValue {
* @param attributeValue the attribute value
*/
public DateTimeAttributeValue(
- @Nonnull @NotEmpty @ParameterName(name="attributeValue") final Instant attributeValue) {
+ @Nonnull @ParameterName(name="attributeValue") final Instant attributeValue) {
value = Constraint.isNotNull(attributeValue, "Attribute value cannot be null or empty");
}
@@ -55,13 +55,12 @@ public class DateTimeAttributeValue implements IdPAttributeValue {
* @param attributeValue the attribute value
*/
public DateTimeAttributeValue(
- @Nonnull @NotEmpty @ParameterName(name="attributeValue") final ZonedDateTime attributeValue) {
+ @Nonnull @ParameterName(name="attributeValue") final ZonedDateTime attributeValue) {
value = Constraint.isNotNull(attributeValue, "Attribute value cannot be null or empty").toInstant();
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return value;
}
@@ -73,7 +72,7 @@ public class DateTimeAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String getDisplayValue() {
+ @Nonnull @NotEmpty public String getDisplayValue() {
return value.toString();
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/EmptyAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/EmptyAttributeValue.java
index b596f0081..9533ee34b 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/EmptyAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/EmptyAttributeValue.java
@@ -35,10 +35,10 @@ import com.google.common.base.MoreObjects;
public final class EmptyAttributeValue implements IdPAttributeValue {
/** Instance of null empty attribute value. */
- public static final EmptyAttributeValue NULL = new EmptyAttributeValue(EmptyType.NULL_VALUE);
+ @Nonnull public static final EmptyAttributeValue NULL = new EmptyAttributeValue(EmptyType.NULL_VALUE);
/** Instance of zero length attribute value. */
- public static final EmptyAttributeValue ZERO_LENGTH = new EmptyAttributeValue(EmptyType.ZERO_LENGTH_VALUE);
+ @Nonnull public static final EmptyAttributeValue ZERO_LENGTH = new EmptyAttributeValue(EmptyType.ZERO_LENGTH_VALUE);
/** Types of empty values. */
public enum EmptyType {
@@ -50,7 +50,7 @@ public final class EmptyAttributeValue implements IdPAttributeValue {
}
/** Value of the attribute. */
- @Nonnull @NotEmpty private final EmptyType value;
+ @Nonnull private final EmptyType value;
/**
* Constructor.
@@ -62,20 +62,19 @@ public final class EmptyAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return value;
}
/** Return the value.
* @return the value
*/
- public EmptyType getValue() {
+ @Nonnull public EmptyType getValue() {
return value;
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String getDisplayValue() {
+ @Nonnull @NotEmpty public String getDisplayValue() {
return value.toString();
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ScopedStringAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ScopedStringAttributeValue.java
index f94db1c47..188ff9074 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ScopedStringAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/ScopedStringAttributeValue.java
@@ -35,7 +35,7 @@ import com.google.common.base.Objects;
public final class ScopedStringAttributeValue extends StringAttributeValue {
/** Scope of the attribute value. */
- private final String scope;
+ @Nonnull @NotEmpty private final String scope;
/**
* Constructor.
@@ -51,8 +51,7 @@ public final class ScopedStringAttributeValue extends StringAttributeValue {
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return new Pair<>(getValue(), scope);
}
@@ -66,7 +65,7 @@ public final class ScopedStringAttributeValue extends StringAttributeValue {
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String getDisplayValue() {
+ @Nonnull @NotEmpty public String getDisplayValue() {
return getValue() + '@' + scope;
}
@@ -95,7 +94,7 @@ public final class ScopedStringAttributeValue extends StringAttributeValue {
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String toString() {
+ @Override public String toString() {
return MoreObjects.toStringHelper(this).add("value", getValue()).add("scope", scope).toString();
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/StringAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/StringAttributeValue.java
index e4605de2f..d87268a60 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/StringAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/StringAttributeValue.java
@@ -44,8 +44,7 @@ public class StringAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return value;
}
@@ -57,7 +56,7 @@ public class StringAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override @Nonnull @NotEmpty public String getDisplayValue() {
+ @Nonnull @NotEmpty public String getDisplayValue() {
return value;
}
@@ -105,4 +104,5 @@ public class StringAttributeValue implements IdPAttributeValue {
return new StringAttributeValue(value);
}
}
-}
+
+}
\ No newline at end of file
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/XMLObjectAttributeValue.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/XMLObjectAttributeValue.java
index afa15f4dd..b5f32f758 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/XMLObjectAttributeValue.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/XMLObjectAttributeValue.java
@@ -38,10 +38,10 @@ import net.shibboleth.shared.xml.SerializeSupport;
public final class XMLObjectAttributeValue implements IdPAttributeValue {
/** Log. */
- private static final Logger LOG = LoggerFactory.getLogger(XMLObjectAttributeValue.class);
+ @Nonnull private static final Logger LOG = LoggerFactory.getLogger(XMLObjectAttributeValue.class);
/** Value of the attribute. */
- private final XMLObject value;
+ @Nonnull private final XMLObject value;
/**
* Constructor.
@@ -53,30 +53,31 @@ public final class XMLObjectAttributeValue implements IdPAttributeValue {
}
/** {@inheritDoc} */
- @Override
- public Object getNativeValue() {
+ @Nonnull public Object getNativeValue() {
return value;
}
/** Return the value.
* @return the value
*/
- public final XMLObject getValue() {
+ @Nonnull public final XMLObject getValue() {
return value;
}
/** {@inheritDoc} */
- @Override
@Nonnull @NotEmpty public String getDisplayValue() {
if (value instanceof NameIDType) {
- final NameIDType valAsNameId = (NameIDType) value;
- return valAsNameId.getValue();
+ final String n = ((NameIDType) value).getValue();
+ if (n != null) {
+ return n;
+ }
}
+
try {
return SerializeSupport.nodeToString(XMLObjectSupport.marshall(value));
} catch (final MarshallingException e) {
LOG.error("Error while marshalling XMLObject value", e);
- return null;
+ return "(unable to get value)";
}
}
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscoderSupport.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscoderSupport.java
index 3aa95fadc..64f93d515 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscoderSupport.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscoderSupport.java
@@ -48,8 +48,7 @@ public final class TranscoderSupport {
final AttributeTranscoder<T> transcoder =
rule.get(AttributeTranscoderRegistry.PROP_TRANSCODER, AttributeTranscoder.class);
- Constraint.isNotNull(transcoder, "AttributeTranscoder not found in properties");
- return transcoder;
+ return Constraint.isNotNull(transcoder, "AttributeTranscoder not found in properties");
}
}
\ No newline at end of file
diff --git a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscodingRule.java b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscodingRule.java
index ee133d070..97911e845 100644
--- a/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscodingRule.java
+++ b/shib-attribute-api/src/main/java/net/shibboleth/idp/attribute/transcoding/TranscodingRule.java
@@ -73,8 +73,8 @@ public final class TranscodingRule {
*/
public TranscodingRule(@Nonnull @NonnullElements @ParameterName(name="map") final Map<String,Object> map) {
rule = new HashMap<>(map);
- processDisplayNames();
- processDescriptions();
+ displayNames = processDisplayNames();
+ descriptions = processDescriptions();
}
/**
@@ -100,8 +100,8 @@ public final class TranscodingRule {
rule.put((String) k, v);
}
});
- processDisplayNames();
- processDescriptions();
+ displayNames = processDisplayNames();
+ descriptions = processDescriptions();
}
/**
@@ -174,8 +174,10 @@ public final class TranscodingRule {
/**
* Process any properties that start with {@link AttributeTranscoderRegistry#PROP_DISPLAY_NAME} and
* create a Locale map around them.
+ *
+ * @return the map of display names
*/
- private void processDisplayNames() {
+ @Nonnull @NonnullElements private Map<Locale,String> processDisplayNames() {
final ImmutableMap.Builder<Locale,String> builder = ImmutableMap.builder();
final HashSet<Locale> inserted = new HashSet<>();
@@ -198,14 +200,16 @@ public final class TranscodingRule {
}
}
- displayNames = builder.build();
+ return builder.build();
}
/**
* Process any properties that start with {@link AttributeTranscoderRegistry#PROP_DESCRIPTION} and
* create a Locale map around them.
+ *
+ * @return the map of descriptions
*/
- private void processDescriptions() {
+ @Nonnull @NonnullElements private Map<Locale,String> processDescriptions() {
final ImmutableMap.Builder<Locale,String> builder = ImmutableMap.builder();
final HashSet<Locale> inserted = new HashSet<>();
@@ -228,7 +232,7 @@ public final class TranscodingRule {
}
}
- descriptions = builder.build();
+ return builder.build();
}
/**
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeTest.java
index a22617f3e..de3ab9ff7 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/AttributeTest.java
@@ -24,11 +24,8 @@ import static org.testng.Assert.fail;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
-import java.util.Map;
import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ByteAttributeValueTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ByteAttributeValueTest.java
index e9706a3f6..e91430e58 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ByteAttributeValueTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ByteAttributeValueTest.java
@@ -19,6 +19,8 @@ package net.shibboleth.idp.attribute;
import java.util.Arrays;
+import javax.annotation.Nonnull;
+
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.DecodingException;
import net.shibboleth.shared.codec.EncodingException;
@@ -31,9 +33,9 @@ import org.testng.annotations.Test;
@SuppressWarnings("javadoc")
public class ByteAttributeValueTest {
- static final byte[] DATA1 = {1,2,3,0xF};
- static final byte[] DATAEQUALS1 = {1,2,3,0xF};
- static final byte[] DATA2 = {2,3,1};
+ @Nonnull static final byte[] DATA1 = {1,2,3,0xF};
+ @Nonnull static final byte[] DATAEQUALS1 = {1,2,3,0xF};
+ @Nonnull static final byte[] DATA2 = {2,3,1};
/** Test proper instantiation of the object. */
@Test public void instantiation() {
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/EmptyAttributeValueTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/EmptyAttributeValueTest.java
index a55683c75..12d7db2cc 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/EmptyAttributeValueTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/EmptyAttributeValueTest.java
@@ -28,7 +28,7 @@ public class EmptyAttributeValueTest {
/** Test proper instantiation of the object. */
@Test public void instantiation() {
- EmptyAttributeValue value = new EmptyAttributeValue(EmptyType.NULL_VALUE);
+ final EmptyAttributeValue value = new EmptyAttributeValue(EmptyType.NULL_VALUE);
Assert.assertEquals(value.getValue(), EmptyType.NULL_VALUE);
try {
@@ -43,8 +43,8 @@ public class EmptyAttributeValueTest {
/** Test equality of two objects. */
@SuppressWarnings("unlikely-arg-type")
@Test public void equality() {
- EmptyAttributeValue value1 = new EmptyAttributeValue(EmptyType.NULL_VALUE);
- EmptyAttributeValue value2 = new EmptyAttributeValue(EmptyType.ZERO_LENGTH_VALUE);
+ final EmptyAttributeValue value1 = new EmptyAttributeValue(EmptyType.NULL_VALUE);
+ final EmptyAttributeValue value2 = new EmptyAttributeValue(EmptyType.ZERO_LENGTH_VALUE);
Assert.assertTrue(value1.equals(value1));
Assert.assertTrue(value2.equals(value2));
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ScopedStringAttributeValueTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ScopedStringAttributeValueTest.java
index 5c4f43a8f..addb74895 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ScopedStringAttributeValueTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/ScopedStringAttributeValueTest.java
@@ -27,7 +27,7 @@ public class ScopedStringAttributeValueTest {
/** Test proper instantiation of the object. */
@Test public void instantiation() {
- ScopedStringAttributeValue value = new ScopedStringAttributeValue(" foo ", " bar ");
+ final ScopedStringAttributeValue value = new ScopedStringAttributeValue(" foo ", " bar ");
Assert.assertEquals(value.getValue(), " foo ");
Assert.assertEquals(value.getScope(), "bar");
@@ -63,9 +63,9 @@ public class ScopedStringAttributeValueTest {
/** Test equality of two objects. */
@SuppressWarnings("unlikely-arg-type")
@Test public void equality() {
- ScopedStringAttributeValue value1 = new ScopedStringAttributeValue(" foo ", " bar ");
- ScopedStringAttributeValue value2 = new ScopedStringAttributeValue("foo", "bar");
- ScopedStringAttributeValue value3 = new ScopedStringAttributeValue(" foo ", "baz ");
+ final ScopedStringAttributeValue value1 = new ScopedStringAttributeValue(" foo ", " bar ");
+ final ScopedStringAttributeValue value2 = new ScopedStringAttributeValue("foo", "bar");
+ final ScopedStringAttributeValue value3 = new ScopedStringAttributeValue(" foo ", "baz ");
Assert.assertFalse(value1.equals(value2));
Assert.assertTrue(value1.equals(value1));
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/StringAttributeValueTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/StringAttributeValueTest.java
index 769c5a59d..ba55c2af5 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/StringAttributeValueTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/StringAttributeValueTest.java
@@ -27,7 +27,7 @@ public class StringAttributeValueTest {
/** Test proper instantiation of the object. */
@Test public void instantiation() {
- StringAttributeValue value = new StringAttributeValue(" foo ");
+ final StringAttributeValue value = new StringAttributeValue(" foo ");
Assert.assertEquals(value.getValue(), " foo ");
try {
@@ -49,9 +49,9 @@ public class StringAttributeValueTest {
/** Test equality of two objects. */
@SuppressWarnings("unlikely-arg-type")
@Test public void equality() {
- StringAttributeValue value1 = new StringAttributeValue(" foo ");
- StringAttributeValue value2 = new StringAttributeValue("foo");
- StringAttributeValue value3 = new StringAttributeValue(" baz ");
+ final StringAttributeValue value1 = new StringAttributeValue(" foo ");
+ final StringAttributeValue value2 = new StringAttributeValue("foo");
+ final StringAttributeValue value3 = new StringAttributeValue(" baz ");
Assert.assertFalse(value1.equals(value2));
Assert.assertFalse(value1.equals(value2));
diff --git a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/XMLObjectAttributeValueTest.java b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/XMLObjectAttributeValueTest.java
index c020cee83..7999a4414 100644
--- a/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/XMLObjectAttributeValueTest.java
+++ b/shib-attribute-api/src/test/java/net/shibboleth/idp/attribute/XMLObjectAttributeValueTest.java
@@ -53,7 +53,7 @@ public class XMLObjectAttributeValueTest extends XMLObjectBaseTestCase {
/** Test proper instantiation of the object. */
@Test public void instantiation() {
- XMLObjectAttributeValue value = new XMLObjectAttributeValue(xsId1);
+ final XMLObjectAttributeValue value = new XMLObjectAttributeValue(xsId1);
Assert.assertEquals(value.getValue(), xsId1);
try {
@@ -67,9 +67,9 @@ public class XMLObjectAttributeValueTest extends XMLObjectBaseTestCase {
/** Test equality of two objects. */
@SuppressWarnings("unlikely-arg-type")
@Test public void equality() {
- XMLObjectAttributeValue value1 = new XMLObjectAttributeValue(xsId1);
- XMLObjectAttributeValue value2 = new XMLObjectAttributeValue(xsId2);
- XMLObjectAttributeValue value3 = new XMLObjectAttributeValue(xsId3);
+ final XMLObjectAttributeValue value1 = new XMLObjectAttributeValue(xsId1);
+ final XMLObjectAttributeValue value2 = new XMLObjectAttributeValue(xsId2);
+ final XMLObjectAttributeValue value3 = new XMLObjectAttributeValue(xsId3);
Assert.assertTrue(value1.equals(value1));
Assert.assertNotEquals(value1.hashCode(), value2.hashCode());
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
index 7b96dddbf..e29cd1f83 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStore.java
@@ -241,21 +241,24 @@ public class ComputedPairwiseIdStore extends AbstractInitializableComponent impl
throws IOException {
checkComponentActive();
Constraint.isNotNull(pid, "Input PairwiseId object cannot be null");
- Constraint.isNotEmpty(pid.getRecipientEntityID(), "Recipient entityID cannot be null or empty");
- Constraint.isNotEmpty(pid.getPrincipalName(), "Principal name cannot be null or empty");
- Constraint.isNotEmpty(pid.getSourceSystemId(), "Source system ID cannot be null or empty");
+ final String recipientId =
+ Constraint.isNotEmpty(pid.getRecipientEntityID(), "Recipient entityID cannot be null or empty");
+ final String principalName =
+ Constraint.isNotEmpty(pid.getPrincipalName(), "Principal name cannot be null or empty");
+ final String sourceId =
+ Constraint.isNotEmpty(pid.getSourceSystemId(), "Source system ID cannot be null or empty");
- final byte[] effectiveSalt = getEffectiveSalt(pid.getPrincipalName(), pid.getRecipientEntityID());
+ final byte[] effectiveSalt = getEffectiveSalt(principalName, recipientId);
if (effectiveSalt == null) {
- log.warn("Pairwise ID generation blocked for relying party ({})", pid.getRecipientEntityID());
+ log.warn("Pairwise ID generation blocked for relying party ({})", recipientId);
throw new IOException("Pairwise ID generation blocked by exception rule");
}
try {
final MessageDigest md = MessageDigest.getInstance(algorithm);
- md.update(pid.getRecipientEntityID().getBytes());
+ md.update(recipientId.getBytes());
md.update((byte) '!');
- md.update(pid.getSourceSystemId().getBytes());
+ md.update(sourceId.getBytes());
md.update((byte) '!');
if (encoding == Encoding.BASE32) {
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStore.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStore.java
index db030febe..adf10bb7c 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStore.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStore.java
@@ -617,8 +617,9 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
log.debug("Getting active and/or last inactive pairwise ID entry");
final List<PairwiseId> entries = buildIdentifierEntries(statement.executeQuery());
- if (entries != null && entries.size() > 0 && (entries.get(0).getDeactivationTime() == null
- || entries.get(0).getDeactivationTime().isAfter(Instant.now()))) {
+ final Instant deactivationTime;
+ if (entries != null && entries.size() > 0 && ((deactivationTime = entries.get(0).getDeactivationTime()) == null
+ || deactivationTime.isAfter(Instant.now()))) {
dbConn.commit();
log.debug("Returning existing active pairwise ID: {}", entries.get(0).getPairwiseId());
return entries.get(0);
@@ -635,7 +636,11 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
if ((entries == null || entries.size() == 0) && initialValueStore != null) {
log.debug("Issuing new pairwise ID using initial value store");
+ assert initialValueStore != null;
retValue = initialValueStore.getBySourceValue(pid, allowCreate);
+ if (retValue == null) {
+ throw new IOException("Unable to obtain value from initial value store");
+ }
} else {
log.debug("Issuing new random pairwise ID");
retValue.setPairwiseId(UUID.randomUUID().toString());
@@ -702,8 +707,8 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
log.error("More than one record found for a single persistent ID value");
}
- if (entries.get(0).getDeactivationTime() != null &&
- !entries.get(0).getDeactivationTime().isAfter(Instant.now())) {
+ final Instant deactivationTime = entries.get(0).getDeactivationTime();
+ if (deactivationTime != null && !deactivationTime.isAfter(Instant.now())) {
return null;
}
@@ -722,10 +727,11 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
Constraint.isNotEmpty(pid.getPairwiseId(), "Pairwise ID cannot be null or empty");
final Timestamp deactivationTime;
- if (pid.getDeactivationTime() == null) {
+ final Instant deactivationTimeFromPID = pid.getDeactivationTime();
+ if (deactivationTimeFromPID == null) {
deactivationTime = new Timestamp(System.currentTimeMillis());
} else {
- deactivationTime = new Timestamp(pid.getDeactivationTime().toEpochMilli());
+ deactivationTime = new Timestamp(deactivationTimeFromPID.toEpochMilli());
}
log.debug("Deactivating pairwise ID {} as of {}", pid.getPairwiseId(), deactivationTime);
@@ -828,12 +834,21 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
} else {
statement.setNull(6, Types.VARCHAR);
}
- statement.setTimestamp(7, new Timestamp(entry.getCreationTime().toEpochMilli()));
- if (entry.getDeactivationTime() != null) {
- statement.setTimestamp(8, new Timestamp(entry.getDeactivationTime().toEpochMilli()));
+
+ final Instant creationTime = entry.getCreationTime();
+ if (creationTime != null) {
+ statement.setTimestamp(7, new Timestamp(creationTime.toEpochMilli()));
+ } else {
+ statement.setNull(7, Types.TIMESTAMP);
+ }
+
+ final Instant deactivationTime = entry.getDeactivationTime();
+ if (deactivationTime != null) {
+ statement.setTimestamp(8, new Timestamp(deactivationTime.toEpochMilli()));
} else {
statement.setNull(8, Types.TIMESTAMP);
}
+
statement.executeUpdate();
}
@@ -941,12 +956,19 @@ public class JDBCPairwiseIdStore extends AbstractInitializableComponent implemen
connection.setAutoCommit(autoCommit);
connection.setTransactionIsolation(transactionIsolation);
if (readWriteLock != null) {
+ final Lock tlock;
if (writeLock) {
- threadLock = readWriteLock.writeLock();
+ tlock = readWriteLock.writeLock();
+ } else {
+ tlock = readWriteLock.readLock();
+ }
+ if (tlock != null) {
+ threadLock = tlock;
+ threadLock.lock();
} else {
- threadLock = readWriteLock.readLock();
+ log.error("Unable to get local lock");
+ threadLock = null;
}
- threadLock.lock();
} else {
threadLock = null;
}
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
index bb26029b7..79e22ee8b 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeRegistryServiceStrategy.java
@@ -97,6 +97,10 @@ public class AttributeRegistryServiceStrategy extends AbstractIdentifiableInitia
@Nullable public AbstractServiceableComponent<AttributeTranscoderRegistry> apply(
@Nullable final ApplicationContext appContext) {
+ if (appContext == null) {
+ throw new ServiceException("ApplicationContext was null");
+ }
+
final Collection<TranscodingRule> mappingBeans = appContext.getBeansOfType(TranscodingRule.class).values();
final Collection<TranscodingRuleLoader> loaderBeans =
appContext.getBeansOfType(TranscodingRuleLoader.class).values();
diff --git a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
index 55bc27dc6..ebc9efb84 100644
--- a/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
+++ b/shib-attribute-impl/src/main/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImpl.java
@@ -34,6 +34,7 @@ import javax.annotation.concurrent.ThreadSafe;
import org.opensaml.profile.context.ProfileRequestContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationContext;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
@@ -268,14 +269,19 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
final List<AttributeTranscoder<?>> transcoders = new ArrayList<>();
- for (final String id :StringSupport.stringToList(beanNames, " ")) {
- try {
- transcoder = getApplicationContext().getBean(id, AttributeTranscoder.class);
- transcoder.initialize();
- transcoders.add(transcoder);
- } catch (final Exception e) {
- log.error("Unable to locate AttributeTranscoder bean named {}", id, e);
+ final ApplicationContext appContext = getApplicationContext();
+ if (appContext != null) {
+ for (final String id : StringSupport.stringToList(beanNames, " ")) {
+ try {
+ transcoder = appContext.getBean(id, AttributeTranscoder.class);
+ transcoder.initialize();
+ transcoders.add(transcoder);
+ } catch (final Exception e) {
+ log.error("Unable to locate AttributeTranscoder bean named {}", id, e);
+ }
}
+ } else {
+ log.error("Unable to locate AttributeTranscoder beans, ApplicationContext was null");
}
return transcoders;
@@ -299,8 +305,14 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
final String targetName = transcoder.getEncodedName(copy);
if (targetName != null) {
- final boolean encoder = copy.getOrDefault(PROP_ENCODER, Boolean.class, true);
- final boolean decoder = copy.getOrDefault(PROP_DECODER, Boolean.class, true);
+ Boolean encoder = copy.getOrDefault(PROP_ENCODER, Boolean.class, true);
+ if (encoder == null) {
+ encoder = true;
+ }
+ Boolean decoder = copy.getOrDefault(PROP_DECODER, Boolean.class, true);
+ if (decoder == null) {
+ decoder = true;
+ }
if (!encoder && !decoder) {
log.warn("Transcoding rule for {} and type {} was disabled in both directions, ignoring",
id, type.getName());
@@ -367,7 +379,12 @@ public class AttributeTranscoderRegistryImpl extends AbstractServiceableComponen
effectiveCondition = (Predicate<ProfileRequestContext>) baseCondition;
} else if (baseCondition instanceof String) {
try {
- effectiveCondition = getApplicationContext().getBean((String) baseCondition, Predicate.class);
+ final ApplicationContext appContext = getApplicationContext();
+ if (appContext != null) {
+ effectiveCondition = appContext.getBean((String) baseCondition, Predicate.class);
+ } else {
+ log.error("Unable to locate Predicate bean named {}, ApplicationContext was null", baseCondition);
+ }
} catch (final Exception e) {
log.error("Unable to locate Predicate bean named {}", baseCondition, e);
}
diff --git a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStoreTest.java b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStoreTest.java
index e237557fc..318845688 100644
--- a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStoreTest.java
+++ b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/ComputedPairwiseIdStoreTest.java
@@ -20,8 +20,11 @@ package net.shibboleth.idp.attribute.impl;
import java.io.IOException;
import java.util.Collections;
+import javax.annotation.Nonnull;
+
import net.shibboleth.idp.attribute.PairwiseId;
import net.shibboleth.idp.attribute.impl.ComputedPairwiseIdStore.Encoding;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.codec.Base64Support;
import net.shibboleth.shared.codec.EncodingException;
import net.shibboleth.shared.component.ComponentInitializationException;
@@ -35,24 +38,24 @@ import org.testng.annotations.Test;
@SuppressWarnings("javadoc")
public class ComputedPairwiseIdStoreTest {
- public static final String IDP_ENTITY_ID = "https://idp.example.org/idp";
+ @Nonnull @NotEmpty public static final String IDP_ENTITY_ID = "https://idp.example.org/idp";
- public static final String SP_ENTITY_ID = "https://sp.example.org/sp";
+ @Nonnull @NotEmpty public static final String SP_ENTITY_ID = "https://sp.example.org/sp";
/** Value calculated using V2 version. DO NOT CHANGE WITHOUT TESTING AGAINST 2.0 */
- private static final String RESULT = "Vl6z6K70iLc4AuBoNeb59Dj1rGw=";
+ @Nonnull @NotEmpty private static final String RESULT = "Vl6z6K70iLc4AuBoNeb59Dj1rGw=";
- private static final String RESULT2 = "kLyH1uEvYigEvg1ZLh/QXeW1VAs=";
+ @Nonnull @NotEmpty private static final String RESULT2 = "kLyH1uEvYigEvg1ZLh/QXeW1VAs=";
- private static final String B32RESULT = "KZPLH2FO6SELOOAC4BUDLZXZ6Q4PLLDM";
+ @Nonnull @NotEmpty private static final String B32RESULT = "KZPLH2FO6SELOOAC4BUDLZXZ6Q4PLLDM";
- private static final byte salt[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
+ @Nonnull private static final byte salt[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
- private static final String salt2 = "thisisaspecialsalt";
+ @Nonnull @NotEmpty private static final String salt2 = "thisisaspecialsalt";
- private static final String INVALID_BASE64_SALT="AB==";
+ @Nonnull @NotEmpty private static final String INVALID_BASE64_SALT = "AB==";
- public static final String COMMON_ATTRIBUTE_VALUE_STRING = "at1-Data";
+ @Nonnull @NotEmpty public static final String COMMON_ATTRIBUTE_VALUE_STRING = "at1-Data";
@Test(expectedExceptions = ComponentInitializationException.class)
public void testInvalidConfig() throws ComponentInitializationException {
@@ -138,6 +141,7 @@ public class ComputedPairwiseIdStoreTest {
pid = store.getBySourceValue(pid, true);
Assert.assertNotNull(pid);
+ assert pid != null;
Assert.assertEquals(pid.getPairwiseId(), RESULT);
}
@@ -157,6 +161,7 @@ public class ComputedPairwiseIdStoreTest {
pid = store.getBySourceValue(pid, true);
Assert.assertNotNull(pid);
+ assert pid != null;
Assert.assertEquals(pid.getPairwiseId(), RESULT2);
}
@@ -175,6 +180,7 @@ public class ComputedPairwiseIdStoreTest {
pid = store.getBySourceValue(pid, true);
Assert.assertNotNull(pid);
+ assert pid != null;
Assert.assertEquals(pid.getPairwiseId(), B32RESULT);
}
diff --git a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStoreTest.java b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStoreTest.java
index 3266cb895..cdaeb2624 100644
--- a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStoreTest.java
+++ b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/impl/JDBCPairwiseIdStoreTest.java
@@ -27,10 +27,12 @@ import java.util.Objects;
import java.util.UUID;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.sql.DataSource;
import net.shibboleth.idp.attribute.PairwiseId;
import net.shibboleth.idp.attribute.impl.JDBCPairwiseIdStore.ConnectionWithLock;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.component.UninitializedComponentException;
import net.shibboleth.shared.component.UnmodifiableComponentException;
@@ -45,15 +47,15 @@ import org.testng.annotations.Test;
@SuppressWarnings("javadoc")
public class JDBCPairwiseIdStoreTest {
- private DataSource testSource;
+ @Nonnull @NotEmpty public static final String IDP_ENTITY_ID = "https://idp.example.org/idp";
+ @Nonnull @NotEmpty public static final String PRINCIPAL_ID = "PETER_THE_PRINCIPAL";
+ @Nonnull @NotEmpty public static final String SP_ENTITY_ID = "https://sp.example.org/sp";
- public static final String IDP_ENTITY_ID = "https://idp.example.org/idp";
- public static final String PRINCIPAL_ID = "PETER_THE_PRINCIPAL";
- public static final String SP_ENTITY_ID = "https://sp.example.org/sp";
+ @Nonnull @NotEmpty public static final String INIT_FILE = "/net/shibboleth/idp/attribute/impl/StoredIdStore.sql";
+ @Nonnull @NotEmpty public static final String DELETE_FILE = "/net/shibboleth/idp/attribute/impl/DeleteStore.sql";
+
+ @Nullable private DataSource testSource;
- public static final String INIT_FILE = "/net/shibboleth/idp/attribute/impl/StoredIdStore.sql";
- public static final String DELETE_FILE = "/net/shibboleth/idp/attribute/impl/DeleteStore.sql";
-
@BeforeMethod
public void setupSource() throws IOException, IOException {
testSource = DatabaseTestingSupport.GetMockDataSource(INIT_FILE, "PersistentIdStore");
@@ -72,6 +74,8 @@ public class JDBCPairwiseIdStoreTest {
} catch (final ComponentInitializationException e) {
// OK
}
+
+ assert testSource != null;
store.setDataSource(testSource);
Assert.assertEquals(store.getDataSource(), testSource);
@@ -87,7 +91,8 @@ public class JDBCPairwiseIdStoreTest {
store.initialize();
try {
- store.setDataSource(null);
+ assert testSource != null;
+ store.setDataSource(testSource);
Assert.fail("work after initialize");
} catch (final UnmodifiableComponentException e) {
// OK
@@ -124,6 +129,7 @@ public class JDBCPairwiseIdStoreTest {
public void storeEntry(final int isolateLevel, final boolean localLock) throws ComponentInitializationException, IOException, SQLException {
final JDBCPairwiseIdStore store = new JDBCPairwiseIdStore();
+ assert testSource != null;
store.setDataSource(testSource);
store.setVerifyDatabase(true);
store.setTransactionIsolation(isolateLevel);
@@ -150,6 +156,7 @@ public class JDBCPairwiseIdStoreTest {
id2.setRecipientEntityID(SP_ENTITY_ID);
id2.setPairwiseId(persistentId);
id2 = store.getByIssuedValue(id2);
+ assert id2 != null;
Assert.assertNull(id2.getDeactivationTime());
Assert.assertTrue(comparePersistentIdEntrys(id2, id));
@@ -158,6 +165,7 @@ public class JDBCPairwiseIdStoreTest {
store.deactivate(id);
id2 = store.getByIssuedValue(id2);
+ assert id2 != null;
Assert.assertNotNull(id2.getDeactivationTime());
Assert.assertTrue(comparePersistentIdEntrys(id2, id));
@@ -180,6 +188,8 @@ public class JDBCPairwiseIdStoreTest {
id3.setRecipientEntityID(SP_ENTITY_ID + "2");
id3.setPairwiseId(persistentId);
id3 = store.getByIssuedValue(id3);
+ assert id3 != null;
+
Assert.assertNull(id3.getDeactivationTime());
Assert.assertTrue(comparePersistentIdEntrys(id3, id));
}
diff --git a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
index 1fae929fe..125a5db3d 100644
--- a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
+++ b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/AttributeTranscoderRegistryImplTest.java
@@ -63,7 +63,13 @@ public class AttributeTranscoderRegistryImplTest {
final NamingFunction nf = new BasicNamingFunction<>(Pair.class,
new Function<Pair,String>() {
public String apply(final Pair p) {
- return "{Pair}" + p.getFirst().toString();
+ if (p != null) {
+ final Object obj = p.getFirst();
+ if (obj != null) {
+ return "{Pair}" + obj.toString();
+ }
+ }
+ return null;
}
});
registry.setNamingRegistry(Collections.singletonList(nf));
diff --git a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/PairTranscoder.java b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/PairTranscoder.java
index ae35f85db..8c697255b 100644
--- a/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/PairTranscoder.java
+++ b/shib-attribute-impl/src/test/java/net/shibboleth/idp/attribute/transcoding/impl/PairTranscoder.java
@@ -20,6 +20,9 @@ package net.shibboleth.idp.attribute.transcoding.impl;
import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import org.opensaml.profile.context.ProfileRequestContext;
import net.shibboleth.idp.attribute.AttributeDecodingException;
@@ -40,12 +43,12 @@ import net.shibboleth.shared.primitive.StringSupport;
public class PairTranscoder extends AbstractAttributeTranscoder<Pair> {
/** {@inheritDoc} */
- public Class<Pair> getEncodedType() {
+ @Nonnull public Class<Pair> getEncodedType() {
return Pair.class;
}
/** {@inheritDoc} */
- public String getEncodedName(TranscodingRule rule) {
+ public String getEncodedName(@Nonnull TranscodingRule rule) {
final String name = rule.get("name", String.class);
if (name != null) {
return "{Pair}" + name;
@@ -55,8 +58,8 @@ public class PairTranscoder extends AbstractAttributeTranscoder<Pair> {
/** {@inheritDoc} */
@Override
- public Pair doEncode(ProfileRequestContext profileRequestContext, IdPAttribute attribute, Class<? extends Pair> to, TranscodingRule rule)
- throws AttributeEncodingException {
+ public Pair doEncode(@Nullable final ProfileRequestContext profileRequestContext, @Nonnull final IdPAttribute attribute,
+ @Nonnull final Class<? extends Pair> to, @Nonnull final TranscodingRule rule) throws AttributeEncodingException {
final String name = StringSupport.trimOrNull(rule.get("name", String.class));
if (name == null) {
@@ -76,8 +79,8 @@ public class PairTranscoder extends AbstractAttributeTranscoder<Pair> {
/** {@inheritDoc} */
@Override
- public IdPAttribute doDecode(ProfileRequestContext profileRequestContext, Pair input, TranscodingRule rule)
- throws AttributeDecodingException {
+ public IdPAttribute doDecode(@Nullable final ProfileRequestContext profileRequestContext, at Nonnull final Pair input,
+ @Nonnull final TranscodingRule rule) throws AttributeDecodingException {
final String id = StringSupport.trimOrNull(rule.get(AttributeTranscoderRegistry.PROP_ID, String.class));
if (id == null) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list