package com.l7tech.policy;

import com.l7tech.policy.assertion.AddHeaderAssertion;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AuditAssertion;
import com.l7tech.policy.assertion.AuditDetailAssertion;
import com.l7tech.policy.assertion.AuditRecordToXmlAssertion;
import com.l7tech.policy.assertion.CodeInjectionProtectionAssertion;
import com.l7tech.policy.assertion.CommentAssertion;
import com.l7tech.policy.assertion.ContentTypeAssertion;
import com.l7tech.policy.assertion.CustomAssertionHolder;
import com.l7tech.policy.assertion.CustomizeErrorResponseAssertion;
import com.l7tech.policy.assertion.EncapsulatedAssertion;
import com.l7tech.policy.assertion.ExportVariablesAssertion;
import com.l7tech.policy.assertion.FalseAssertion;
import com.l7tech.policy.assertion.FaultLevel;
import com.l7tech.policy.assertion.HardcodedResponseAssertion;
import com.l7tech.policy.assertion.HtmlFormDataAssertion;
import com.l7tech.policy.assertion.HttpFormPost;
import com.l7tech.policy.assertion.HttpRoutingAssertion;
import com.l7tech.policy.assertion.Include;
import com.l7tech.policy.assertion.InverseHttpFormPost;
import com.l7tech.policy.assertion.JmsRoutingAssertion;
import com.l7tech.policy.assertion.MapValueAssertion;
import com.l7tech.policy.assertion.MessageBufferingAssertion;
import com.l7tech.policy.assertion.Operation;
import com.l7tech.policy.assertion.OversizedTextAssertion;
import com.l7tech.policy.assertion.RaiseErrorAssertion;
import com.l7tech.policy.assertion.Regex;
import com.l7tech.policy.assertion.RemoteIpRange;
import com.l7tech.policy.assertion.RequestSizeLimit;
import com.l7tech.policy.assertion.RequestSwAAssertion;
import com.l7tech.policy.assertion.RequestXpathAssertion;
import com.l7tech.policy.assertion.ResolveServiceAssertion;
import com.l7tech.policy.assertion.ResponseXpathAssertion;
import com.l7tech.policy.assertion.SetVariableAssertion;
import com.l7tech.policy.assertion.SqlAttackAssertion;
import com.l7tech.policy.assertion.SslAssertion;
import com.l7tech.policy.assertion.TimeRange;
import com.l7tech.policy.assertion.TrueAssertion;
import com.l7tech.policy.assertion.UnknownAssertion;
import com.l7tech.policy.assertion.WsiBspAssertion;
import com.l7tech.policy.assertion.WsiSamlAssertion;
import com.l7tech.policy.assertion.WsspAssertion;
import com.l7tech.policy.assertion.composite.AllAssertion;
import com.l7tech.policy.assertion.composite.ExactlyOneAssertion;
import com.l7tech.policy.assertion.composite.ForEachLoopAssertion;
import com.l7tech.policy.assertion.composite.HandleErrorsAssertion;
import com.l7tech.policy.assertion.composite.OneOrMoreAssertion;
import com.l7tech.policy.assertion.composite.TransactionAssertion;
import com.l7tech.policy.assertion.credential.WsFederationPassiveTokenExchange;
import com.l7tech.policy.assertion.credential.WsFederationPassiveTokenRequest;
import com.l7tech.policy.assertion.credential.WsTrustCredentialExchange;
import com.l7tech.policy.assertion.credential.XpathCredentialSource;
import com.l7tech.policy.assertion.credential.http.CookieCredentialSourceAssertion;
import com.l7tech.policy.assertion.credential.http.HttpBasic;
import com.l7tech.policy.assertion.credential.http.HttpDigest;
import com.l7tech.policy.assertion.credential.http.HttpNegotiate;
import com.l7tech.policy.assertion.credential.wss.EncryptedUsernameTokenAssertion;
import com.l7tech.policy.assertion.credential.wss.WssBasic;
import com.l7tech.policy.assertion.credential.wss.WssDigest;
import com.l7tech.policy.assertion.identity.AuthenticationAssertion;
import com.l7tech.policy.assertion.identity.MemberOfGroup;
import com.l7tech.policy.assertion.identity.SpecificUser;
import com.l7tech.policy.assertion.xml.RemoveElement;
import com.l7tech.policy.assertion.xml.SchemaValidation;
import com.l7tech.policy.assertion.xml.XslTransformation;
import com.l7tech.policy.assertion.xmlsec.AddWssSecurityToken;
import com.l7tech.policy.assertion.xmlsec.AddWssTimestamp;
import com.l7tech.policy.assertion.xmlsec.AddWssUsernameToken;
import com.l7tech.policy.assertion.xmlsec.BuildRstSoapRequest;
import com.l7tech.policy.assertion.xmlsec.BuildRstrSoapResponse;
import com.l7tech.policy.assertion.xmlsec.CancelSecurityContext;
import com.l7tech.policy.assertion.xmlsec.CreateSecurityContextToken;
import com.l7tech.policy.assertion.xmlsec.EstablishOutboundSecureConversation;
import com.l7tech.policy.assertion.xmlsec.LookupOutboundSecureConversationSession;
import com.l7tech.policy.assertion.xmlsec.LookupTrustedCertificateAssertion;
import com.l7tech.policy.assertion.xmlsec.ProcessRstrSoapResponse;
import com.l7tech.policy.assertion.xmlsec.RequestWssKerberos;
import com.l7tech.policy.assertion.xmlsec.RequireWssEncryptedElement;
import com.l7tech.policy.assertion.xmlsec.RequireWssSaml;
import com.l7tech.policy.assertion.xmlsec.RequireWssSaml2;
import com.l7tech.policy.assertion.xmlsec.RequireWssSignedElement;
import com.l7tech.policy.assertion.xmlsec.RequireWssTimestamp;
import com.l7tech.policy.assertion.xmlsec.RequireWssX509Cert;
import com.l7tech.policy.assertion.xmlsec.SamlBrowserArtifact;
import com.l7tech.policy.assertion.xmlsec.SecureConversation;
import com.l7tech.policy.assertion.xmlsec.WsSecurity;
import com.l7tech.policy.assertion.xmlsec.WssConfigurationAssertion;
import com.l7tech.policy.assertion.xmlsec.WssEncryptElement;
import com.l7tech.policy.assertion.xmlsec.WssReplayProtection;
import com.l7tech.policy.assertion.xmlsec.WssSignElement;
import com.l7tech.policy.assertion.xmlsec.WssVersionAssertion;
import java.util.Collections;

