source: fedd/abac-src/rtml/src/edu/stanford/rt/credential/ApplicationDomain.java @ af51a97

axis_examplecompt_changesinfo-opsversion-2.00version-3.01version-3.02
Last change on this file since af51a97 was 8780cbec, checked in by Jay Jacobs <Jay.Jacobs@…>, 15 years ago

ABAC sources from Cobham

  • Property mode set to 100644
File size: 5.2 KB
Line 
1package edu.stanford.rt.credential;
2
3import java.util.Iterator;
4
5import edu.stanford.rt.datatype.*;
6import edu.stanford.rt.util.*;
7/**
8 * @author Ninghui Li, Sandra Qiu<br>
9 *
10 * Implementation of <code>ApplicationDomain</code> element.
11 *
12 */
13public class ApplicationDomain extends DomainSpecification
14{
15        /**
16         * Attribute uri (required).
17         */
18        private String uri;
19
20        /**
21         * A flag indicates whether this domain is the built-in system one.
22         */
23        private boolean isSystemDomain = false;
24
25        /**
26         * Constructor for ApplicationDomain.
27         * @param uri
28         * @param isSystemDomain
29         * @param context
30         * @throws DomainSpecException
31         */
32        public ApplicationDomain(
33                String uri,
34                boolean isSystemDomain,
35                RTContext context)
36                throws DomainSpecException
37        {
38                super(context);
39                this.uri = uri;
40                this.isSystemDomain = isSystemDomain;
41        }
42        /**
43         * Method getUri.
44         * @return String
45         */
46        public String getUri()
47        {
48                return uri;
49        }
50
51        /**
52         * Method lookupType.
53         *  Look up the DataType declaration by given typeName
54     *  in the current domain. If cannot find one and this domain is
55     *  not system domain, then look up in the system domain.
56         * @param typeName
57         * @return DataType
58         * @throws DomainSpecException
59         *      if cannot find a DataType declaration by the given name.
60         */
61        public DataType lookupType(String typeName)
62                throws DomainSpecException
63        {
64                //RTUtil.debugInfo(" lookupType()>>>> isSystemDomain = " + isSystemDomain);
65                DataType type = super.lookupType(typeName);
66
67                if (!isSystemDomain && type == null)
68                {
69                        type =
70                                getContext().getSystemDomain().lookupType(typeName);
71                }
72                if (type == null)
73                {
74                        throw new DomainSpecException(
75                                "Type '" + typeName + "' not found.");
76                }
77                return type;
78        }
79
80        /**
81         * Method lookupRoleDeclaration.
82         *      Look up the role declaration by given roleName in the
83     *  current domain. If cannot find one and this domain is not system
84     *  domain, then look it up in system domain.
85         * @param roleName
86         * @return RoleDeclaration
87         * @throws DomainSpecException
88         *      if cannot find one.
89         */
90        public RoleDeclaration lookupRoleDeclaration(String roleName)
91                throws DomainSpecException
92        {
93                RTUtil.debugInfo(
94                        "DomainSpecification(id="
95                                + ((getHashID() == null)
96                                        ? "null"
97                                        : getHashID().toString())
98                                + ") looking up role '"
99                                + roleName
100                                + "'");
101
102                RoleDeclaration role = super.lookupRoleDeclaration(roleName);
103                if (!isSystemDomain && role == null)
104                {
105                        role =
106                                getContext().getSystemDomain().lookupRoleDeclaration(
107                                        roleName);
108                }
109                if (role == null)
110                {
111                        throw new DomainSpecException(
112                                "Role '" + roleName + "' has not been declared.");
113                }
114                return role;
115        }
116
117        public String toString(String indent)
118        {
119                String thisIndent = indent + "  ";
120                StringBuffer sb = new StringBuffer();
121
122                sb.append(thisIndent).append(
123                        "ApplicationDomain:  hashID = "
124                                + getHashID().toString()
125                                + "\n");
126                sb.append(thisIndent + "  ").append("uri = ").append(
127                        uri).append(
128                        "\n");
129                sb
130                        .append(thisIndent + "  ")
131                        .append("PrincipalType = ")
132                        .append(getPrincipalType())
133                        .append("\n");
134
135                sb.append(thisIndent + "  ").append("Imported Domains: \n");
136                try
137                {
138                        Iterator it = getImportedDomains().keyIterator();
139                        while (it.hasNext())
140                        {
141                                String key = (String) it.next();
142                                ApplicationDomain value =
143                                        (ApplicationDomain) getImportedDomains().get(key);
144                                sb.append(thisIndent + "    ").append(key).append(
145                                        "\n");
146                                sb.append(thisIndent + "    ").append(
147                                        value.getUri()).append(
148                                        "\n");
149
150                        }
151                }
152                catch (DomainSpecException e)
153                {
154                        e.printStackTrace();
155                }
156
157                sb.append(thisIndent + "  ").append("Type Declarations: \n");
158                try
159                {
160                        Iterator it = getTypeDeclarations().keyIterator();
161                        while (it.hasNext())
162                        {
163                                String key = (String) it.next();
164                                DataType value =
165                                        (DataType) getTypeDeclarations().get(key);
166
167                                sb
168                                        .append(thisIndent + "    ")
169                                        .append(key)
170                    .append("\n")
171                                        .append(value.toString(thisIndent + "    "))
172                                        .append("\n");
173                        }
174                }
175                catch (DomainSpecException e)
176                {
177                        e.printStackTrace();
178                }
179
180                sb.append(thisIndent + "  ").append("Role Declarations: \n");
181                try
182                {
183                        Iterator it = getRoleDeclarations().keyIterator();
184                        while (it.hasNext())
185                        {
186                                String key = (String) it.next();
187                                RoleDeclaration value =
188                                        (RoleDeclaration) getRoleDeclarations().get(key);
189                                sb.append(thisIndent + "    ").append(key).append(
190                                        "\n");
191                                sb.append(
192                                        value.toString(thisIndent + "    ")).append(
193                                        "\n");
194                        }
195                }
196                catch (DomainSpecException e)
197                {
198                        e.printStackTrace();
199                }
200                return sb.toString();
201        } // end of toString()
202
203        /* (non-Javadoc)
204         * @see edu.stanford.rt.credential.DomainSpecification#setHashID(HashID)
205         */
206        public synchronized void setHashID(HashID hashID)
207                throws DomainSpecException
208        {
209                if (isComplete())
210                        throw new DomainSpecException("ApplicationDomain unmodifiable.");
211                if (hashID.getHashType() != HashID.APPLICATION_DOMAIN)
212                        throw new DomainSpecException("Wrong type of hash id");
213                super.setHashID(hashID);
214        }
215
216}
Note: See TracBrowser for help on using the repository browser.