// Path: idp-oidc-impl/src/main/java/net/shibboleth/idp/oidc/OIDCException.java
// public class OIDCException extends InvalidRequestException {
// 
// 
//     /**
//      * Instantiates a new Oidc exception.
//      */
//     public OIDCException() {
//         super("Invalid request");
//     }
//     
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param message the message
//      */
//     public OIDCException(final String message) {
//         super(message);
//     }
// 
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param message the message
//      * @param cause   the cause
//      */
//     public OIDCException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param cause   the cause
//      */
//     public OIDCException(final Throwable cause) {
//         this(cause.getMessage(), cause);
//     }
// }


import net.shibboleth.idp.oidc.OIDCException;
import net.shibboleth.utilities.java.support.collection.LockableClassToInstanceMultiMap;
import net.shibboleth.utilities.java.support.logic.Constraint;
import org.joda.time.DateTime;
import org.opensaml.core.xml.Namespace;
import org.opensaml.core.xml.NamespaceManager;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.schema.XSBooleanValue;
import org.opensaml.core.xml.util.AttributeMap;
import org.opensaml.core.xml.util.IDIndex;
import org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation;
import org.opensaml.saml.saml2.metadata.AffiliationDescriptor;
import org.opensaml.saml.saml2.metadata.AttributeAuthorityDescriptor;
import org.opensaml.saml.saml2.metadata.AuthnAuthorityDescriptor;
import org.opensaml.saml.saml2.metadata.ContactPerson;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
import org.opensaml.saml.saml2.metadata.Extensions;
import org.opensaml.saml.saml2.metadata.IDPSSODescriptor;
import org.opensaml.saml.saml2.metadata.Organization;
import org.opensaml.saml.saml2.metadata.PDPDescriptor;
import org.opensaml.saml.saml2.metadata.RoleDescriptor;
import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
import org.opensaml.xmlsec.signature.Signature;
import org.w3c.dom.Element;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/*
 * Licensed to the University Corporation for Advanced Internet Development, 
 * Inc. (UCAID) under one or more contributor license agreements. See the 
 * NOTICE file distributed with this work for additional information regarding
 * copyright ownership. The UCAID licenses this file to You under the Apache 
 * License, Version 2.0 (the "License"); you may not use this file except in 
 * compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.shibboleth.idp.oidc.client.metadata;



/**
 * Adapts OIDC protocol service metadata onto SAML metadata.
 */
public class ClientEntityDescriptor implements EntityDescriptor {
    /**
     * The Client id.
     */
    private String clientId;

    /**
     * The Object metadata.
     */
    @Nonnull
    private LockableClassToInstanceMultiMap<Object> objectMetadata;

    /**
     * Instantiates a new client entity descriptor.
     *
     * @param clientIdentifier the client identifier
     */
    public ClientEntityDescriptor(@Nonnull final String clientIdentifier) {
        this.clientId = Constraint.isNotNull(clientIdentifier, "Client cannot be null");
        this.objectMetadata = new LockableClassToInstanceMultiMap(true);
    }

    @Override
    public String getEntityID() {
        return clientId;
    }

    @Override
    public void setEntityID(final String id) {
// Path: idp-oidc-impl/src/main/java/net/shibboleth/idp/oidc/OIDCException.java
// public class OIDCException extends InvalidRequestException {
// 
// 
//     /**
//      * Instantiates a new Oidc exception.
//      */
//     public OIDCException() {
//         super("Invalid request");
//     }
//     
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param message the message
//      */
//     public OIDCException(final String message) {
//         super(message);
//     }
// 
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param message the message
//      * @param cause   the cause
//      */
//     public OIDCException(final String message, final Throwable cause) {
//         super(message, cause);
//     }
// 
//     /**
//      * Instantiates a new Oidc exception.
//      *
//      * @param cause   the cause
//      */
//     public OIDCException(final Throwable cause) {
//         this(cause.getMessage(), cause);
//     }
// }


// Path: idp-oidc-impl/src/main/java/net/shibboleth/idp/oidc/client/metadata/ClientEntityDescriptor.java
import net.shibboleth.idp.oidc.OIDCException;
import net.shibboleth.utilities.java.support.collection.LockableClassToInstanceMultiMap;
import net.shibboleth.utilities.java.support.logic.Constraint;
import org.joda.time.DateTime;
import org.opensaml.core.xml.Namespace;
import org.opensaml.core.xml.NamespaceManager;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.schema.XSBooleanValue;
import org.opensaml.core.xml.util.AttributeMap;
import org.opensaml.core.xml.util.IDIndex;
import org.opensaml.saml.saml2.metadata.AdditionalMetadataLocation;
import org.opensaml.saml.saml2.metadata.AffiliationDescriptor;
import org.opensaml.saml.saml2.metadata.AttributeAuthorityDescriptor;
import org.opensaml.saml.saml2.metadata.AuthnAuthorityDescriptor;
import org.opensaml.saml.saml2.metadata.ContactPerson;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
import org.opensaml.saml.saml2.metadata.Extensions;
import org.opensaml.saml.saml2.metadata.IDPSSODescriptor;
import org.opensaml.saml.saml2.metadata.Organization;
import org.opensaml.saml.saml2.metadata.PDPDescriptor;
import org.opensaml.saml.saml2.metadata.RoleDescriptor;
import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
import org.opensaml.xmlsec.signature.Signature;
import org.w3c.dom.Element;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import java.util.Collections;
import java.util.List;
import java.util.Set;

/*
 * Licensed to the University Corporation for Advanced Internet Development, 
 * Inc. (UCAID) under one or more contributor license agreements. See the 
 * NOTICE file distributed with this work for additional information regarding
 * copyright ownership. The UCAID licenses this file to You under the Apache 
 * License, Version 2.0 (the "License"); you may not use this file except in 
 * compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.shibboleth.idp.oidc.client.metadata;



/**
 * Adapts OIDC protocol service metadata onto SAML metadata.
 */
public class ClientEntityDescriptor implements EntityDescriptor {
    /**
     * The Client id.
     */
    private String clientId;

    /**
     * The Object metadata.
     */
    @Nonnull
    private LockableClassToInstanceMultiMap<Object> objectMetadata;

    /**
     * Instantiates a new client entity descriptor.
     *
     * @param clientIdentifier the client identifier
     */
    public ClientEntityDescriptor(@Nonnull final String clientIdentifier) {
        this.clientId = Constraint.isNotNull(clientIdentifier, "Client cannot be null");
        this.objectMetadata = new LockableClassToInstanceMultiMap(true);
    }

    @Override
    public String getEntityID() {
        return clientId;
    }

    @Override
    public void setEntityID(final String id) {
        throw new OIDCException();