public class AllAssertions {
   public static Assertion[] GATEWAY_EVERYTHING = new Assertion[]{
      new TrueAssertion(),
      new FalseAssertion(),
      new HttpBasic(),
      new HttpDigest(),
      new HttpNegotiate(),
      new WssBasic(),
      new WssDigest(),
      new AllAssertion(Collections.singletonList(new FalseAssertion())),
      new ExactlyOneAssertion(Collections.singletonList(new FalseAssertion())),
      new OneOrMoreAssertion(Collections.singletonList(new FalseAssertion())),
      new ForEachLoopAssertion(Collections.singletonList(new FalseAssertion())),
      new HandleErrorsAssertion(Collections.singletonList(new FalseAssertion())),
      new SslAssertion(),
      new HttpRoutingAssertion(),
      new JmsRoutingAssertion(),
      new MemberOfGroup(),
      new SpecificUser(),
      new RequireWssX509Cert(),
      new RequireWssSignedElement(),
      new RequireWssEncryptedElement(),
      new WssSignElement(),
      new WssEncryptElement(),
      new RequestXpathAssertion(),
      new ResponseXpathAssertion(),
      new WssReplayProtection(),
      new RequestSwAAssertion(),
      new RequireWssSaml(),
      new RequireWssTimestamp(),
      new AddWssTimestamp(),
      new AuditAssertion(),
      new WsTrustCredentialExchange(),
      new WsFederationPassiveTokenExchange(),
      new WsFederationPassiveTokenRequest(),
      new EncryptedUsernameTokenAssertion(),
      new Regex(),
      new UnknownAssertion(),
      new CommentAssertion(),
      new SqlAttackAssertion(),
      new OversizedTextAssertion(),
      new RequestSizeLimit(),
      new MessageBufferingAssertion(),
      new RequestWssKerberos(),
      new WsiBspAssertion(),
      new WsiSamlAssertion(),
      new WsspAssertion(),
      new CookieCredentialSourceAssertion(),
      new XpathCredentialSource(),
      new AuthenticationAssertion(),
      new HtmlFormDataAssertion(),
      new CodeInjectionProtectionAssertion(),
      new Include(),
      new EncapsulatedAssertion(),
      new WssVersionAssertion(),
      new WssConfigurationAssertion(),
      new WsSecurity(),
      new CreateSecurityContextToken(),
      new CancelSecurityContext(),
      new LookupOutboundSecureConversationSession(),
      new BuildRstSoapRequest(),
      new BuildRstrSoapResponse(),
      new ProcessRstrSoapResponse(),
      new EstablishOutboundSecureConversation(),
      new RemoveElement(),
      new AddWssUsernameToken(),
      new AuditRecordToXmlAssertion(),
      new ExportVariablesAssertion(),
      new CustomizeErrorResponseAssertion(),
      new ContentTypeAssertion(),
      new AddHeaderAssertion(),
      new ResolveServiceAssertion(),
      new LookupTrustedCertificateAssertion(),
      new MapValueAssertion(),
      new RaiseErrorAssertion(),
      new TransactionAssertion(Collections.singletonList(new FalseAssertion()))
   };
   public static Assertion[] SERIALIZABLE_EVERYTHING = new Assertion[]{
      new HttpBasic(),
      new HttpDigest(),
      new HttpNegotiate(),
      new WssBasic(),
      new WssDigest(),
      new AllAssertion(Collections.singletonList(new FalseAssertion())),
      new ExactlyOneAssertion(Collections.singletonList(new FalseAssertion())),
      new OneOrMoreAssertion(Collections.singletonList(new FalseAssertion())),
      new ForEachLoopAssertion(Collections.singletonList(new FalseAssertion())),
      new HandleErrorsAssertion(Collections.singletonList(new FalseAssertion())),
      new FalseAssertion(),
      new SslAssertion(),
      new HttpRoutingAssertion(),
      new JmsRoutingAssertion(),
      new TrueAssertion(),
      new MemberOfGroup(),
      new SpecificUser(),
      new RequireWssX509Cert(),
      new SecureConversation(),
      new RequireWssSignedElement(),
      new RequireWssEncryptedElement(),
      new WssSignElement(),
      new WssEncryptElement(),
      new RequestXpathAssertion(),
      new ResponseXpathAssertion(),
      new WssReplayProtection(),
      new RequestSwAAssertion(),
      new RequireWssSaml(),
      new RequireWssTimestamp(),
      new AddWssTimestamp(),
      new AuditAssertion(),
      new CustomAssertionHolder(),
      new WsTrustCredentialExchange(),
      new WsFederationPassiveTokenExchange(),
      new WsFederationPassiveTokenRequest(),
      new Regex(),
      new UnknownAssertion(),
      new CommentAssertion(),
      new SqlAttackAssertion(),
      new OversizedTextAssertion(),
      new RequestSizeLimit(),
      new MessageBufferingAssertion(),
      new RequestWssKerberos(),
      new EncryptedUsernameTokenAssertion(),
      new WsiBspAssertion(),
      new WsspAssertion(),
      new FaultLevel(),
      new RequireWssSaml2(),
      new SchemaValidation(),
      new XslTransformation(),
      new TimeRange(),
      new RemoteIpRange(),
      new AuditDetailAssertion(),
      new XpathCredentialSource(),
      new SamlBrowserArtifact(),
      new HttpFormPost(),
      new InverseHttpFormPost(),
      new Operation(),
      new HardcodedResponseAssertion(),
      new AddWssSecurityToken(),
      new SetVariableAssertion(),
      new CookieCredentialSourceAssertion(),
      new HtmlFormDataAssertion(),
      new CodeInjectionProtectionAssertion(),
      new AuthenticationAssertion(),
      new WsiSamlAssertion(),
      new Include(),
      new EncapsulatedAssertion(),
      new WssVersionAssertion(),
      new WssConfigurationAssertion(),
      new WsSecurity(),
      new CreateSecurityContextToken(),
      new CancelSecurityContext(),
      new LookupOutboundSecureConversationSession(),
      new BuildRstSoapRequest(),
      new BuildRstrSoapResponse(),
      new ProcessRstrSoapResponse(),
      new EstablishOutboundSecureConversation(),
      new RemoveElement(),
      new AddWssUsernameToken(),
      new AuditRecordToXmlAssertion(),
      new ExportVariablesAssertion(),
      new CustomizeErrorResponseAssertion(),
      new ContentTypeAssertion(),
      new AddHeaderAssertion(),
      new ResolveServiceAssertion(),
      new LookupTrustedCertificateAssertion(),
      new MapValueAssertion(),
      new RaiseErrorAssertion(),
      new TransactionAssertion(Collections.singletonList(new FalseAssertion()))
   };
}
