/** Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016. All rights reserved. Contact: SYSTAP, LLC DBA Blazegraph 2501 Calvert ST NW #106 Washington, DC 20008 licenses@blazegraph.com 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; version 2 of the License. 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 */ /* * Created on Sep 20, 2011 */ package com.bigdata.util; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * Class provides static information about project dependencies. * * @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a> * @version $Id$ */ public class Depends { public interface Dependency { /** The component name. */ String getName(); /** The project URL. */ String projectURL(); /** The license URL. */ String licenseURL(); }; private static class OrderByName implements Comparator<Dependency> { @Override public int compare(final Dependency o1, final Dependency o2) { return o1.getName().compareTo(o2.getName()); } } @SuppressWarnings("unused") private static class OrderByLicense implements Comparator<Dependency> { @Override public int compare(Dependency o1, Dependency o2) { return o1.licenseURL().compareTo(o2.licenseURL()); } } /** * Metadata for dependencies. */ private static class Dep implements Dependency { private final String component; private final String projectURL; private final String licenseURL; public Dep(final String component, final String projectURL, final String licenseURL) { if (component == null || projectURL == null || licenseURL == null) throw new IllegalArgumentException(); this.component = component; this.projectURL = projectURL; this.licenseURL = licenseURL; } @Override final public String getName() { return component; } @Override final public String projectURL() { return projectURL; } @Override final public String licenseURL() { return licenseURL; } @Override public String toString() { return "{name=" + component + ", project=" + projectURL + ", license=" + licenseURL + "}"; } } /** * An Apache project. */ private static class ApacheDep extends Dep { public ApacheDep(String component, String projectURL) { super(component, projectURL, "http://www.apache.org/licenses/LICENSE-2.0.html"); } } /** * A project which we are redistributing under LGPL v2.1. */ private static class LGPL21Dep extends Dep { public LGPL21Dep(String component, String projectURL) { super(component, projectURL, "http://www.gnu.org/licenses/lgpl-2.1.html"); } } private final static Dep jini = new ApacheDep("river", "http://river.apache.org/"); private final static Dep zookeeper = new ApacheDep("zookeeper", "http://hadoop.apache.org/zookeeper/"); private final static Dep log4j = new ApacheDep("log4j", "http://logging.apache.org/log4j/1.2/"); private final static Dep lucene = new ApacheDep("lucene", "http://lucene.apache.org/core/index.html"); /* * http client and its dependencies are used for remote SPARQL requests and * the NanoSparqlServer's client-side API. */ private final static Dep apacheCommonsCodec = new ApacheDep( "commons-codec", "http://commons.apache.org/codec/"); private final static Dep apacheCommonsFileUpload = new ApacheDep( "commons-fileupload", "http://commons.apache.org/fileupload/"); private final static Dep apacheCommonsIO = new ApacheDep( "commons-io", "http://commons.apache.org/io/"); private final static Dep apacheCommonsLogging = new ApacheDep( "commons-logging", "http://commons.apache.org/logging/"); private final static Dep apacheHttpClient = new ApacheDep("httpclient", "http://hc.apache.org/"); private final static Dep apacheHttpClientCache = new ApacheDep( "httpclient-cache", "http://hc.apache.org/"); private final static Dep apacheHttpCore = new ApacheDep("httpcore", "http://hc.apache.org/"); private final static Dep apacheHttpMime = new ApacheDep("httpmime", "http://hc.apache.org/"); /** * Note: This bigdata module is under a different license (Apache 2.0) than * the other bigdata modules. */ private final static Dep bigdataGanglia = new ApacheDep("bigdata-ganglia", "https://sourceforge.net/projects/bigdata/"); private final static Dep colt = new Dep("colt", "http://acs.lbl.gov/software/colt/", "http://acs.lbl.gov/software/colt/license.html"); private final static Dep dsiutils = new LGPL21Dep("dsiutils", "http://dsiutils.dsi.unimi.it/"); private final static Dep fastutil = new Dep("fastutil", "http://fastutil.dsi.unimi.it/", "http://www.apache.org/licenses/LICENSE-2.0.html"); // private final static Dep iris = new LGPL21Dep("iris", // "http://www.iris-reasoner.org"); // // private final static Dep jgrapht = new LGPL21Dep("jgrapht", // "http://www.jgrapht.org/"); // private final static Dep tuprolog = new LGPL21Dep("tuprolog", // "http://www.alice.unibo.it/xwiki/bin/view/Tuprolog/"); private final static Dep highScaleLib = new Dep("high-scale-lib", "https://sourceforge.net/projects/high-scale-lib/", "http://creativecommons.org/licenses/publicdomain"); // private final static Dep cweb = new Dep( // "cweb", // "http://www.cognitiveweb.org/", // "http://www.cognitiveweb.org/legal/license/CognitiveWebOpenSourceLicense-1.1.html"); private final static Dep flot = new Dep("flot", "http://code.google.com/p/flot/", "http://www.opensource.org/licenses/mit-license.php"); /** * Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) * licenses. (We use the MIT license). */ private final static Dep jquery = new Dep("jquery", "http://jquery.com/", "https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt"); private final static Dep slf4j = new Dep("slf4j", "http://www.slf4j.org/", "http://www.slf4j.org/license.html"); private final static Dep sesame = new Dep("sesame", "http://www.openrdf.org/", "http://www.openrdf.org/download.jsp"); //Used for RDFa support. Apache2 License private final static Dep semargl = new Dep("semargl", "http://semarglproject.org", "https://github.com/levkhomich/semargl/blob/master/LICENSE"); private final static Dep icu = new Dep("ICU", "http://site.icu-project.org/", "http://source.icu-project.org/repos/icu/icu/trunk/license.html"); // private final static Dep nxparser = new Dep("nxparser", // "http://sw.deri.org/2006/08/nxparser/", // "http://sw.deri.org/2006/08/nxparser/license.txt"); private final static Dep nanohttp = new Dep("nanohttp", "http://elonen.iki.fi/code/nanohttpd/", "http://elonen.iki.fi/code/nanohttpd/#license"); /** * Dual licensed under apache 2.0 and Eclipse Public License 1.0. We use the * Apache 2.0 license. * * @see http://www.eclipse.org/jetty/licenses.php */ private final static Dep jetty = new Dep("jetty", "http://www.eclipse.org/jetty/", "http://www.apache.org/licenses/LICENSE-2.0.html"); private final static Dep jsonld = new Dep("jsonld", "https://github.com/jsonld-java/jsonld-java/", "https://raw.githubusercontent.com/jsonld-java/jsonld-java/master/LICENCE"); private final static Dep servletApi = new ApacheDep("servlet-api", "http://tomcat.apache.org"); /** * Dual licensed under apache 2.0 and LGPL 2.1. We use the apache 2.0 * license. */ private final static Dep jacksonCore = new Dep("jackson-core", "http://wiki.fasterxml.com/JacksonHome", "http://www.apache.org/licenses/LICENSE-2.0.html"); private final static Dep blueprintsCore = new Dep("blueprints-core", "https://github.com/tinkerpop/blueprints", "https://github.com/tinkerpop/blueprints/blob/master/LICENSE.txt"); private final static Dep rexsterCore = new Dep("rexster-core", "https://github.com/tinkerpop/rexster", "https://github.com/tinkerpop/rexster/blob/master/LICENSE.txt"); // Note: This is a test-only dependency at this time. @SuppressWarnings("unused") private final static Dep hamcrestCore = new Dep("hamcrest-core", "https://code.google.com/p/hamcrest/", "http://opensource.org/licenses/BSD-3-Clause"); static private final Dep[] depends; static { depends = new Dep[] { // // standalone log4j,// lucene,// colt,// dsiutils,// fastutil,// highScaleLib,// apacheCommonsCodec, apacheCommonsFileUpload, apacheCommonsIO, apacheCommonsLogging, apacheHttpClient, apacheHttpClientCache, apacheHttpCore, apacheHttpMime, // webapp // cweb,// slf4j,// sesame,// semargl,// icu,// // nxparser,// nanohttp,// jetty,// jsonld,// servletApi,// jacksonCore,// blueprintsCore,// rexsterCore,// bigdataGanglia,// // scale-out jini,// zookeeper,// // javascript flot,// jquery,// // linked, but not used. // iris,// // jgrapht,// // tuprolog,// }; Arrays.sort(depends, new OrderByName()); } /** * Return an unmodifiable list of the dependencies. */ static public final List<Dep> depends() { return Collections.unmodifiableList(Arrays.asList(depends)); } }