diff --git a/projects/cadcAccessControl-Server/build.xml b/projects/cadcAccessControl-Server/build.xml index 14616e31484a1a9c67a5fede66606ade40c2b006..0630318fe0877df1c73754d6d9b5f658131598f6 100644 --- a/projects/cadcAccessControl-Server/build.xml +++ b/projects/cadcAccessControl-Server/build.xml @@ -113,16 +113,15 @@ </target> <!-- JAR files needed to run the test suite --> - <property name="gson" value="${ext.lib}/gson.jar" /> + <property name="json" value="${ext.lib}/json.jar" /> <property name="easyMock" value="${ext.dev}/easymock.jar" /> <property name="junit" value="${ext.dev}/junit.jar" /> <property name="xmlunit" value="${ext.dev}/xmlunit.jar" /> - <property name="xerces" value="${ext.lib}/xerces.jar" /> <property name="cglib" value="${ext.dev}/cglib.jar" /> <property name="objenesis" value="${ext.dev}/objenesis.jar" /> <property name="asm" value="${ext.dev}/asm.jar" /> - <property name="testingJars" value="${jars}:${gson}:${easyMock}:${junit}:${xmlunit}:${xerces}:${cglib}:${asm}:${objenesis}" /> + <property name="testingJars" value="${jars}:${json}:${easyMock}:${junit}:${xmlunit}:${cglib}:${asm}:${objenesis}" /> <target name="resources"> <copy todir="${build}/class"> diff --git a/projects/cadcAccessControl/build.xml b/projects/cadcAccessControl/build.xml index a3b964ed3878c53e9c2aec9a667ebce0cc72ca79..7dab6cbb4da250d64f509569e8d2a19ff1158990 100644 --- a/projects/cadcAccessControl/build.xml +++ b/projects/cadcAccessControl/build.xml @@ -89,14 +89,15 @@ <property name="cadcUtil" value="${lib}/cadcUtil.jar" /> <property name="cadcRegistryClient" value="${lib}/cadcRegistryClient.jar" /> - + + <property name="json" value="${ext.lib}/json.jar" /> <property name="jdom2" value="${ext.lib}/jdom2.jar" /> - <property name="javacsv" value="${ext.lib}/javacsv.jar" /> + <property name="javacsv" value="${ext.lib}/javacsv.jar" /> <property name="log4j" value="${ext.lib}/log4j.jar" /> <property name="unboundid" value="${ext.lib}/unboundid-ldapsdk-se.jar" /> - <property name="jars" value="${jdom2}:${log4j}:${javacsv}:${unboundid}:${cadcUtil}:${cadcRegistryClient}" /> + <property name="jars" value="${json}:${jdom2}:${log4j}:${javacsv}:${unboundid}:${cadcUtil}:${cadcRegistryClient}" /> <target name="build" depends="compile"> <jar jarfile="${build}/lib/${project}.jar" @@ -116,4 +117,20 @@ <property name="testingJars" value="${build}/class:${jars}:${xerces}:${asm}:${cglib}:${easymock}:${junit}:${objenesis}" /> + <target name="test" depends="compile,compile-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="${testingJars}"/> + </classpath> + <test name="ca.nrc.cadc.ac.json.GroupPropertyReaderWriterTest" /> + <test name="ca.nrc.cadc.ac.json.UserDetailsReaderWriterTest" /> + <test name="ca.nrc.cadc.ac.json.IdentityReaderWriterTest" /> + <test name="ca.nrc.cadc.ac.json.UserReaderWriterTest" /> + <formatter type="plain" usefile="false" /> + </junit> + </target> + </project> diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/Group.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/Group.java index c8e8048ee08a45712e47a93380c8441dd42f650a..6a91450bc9acc1e27da28ae2f227edfa2fe8fd16 100644 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/Group.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/Group.java @@ -96,6 +96,8 @@ public class Group public String description; public Date lastModified; + + public Group() {} /** * Ctor. diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/ReaderException.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/ReaderException.java similarity index 99% rename from projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/ReaderException.java rename to projects/cadcAccessControl/src/ca/nrc/cadc/ac/ReaderException.java index 0b34ec634bcfd1dc4635cfe18c43e073dd3614b7..397d1e62113993fc59cee4f79bbf9a62ea27a62e 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/ReaderException.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/ReaderException.java @@ -66,7 +66,7 @@ * ************************************************************************ */ -package ca.nrc.cadc.ac.xml; +package ca.nrc.cadc.ac; import java.io.IOException; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/WriterException.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/WriterException.java similarity index 99% rename from projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/WriterException.java rename to projects/cadcAccessControl/src/ca/nrc/cadc/ac/WriterException.java index 139003975b014adeec491c14dda711b039ed6425..3bf5a2b87b05ce9cb0c2279cbf7ad72c466801d1 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/WriterException.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/WriterException.java @@ -66,7 +66,7 @@ * ************************************************************************ */ -package ca.nrc.cadc.ac.xml; +package ca.nrc.cadc.ac; import java.io.IOException; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserReader.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserReader.java new file mode 100755 index 0000000000000000000000000000000000000000..1f9fa208666cd8aa7a06f7d85e4e96bd9b20accb --- /dev/null +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserReader.java @@ -0,0 +1,201 @@ +/* + ************************************************************************ + ******************* 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.json; + +import ca.nrc.cadc.ac.ReaderException; +import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.UserDetails; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.net.URISyntaxException; +import java.security.Principal; +import java.util.Scanner; + +public class UserReader +{ + /** + * Construct a User from a InputStream. + * + * @param in InputStream. + * @return User User. + * @throws ReaderException + * @throws IOException + * @throws URISyntaxException + */ + public static User<? extends Principal> read(InputStream in) + throws ReaderException, IOException, URISyntaxException + { + if (in == null) + { + throw new IOException("stream closed"); + } + + Scanner s = new Scanner(in).useDelimiter("\\A"); + String json = s.hasNext() ? s.next() : ""; + + return read(json); + } + + /** + * Construct a User from a Reader. + * + * @param reader Reader. + * @return User User. + * @throws ReaderException + * @throws IOException + */ + public static User<? extends Principal> read(Reader reader) + throws ReaderException, IOException, URISyntaxException + { + if (reader == null) + { + throw new IllegalArgumentException("reader must not be null"); + } + + Scanner s = new Scanner(reader).useDelimiter("\\A"); + String json = s.hasNext() ? s.next() : ""; + + return read(json); + } + + /** + * Construct a User from an JSON String source. + * + * @param json String of JSON. + * @return User User. + * @throws ReaderException + * @throws IOException + * @throws URISyntaxException + */ + public static User<? extends Principal> read(String json) + throws ReaderException, IOException, URISyntaxException + { + if (json == null || json.isEmpty()) + { + throw new IllegalArgumentException("JSON must not be null or empty"); + } + + // Create a JSONObject from the JSON + try + { + return parseUser(new JSONObject(json).getJSONObject("user")); + } + catch (JSONException e) + { + String error = "Unable to parse JSON to User because " + + e.getMessage(); + throw new ReaderException(error, e); + } + } + + protected static User<? extends Principal> parseUser(JSONObject userObject) + throws ReaderException + { + try + { + JSONObject userIDObject = userObject.getJSONObject("userID"); + JSONObject userIDIdentityObject = userIDObject.getJSONObject("identity"); + + Principal userID = IdentityReader.read(userIDIdentityObject); + User<Principal> user = new User<Principal>(userID); + + // identities + JSONArray identitiesArray = userObject.getJSONArray("identities"); + for (int i = 0; i < identitiesArray.length(); i++) + { + JSONObject identitiesObject = identitiesArray.getJSONObject(i); + JSONObject identityObject = identitiesObject.getJSONObject(("identity")); + user.getIdentities().add(IdentityReader.read(identityObject)); + } + + // details + JSONArray detailsArray = userObject.getJSONArray("details"); + for (int i = 0; i < detailsArray.length(); i++) + { + JSONObject detailsObject = detailsArray.getJSONObject(i); + JSONObject userDetailsObject = detailsObject.getJSONObject(UserDetails.NAME); + user.details.add(UserDetailsReader.read(userDetailsObject)); + } + + return user; + } + catch (JSONException e) + { + final String error = "Unable to parse JSON to User because " + + e.getMessage(); + throw new ReaderException(error, e); + } + } + +} diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserWriter.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserWriter.java new file mode 100755 index 0000000000000000000000000000000000000000..1289ac9e5716e53de0a4279daf08c8d62acfd8c4 --- /dev/null +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/json/UserWriter.java @@ -0,0 +1,201 @@ +/* + ************************************************************************ + ******************* 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.json; + +import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.UserDetails; +import ca.nrc.cadc.ac.WriterException; +import ca.nrc.cadc.util.StringBuilderWriter; +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.io.Writer; +import java.security.Principal; +import java.util.Set; + +public class UserWriter +{ + /** + * Write a User as a JSON string to a StringBuilder. + * + * @param user User to write. + * @param builder StringBuilder to write to. + * @throws IOException if the writer fails to write. + * @throws WriterException + */ + public static void write(User<? extends Principal> user, StringBuilder builder) + throws IOException, WriterException + { + write(user, new StringBuilderWriter(builder)); + } + + /** + * Write a User as a JSON string to an OutputStream. + * + * @param user User to write. + * @param out OutputStream to write to. + * @throws IOException if the writer fails to write. + * @throws WriterException + */ + public static void write(User<? extends Principal> user, OutputStream out) + throws IOException, WriterException + { + OutputStreamWriter outWriter; + try + { + outWriter = new OutputStreamWriter(out, "UTF-8"); + } + catch (UnsupportedEncodingException e) + { + throw new RuntimeException("UTF-8 encoding not supported", e); + } + write(user, new BufferedWriter(outWriter)); + } + + /** + * Write a User as a JSON string to a Writer. + * + * @param user User to write. + * @param writer Writer to write to. + * @throws IOException if the writer fails to write. + * @throws WriterException + */ + public static void write(User<? extends Principal> user, Writer writer) + throws IOException, WriterException + { + if (user == null) + { + throw new WriterException("null User"); + } + + try + { + getUserJSONObject(user).write(writer); + } + catch (JSONException e) + { + final String error = "Unable to create JSON for User " + + " because " + e.getMessage(); + throw new WriterException(error, e); + } + } + + /** + * Build a User JSONObject from a User. + * + * @param user User. + * @return JSONObject. + * @throws WriterException + */ + public static JSONObject getUserJSONObject(User<? extends Principal> user) + throws WriterException, JSONException + { + JSONObject userObject = new JSONObject(); + JSONObject userIDIdentityObject = new JSONObject(); + userIDIdentityObject.put("identity", IdentityWriter.write(user.getUserID())); + userObject.put("userID", userIDIdentityObject); + + // identities + Set<Principal> identities = user.getIdentities(); + if (!identities.isEmpty()) + { + JSONArray identityArray = new JSONArray(); + for (Principal identity : identities) + { + JSONObject identityObject = new JSONObject(); + identityObject.put("identity" , IdentityWriter.write(identity)); + identityArray.put(identityObject); + } + userObject.put("identities", identityArray); + } + + // details + if (!user.details.isEmpty()) + { + JSONArray detailsArray = new JSONArray(); + Set<UserDetails> userDetails = user.details; + for (UserDetails userDetail : userDetails) + { + JSONObject detailsObject = new JSONObject(); + detailsObject.put(UserDetails.NAME , UserDetailsWriter.write(userDetail)); + detailsArray.put(detailsObject); + } + userObject.put("details", detailsArray); + } + + return new JSONObject().put("user", userObject); + } + +} diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupReader.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupReader.java index 1631dcc93a5f6f4139623af8ec75027ed80f581a..8cfc37eec446e677bb9f648cfe4a52d2dc82f2b9 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupReader.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupReader.java @@ -68,6 +68,16 @@ */ package ca.nrc.cadc.ac.xml; +import ca.nrc.cadc.ac.AC; +import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.ReaderException; +import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.date.DateUtil; +import ca.nrc.cadc.xml.XmlUtil; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; + import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -80,14 +90,6 @@ import java.text.DateFormat; import java.text.ParseException; import java.util.List; -import ca.nrc.cadc.ac.*; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.JDOMException; - -import ca.nrc.cadc.date.DateUtil; -import ca.nrc.cadc.xml.XmlUtil; - public class GroupReader { diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupWriter.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupWriter.java index 8b77c7c7fe2027e7eb0b1892ad35ed70febfe7b1..18f307a80afea5fb5552e34f2b9c9b338e871c1b 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupWriter.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupWriter.java @@ -68,6 +68,19 @@ */ package ca.nrc.cadc.ac.xml; +import ca.nrc.cadc.ac.AC; +import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.GroupProperty; +import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.WriterException; +import ca.nrc.cadc.date.DateUtil; +import ca.nrc.cadc.util.StringBuilderWriter; +import org.jdom2.Attribute; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; + import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; @@ -77,16 +90,6 @@ import java.io.Writer; import java.security.Principal; import java.text.DateFormat; -import ca.nrc.cadc.ac.*; -import org.jdom2.Attribute; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.output.Format; -import org.jdom2.output.XMLOutputter; - -import ca.nrc.cadc.date.DateUtil; -import ca.nrc.cadc.util.StringBuilderWriter; - public class GroupWriter { /** diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsReader.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsReader.java index c4b0239096f3a0ba741fe037d2a935df0c3826e9..c0c31fbe4a2ecfbbb7f44e0baf411cf15f08745c 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsReader.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsReader.java @@ -69,6 +69,7 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.xml.XmlUtil; import java.io.IOException; import java.io.InputStream; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsWriter.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsWriter.java index 8d02173ec17ad7b25660d077a2f5315b487f6d1d..fb92d2cd268c54985b379954a90493888043de8e 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsWriter.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/GroupsWriter.java @@ -1,6 +1,7 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.util.StringBuilderWriter; import java.io.BufferedWriter; import java.io.IOException; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserReader.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserReader.java index b55143336a2d7591a4ada53fadbc2dc5c0d970e4..9b9ad2bbed498a5f1ca9f6b362db2b48a21559ab 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserReader.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserReader.java @@ -68,8 +68,13 @@ */ package ca.nrc.cadc.ac.xml; +import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.xml.XmlUtil; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; + import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -79,9 +84,6 @@ import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.security.Principal; import java.util.List; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.JDOMException; public class UserReader { @@ -185,7 +187,7 @@ public class UserReader throw new ReaderException(error); } - Principal userID = ca.nrc.cadc.ac.xml.IdentityReader.read(userIDIdentityElement); + Principal userID = IdentityReader.read(userIDIdentityElement); User<Principal> user = new User<Principal>(userID); @@ -196,7 +198,7 @@ public class UserReader List<Element> identityElements = identitiesElement.getChildren("identity"); for (Element identityElement : identityElements) { - user.getIdentities().add(ca.nrc.cadc.ac.xml.IdentityReader.read(identityElement)); + user.getIdentities().add(IdentityReader.read(identityElement)); } } @@ -208,7 +210,7 @@ public class UserReader List<Element> userDetailsElements = detailsElement.getChildren("userDetails"); for (Element userDetailsElement : userDetailsElements) { - user.details.add(ca.nrc.cadc.ac.xml.UserDetailsReader.read(userDetailsElement)); + user.details.add(UserDetailsReader.read(userDetailsElement)); } } diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestReader.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestReader.java index 94986a10b3215cbf38e7a4825fcce93cd3702498..f7c0e8553ab0bc61f3b6ff8d6f5827d4bd717605 100644 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestReader.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestReader.java @@ -68,6 +68,7 @@ */ package ca.nrc.cadc.ac.xml; +import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.UserRequest; import ca.nrc.cadc.xml.XmlUtil; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestWriter.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestWriter.java index c85a6e5fcd42c7a664cbfbcb215f28ff83a198d1..10aaf852a0fd05e5add47518984e50ce132856cc 100644 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestWriter.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserRequestWriter.java @@ -70,6 +70,7 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.UserRequest; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.util.StringBuilderWriter; import org.jdom2.Document; import org.jdom2.Element; diff --git a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserWriter.java b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserWriter.java index b9be13ef69e65b30ef1931708a28c21c29b084ef..b1d6642de691ebc47e3516054b08bdb0a640976a 100755 --- a/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserWriter.java +++ b/projects/cadcAccessControl/src/ca/nrc/cadc/ac/xml/UserWriter.java @@ -70,7 +70,13 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.UserDetails; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.util.StringBuilderWriter; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.output.Format; +import org.jdom2.output.XMLOutputter; + import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; @@ -79,10 +85,6 @@ import java.io.UnsupportedEncodingException; import java.io.Writer; import java.security.Principal; import java.util.Set; -import org.jdom2.Document; -import org.jdom2.Element; -import org.jdom2.output.Format; -import org.jdom2.output.XMLOutputter; public class UserWriter { @@ -157,7 +159,7 @@ public class UserWriter // userID element Element userIDElement = new Element("userID"); - userIDElement.addContent(ca.nrc.cadc.ac.xml.IdentityWriter.write(user.getUserID())); + userIDElement.addContent(IdentityWriter.write(user.getUserID())); userElement.addContent(userIDElement); // identities @@ -167,7 +169,7 @@ public class UserWriter Element identitiesElement = new Element("identities"); for (Principal identity : identities) { - identitiesElement.addContent(ca.nrc.cadc.ac.xml.IdentityWriter.write(identity)); + identitiesElement.addContent(IdentityWriter.write(identity)); } userElement.addContent(identitiesElement); } @@ -179,7 +181,7 @@ public class UserWriter Set<UserDetails> userDetails = user.details; for (UserDetails userDetail : userDetails) { - detailsElement.addContent(ca.nrc.cadc.ac.xml.UserDetailsWriter.write(userDetail)); + detailsElement.addContent(UserDetailsWriter.write(userDetail)); } userElement.addContent(detailsElement); } diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/json/UserReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/json/UserReaderWriterTest.java new file mode 100644 index 0000000000000000000000000000000000000000..68901a362809e78140764e2a4e6052a0b64f19b2 --- /dev/null +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/json/UserReaderWriterTest.java @@ -0,0 +1,155 @@ +/* + ************************************************************************ + ******************* 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.json; + +import ca.nrc.cadc.ac.PersonalDetails; +import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.WriterException; +import ca.nrc.cadc.auth.HttpPrincipal; +import ca.nrc.cadc.auth.NumericPrincipal; +import org.apache.log4j.Logger; +import org.junit.Test; + +import java.io.IOException; +import java.io.InputStream; +import java.io.Reader; +import java.security.Principal; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +/** + * + * @author jburke + */ +public class UserReaderWriterTest +{ + private static Logger log = Logger.getLogger(UserReaderWriterTest.class); + + @Test + public void testReaderExceptions() + throws Exception + { + try + { + String s = null; + User<? extends Principal> u = UserReader.read(s); + fail("null String should throw IllegalArgumentException"); + } + catch (IllegalArgumentException e) {} + + try + { + InputStream in = null; + User<? extends Principal> u = UserReader.read(in); + fail("null InputStream should throw IOException"); + } + catch (IOException e) {} + + try + { + Reader r = null; + User<? extends Principal> u = UserReader.read(r); + fail("null Reader should throw IllegalArgumentException"); + } + catch (IllegalArgumentException e) {} + } + + @Test + public void testWriterExceptions() + throws Exception + { + try + { + UserWriter.write(null, new StringBuilder()); + fail("null User should throw WriterException"); + } + catch (WriterException e) {} + } + + @Test + public void testReadWrite() + throws Exception + { + User<? extends Principal> expected = new User<Principal>(new HttpPrincipal("foo")); + expected.getIdentities().add(new NumericPrincipal(123l)); + expected.details.add(new PersonalDetails("firstname", "lastname")); + + StringBuilder json = new StringBuilder(); + UserWriter.write(expected, json); + assertFalse(json.toString().isEmpty()); + + User<? extends Principal> actual = UserReader.read(json.toString()); + assertNotNull(actual); + assertEquals(expected, actual); + } + +} diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupPropertyReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupPropertyReaderWriterTest.java index a2cd07efd35a1719bea2d96a3d2b2dd497c14e22..5902daa4083d4657e3f672118d1dc1a5883e7148 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupPropertyReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupPropertyReaderWriterTest.java @@ -69,8 +69,13 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.GroupProperty; +import ca.nrc.cadc.ac.ReaderException; +import ca.nrc.cadc.ac.WriterException; +import ca.nrc.cadc.util.Log4jInit; +import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.jdom2.Element; +import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; @@ -82,6 +87,12 @@ public class GroupPropertyReaderWriterTest { private static Logger log = Logger.getLogger(GroupPropertyReaderWriterTest.class); + @BeforeClass + public static void setUpClass() + { + Log4jInit.setLevel("ca.nrc.cadc.ac.xml", Level.INFO); + } + @Test public void testReaderExceptions() throws Exception @@ -92,7 +103,7 @@ public class GroupPropertyReaderWriterTest GroupProperty gp = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); fail("null element should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element("foo"); try @@ -100,7 +111,7 @@ public class GroupPropertyReaderWriterTest GroupProperty gp = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); fail("element not named 'property' should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element("property"); try @@ -108,7 +119,7 @@ public class GroupPropertyReaderWriterTest GroupProperty gp = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); fail("element without 'key' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element.setAttribute("key", "foo"); try @@ -116,7 +127,7 @@ public class GroupPropertyReaderWriterTest GroupProperty gp = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); fail("element without 'type' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element.setAttribute("type", "Double"); try @@ -124,7 +135,7 @@ public class GroupPropertyReaderWriterTest GroupProperty gp = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); fail("Unsupported 'type' should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} } @Test @@ -136,7 +147,7 @@ public class GroupPropertyReaderWriterTest Element element = ca.nrc.cadc.ac.xml.GroupPropertyWriter.write(null); fail("null GroupProperty should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} GroupProperty gp = new GroupProperty("key", new Double(1.0), true); try @@ -153,20 +164,20 @@ public class GroupPropertyReaderWriterTest { // String type GroupProperty expected = new GroupProperty("key", "value", true); - Element element = ca.nrc.cadc.ac.xml.GroupPropertyWriter.write(expected); + Element element = GroupPropertyWriter.write(expected); assertNotNull(element); - GroupProperty actual = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); + GroupProperty actual = GroupPropertyReader.read(element); assertNotNull(actual); assertEquals(expected, actual); // Integer tuype expected = new GroupProperty("key", new Integer(1), false); - element = ca.nrc.cadc.ac.xml.GroupPropertyWriter.write(expected); + element = GroupPropertyWriter.write(expected); assertNotNull(element); - actual = ca.nrc.cadc.ac.xml.GroupPropertyReader.read(element); + actual = GroupPropertyReader.read(element); assertNotNull(actual); assertEquals(expected, actual); diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupReaderWriterTest.java index fb95af54f166d27f63a4abaaeef708d2057300e9..ba0588612b6f81f5761da19271c733ad14b0e92d 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupReaderWriterTest.java @@ -84,6 +84,7 @@ import javax.security.auth.x500.X500Principal; import ca.nrc.cadc.ac.Group; import ca.nrc.cadc.ac.GroupProperty; import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.WriterException; import org.apache.log4j.Logger; import org.junit.Test; @@ -137,7 +138,7 @@ public class GroupReaderWriterTest ca.nrc.cadc.ac.xml.GroupWriter.write(null, new StringBuilder()); fail("null Group should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} } @Test diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupsReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupsReaderWriterTest.java index b77be4b930ec51581a1f8c9f5ed8e58ba25d2168..3eee8859fcbcbeaca77d29e6a53081bef5c08b81 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupsReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/GroupsReaderWriterTest.java @@ -75,6 +75,7 @@ import java.util.ArrayList; import java.util.List; import ca.nrc.cadc.ac.Group; +import ca.nrc.cadc.ac.WriterException; import org.apache.log4j.Logger; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -128,7 +129,7 @@ public class GroupsReaderWriterTest ca.nrc.cadc.ac.xml.GroupsWriter.write(null, new StringBuilder()); fail("null Group should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} } @Test diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/IdentityReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/IdentityReaderWriterTest.java index 74e25644d7841e9531b12383121e0d52dfd69285..07894640b17cd2d6fda0153c10adb66c4a05c50f 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/IdentityReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/IdentityReaderWriterTest.java @@ -68,6 +68,8 @@ */ package ca.nrc.cadc.ac.xml; +import ca.nrc.cadc.ac.ReaderException; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.NumericPrincipal; import ca.nrc.cadc.auth.OpenIdPrincipal; @@ -97,7 +99,7 @@ public class IdentityReaderWriterTest Principal p = ca.nrc.cadc.ac.xml.IdentityReader.read(element); fail("null element should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element("foo"); try @@ -105,7 +107,7 @@ public class IdentityReaderWriterTest Principal p = ca.nrc.cadc.ac.xml.IdentityReader.read(element); fail("element not named 'identity' should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element("identity"); try @@ -113,7 +115,7 @@ public class IdentityReaderWriterTest Principal p = ca.nrc.cadc.ac.xml.IdentityReader.read(element); fail("element without 'type' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element.setAttribute("type", "foo"); try @@ -121,7 +123,7 @@ public class IdentityReaderWriterTest Principal p = ca.nrc.cadc.ac.xml.IdentityReader.read(element); fail("element with unknown 'type' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} } @Test @@ -133,7 +135,7 @@ public class IdentityReaderWriterTest Element element = ca.nrc.cadc.ac.xml.IdentityWriter.write(null); fail("null Identity should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} Principal p = new JMXPrincipal("foo"); try diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserDetailsReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserDetailsReaderWriterTest.java index 5e7918ce6b47bdd17babfae50ad0d4fdf735fe23..a7badabbaa4ce6e745946e879b6d4636b5141d65 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserDetailsReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserDetailsReaderWriterTest.java @@ -70,11 +70,16 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.PersonalDetails; import ca.nrc.cadc.ac.PosixDetails; +import ca.nrc.cadc.ac.ReaderException; import ca.nrc.cadc.ac.UserDetails; +import ca.nrc.cadc.ac.WriterException; import org.apache.log4j.Logger; import org.jdom2.Element; import org.junit.Test; -import static org.junit.Assert.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; /** * @@ -91,34 +96,34 @@ public class UserDetailsReaderWriterTest Element element = null; try { - UserDetails ud = ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + UserDetails ud = UserDetailsReader.read(element); fail("null element should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element("foo"); try { - UserDetails ud = ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + UserDetails ud = UserDetailsReader.read(element); fail("element not named 'userDetails' should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element = new Element(UserDetails.NAME); try { - UserDetails ud = ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + UserDetails ud = UserDetailsReader.read(element); fail("element without 'type' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} element.setAttribute("type", "foo"); try { - UserDetails ud = ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + UserDetails ud = UserDetailsReader.read(element); fail("element with unknown 'type' attribute should throw ReaderException"); } - catch (ca.nrc.cadc.ac.xml.ReaderException e) {} + catch (ReaderException e) {} } @Test @@ -127,10 +132,10 @@ public class UserDetailsReaderWriterTest { try { - Element element = ca.nrc.cadc.ac.xml.UserDetailsWriter.write(null); + Element element = UserDetailsWriter.write(null); fail("null UserDetails should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} } @Test @@ -143,10 +148,10 @@ public class UserDetailsReaderWriterTest expected.country = "country"; expected.email = "email"; expected.institute = "institute"; - Element element = ca.nrc.cadc.ac.xml.UserDetailsWriter.write(expected); + Element element = UserDetailsWriter.write(expected); assertNotNull(element); - PersonalDetails actual = (PersonalDetails) ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + PersonalDetails actual = (PersonalDetails) UserDetailsReader.read(element); assertNotNull(actual); assertEquals(expected, actual); assertEquals(expected.address, actual.address); @@ -161,10 +166,10 @@ public class UserDetailsReaderWriterTest throws Exception { UserDetails expected = new PosixDetails(123l, 456, "/dev/null"); - Element element = ca.nrc.cadc.ac.xml.UserDetailsWriter.write(expected); + Element element = UserDetailsWriter.write(expected); assertNotNull(element); - UserDetails actual = ca.nrc.cadc.ac.xml.UserDetailsReader.read(element); + UserDetails actual = UserDetailsReader.read(element); assertNotNull(actual); assertEquals(expected, actual); } diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserReaderWriterTest.java index ed61d4bc0416c624087a15d6fd181ff94d92f470..ee4ad29ae83583934ee7131c30de15e5fccafb6b 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserReaderWriterTest.java @@ -70,6 +70,7 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.PersonalDetails; import ca.nrc.cadc.ac.User; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.NumericPrincipal; import java.io.IOException; @@ -126,7 +127,7 @@ public class UserReaderWriterTest ca.nrc.cadc.ac.xml.UserWriter.write(null, new StringBuilder()); fail("null User should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} } @Test diff --git a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserRequestReaderWriterTest.java b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserRequestReaderWriterTest.java index c4a1d9a2d17679241c3fa1d7bd3fd5f83dd37032..191fb9b603131b691659c843aa11b25303309d14 100644 --- a/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserRequestReaderWriterTest.java +++ b/projects/cadcAccessControl/test/src/ca/nrc/cadc/ac/xml/UserRequestReaderWriterTest.java @@ -71,6 +71,7 @@ package ca.nrc.cadc.ac.xml; import ca.nrc.cadc.ac.PersonalDetails; import ca.nrc.cadc.ac.User; import ca.nrc.cadc.ac.UserRequest; +import ca.nrc.cadc.ac.WriterException; import ca.nrc.cadc.auth.HttpPrincipal; import ca.nrc.cadc.auth.NumericPrincipal; import org.apache.log4j.Logger; @@ -129,7 +130,7 @@ public class UserRequestReaderWriterTest UserRequestWriter.write(null, new StringBuilder()); fail("null UserRequest should throw WriterException"); } - catch (ca.nrc.cadc.ac.xml.WriterException e) {} + catch (WriterException e) {} } @Test