package com.l7tech.server.policy.assertion;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.CustomizeErrorResponseAssertion;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.CustomizeErrorResponseAssertion.ErrorLevel;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.xml.SoapFaultLevel;
import java.io.IOException;

public class ServerCustomizeErrorResponseAssertion extends AbstractServerAssertion<CustomizeErrorResponseAssertion> {
   public ServerCustomizeErrorResponseAssertion(CustomizeErrorResponseAssertion var1) {
      super(var1);
   }

   @Override
   public AssertionStatus checkRequest(PolicyEnforcementContext var1) throws IOException, PolicyAssertionException {
      var1.setFaultlevel(this.a(this.assertion));
      return AssertionStatus.NONE;
   }

   private SoapFaultLevel a(CustomizeErrorResponseAssertion var1) {
      SoapFaultLevel var2 = new SoapFaultLevel();
      if (var1.getErrorLevel() == ErrorLevel.DROP_CONNECTION) {
         var2.setLevel(0);
      } else {
         var2.setLevel(1);
         var2.setFaultTemplateHttpStatus(var1.getHttpStatus());
         var2.setFaultTemplateContentType(var1.getContentType());
         var2.setFaultTemplate(var1.getContent());
         var2.setIncludePolicyDownloadURL(var1.isIncludePolicyDownloadURL());
         var2.setExtraHeaders(var1.getExtraHeaders());
      }

      return var2;
   }
}
