package com.l7tech.policy.assertion;

import com.l7tech.policy.assertion.xmlsec.SecurityHeaderAddressable;
import com.l7tech.policy.assertion.xmlsec.XmlSecurityRecipientContext;
import java.io.Serializable;

public abstract class RoutingAssertion extends Assertion implements Cloneable, Serializable, SecurityHeaderAddressable {
   public static final int REMOVE_CURRENT_SECURITY_HEADER = 0;
   public static final int CLEANUP_CURRENT_SECURITY_HEADER = 1;
   public static final int PROMOTE_OTHER_SECURITY_HEADER = 2;
   public static final int IGNORE_SECURITY_HEADER = 3;
   public static final int MAX_DURATION_DEFAULT_MIN_VALUE = 1;
   public static final int MAX_DURATION_DEFAULT_MAX_VALUE = 86400000;
   private String xmlSecurityActorToPromote;
   private int currentSecurityHeaderHandling = 0;
   private XmlSecurityRecipientContext recipientContext = XmlSecurityRecipientContext.getLocalRecipient();
   static final long serialVersionUID = 5184376229815678066L;

   public abstract boolean initializesRequest();

   public abstract boolean needsInitializedRequest();

   public abstract boolean initializesResponse();

   public abstract boolean needsInitializedResponse();

   public String getXmlSecurityActorToPromote() {
      return this.xmlSecurityActorToPromote;
   }

   public void setXmlSecurityActorToPromote(String var1) {
      this.xmlSecurityActorToPromote = var1;
   }

   public int getCurrentSecurityHeaderHandling() {
      return this.currentSecurityHeaderHandling;
   }

   public void setCurrentSecurityHeaderHandling(int var1) {
      this.currentSecurityHeaderHandling = var1;
   }

   protected void copyFrom(RoutingAssertion var1) {
      this.setCurrentSecurityHeaderHandling(var1.getCurrentSecurityHeaderHandling());
      this.setXmlSecurityActorToPromote(var1.getXmlSecurityActorToPromote());
      this.setRecipientContext(var1.getRecipientContext());
   }

   @Override
   public XmlSecurityRecipientContext getRecipientContext() {
      return this.recipientContext;
   }

   @Override
   public void setRecipientContext(XmlSecurityRecipientContext var1) {
      if (var1 == null) {
         var1 = XmlSecurityRecipientContext.getLocalRecipient();
      }

      this.recipientContext = var1;
   }
}
