Changeset 1939

Show
Ignore:
Timestamp:
02/18/08 12:19:45 (9 months ago)
Author:
dsugar
Message:

work on adding dictionary entries for 'file' type resources.
Common base class for various parsers
ticket:164

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/dictionary_changes/resources/cdsframework.spt

    r1591 r1939  
    77        libs_use_ld_so($1) 
    88        libs_use_shared_libs($1) 
     9        miscfiles_read_localization($1) 
    910        role system_r types $1; 
    1011') 
  • branches/dictionary_changes/resources/dictionary/dictionary.fdic

    • Property svn:executable deleted
    r1938 r1939  
    7676                } 
    7777                new 
    78                 [desc : "Create new file in directory"] 
     78                [desc : "Create new file or directory in directory w/type transition"] 
    7979                { 
    8080                        resource { 
    8181                                dir { read getattr lock search ioctl add_name remove_name write } 
     82                                file { create  } 
     83                                lnk_file { create  } 
    8284                        } 
    8385                        transition { 
    8486                                dir 
    8587                                file 
     88                                lnk_file 
    8689                        } 
    8790                } 
     
    124127                write 
    125128                [desc: "Write to file"] 
    126                 [backflow : 1
     129                [backflow : 0
    127130                { 
    128131                        resource { 
     
    133136                append_only 
    134137                [desc: "Append existing files"] 
    135                 [backflow : 1
     138                [backflow : 0
    136139                { 
    137140                        resource { 
     
    140143                        } 
    141144                } 
    142         } 
    143 
    144  
    145 rdef namedPipes 
     145                new 
     146                [desc:"Create new file w/type transition"] 
     147                [backflow : 0 ]  
     148                { 
     149                        resource { 
     150                                file { create  } 
     151                                lnk_file { create }  
     152                        } 
     153                        transition { 
     154                                file 
     155                                lnk_file 
     156                        } 
     157                } 
     158        } 
     159
     160 
     161rdef namedPipesDir 
    146162[desc: "named pipe and the directory it lives in"] 
    147163{ 
     
    188204} 
    189205 
     206rdef namedPipeFile 
     207[desc: "A named pipe file"] 
     208{ 
     209        requires { file } 
     210        owner { 
     211                resource { 
     212                        fifo_file { append create getattr ioctl link lock read rename setattr unlink write } 
     213                } 
     214        } 
     215        read { 
     216                default { read } 
     217                read 
     218                [desc: "Read data from a named pipe"] 
     219                [backflow : 0] 
     220                { 
     221                        resource { 
     222                                fifo_file { read getattr } 
     223                        } 
     224                } 
     225        } 
     226        write { 
     227                default { create write } 
     228                write 
     229                [desc: "Write to a named pipe"] 
     230                [backflow : 1] 
     231                { 
     232                        resource { 
     233                                fifo_file { write setattr } 
     234                        } 
     235                } 
     236                new 
     237                [desc: "Create a named pipe and w/type transition"] 
     238                [backflow : 1] 
     239                { 
     240                        resource { 
     241                                fifo_file { create unlink setattr } 
     242                        } 
     243                        transition { 
     244                                fifo_file 
     245                        } 
     246                } 
     247        } 
     248} 
     249 
    190250rdef unnamedPipes 
    191251[desc: "Unnamed pipes as domain private resources"] 
     
    225285} 
    226286 
    227 rdef unnamedUnixStream
     287rdef unnamedStreamSocket
    228288[desc: "Unnamed Unix domain stream sockets as private resources in a domain "] 
    229289{ 
     
    265325} 
    266326 
    267 rdef unnamedUnixDatagram
     327rdef unnamedDatagramSocket
    268328[desc: "Unnamed Unix domain datagram sockets as private resources in a domain"] 
    269329{ 
     
    306366} 
    307367 
    308 rdef unixStreamSockets 
     368rdef streamSocketDir 
    309369[desc: "Unix stream sockets with socket files and the directory they live in"] 
    310370{ 
     
    338398} 
    339399 
    340 rdef unixDatagramSockets 
     400rdef streamSocketFile 
     401[desc: "Unix stream socket file"] 
     402
     403        requires { file } 
     404        owner { 
     405                resource { 
     406                        sock_file { create getattr unlink write } 
     407                } 
     408                self { 
     409                        unix_stream_socket { accept bind connect connectto create write listen read shutdown } 
     410                } 
     411        } 
     412        readwrite { 
     413                default { read } 
     414                read 
     415                [desc: "Read data from Unix stream sockets"] 
     416                { 
     417                        resource { 
     418                                dir { search } 
     419                                sock_file { getattr read write  } 
     420                        } 
     421                        self { 
     422                                unix_stream_socket { connect create read write accept bind listen shutdown } 
     423                        } 
     424                        other readwrite { 
     425                                unix_stream_socket { connectto } 
     426                        } 
     427                } 
     428                new 
     429                [desc: "Create a new stream socket"] 
     430                { 
     431                        resource {  
     432                                sock_file { create unlink } 
     433                        } 
     434                        transition { 
     435                                sock_file 
     436                        } 
     437                         
     438                } 
     439        } 
     440
     441 
     442rdef datagramSocketDir 
    341443[desc: "Unix datagram sockets with sockfiles and the directory they live in"] 
    342444{ 
     
    391493                        } 
    392494                } 
     495        } 
     496} 
     497 
     498rdef datagramSocketFile 
     499[desc: "Unix datagram socket file"] 
     500{ 
     501        requires { file } 
     502        owner { 
     503                resource { 
     504                        sock_file { create getattr unlink write } 
     505                } 
     506                self { 
     507                        unix_dgram_socket { bind create write read recv_msg send_msg sendto shutdown } 
     508                } 
     509        } 
     510        read { 
     511                default { read } 
     512                read 
     513                [desc: "Read from Unix datagram sockets"] 
     514                [backflow : 1] 
     515                { 
     516                        self { 
     517                                unix_dgram_socket { create read } 
     518                        } 
     519                        other write { 
     520                                unix_dgram_socket { read } 
     521                        } 
     522                } 
     523        } 
     524        write { 
     525                default { write } 
     526                write 
     527                [desc: "Write data to Unix datagram sockets"] 
     528                [backflow : 1] 
     529                {                
     530                        resource { 
     531                                sock_file { write } 
     532                        } 
     533                        self { 
     534                                unix_dgram_socket { bind create sendto shutdown write } 
     535                        } 
     536                } 
     537                new 
     538                [desc: "Create and delete socket files"] 
     539                [backflow : 1] 
     540                { 
     541                        resource { 
     542                                sock_file { create unlink } 
     543                        } 
     544                        transition { 
     545                                sock_file 
     546                        } 
     547                } 
     548                 
    393549        } 
    394550} 
     
    582738                } 
    583739                end resource { 
    584                         file { entrypoint
     740                        file { entrypoint read getattr
    585741                } 
    586742                start start { 
  • branches/dictionary_changes/src/com/tresys/framework/compiler/dictionary/DictionaryParser.jj

    • Property svn:eol-style set to native
    • Property svn:executable deleted
    r1938 r1939  
    3333 
    3434import com.tresys.framework.compiler.ErrorHandler; 
     35import com.tresys.framework.compiler.ParserBase; 
    3536import com.tresys.framework.compiler.Utility; 
    3637import com.tresys.framework.compiler.systemResources.SystemResourceTypes; 
     
    4243 */ 
    4344public final class DictionaryParser  
     45        extends ParserBase 
    4446 
    4547 
     
    4749        //private static Dictionary genDictionary; 
    4850        private Dictionary dictionary; 
    49         private ErrorHandler errorHandler; 
    50          
    51         /** 
    52          * Sends an error message to the designated errorHandler. 
    53          *  
    54          * @param tok           Token which caused error 
    55          * @param errmsg        Error message to display 
    56          */ 
    57         private void errorGenerate (Token tok, String errmsg) 
    58         { 
    59                 errorHandler.Error(errmsg, tok.beginLine, tok.beginColumn, tok.endColumn); 
    60         } 
    61          
    62         /** 
    63          * Sends a warning to the designated errorHandler. 
    64          *  
    65          * @param tok           Token which caused error 
    66          * @param errmsg        Error message to display 
    67          */ 
    68         private void warnGenerate(Token tok, String errmsg)  
    69         { 
    70                 errorHandler.Warning(errmsg, tok.beginLine, tok.beginColumn, tok.endColumn); 
    71         } 
     51         
    7252 
    7353        private String parseErrorMessage(ParseException e)  
     
    8868                        } 
    8969                         
    90                         if(e.expectedTokenSequences[i][j] == ID) 
     70                        if (e.expectedTokenSequences[i][j] == ID) 
    9171                                expected += "An identifier starting with a letter or underscore"; 
    9272                        else 
    9373                                expected += e.tokenImage[e.expectedTokenSequences[i][j]]; 
    94                                  
     74 
    9575                        if (i != (e.expectedTokenSequences.length - 1) && 
    9676                                        e.expectedTokenSequences[i][e.expectedTokenSequences[i].length - 1] != 0)  
     
    124104                return message; 
    125105        } 
    126          
    127         /** 
    128          * Used to convert raw characters to their escaped version 
    129          * when these raw version cannot be used as part of an ASCII 
    130          * string literal. 
    131          * 
    132          * @param str           String to process. 
    133          */ 
    134         private String add_escapes(String str) 
    135         { 
    136                 String retval = new String (); 
    137                 char[] chars = str.toCharArray(); 
    138 //              for (char ch: chars) { 
    139                 for (int i = 0; i < chars.length; i++) 
    140                 { 
    141                         char ch = chars[i]; 
    142                         switch (ch) 
    143                         { 
    144                                 case 0 : 
    145                                         continue; 
    146                                 case '\b': 
    147                                         retval += ("\\b"); 
    148                                         continue; 
    149                                 case '\t': 
    150                                         retval += ("\\t"); 
    151                                         continue; 
    152                                 case '\n': 
    153                                         retval += ("\\n"); 
    154                                         continue; 
    155                                 case '\f': 
    156                                         retval += ("\\f"); 
    157                                         continue; 
    158                                 case '\r': 
    159                                         retval += ("\\r"); 
    160                                         continue; 
    161                                 case '\"': 
    162                                         retval += ("\\\""); 
    163                                         continue; 
    164                                 case '\'': 
    165                                         retval += ("\\\'"); 
    166                                         continue; 
    167                                 case '\\': 
    168                                         retval += ("\\\\"); 
    169                                         continue; 
    170                                 default: 
    171                                         if (ch < 0x20 || ch > 0x7e)  
    172                                         { 
    173                                                 String s = "0000" + Integer.toString(ch, 16); 
    174                                                 retval += ("\\u" + s.substring(s.length() - 4, s.length())); 
    175                                         } 
    176                                         else  
    177                                         { 
    178                                                 retval += (ch); 
    179                                         } 
    180                                         continue; 
    181                         } 
    182                 } 
    183                 return retval; 
    184         } 
    185          
    186         private final Token addHandlerToToken(Token tok)  
    187         { 
    188                 tok.setErrorHandler (errorHandler); 
    189                 return tok; 
    190         } 
    191106 
    192107        public DictionaryParser(Dictionary dict)  
     
    204119        public void Parse(Reader dictReader, ErrorHandler handler)  
    205120        { 
    206                 errorHandler = handler; 
     121                m_errorHandler = handler; 
    207122 
    208123                try      
     
    213128                catch (TokenMgrError e)  
    214129                { 
    215                         errorHandler.CriticalError("Error tokenizing dictionary file: " + e.getMessage()); 
     130                        m_errorHandler.CriticalError("Error tokenizing dictionary file: " + e.getMessage()); 
    216131                }  
    217132                 
     
    230145                { 
    231146                        if (tme.ErrorLine > -1) 
    232                                 errorHandler.Error(tme.getMessage(), tme.ErrorLine, tme.ErrorColumn, tme.ErrorColumn + tme.ErrorAfter.length()); 
     147                                m_errorHandler.Error(tme.getMessage(), tme.ErrorLine, tme.ErrorColumn, tme.ErrorColumn + tme.ErrorAfter.length()); 
    233148                        else 
    234                                 errorHandler.ErrorNowhere("Error tokenizing dictionary file: " + tme.getMessage()); 
     149                                m_errorHandler.ErrorNowhere("Error tokenizing dictionary file: " + tme.getMessage()); 
    235150                } 
    236151                catch(Exception e)  
     
    567482                        Utility.Debug("Creating control Rdef \"" + tokFname.image  
    568483                                        + tokControl.image + "\""); 
    569                         return (new Rdef(new Token(tokFname.image + tokControl.image, tokFname.beginLine, tokControl.endLine, tokFname.beginColumn, tokControl.endColumn, errorHandler), true)); 
     484                        return (new Rdef(new Token(tokFname.image + tokControl.image, tokFname.beginLine, tokControl.endLine, tokFname.beginColumn, tokControl.endColumn, m_errorHandler), true)); 
    570485                } 
    571486                Utility.Debug("Creating Rdef \"" + tokFname.image + "\""); 
  • branches/dictionary_changes/src/com/tresys/framework/compiler/linkage/flnkage/Ability.java

    r1884 r1939  
    2929        protected AccessTarget accessTarget; 
    3030 
    31         protected final Map interfaceMap
     31        protected final Map interfaceMap = new HashMap ()
    3232 
    3333        private final AbstractToken token; 
     
    3737        public Ability (Ability i_copyMe) 
    3838        { 
    39                 interfaceMap = new HashMap(); 
    4039                NameValuePairs = new TreeMap/*<String, NameValuePair<?>>*/(); 
    4140                 
     
    4948        { 
    5049                token = nameToken; 
    51                 interfaceMap = new HashMap(); 
    5250                NameValuePairs = new TreeMap/*<String, NameValuePair<?>>*/(); 
    5351        } 
     
    116114        public Map GetPermVectors()  
    117115        { 
     116                if (accessTarget == null) 
     117                        return null; 
     118                 
    118119                return accessTarget.GetPermVectors(); 
    119120        } 
     
    134135 
    135136                /*for (PermVector pv:at.GetPermVectors().values())*/ 
    136                 Iterator iter = accessTarget.GetPermVectors().values().iterator(); 
    137                 while(iter.hasNext())  
     137                for (Iterator iter = accessTarget.GetPermVectors().values().iterator(); iter.hasNext(); )  
    138138                { 
    139139                        PermVector pv = (PermVector) iter.next(); 
    140                         if(pv.getPermissions().isEmpty())  
     140                        if (pv.getPermissions().isEmpty())  
    141141                        { 
    142142                                pv.getObjectClassToken().Error( 
  • branches/dictionary_changes/src/com/tresys/framework/compiler/linkage/flnkage/FLNKParser.jj

    • Property svn:eol-style set to native
    r1903 r1939  
    2525 
    2626import com.tresys.framework.compiler.ErrorHandler; 
     27import com.tresys.framework.compiler.ParserBase; 
    2728import com.tresys.framework.compiler.policy.BaseDomain; 
    2829import com.tresys.framework.compiler.policy.BaseResource; 
     
    4546 */ 
    4647public class FLNKParser 
     48        extends ParserBase 
    4749{ 
    4850        // Policy object that will be filled as parsing occurs 
    49         private ErrorHandler m_errorHandler; 
    5051        private IPolicyPartCreator m_creator; 
    5152         
     
    5455        private Vector abilities; 
    5556         
    56         /** 
    57          * Sends an error message to the designated errorHandler. 
    58          *  
    59          * @param tok           Token which caused error 
    60          * @param errmsg        Error message to display 
    61          */ 
    62         private void errorGenerate (Token tok, String errmsg) 
    63         { 
    64                 m_errorHandler.Error(errmsg, tok.beginLine, tok.beginColumn, tok.endColumn); 
    65         } 
    66          
    6757        public Vector getAllBaseDomains()  
    6858        { 
     
    8070        } 
    8171         
    82         /** 
    83          * Sends a warning to the designated errorHandler. 
    84          *  
    85          * @param tok           Token which caused error 
    86          * @param errmsg        Error message to display 
    87          */ 
    88         private void warnGenerate(Token tok, String errmsg)  
    89         { 
    90                 m_errorHandler.Warning(errmsg, tok.beginLine, tok.beginColumn, tok.endColumn); 
    91         } 
    92          
    93         private final Token addHandlerToToken(Token tok)  
    94         { 
    95                 tok.setErrorHandler (m_errorHandler); 
    96                 return tok; 
    97         } 
    98  
    9972        private String parseErrorMessage(ParseException e)  
    10073        { 
     
    141114        } 
    142115         
    143         /** 
    144          * Used to convert raw characters to their escaped version 
    145          * when these raw version cannot be used as part of an ASCII 
    146          * string literal. 
    147          * 
    148          * @param str           String to process. 
    149          */ 
    150         private String add_escapes(String str) { 
    151                 String retval = new String (); 
    152                 char[] chars = str.toCharArray(); 
    153 //              for (char ch: chars) { 
    154                 for (int i = 0; i < chars.length; i++) 
    155                 { 
    156                         char ch = chars[i]; 
    157                         switch (ch) { 
    158                         case 0 : 
    159                                 continue; 
    160                         case '\b': 
    161                                 retval += ("\\b"); 
    162                                 continue; 
    163                         case '\t': 
    164                                 retval += ("\\t"); 
    165                                 continue; 
    166                         case '\n': 
    167                                 retval += ("\\n"); 
    168                                 continue; 
    169                         case '\f': 
    170                                 retval += ("\\f"); 
    171                                 continue; 
    172                         case '\r': 
    173                                 retval += ("\\r"); 
    174                                 continue; 
    175                         case '\"': 
    176                                 retval += ("\\\""); 
    177                                 continue; 
    178                         case '\'': 
    179                                 retval += ("\\\'"); 
    180                                 continue; 
    181                         case '\\': 
    182                                 retval += ("\\\\"); 
    183                                 continue; 
    184                         default: 
    185                                 if (ch < 0x20 || ch > 0x7e) { 
    186                                         String s = "0000" + Integer.toString(ch, 16); 
    187                                         retval += ("\\u" + s.substring(s.length() - 4, s.length())); 
    188                                 } else { 
    189                                         retval += (ch); 
    190                                 } 
    191                                 continue; 
    192                         } 
    193                 } 
    194                 return retval; 
    195         } 
    196116 
    197117        public Token makeTokenString(Token tok)  
  • branches/dictionary_changes/src/com/tresys/framework/compiler/policy/AccessBoolean.java

    r1825 r1939  
    33 * Authors: Brian Williams <bwilliams@tresys.com> 
    44 * 
    5  * Version: @version@ 
     5 * $Rev$ 
     6 * $Date$ 
    67 */ 
    78 
     
    1112import java.util.Map; 
    1213 
     14import com.tresys.framework.compiler.AbstractToken; 
    1315import com.tresys.framework.compiler.IPolicyVisitor; 
    1416 
    15 public class AccessBoolean extends Access { 
     17public class AccessBoolean 
     18        extends Access 
     19
    1620 
    17         public AccessBoolean(IDomain dom, Conditional cond, Integer verb, 
    18                                                        Token token, Token bool, Boolean activeOnBool)
    19                 super(dom, cond, verb, token, bool, activeOnBool); 
     21        public AccessBoolean (IDomain dom, Conditional cond, Integer verb, AbstractToken token, AbstractToken bool, Boolean activeOnBool) 
     22       
     23                super (dom, cond, verb, token, bool, activeOnBool); 
    2024        } 
    2125 
    22         public void Accept(IPolicyVisitor i_visitor)  
     26        public void Accept (IPolicyVisitor i_visitor) 
    2327        {} 
    2428 
     
    2731                return true; 
    2832        } 
    29          
     33 
    3034        public void ResetToDefaults () 
    3135        {} 
    32          
     36 
    3337        public void ClearAccess () 
    3438        {} 
    35          
     39 
    3640        public Collection GetAccessDefns () 
    3741        { 
    3842                return null; 
    3943        } 
    40          
     44 
    4145        public void SetAccessDefns (Collection i_accessDefns) 
    42 //             throws VerbMismatchException, UnrevokableException 
     46       // throws VerbMismatchException, UnrevokableException 
    4347        {} 
    44          
    45         public boolean Validate() { 
    46                 // If the domain and the resource have the same parent, there are no constraints 
    47                 Domain domainParent = getDomain().getParent(); 
    4848 
    49                 if(domainParent != null) { 
     49        public boolean Validate () 
     50        { 
     51                // If the domain and the resource have the same parent, there are no 
     52                // constraints 
     53                Domain domainParent = getDomain ().getParent (); 
    5054 
    51                         Map/*<Component, Access>*/parentAccesses = domainParent.GetAccessMap(m_verb.intValue()); 
     55                if (domainParent != null) 
     56                { 
    5257 
    53                         if(parentAccesses.isEmpty()) { 
     58                        Map/* <Component, Access> */parentAccesses = domainParent.GetAccessMap (m_verb.intValue ()); 
     59 
     60                        if (parentAccesses.isEmpty ()) 
     61                        { 
    5462                                Token 
    55                                         .Warning("Constraint violation: Child domain has attempted to exceed parent domain \"" 
    56                                                 + domainParent.getName() 
     63                                        .Warning ("Constraint violation: Child domain has attempted to exceed parent domain \"" 
     64                                                + domainParent.getName () 
    5765                                                + "\"'s access to interface \"" 
    58                                                 + getResource().getName() + "\""); 
     66                                                + getResource ().getName () + "\""); 
    5967                                return false; 
    6068                        } 
    6169 
    62                         Access parentToResource = (Access) parentAccesses 
    63                                 .get(getResource()); 
     70                        Access parentToResource = (Access) parentAccesses.get (getResource ()); 
    6471 
    65                         if(parentToResource == null) { 
    66                                Token 
    67                                        .Warning("Constraint violation: Child domain has attempted to exceed parent domain \"" 
    68                                                 + domainParent.getName() 
     72                        if (parentToResource == null) 
     73                        { 
     74                                Token.Warning ("Constraint violation: Child domain has attempted to exceed parent domain \"" 
     75                                                + domainParent.getName () 
    6976                                                + "\"'s access to resource \"" 
    70                                                 + getResource().getName() + "\""); 
     77                                                + getResource ().getName () + "\""); 
    7178                                return false; 
    7279                        } 
    7380 
    74                         if(parentToResource.m_bool != null 
    75                                && !parentToResource.m_bool.equals(m_bool))
     81                        if (parentToResource.m_bool != null && !parentToResource.m_bool.equals (m_bool)) 
     82                       
    7683                                Token 
    77                                         .Warning("Constraint violation: Parent's permission on resource are wrapped in the boolean " 
     84                                        .Warning ("Constraint violation: Parent's permission on resource are wrapped in the boolean " 
    7885                                                + parentToResource.m_bool 
    7986                                                + ", child permission must also be wrapped by the same boolean"); 
  • branches/dictionary_changes/src/com/tresys/framework/compiler/policy/Comment.java

    r1825 r1939  
    1 /* Copyright (C) 2005-2006 Tresys Technology, LLC 
     1/*  
     2 * Copyright (C) 2005-2006 Tresys Technology, LLC 
    23 * License: refer to COPYING file for license information. 
    34 * Authors: Dave Sugar <dsugar@tresys.com> 
    45 * 
    5  * Version: @version@ 
     6 * $Rev$ 
     7 * $Date$ 
    68 */ 
    79 
    810package com.tresys.framework.compiler.policy; 
    911 
     12import com.tresys.framework.compiler.AbstractToken; 
    1013import com.tresys.framework.compiler.IPolicyVisitable; 
    1114import com.tresys.framework.compiler.IPolicyVisitor; 
    1215 
    13 public class Comment  
    14         implements IPolicyVisitable  
     16public class Comment 
     17        implements IPolicyVisitable 
    1518{ 
    1619        final private String m_sCommentText; 
    1720 
    18         final private Token m_Token; 
     21        final private AbstractToken m_Token; 
    1922 
    20         public Comment(String i_sText, Token i_tok) { 
     23        public Comment (String i_sText, AbstractToken i_tok) 
     24        { 
    2125                m_sCommentText = i_sText; 
    2226                m_Token = i_tok; 
    2327        } 
    2428 
    25         public void Accept(IPolicyVisitor i_visitor) { 
    26                 i_visitor.Visit(this); 
     29        public void Accept (IPolicyVisitor i_visitor) 
     30        { 
     31                i_visitor.Visit (this); 
    2732        } 
    2833 
    29         public Token GetNameToken() { 
     34        public AbstractToken GetNameToken () 
     35        { 
    3036                return m_Token; 
    3137        } 
    3238 
    33         public String GetCommentText() { 
     39        public String GetCommentText () 
     40        { 
    3441                return m_sCommentText; 
    3542        } 
  • branches/dictionary_changes/src/com/tresys/framework/compiler/policy/Export.java

    r1825 r1939  
    1 /* Copyright (C) 2005-2006 Tresys Technology, LLC 
     1/* 
     2 * Copyright (C) 2005-2006 Tresys Technology, LLC 
    23 * License: refer to COPYING file for license information. 
    34 * Author: Spencer Shimko <sshimko@tresys.com> 
     
    56 *   
    67 * Export.java: SEFramework policy language exported interface class 
    7  * Version: @version@  
     8 *  
     9 * $Rev$ 
     10 * $Date$ 
    811 */ 
    912package com.tresys.framework.compiler.policy; 
    1013 
     14import com.tresys.framework.compiler.AbstractToken; 
    1115import com.tresys.framework.compiler.Utility; 
    1216import com.tresys.framework.compiler.dictionary.AccessDefn; 
     
    2024 
    2125/** 
    22  * This class represents an export statement in the SEFramework policy 
    23  * language.  It includes all information pertinent to the exportation 
    24  * of an interface such as resource, access verb (read, 
    25  * write, etc), and any tweaks. 
     26 * This class represents an export statement in the SEFramework pol