[java-opensaml] branch main updated: Null cleanup and annotation fixes.
Scott Cantor
cantor.2 at osu.edu
Mon Dec 18 18:31:57 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=d417f7b4b04998286a2d167fc769904362605f00
The following commit(s) were added to refs/heads/main by this push:
new d417f7b4b Null cleanup and annotation fixes.
d417f7b4b is described below
commit d417f7b4b04998286a2d167fc769904362605f00
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Dec 18 13:31:54 2023 -0500
Null cleanup and annotation fixes.
---
.../opensaml/core/xml/AbstractXSAnyAdapter.java | 47 ++------
.../saml/saml2/core/impl/BaseIDXSAnyAdapter.java | 8 +-
.../metadata/impl/RoleDescriptorXSAnyAdapter.java | 128 ++++++++-------------
3 files changed, 66 insertions(+), 117 deletions(-)
diff --git a/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXSAnyAdapter.java b/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXSAnyAdapter.java
index 84a0fd253..a66b0a5db 100644
--- a/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXSAnyAdapter.java
+++ b/opensaml-core-api/src/main/java/org/opensaml/core/xml/AbstractXSAnyAdapter.java
@@ -57,184 +57,157 @@ public abstract class AbstractXSAnyAdapter implements XSAnyAdapter {
}
/** {@inheritDoc} */
- @Override
public void detach() {
adapted.detach();
}
/** {@inheritDoc} */
- @Override
@Nullable
public Element getDOM() {
return adapted.getDOM();
}
/** {@inheritDoc} */
- @Override
@Nonnull
public Element ensureDOM() {
return adapted.ensureDOM();
}
/** {@inheritDoc} */
- @Override
@Nonnull
public QName getElementQName() {
return adapted.getElementQName();
}
/** {@inheritDoc} */
- @Override
@Nonnull
public IDIndex getIDIndex() {
return adapted.getIDIndex();
}
/** {@inheritDoc} */
- @Override
@Nonnull
public NamespaceManager getNamespaceManager() {
return adapted.getNamespaceManager();
}
/** {@inheritDoc} */
- @Override
@Nonnull
public Set<Namespace> getNamespaces() {
return adapted.getNamespaces();
}
/** {@inheritDoc} */
- @Override
@Nullable
public String getNoNamespaceSchemaLocation() {
return adapted.getNoNamespaceSchemaLocation();
}
/** {@inheritDoc} */
- @Override
@Nullable
public List<XMLObject> getOrderedChildren() {
return adapted.getOrderedChildren();
}
/** {@inheritDoc} */
- @Override
@Nullable
public XMLObject getParent() {
return adapted.getParent();
}
/** {@inheritDoc} */
- @Override
@Nullable
public String getSchemaLocation() {
return adapted.getSchemaLocation();
}
/** {@inheritDoc} */
- @Override
@Nullable
public QName getSchemaType() {
return adapted.getSchemaType();
}
/** {@inheritDoc} */
- @Override
public boolean hasChildren() {
return adapted.hasChildren();
}
/** {@inheritDoc} */
- @Override
public boolean hasParent() {
return adapted.hasParent();
}
/** {@inheritDoc} */
- @Override
- public void releaseChildrenDOM(boolean propagateRelease) {
+ public void releaseChildrenDOM(final boolean propagateRelease) {
adapted.releaseChildrenDOM(propagateRelease);
}
/** {@inheritDoc} */
- @Override
public void releaseDOM() {
adapted.releaseDOM();
}
/** {@inheritDoc} */
- @Override
- public void releaseParentDOM(boolean propagateRelease) {
+ public void releaseParentDOM(final boolean propagateRelease) {
adapted.releaseParentDOM(propagateRelease);
}
/** {@inheritDoc} */
- @Override
@Nullable
- public XMLObject resolveID(@Nonnull String id) {
+ public XMLObject resolveID(@Nonnull final String id) {
return adapted.resolveID(id);
}
/** {@inheritDoc} */
- @Override
@Nullable
- public XMLObject resolveIDFromRoot(@Nonnull String id) {
+ public XMLObject resolveIDFromRoot(@Nonnull final String id) {
return adapted.resolveIDFromRoot(id);
}
/** {@inheritDoc} */
@Override
- public void setDOM(@Nullable Element dom) {
+ public void setDOM(@Nullable final Element dom) {
adapted.setDOM(dom);
}
/** {@inheritDoc} */
- @Override
- public void setNoNamespaceSchemaLocation(@Nullable String location) {
+ public void setNoNamespaceSchemaLocation(@Nullable final String location) {
adapted.setNoNamespaceSchemaLocation(location);
}
/** {@inheritDoc} */
- @Override
- public void setParent(@Nullable XMLObject parent) {
+ public void setParent(@Nullable final XMLObject parent) {
adapted.setParent(parent);
}
/** {@inheritDoc} */
- @Override
- public void setSchemaLocation(@Nullable String location) {
+ public void setSchemaLocation(@Nullable final String location) {
adapted.setSchemaLocation(location);
}
/** {@inheritDoc} */
- @Override
@Nullable
public Boolean isNil() {
return adapted.isNil();
}
/** {@inheritDoc} */
- @Override
@Nullable
public XSBooleanValue isNilXSBoolean() {
return adapted.isNilXSBoolean();
}
/** {@inheritDoc} */
- @Override
- public void setNil(@Nullable Boolean newNil) {
+ public void setNil(@Nullable final Boolean newNil) {
adapted.setNil(newNil);
}
/** {@inheritDoc} */
- @Override
- public void setNil(@Nullable XSBooleanValue newNil) {
+ public void setNil(@Nullable final XSBooleanValue newNil) {
adapted.setNil(newNil);
}
/** {@inheritDoc} */
- @Override
@Nonnull
public LockableClassToInstanceMultiMap<Object> getObjectMetadata() {
return adapted.getObjectMetadata();
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/core/impl/BaseIDXSAnyAdapter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/core/impl/BaseIDXSAnyAdapter.java
index 6ef1bea7d..b93d5e57e 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/core/impl/BaseIDXSAnyAdapter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/core/impl/BaseIDXSAnyAdapter.java
@@ -14,6 +14,8 @@
package org.opensaml.saml.saml2.core.impl;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.AbstractXSAnyAdapter;
@@ -30,7 +32,7 @@ public class BaseIDXSAnyAdapter extends AbstractXSAnyAdapter implements BaseID {
*
* @param xsAny the adapted instance
*/
- public BaseIDXSAnyAdapter(XSAny xsAny) {
+ public BaseIDXSAnyAdapter(@Nonnull final XSAny xsAny) {
super(xsAny);
}
@@ -42,7 +44,7 @@ public class BaseIDXSAnyAdapter extends AbstractXSAnyAdapter implements BaseID {
/** {@inheritDoc} */
@Override
- public void setNameQualifier(String newNameQualifier) {
+ public void setNameQualifier(@Nullable final String newNameQualifier) {
getAdapted().getUnknownAttributes().put(new QName(BaseID.NAME_QUALIFIER_ATTRIB_NAME), newNameQualifier);
}
@@ -54,7 +56,7 @@ public class BaseIDXSAnyAdapter extends AbstractXSAnyAdapter implements BaseID {
/** {@inheritDoc} */
@Override
- public void setSPNameQualifier(String newSPNameQualifier) {
+ public void setSPNameQualifier(@Nullable final String newSPNameQualifier) {
getAdapted().getUnknownAttributes().put(new QName(BaseID.SP_NAME_QUALIFIER_ATTRIB_NAME), newSPNameQualifier);
}
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/RoleDescriptorXSAnyAdapter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/RoleDescriptorXSAnyAdapter.java
index b7fc5edee..ca96bf72e 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/RoleDescriptorXSAnyAdapter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/metadata/impl/RoleDescriptorXSAnyAdapter.java
@@ -17,10 +17,11 @@ package org.opensaml.saml.saml2.metadata.impl;
import java.time.Duration;
import java.time.Instant;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import org.opensaml.core.xml.AbstractXSAnyAdapter;
@@ -35,6 +36,9 @@ import org.opensaml.saml.saml2.metadata.Organization;
import org.opensaml.saml.saml2.metadata.RoleDescriptor;
import org.opensaml.xmlsec.signature.Signature;
+import net.shibboleth.shared.annotation.constraint.Live;
+import net.shibboleth.shared.annotation.constraint.NotLive;
+import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.collection.LazyList;
import net.shibboleth.shared.primitive.StringSupport;
@@ -50,26 +54,23 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
*
* @param xsAny the instance to adapt
*/
- public RoleDescriptorXSAnyAdapter(XSAny xsAny) {
+ public RoleDescriptorXSAnyAdapter(@Nonnull final XSAny xsAny) {
super(xsAny);
getAdapted().getUnknownAttributes().registerID(new QName(RoleDescriptor.ID_ATTRIB_NAME));
}
/** {@inheritDoc} */
- @Override
- public String getSignatureReferenceID() {
+ @Nullable public String getSignatureReferenceID() {
return getID();
}
/** {@inheritDoc} */
- @Override
public boolean isSigned() {
return getSignature() != null;
}
/** {@inheritDoc} */
- @Override
- public Signature getSignature() {
+ @Nullable public Signature getSignature() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(Signature.DEFAULT_ELEMENT_NAME);
if (xmlObjects.isEmpty()) {
return null;
@@ -78,13 +79,11 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public void setSignature(Signature newSignature) {
+ public void setSignature(@Nullable final Signature newSignature) {
throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
- @Override
public boolean isValid() {
final Instant validUntil = getValidUntil();
@@ -96,48 +95,49 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
public Instant getValidUntil() {
- return DOMTypeSupport.stringToInstant(getAdapted().getUnknownAttributes().get(
- RoleDescriptor.VALID_UNTIL_ATTRIB_QNAME));
+ final String attr = getAdapted().getUnknownAttributes().get(RoleDescriptor.VALID_UNTIL_ATTRIB_QNAME);
+ return attr != null ? DOMTypeSupport.stringToInstant(attr) : null;
}
/** {@inheritDoc} */
- @Override
- public void setValidUntil(Instant validUntil) {
- getAdapted().getUnknownAttributes().put(RoleDescriptor.VALID_UNTIL_ATTRIB_QNAME,
- DOMTypeSupport.instantToString(validUntil));
+ public void setValidUntil(@Nullable final Instant validUntil) {
+ if (validUntil != null) {
+ getAdapted().getUnknownAttributes().put(RoleDescriptor.VALID_UNTIL_ATTRIB_QNAME,
+ DOMTypeSupport.instantToString(validUntil));
+ } else {
+ getAdapted().getUnknownAttributes().remove(RoleDescriptor.VALID_UNTIL_ATTRIB_QNAME);
+ }
}
/** {@inheritDoc} */
- @Override
public Duration getCacheDuration() {
- return DOMTypeSupport.stringToDuration(getAdapted().getUnknownAttributes().get(
- RoleDescriptor.CACHE_DURATION_ATTRIB_QNAME));
+ final String attr = getAdapted().getUnknownAttributes().get(RoleDescriptor.CACHE_DURATION_ATTRIB_QNAME);
+ return attr != null ? DOMTypeSupport.stringToDuration(attr) : null;
}
/** {@inheritDoc} */
- @Override
- public void setCacheDuration(Duration duration) {
- getAdapted().getUnknownAttributes().put(RoleDescriptor.CACHE_DURATION_ATTRIB_QNAME,
- DOMTypeSupport.durationToString(duration));
+ public void setCacheDuration(@Nullable final Duration duration) {
+ if (duration != null) {
+ getAdapted().getUnknownAttributes().put(RoleDescriptor.CACHE_DURATION_ATTRIB_QNAME,
+ DOMTypeSupport.durationToString(duration));
+ } else {
+ getAdapted().getUnknownAttributes().remove(RoleDescriptor.CACHE_DURATION_ATTRIB_QNAME);
+ }
}
/** {@inheritDoc} */
- @Override
- public AttributeMap getUnknownAttributes() {
+ @Nonnull public AttributeMap getUnknownAttributes() {
return getAdapted().getUnknownAttributes();
}
/** {@inheritDoc} */
- @Override
- public String getID() {
+ @Nullable public String getID() {
return getAdapted().getUnknownAttributes().get(new QName(RoleDescriptor.ID_ATTRIB_NAME));
}
/** {@inheritDoc} */
- @Override
- public void setID(String newID) {
+ public void setID(@Nullable final String newID) {
getAdapted().getUnknownAttributes().put(new QName(RoleDescriptor.ID_ATTRIB_NAME), newID);
}
@@ -170,62 +170,53 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public List<String> getSupportedProtocols() {
+ @Nonnull @Unmodifiable @NotLive public List<String> getSupportedProtocols() {
return CollectionSupport.copyToList(fetchSupportedProtocols());
}
/** {@inheritDoc} */
- @Override
- public boolean isSupportedProtocol(String protocol) {
+ public boolean isSupportedProtocol(@Nonnull final String protocol) {
return fetchSupportedProtocols().contains(protocol);
}
/** {@inheritDoc} */
- @Override
- public void addSupportedProtocol(String protocol) {
+ public void addSupportedProtocol(@Nonnull final String protocol) {
final List<String> protocols = fetchSupportedProtocols();
protocols.add(protocol);
storeSupportedProtocols(protocols);
}
/** {@inheritDoc} */
- @Override
- public void removeSupportedProtocol(String protocol) {
+ public void removeSupportedProtocol(@Nonnull final String protocol) {
final List<String> protocols = fetchSupportedProtocols();
protocols.remove(protocol);
storeSupportedProtocols(protocols);
}
/** {@inheritDoc} */
- @Override
- public void removeSupportedProtocols(Collection<String> protocolsToRemove) {
+ public void removeSupportedProtocols(@Nonnull final Collection<String> protocolsToRemove) {
final List<String> protocols = fetchSupportedProtocols();
protocols.removeAll(protocolsToRemove);
storeSupportedProtocols(protocols);
}
/** {@inheritDoc} */
- @Override
public void removeAllSupportedProtocols() {
- storeSupportedProtocols(Collections.emptyList());
+ storeSupportedProtocols(CollectionSupport.emptyList());
}
/** {@inheritDoc} */
- @Override
- public String getErrorURL() {
+ @Nullable public String getErrorURL() {
return getAdapted().getUnknownAttributes().get(new QName(RoleDescriptor.ERROR_URL_ATTRIB_NAME));
}
/** {@inheritDoc} */
- @Override
- public void setErrorURL(String errorURL) {
+ public void setErrorURL(@Nullable final String errorURL) {
getAdapted().getUnknownAttributes().put(new QName(RoleDescriptor.ERROR_URL_ATTRIB_NAME), errorURL);
}
/** {@inheritDoc} */
- @Override
- public Extensions getExtensions() {
+ @Nullable public Extensions getExtensions() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(Extensions.DEFAULT_ELEMENT_NAME);
if (xmlObjects.isEmpty()) {
return null;
@@ -238,18 +229,14 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public void setExtensions(Extensions extensions) {
+ public void setExtensions(@Nullable final Extensions extensions) {
throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
- @Override
- public List<KeyDescriptor> getKeyDescriptors() {
+ @Nonnull @Live public List<KeyDescriptor> getKeyDescriptors() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(KeyDescriptor.DEFAULT_ELEMENT_NAME);
- if (xmlObjects.isEmpty()) {
- return null;
- }
+ // TODO: this returned list is immutable, which violates the API
return xmlObjects.stream()
.filter(KeyDescriptor.class::isInstance)
.map(KeyDescriptor.class::cast)
@@ -257,8 +244,7 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public Organization getOrganization() {
+ @Nullable public Organization getOrganization() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(Organization.DEFAULT_ELEMENT_NAME);
if (xmlObjects.isEmpty()) {
return null;
@@ -270,18 +256,14 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public void setOrganization(Organization organization) {
+ public void setOrganization(@Nullable final Organization organization) {
throw new UnsupportedOperationException();
}
/** {@inheritDoc} */
- @Override
- public List<ContactPerson> getContactPersons() {
+ @Nonnull @Live public List<ContactPerson> getContactPersons() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(ContactPerson.DEFAULT_ELEMENT_NAME);
- if (xmlObjects.isEmpty()) {
- return null;
- }
+ // TODO: this returned list is immutable, which violates the API
return xmlObjects.stream()
.filter(ContactPerson.class::isInstance)
.map(ContactPerson.class::cast)
@@ -289,29 +271,21 @@ public class RoleDescriptorXSAnyAdapter extends AbstractXSAnyAdapter implements
}
/** {@inheritDoc} */
- @Override
- public List<Endpoint> getEndpoints() {
+ @Nonnull @NotLive @Unmodifiable public List<Endpoint> getEndpoints() {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(Endpoint.DEFAULT_ELEMENT_NAME);
- if (xmlObjects.isEmpty()) {
- return null;
- }
return xmlObjects.stream()
.filter(Endpoint.class::isInstance)
.map(Endpoint.class::cast)
- .toList();
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).get();
}
/** {@inheritDoc} */
- @Override
- public List<Endpoint> getEndpoints(QName type) {
+ @Nonnull @NotLive @Unmodifiable public List<Endpoint> getEndpoints(@Nonnull final QName type) {
final List<XMLObject> xmlObjects = getAdapted().getUnknownXMLObjects(type);
- if (xmlObjects.isEmpty()) {
- return null;
- }
return xmlObjects.stream()
.filter(Endpoint.class::isInstance)
.map(Endpoint.class::cast)
- .toList();
+ .collect(CollectionSupport.nonnullCollector(Collectors.toUnmodifiableList())).get();
}
-}
+}
\ No newline at end of file
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list