package com.sun.identity.saml2.assertion.impl;

import com.sun.identity.saml2.assertion.BaseIDAbstract;
import com.sun.identity.saml2.common.SAML2Exception;
import com.sun.identity.saml2.common.SAML2SDKUtils;

public abstract class BaseIDAbstractImpl implements BaseIDAbstract {
   private String nameQualifier;
   private String spNameQualifier;
   private boolean isMutable = true;

   @Override
   public String getNameQualifier() {
      return this.nameQualifier;
   }

   @Override
   public void setNameQualifier(String nameQualifier) throws SAML2Exception {
      if (!this.isMutable) {
         throw new SAML2Exception(SAML2SDKUtils.BUNDLE.getString("objectImmutable"));
      }

      this.nameQualifier = nameQualifier;
   }

   @Override
   public String getSPNameQualifier() {
      return this.spNameQualifier;
   }

   @Override
   public void setSPNameQualifier(String spNameQualifier) throws SAML2Exception {
      if (!this.isMutable) {
         throw new SAML2Exception(SAML2SDKUtils.BUNDLE.getString("objectImmutable"));
      }

      this.spNameQualifier = spNameQualifier;
   }

   @Override
   public void makeImmutable() {
      this.isMutable = false;
   }

   @Override
   public boolean isMutable() {
      return this.isMutable;
   }
}
