Commit 9d0e4e40 authored by CADC Software Admin's avatar CADC Software Admin
Browse files

Merge branch 'release_candidate'

parents 0f0274f4 3556eb1a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
/bin
/bin1
/build
+167 −0
Original line number Diff line number Diff line
<!--
************************************************************************
*******************  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 $
*
************************************************************************
-->


<project default="build" basedir=".">

  <property environment="env"/>
  <property file="local.build.properties"/>

  <property file="${env.A}/compilers/setup.ant.java.properties"/>
  <import file="${env.A}/compilers/setup.ant.java.targets.xml"/>

  <!-- developer convenience: place for extra targets and properties -->
  <import file="extras.xml" optional="true"/>

  <property file="local.build.properties"/>

  <property name="project" value="userAdmin"/>

  <!-- JAR files to be included in classpath and war file -->
  <property name="cadcAC" value="${lib}/cadcAccessControl.jar"/>
  <property name="cadcAC-Server" value="${lib}/cadcAccessControl-Server.jar"/>
  <property name="cadcLog" value="${lib}/cadcLog.jar"/>
  <property name="cadcUtil" value="${lib}/cadcUtil.jar"/>
  <property name="log4j" value="${ext.lib}/log4j.jar"/>
  <property name="commons-logging" value="${ext.lib}/commons-logging.jar"/>
  <property name="unboundid" value="${ext.lib}/unboundid-ldapsdk-se.jar"/>

  <property name="jars"
            value="${cadcAC}:${cadcAC-Server}:${cadcUtil}:${log4j}"/>

  <property name="client.cadc.jars"
            value="${cadcAC}:${cadcAC-Server}:${cadcLog}:${cadcUtil}"/>
  <property name="client.external.jars" value="${unboundid}:${log4j}"/>

  <property name="jars" value="${cadc}:${external}"/>

  <target name="build" depends="compile,manifest">
    <jar jarfile="${build}/lib/${project}.jar"
         basedir="${build}/class" update="no"
         manifest="${build}/tmp/${project}.mf">
      <include name="ca/nrc/cadc/**"/>
    </jar>
  </target>

  <target name="setup-test" depends="init">
    <copy overwrite="true"
          file="${env.A}/test-certificates/x509_CADCAuthtest1.pem"
          tofile="build/test/class/cadcauthtest1.pem"/>
  </target>

  <target name="manifest">
    <pathconvert property="client.flat.manifest" pathsep=" ">
      <mapper type="flatten"/>
      <path>
        <pathelement path="${client.cadc.jars}"/>
      </path>
      <path>
        <pathelement path="${client.external.jars}"/>
      </path>
    </pathconvert>
    <pathconvert property="client.non-flat.manifest" pathsep=" ">
      <path>
        <pathelement path="${client.cadc.jars}"/>
      </path>
      <path>
        <pathelement path="${client.external.jars}"/>
      </path>
    </pathconvert>

    <manifest file="${build}/tmp/${project}.mf" mode="replace">
      <attribute name="Main-Class" value="ca.nrc.cadc.ac.admin.Main"/>
      <attribute name="Class-Path"
                 value="${client.flat.manifest} ${client.non-flat.manifest}"/>
    </manifest>
  </target>

  <!-- JAR files needed to run the test suite -->
  <property name="cadcLog" value="${lib}/cadcLog.jar"/>
  <property name="asm"        value="${ext.dev}/asm.jar" />
  <property name="cglib"      value="${ext.dev}/cglib.jar" />
  <property name="easymock"   value="${ext.dev}/easymock.jar" />
  <property name="junit"      value="${ext.dev}/junit.jar" />
  <property name="objenesis"  value="${ext.dev}/objenesis.jar" />

  <property name="testingJars"
            value="${junit}:${asm}:${cglib}:${easymock}:${objenesis}:{unboundid}:${cadcLog}"/>

  <target name="int-test" depends="build,compile-test,setup-test">
    <echo message="Running test suite..."/>
    <junit printsummary="yes" haltonfailure="yes" fork="yes">
      <classpath>
        <pathelement path="${build}/class"/>
        <pathelement path="${build}/test/class"/>
        <pathelement path="${jars}:${testingJars}"/>
      </classpath>
      <test name="ca.nrc.cadc.ac.admin.integration.UserAdminIntTest"/>
      <formatter type="plain" usefile="false"/>
    </junit>
  </target>
</project>
+2 −0
Original line number Diff line number Diff line
java.source.version=1.7
java.target.version=1.7
+3 −0
Original line number Diff line number Diff line
#!/bin/bash

java -Xmx128m -jar ${CADC_ROOT}/lib/userAdmin.jar $*
+147 −0
Original line number Diff line number Diff line
/*
 ************************************************************************
 *******************  CANADIAN ASTRONOMY DATA CENTRE  *******************
 **************  CENTRE CANADIEN DE DONNÉES ASTRONOMIQUES  **************
 *
 *  (c) 2014.                            (c) 2014.
 *  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 $
 *
 ************************************************************************
 */

package ca.nrc.cadc.ac.admin;

import java.io.PrintStream;
import java.security.AccessControlException;
import java.security.Principal;
import java.security.PrivilegedAction;

import ca.nrc.cadc.ac.server.UserPersistence;
import ca.nrc.cadc.net.TransientException;


/**
 * Provide attributes and methods that apply to all commands.
 * @author yeunga
 *
 */
public abstract class AbstractCommand implements PrivilegedAction<Object>
{
    protected PrintStream systemOut = System.out;
    protected PrintStream systemErr = System.err;

    private UserPersistence<Principal> userPersistence;

	   
    protected abstract void doRun()
            throws AccessControlException, TransientException;
    
    /**
     * Set the system out.
     * @param printStream       The stream to write System.out to .
     */
    public void setSystemOut(PrintStream printStream)
    {
        this.systemOut = printStream;
    }
    
    /**
     * Set the system err.
     * @param printStream       The stream to write System.err to.
     */
    public void setSystemErr(PrintStream printStream)
    {
        this.systemErr = printStream;
    }
    
    @Override
    public Object run() 
    {
        try 
        {
            this.doRun();
        } 
        catch (AccessControlException e) 
        {
            this.systemErr.println("ERROR: " + e.getMessage());
            e.printStackTrace(systemErr);
        } 
        catch (TransientException e) 
        {
            String message = "Internal Transient Error: " + e.getMessage();
            this.systemErr.println("ERROR: " + message);
            e.printStackTrace(systemErr);
        }
		
        return null;
    }

    protected void setUserPersistence(
            final UserPersistence<Principal> userPersistence)
    {
        this.userPersistence = userPersistence;
    }

    public UserPersistence<Principal> getUserPersistence()
    {
        return userPersistence;
    }
}
Loading