📄 expressionevaluator.java
字号:
/******************************************************************************* * Copyright (C) 2002, 2003 * ingenieurbuero fuer innovative informationstechnik (iiit) * Dipl.-Ing. Joerg Beckmann, Dortmund, Germany * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * version $Id: ExpressionEvaluator.java,v 1.5 2003/04/13 21:09:56 joerg Exp $ ******************************************************************************/package de.iiit.access.server;import de.iiit.access.common.api.*;import de.iiit.access.server.api.*;import de.iiit.access.server.plugins.parser.*;import de.iiit.cache.*;import java.util.*;/** This class evaluates expression. It can be used by server plug-ins * like TcpServer to evaluate the expression received from a client. * @version $Revision: 1.5 $ $Date: 2003/04/13 21:09:56 $ */public class ExpressionEvaluator{ /** CVS Version Tag */ private static final String vcid = "$Id: ExpressionEvaluator.java,v 1.5 2003/04/13 21:09:56 joerg Exp $"; private static CachePluginIf cache = null; private Parser parser = new Parser(); /** Creates a new instance of ExpressionResolver */ public ExpressionEvaluator() { if (cache == null) cache = AccessServer.getCachePlugin(); } /** Evaluates one expression. * @param name The name of the user for whom the expression shall be evaluated * @param expression The expression to evaluate * @throws ParserException This exception is thrown if there is something wrong * with the expression. The most common cases are syntax errors or * circular references within the expression. * @return true if the user is member of the set described by the expression and false * otherwise. */ public boolean evaluateExpression(String name, String expression) throws ParserException { boolean answer = false; if (cache != null) { try { answer = cache.getUserRight(name, expression); } catch(CacheFaultException e) { Set s = parser.evaluateExpression(expression, name); answer = (s != null && s.contains(name)); cache.addUserRight(name, expression, answer); } } else { Set s = parser.evaluateExpression(expression, name); answer = (s != null && s.contains(name)); } return answer; }}/** * $Log: ExpressionEvaluator.java,v $ * Revision 1.5 2003/04/13 21:09:56 joerg * Package structure modified * * Revision 1.4 2003/04/13 20:28:01 joerg * Package structure modified * * Revision 1.3 2003/04/13 20:16:41 joerg * Package structure modified * * Revision 1.2 2003/01/01 21:04:17 joerg * Copyright-Statement aktualisiert * * Revision 1.1 2002/12/19 15:24:23 joerg * Reparatur des CVS-Repositories * * Revision 1.10 2002/12/09 19:29:17 joerg * Versionsdaten in allen JavaDoc-Klassenbeschreibungen ergaenzt * * Revision 1.9 2002/12/09 16:32:26 joerg * JavaDoc Kommentare ergaenzt * * Revision 1.8 2002/11/27 16:42:26 joerg * Parameteruebergabe geaendert, um circulaere Recursion * zu erkennen * * Revision 1.7 2002/11/26 14:40:05 joerg * Kleine Optimierungen * * Revision 1.6 2002/11/26 10:56:13 joerg * Package exprparser durch parser erstzt. * * Revision 1.5 2002/11/20 11:09:12 joerg * ParserExceptions werden jetzt durchgereicht * Benutzung des Caches ist jetzt optional * Fehler beseitigt * * Revision 1.4 2002/11/19 20:25:18 joerg * Cache-Zugriffe nutzen jetzt das Plugin * * Revision 1.3 2002/11/17 22:06:21 joerg * Initialisierung des NameResolvers entfernt. * * Revision 1.2 2002/11/06 11:11:05 joerg * Von Singelton auf 'normales' Object umgestellt * * Revision 1.1 2002/11/04 09:38:09 joerg * Klasse ExpressionResolver ins Package AccessServer verschoben * und in ExpressionEvaluator umbenannt. * * Revision 1.1 2002/11/03 21:55:42 joerg * Neue Klasse fuer Thread-sichere Aufloesung von Ausdruecken. * */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -