From 190f49fe50ea872245975f4c301d4e977b860b8e Mon Sep 17 00:00:00 2001 From: Adrian Damian <Adrian.Damian@nrc.ca> Date: Wed, 2 Jul 2014 16:09:33 -0700 Subject: [PATCH] Moved AC core classes from cadcUtil --- projects/cadcAccessControl/build.xml | 123 ++++++++++++++++++ .../cadcAccessControl/doc/AccessControl.png | Bin 0 -> 17576 bytes .../doc/auth.html | 0 projects/cadcAccessControl/doc/auth.zargo | Bin 0 -> 9709 bytes .../doc/uml/UserAuth.png | Bin 5 files changed, 123 insertions(+) create mode 100644 projects/cadcAccessControl/build.xml create mode 100644 projects/cadcAccessControl/doc/AccessControl.png rename projects/{cadcUtil => cadcAccessControl}/doc/auth.html (100%) create mode 100644 projects/cadcAccessControl/doc/auth.zargo rename projects/{cadcUtil => cadcAccessControl}/doc/uml/UserAuth.png (100%) diff --git a/projects/cadcAccessControl/build.xml b/projects/cadcAccessControl/build.xml new file mode 100644 index 00000000..25762598 --- /dev/null +++ b/projects/cadcAccessControl/build.xml @@ -0,0 +1,123 @@ +<!-- +************************************************************************ +******************* CANADIAN ASTRONOMY DATA CENTRE ******************* +************** CENTRE CANADIEN DE DONNÉES ASTRONOMIQUES ************** +* +* (c) 2009. (c) 2009. +* Government of Canada Gouvernement du Canada +* National Research Council Conseil national de recherches +* Ottawa, Canada, K1A 0R6 Ottawa, Canada, K1A 0R6 +* All rights reserved Tous droits réservés +* +* NRC disclaims any warranties, Le CNRC dénie toute garantie +* expressed, implied, or énoncée, implicite ou légale, +* statutory, of any kind with de quelque nature que ce +* respect to the software, soit, concernant le logiciel, +* including without limitation y compris sans restriction +* any warranty of merchantability toute garantie de valeur +* or fitness for a particular marchande ou de pertinence +* purpose. NRC shall not be pour un usage particulier. +* liable in any event for any Le CNRC ne pourra en aucun cas +* damages, whether direct or être tenu responsable de tout +* indirect, special or general, dommage, direct ou indirect, +* consequential or incidental, particulier ou général, +* arising from the use of the accessoire ou fortuit, résultant +* software. Neither the name de l'utilisation du logiciel. Ni +* of the National Research le nom du Conseil National de +* Council of Canada nor the Recherches du Canada ni les noms +* names of its contributors may de ses participants ne peuvent +* be used to endorse or promote être utilisés pour approuver ou +* products derived from this promouvoir les produits dérivés +* software without specific prior de ce logiciel sans autorisation +* written permission. préalable et particulière +* par écrit. +* +* This file is part of the Ce fichier fait partie du projet +* OpenCADC project. OpenCADC. +* +* OpenCADC is free software: OpenCADC est un logiciel libre ; +* you can redistribute it and/or vous pouvez le redistribuer ou le +* modify it under the terms of modifier suivant les termes de +* the GNU Affero General Public la “GNU Affero General Public +* License as published by the License” telle que publiée +* Free Software Foundation, par la Free Software Foundation +* either version 3 of the : soit la version 3 de cette +* License, or (at your option) licence, soit (à votre gré) +* any later version. toute version ultérieure. +* +* OpenCADC is distributed in the OpenCADC est distribué +* hope that it will be useful, dans l’espoir qu’il vous +* but WITHOUT ANY WARRANTY; sera utile, mais SANS AUCUNE +* without even the implied GARANTIE : sans même la garantie +* warranty of MERCHANTABILITY implicite de COMMERCIALISABILITÉ +* or FITNESS FOR A PARTICULAR ni d’ADÉQUATION À UN OBJECTIF +* PURPOSE. See the GNU Affero PARTICULIER. Consultez la Licence +* General Public License for Générale Publique GNU Affero +* more details. pour plus de détails. +* +* You should have received Vous devriez avoir reçu une +* a copy of the GNU Affero copie de la Licence Générale +* General Public License along Publique GNU Affero avec +* with OpenCADC. If not, see OpenCADC ; si ce n’est +* <http://www.gnu.org/licenses/>. pas le cas, consultez : +* <http://www.gnu.org/licenses/>. +* +* $Revision: 4 $ +* +************************************************************************ +--> + + +<!DOCTYPE project> +<project default="build" basedir="."> + <property environment="env"/> + <property file="local.build.properties" /> + + <!-- site-specific build properties or overrides of values in opencadc.properties --> + <property file="${env.CADC_PREFIX}/etc/local.properties" /> + + <!-- site-specific targets, e.g. install, cannot duplicate those in opencadc.targets.xml --> + <import file="${env.CADC_PREFIX}/etc/local.targets.xml" optional="true" /> + + <!-- default properties and targets --> + <property file="${env.CADC_PREFIX}/etc/opencadc.properties" /> + <import file="${env.CADC_PREFIX}/etc/opencadc.targets.xml"/> + + <!-- developer convenience: place for extra targets and properties --> + <import file="extras.xml" optional="true" /> + + <property name="project" value="cadcAccessControl" /> + + <property name="cadcUtil" value="${lib}/cadcUtil.jar" /> + + <property name="jars" value="${cadcUtil}:${ext.lib}/log4j.jar" /> + + <target name="build" depends="compile"> + <jar jarfile="${build}/lib/${project}.jar" + basedir="${build}/class" + update="no"> + <include name="ca/nrc/cadc/**" /> + </jar> + </target> + + <!-- JAR files needed to run the test suite --> + <property name="testingJars" value="${build}/class:${jars}:${ext.lib}/junit.jar:${ext.lib}/xerces.jar:${ext.dev}/easymock.jar:${ext.dev}/cglib.jar:${ext.dev}/objenesis.jar:${ext.dev}/asm.jar" /> + + <target name="test" depends="compile-test"> + <echo message="Running test" /> + + <!-- Run the junit test suite --> + <echo message="Running test suite..." /> + <junit printsummary="yes" haltonfailure="yes" fork="yes"> + <classpath> + <pathelement path="${build}/class"/> + <pathelement path="${build}/test/class"/> + <pathelement path="${testingJars}"/> + </classpath> + <test name="ca.nrc.cadc.ac.UserTest" /> + <test name="ca.nrc.cadc.ac.GroupTest" /> + <formatter type="plain" usefile="false" /> + </junit> + </target> + +</project> diff --git a/projects/cadcAccessControl/doc/AccessControl.png b/projects/cadcAccessControl/doc/AccessControl.png new file mode 100644 index 0000000000000000000000000000000000000000..52bcea3a9f84a12817a27af6e2e3f7623e5b6b6f GIT binary patch literal 17576 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 MM*E-dwYvF#0Fc);VE_OC literal 0 HcmV?d00001 diff --git a/projects/cadcUtil/doc/auth.html b/projects/cadcAccessControl/doc/auth.html similarity index 100% rename from projects/cadcUtil/doc/auth.html rename to projects/cadcAccessControl/doc/auth.html diff --git a/projects/cadcAccessControl/doc/auth.zargo b/projects/cadcAccessControl/doc/auth.zargo new file mode 100644 index 0000000000000000000000000000000000000000..57aa2846f75e01db9d2e032775009c297468d492 GIT binary patch literal 9709 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 literal 0 HcmV?d00001 diff --git a/projects/cadcUtil/doc/uml/UserAuth.png b/projects/cadcAccessControl/doc/uml/UserAuth.png similarity index 100% rename from projects/cadcUtil/doc/uml/UserAuth.png rename to projects/cadcAccessControl/doc/uml/UserAuth.png -- GitLab