source: java/GraphTest.java @ 31b67d5

abac0-leakabac0-meicompt_changesgec13mei-idmei-rt0-nmei_rt0mei_rt2mei_rt2_fix_1meiyap-rt1meiyap1rt2tvf-new-xml
Last change on this file since 31b67d5 was 31b67d5, checked in by Mike Ryan <mikeryan@…>, 13 years ago

initial basic implementation of native java ABAC library
credentials must be loaded from text, there is no crypto
no support for intersections
this code was lifted from crudge, the credential visualizer

  • Property mode set to 100644
File size: 1.8 KB
Line 
1import java.io.*;
2
3import edu.uci.ics.jung.graph.*;
4
5import net.deterlab.abac.Credential;
6import net.deterlab.abac.CredentialGraph;
7import net.deterlab.abac.Query;
8import net.deterlab.abac.Role;
9
10/**
11 * Simple test of the native Java implementation of ABAC. Loads credentials
12 * from an rt0 file and runs a query against them.
13 */
14public class GraphTest {
15    public static void main(String[] args) throws IOException {
16        if (args.length < 3) {
17            System.out.println("Usage: GraphTest <rt0 file> <role> <principal>");
18            System.out.println("    runs the query role <-?- principal and prints the result");
19            System.exit(1);
20        }
21
22        String role = args[1];
23        String prin = args[2];
24
25        CredentialGraph graph = new CredentialGraph();
26
27        BufferedReader reader = new BufferedReader(new FileReader(args[0]));
28        String line;
29        while ((line = reader.readLine()) != null) {
30            // skip comments
31            if (line.startsWith("#"))
32                continue;
33
34            String[] parts = line.split("\\s*<--?\\s*");
35
36            if (parts.length != 2) {
37                System.out.println("Warning: funky line: " + line);
38                continue;
39            }
40
41            Role head = new Role(parts[0]);
42            Role tail = new Role(parts[1]);
43
44            if (!head.is_role()) {
45                System.out.println("Warning: invalid role in head position: " + line);
46                continue;
47            }
48
49            Credential cred = new Credential(head, tail);
50            graph.add_credential(cred);
51        }
52
53        //
54        // run the query
55        //
56
57        Query q = graph.querier();
58        Graph<Role, Credential> ret = q.run(role, prin);
59        for (Credential c : ret.getEdges())
60            System.out.println(c.toString());
61    }
62}
Note: See TracBrowser for help on using the repository browser.