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