/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.policy;
import static java.util.Collections.unmodifiableMap;
import static org.apache.commons.lang.StringUtils.isEmpty;
import static org.mule.runtime.api.util.Preconditions.checkArgument;
import java.io.File;
import java.util.Map;
/**
* Parametrizes a policy template
* <p/>
* A policy template is a Mule artifact consistent of a context with dependencies deployed inside a Mule application.
*
* @since 4.0
*/
public class PolicyParametrization {
private final String id;
private final PolicyPointcut pointcut;
private final Map<String, String> parameters;
private final int order;
private final File config;
/**
* Creates a new parametrization
* @param id parametrization identifier. Non empty.
* @param pointcut used to determine if the policy must be applied on a given request. Non null
* @param order indicates how this policy must be ordered related to other applied policies. A policy with a given order
* has to be applied before polices with smaller order and after policies with bigger order. Must be positive
* @param parameters parameters for the policy template on which the parametrization is based on. Non null.
* @param config Mule XML configuration file for creating the policy. Non null.
*/
public PolicyParametrization(String id, PolicyPointcut pointcut, int order, Map<String, String> parameters, File config) {
checkArgument(!isEmpty(id), "id cannot be null");
checkArgument(pointcut != null, "pointcut cannot be null");
checkArgument(parameters != null, "parameters cannot be null");
checkArgument(order > 0, "order must be positive");
checkArgument(config != null, "config file cannot be null");
this.id = id;
this.pointcut = pointcut;
this.parameters = unmodifiableMap(parameters);
this.order = order;
this.config = config;
}
/**
* @return parametrization identifier
*/
public String getId() {
return id;
}
/**
* @return pointcut to evaluate whether the policy must be applied or not.
*/
public PolicyPointcut getPointcut() {
return pointcut;
}
/**
* @return order of the policy parametrization
*/
public int getOrder() {
return order;
}
/**
* @return parameters to configure the policy template
*/
public Map<String, String> getParameters() {
return parameters;
}
/**
* @return configuration file used to generate the policy
*/
public File getConfig() {
return config;
}
}