diff --git a/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java b/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java
new file mode 100644
index 0000000..02194b6
--- /dev/null
+++ b/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java
@@ -0,0 +1,146 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ *
+ */
+
+package org.apache.openaz.xacml.pdp.std.json;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Properties;
+
+import org.apache.openaz.xacml.api.Decision;
+import org.apache.openaz.xacml.api.Request;
+import org.apache.openaz.xacml.api.Response;
+import org.apache.openaz.xacml.api.pdp.PDPEngine;
+import org.apache.openaz.xacml.api.pdp.PDPEngineFactory;
+import org.apache.openaz.xacml.std.IdentifierImpl;
+import org.apache.openaz.xacml.std.StdAttributeValue;
+import org.apache.openaz.xacml.std.StdMutableAttribute;
+import org.apache.openaz.xacml.std.StdMutableRequest;
+import org.apache.openaz.xacml.std.StdMutableRequestAttributes;
+
+
+/**
+ * Create a XACML Request and evaluate it against a PDP
+ */
+public class RequestEvaluationTest {
+    
+    @org.junit.Test
+    public void testEvaluateRequestinPDP() throws Exception {
+        Properties properties = new Properties();
+        properties.put("xacml.rootPolicies", "manager");
+        properties.put("xacml.referencedPolicies", "doubleit");
+        properties.put("manager.file", 
+                       "src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml");
+        properties.put("doubleit.file", 
+            "src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml");
+        
+        PDPEngineFactory engineFactory = PDPEngineFactory.newInstance();
+        PDPEngine pdpEngine = engineFactory.newEngine(properties);
+        
+        // Successful request
+        Request request = createRequest("manager");
+        
+        Response response = pdpEngine.decide(request);
+        assertFalse(response.getResults().isEmpty());
+        assertTrue(response.getResults().iterator().next().getDecision() == Decision.PERMIT);
+    
+        // Unsuccessful request
+        request = createRequest("employee");
+        
+        response = pdpEngine.decide(request);
+        assertFalse(response.getResults().isEmpty());
+        assertTrue(response.getResults().iterator().next().getDecision() != Decision.PERMIT);
+    }
+    
+    private Request createRequest(String roleName) {
+        StdMutableRequest request = new StdMutableRequest();
+        
+        // Add Subject
+        StdMutableRequestAttributes subjectRequestAttributes = new StdMutableRequestAttributes();
+        subjectRequestAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+        
+        // Subject Id
+        StdMutableAttribute subjectIdAttribute = new StdMutableAttribute();
+        subjectIdAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+        subjectIdAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject:subject-id"));
+        StdAttributeValue<String> subjectIdAttributeValue = 
+            new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"), "alice");
+        subjectIdAttribute.addValue(subjectIdAttributeValue);
+        
+        // Subject role
+        StdMutableAttribute subjectRoleAttribute = new StdMutableAttribute();
+        subjectRoleAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+        subjectRoleAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:2.0:subject:role"));
+        StdAttributeValue<String> subjectRoleAttributeValue = 
+            new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#anyURI"), roleName);
+        subjectRoleAttribute.addValue(subjectRoleAttributeValue);
+        
+        subjectRequestAttributes.add(subjectIdAttribute);
+        subjectRequestAttributes.add(subjectRoleAttribute);
+        request.add(subjectRequestAttributes);
+        
+        // Add Resource
+        StdMutableRequestAttributes resourceAttributes = new StdMutableRequestAttributes();
+        resourceAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource"));
+        
+        StdMutableAttribute resourceAttribute = new StdMutableAttribute();
+        resourceAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource"));
+        resourceAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:resource:resource-id"));
+        StdAttributeValue<String> resourceAttributeValue = 
+            new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"), 
+                "{http://www.example.org/contract/DoubleIt}DoubleItService#DoubleIt");
+        resourceAttribute.addValue(resourceAttributeValue);
+        
+        resourceAttributes.add(resourceAttribute);
+        request.add(resourceAttributes);
+        
+        // Add Action
+        StdMutableRequestAttributes actionAttributes = new StdMutableRequestAttributes();
+        actionAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:action"));
+        
+        StdMutableAttribute actionAttribute = new StdMutableAttribute();
+        actionAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:action"));
+        actionAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:action:action-id"));
+        StdAttributeValue<String> actionAttributeValue = 
+            new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"), "execute");
+        actionAttribute.addValue(actionAttributeValue);
+        
+        actionAttributes.add(actionAttribute);
+        request.add(actionAttributes);
+        
+        // Add Environment
+        StdMutableRequestAttributes environmentAttributes = new StdMutableRequestAttributes();
+        environmentAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:environment"));
+        
+        StdMutableAttribute environmentAttribute = new StdMutableAttribute();
+        environmentAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:environment:current-dateTime"));
+        StdAttributeValue<String> environmentAttributeValue = 
+            new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#dateTime"), 
+                "2015-07-14T11:02:01.465+01:00");
+        environmentAttribute.addValue(environmentAttributeValue);
+        
+        environmentAttributes.add(environmentAttribute);
+        request.add(environmentAttributes);
+        
+        return request;
+    }
+    
+}
\ No newline at end of file
diff --git a/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml
new file mode 100644
index 0000000..b2cebdf
--- /dev/null
+++ b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PolicySet PolicySetId="org.apache.permissions.doubleit"
+    PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides"
+    Version="1.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 xacml-core-v3-schema-wd-17.xsd"
+    xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >
+    <Target />
+    <Policy PolicyId="Permissions:for:the:manager:role"
+	    Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
+	    <Target />
+	    <Rule RuleId="Permission:to:doubleit" Effect="Permit">
+		    <Target>
+			    <AnyOf>
+				    <AllOf>
+				    	<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
+					    	<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">{http://www.example.org/contract/DoubleIt}DoubleItService#DoubleIt</AttributeValue>
+						    <AttributeDesignator MustBePresent="false"
+						      	Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" 
+						      	AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
+						    	DataType="http://www.w3.org/2001/XMLSchema#string" />
+					    </Match>
+			    	</AllOf>
+			    </AnyOf>
+			    <AnyOf>
+			    	<AllOf>
+                        <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
+                            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">execute</AttributeValue>
+                            <AttributeDesignator MustBePresent="false"
+                                Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" 
+                                AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
+                                DataType="http://www.w3.org/2001/XMLSchema#string" />
+                        </Match>
+                    </AllOf>
+			    </AnyOf>
+		    </Target>
+	    </Rule>
+    </Policy>
+</PolicySet>
+
+
diff --git a/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml
new file mode 100644
index 0000000..dca7b4b
--- /dev/null
+++ b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PolicySet PolicySetId="org.apache.role.manager"
+    PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides"
+    Version="1.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 xacml-core-v3-schema-wd-17.xsd"
+    xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >
+	<Target>
+        <AnyOf>
+		    <AllOf>
+				<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
+					 <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">manager</AttributeValue>
+				     <AttributeDesignator MustBePresent="false"
+						Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" 
+						AttributeId="urn:oasis:names:tc:xacml:2.0:subject:role"
+						DataType="http://www.w3.org/2001/XMLSchema#anyURI" />
+			     </Match>
+			</AllOf>
+	     </AnyOf>
+    </Target>
+
+    <!-- Use permissions associated with the manager role -->
+    <PolicySetIdReference>org.apache.permissions.doubleit</PolicySetIdReference>
+</PolicySet>
+
+
