###
# ============LICENSE_START=======================================================
# ECOMP-PDP
# ================================================================================
# Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#      http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============LICENSE_END=========================================================
###

# Default XACML Properties File for PDP RESTful servlet
#
# Standard API Factories
#
xacml.dataTypeFactory=com.att.research.xacml.std.StdDataTypeFactory
xacml.pdpEngineFactory=com.att.research.xacmlatt.pdp.ATTPDPEngineFactory
xacml.pepEngineFactory=com.att.research.xacml.std.pep.StdEngineFactory
# NOT USED SEE BELOW xacml.pipFinderFactory=com.att.research.xacml.std.pip.StdPIPFinderFactory
xacml.traceEngineFactory=com.att.research.xacml.std.trace.LoggingTraceEngineFactory
#
# AT&T PDP Implementation Factories
#
xacml.att.evaluationContextFactory=com.att.research.xacmlatt.pdp.std.StdEvaluationContextFactory
xacml.att.combiningAlgorithmFactory=com.att.research.xacmlatt.pdp.std.StdCombiningAlgorithmFactory
xacml.att.functionDefinitionFactory=org.openecomp.policy.xacml.custom.EcompFunctionDefinitionFactory
# NOT USED SEE BELOW xacml.att.policyFinderFactory=org.openecomp.policy.pdp.std.StdPolicyFinderFactory

#
# AT&T RESTful PDP Implementation Factories
#
xacml.pipFinderFactory=org.openecomp.policy.rest.impl.XACMLPdpPIPFinderFactory
xacml.att.policyFinderFactory=org.openecomp.policy.rest.XACMLPdpPolicyFinderFactory
#
# When set to true, this flag tells the StdPolicyFinderFactory to combined all the root policy files into
# into one PolicySet and use the given Policy Algorithm.
#
xacml.att.policyFinderFactory.combineRootPolicies=urn:com:att:xacml:3.0:policy-combining-algorithm:combined-deny-overrides
#
# PDP RESTful API properties
# 
# Set this to the address where the XACML-PAP-REST servlet is running
# http://localhost:9090/pap/
xacml.rest.pap.url=http://localhost:8070/pap/
#
# Give the running PDP an ID for the PAP. The url that its running as is a good choice.
# The PAP identifies PDP's using the URL of the PDP.
#
xacml.rest.pdp.id=http://localhost:8082/pdp/
#
# Set the directory where the PDP holds its Policy Cache and PIP Configuration
#
xacml.rest.pdp.config=config_testing

xacml.rest.pdp.webapps=/webapps

xacml.rest.pdp.configparams=../webapps/configparams
#
# Initialize register with PAP servlet
#
xacml.rest.pdp.register=true
#
# Sleep period in seconds between register attempts
#
xacml.rest.pdp.register.sleep=15
#
# number of attempts to register. -1 means keep trying forever.
#
xacml.rest.pdp.register.retries=-1
#
# max number of bytes in a POST of a XML/JSON request
#
xacml.rest.pdp.maxcontent=32767
# 
# testClient file
# 
xacml.rest.pep.idfile = testclient.properties
