NIHVIVO-2811 Rewrite the build script to be simpler, and to run faster incremental builds for VIVO.

This commit is contained in:
j2blake 2011-09-27 21:06:02 +00:00
commit d4f561d156
62 changed files with 342 additions and 554 deletions

View file

@ -1,49 +0,0 @@
# these are ant build properties that all of the vitro and build.xml files might need.
#
# All of these paths must be absolute or relative to the vitro directory. Relative
# is preferred.
# Notice that the use of relative paths is facilitated by the basedir attribute of the
# ant project elements. All projects should use the same base directory so that the
# relative paths will point to the correct files.
# See the ant documentation for project element basedir attribute.
############## basic configuration ###############
java_api=/usr/local/java/java_home
############ tomcat stuff ####################
tomcat.home=/usr/local/tomcat
############# source directory #########################################
##### This parameter is used for referencing a "permanent" home #######
##### in the source directory of the project for uploaded files #######
##### so that if the Tomcat webapp context is wiped out, any #######
##### uploaded files (usually images) are not lost. #######
########################################################################
source.home=/usr/local/src/Vitro
########################################################################
##### Everything under this is used by the Vitro build.xml files #######
##### You should not need to customize it for you local install #######
########################################################################
########### ant contrib tasks ###############
ant.lib=./config/ant/lib
ant.contrib.jar=${ant.lib}/ant-contrib-1.0b2.jar
#### locations of files in the build #####
webapp.dir=./webapp
webapp.lib=${webapp.dir}/lib
webapp.build=${webapp.dir}/.build
webapp.dir.jar=${webapp.build}/vitro-webapp.jar
webapp.name=vitro
webapp.deploy.home=${tomcat.home}/webapps/${webapp.name}
ingest.dir=./ingestTool
ingest.lib=${ingest.dir}/lib
ingest.build=${ingest.dir}/build
ws.dir=./services
ws.lib=${ws.dir}/lib
ws.build=${webapp.dir}/build
ws.wsdd.dir=${ws.dir}/wsdd

View file

@ -1,4 +0,0 @@
osk
sk
dklsjf

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,84 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.utilities.anttasks;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.PatternSet;
import org.apache.tools.ant.types.Resource;
import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.resources.FileResource;
/**
* A base class for our custom-made FileSet extensions.
*/
public abstract class AbstractWrappedFileSet implements ResourceCollection {
private Project p;
/** The list of FileResources that we will yield to the task. */
protected List<FileResource> files;
/** The internal FileSet */
private FileSet fileSet = new FileSet();
public void setProject(Project p) {
this.p = p;
fileSet.setProject(p);
}
public void setDir(File dir) {
fileSet.setDir(dir);
}
public PatternSet.NameEntry createInclude() {
return fileSet.createInclude();
}
public PatternSet.NameEntry createExclude() {
return fileSet.createExclude();
}
public PatternSet createPatternSet() {
return fileSet.createPatternSet();
}
@Override
public Object clone() {
throw new BuildException(this.getClass().getSimpleName()
+ " does not support cloning.");
}
@Override
public boolean isFilesystemOnly() {
return true;
}
@Override
public Iterator<? extends Resource> iterator() {
fillFileList();
return files.iterator();
}
@Override
public int size() {
fillFileList();
return files.size();
}
protected abstract void fillFileList();
protected Project getProject() {
return p;
}
protected FileSet getInternalFileSet() {
return fileSet;
}
}

View file

@ -0,0 +1,59 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.utilities.anttasks;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.resources.FileResource;
/**
* TODO
*/
public class DirDifferenceFileSet extends AbstractWrappedFileSet {
private Path blockingPath;
public Path createBlockingPath() {
if (blockingPath == null) {
blockingPath = new Path(getProject());
}
return blockingPath.createPath();
}
@Override
protected void fillFileList() {
if (files != null) {
return;
}
FileSet fs = getInternalFileSet();
@SuppressWarnings("unchecked")
Iterator<FileResource> iter = fs.iterator();
files = new ArrayList<FileResource>();
while (iter.hasNext()) {
FileResource fr = iter.next();
if (!isBlocked(fr)) {
files.add(fr);
}
}
}
/**
* Check to see whether this same file exists in any of the blocking
* directories.
*/
private boolean isBlocked(FileResource fr) {
for (String blockingDir : blockingPath.list()) {
File f = new File(blockingDir + File.separator + fr.getName());
if (f.exists()) {
return true;
}
}
return false;
}
}

View file

@ -1,26 +1,25 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.testing;
package edu.cornell.mannlib.vitro.utilities.testing;
import static edu.cornell.mannlib.vitro.testing.VitroTestRunner.ReportLevel.BRIEF;
import static edu.cornell.mannlib.vitro.testing.VitroTestRunner.ReportLevel.FULL;
import static edu.cornell.mannlib.vitro.testing.VitroTestRunner.ReportLevel.MORE;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.junit.runner.Description;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import com.ibm.icu.text.SimpleDateFormat;
import edu.cornell.mannlib.vitro.testing.VitroTestRunner.ReportLevel;
import static edu.cornell.mannlib.vitro.utilities.testing.VitroTestRunner.ReportLevel.BRIEF;
import static edu.cornell.mannlib.vitro.utilities.testing.VitroTestRunner.ReportLevel.FULL;
import static edu.cornell.mannlib.vitro.utilities.testing.VitroTestRunner.ReportLevel.MORE;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import org.junit.runner.Description;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import edu.cornell.mannlib.vitro.utilities.testing.VitroTestRunner.ReportLevel;
/**
* Listen to events as they come from the JUnit test runner. The events from the

View file

@ -1,14 +1,14 @@
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
package edu.cornell.mannlib.vitro.testing;
package edu.cornell.mannlib.vitro.utilities.testing;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.runner.JUnitCore;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.runner.JUnitCore;
/**
* A Java application that will run the Vitro unit tests. It searches for unit

View file

@ -13,18 +13,26 @@
<!-- - - - - - - - - - - - - - - - - -
properties
- - - - - - - - - - - - - - - - - -->
<dirname property="corebase.dir" file="${ant.file.vitroCore}" />
<!-- A product script will override appbase.dir, but not corebase.dir -->
<property name="appbase.dir" location="${corebase.dir}" />
<property name="build.dir" location=".build" />
<property name="webapp.dir" location="." />
<property name="deploy.properties.file" location="config/deploy.properties" />
<property name="utilities.base.dir" location="${corebase.dir}/../utilities/buildutils" />
<property name="utilities.source.dir" location="${utilities.base.dir}/src" />
<property name="utilities.lib.dir" location="${utilities.base.dir}/lib" />
<property name="war.dir" location="${build.dir}/war" />
<property name="war-webinf.dir" location="${war.dir}/WEB-INF" />
<property name="war-classes.dir" location="${war-webinf.dir}/classes" />
<property name="war-resources.dir" location="${war-webinf.dir}/resources" />
<property name="war-lib.dir" location="${war-webinf.dir}/lib" />
<property name="war.webinf.dir" location="${war.dir}/WEB-INF" />
<property name="war.classes.dir" location="${war.webinf.dir}/classes" />
<property name="war.resources.dir" location="${war.webinf.dir}/resources" />
<property name="revisionInfo.build.file" location="${war.resources.dir}/revisionInfo.txt" />
<property name="test-classes.dir" location="${build.dir}/testclasses" />
<property name="servletjars.dir" location="${build.dir}/servletjars" />
<property name="test.classes.dir" location="${build.dir}/testClasses" />
<property name="utility.classes.dir" location="${build.dir}/utilityClasses" />
<property name="javac.deprecation" value="true" />
@ -32,28 +40,30 @@
paths: for compiling and running
- - - - - - - - - - - - - - - - - -->
<path id="compile.classpath">
<fileset dir="${war-lib.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${servletjars.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${appbase.dir}/lib" includes="*.jar" />
</path>
<path id="utility.compile.classpath">
<fileset dir="${utilities.lib.dir}" includes="*.jar" />
</path>
<path id="utility.run.classpath">
<pathelement location="${utility.classes.dir}" />
<path refid="utility.compile.classpath" />
</path>
<path id="test.compile.classpath">
<pathelement location="${war-classes.dir}" />
<pathelement location="${war.classes.dir}" />
<path refid="compile.classpath" />
</path>
<path id="test.run.classpath">
<!-- This holds data files and a special log4j.properties -->
<pathelement location="${webapp.dir}/test" />
<pathelement location="${test-classes.dir}" />
<pathelement location="${appbase.dir}/test" />
<pathelement location="${test.classes.dir}" />
<path refid="test.compile.classpath" />
<path refid="utility.run.classpath" />
</path>
<!-- =================================
target: describe
================================= -->
@ -77,12 +87,6 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
target: properties
- - - - - - - - - - - - - - - - - -->
<target name="properties">
<!--
If calling from a Product build script, then this property
already points to the deploy.properties file of the Product.
-->
<property name="deploy.properties.file" location="config/deploy.properties" />
<fail message="You must create a &quot;${deploy.properties.file}&quot; file.">
<condition>
<not>
@ -117,8 +121,8 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
</not>
</condition>
</fail>
<property name="solr.home" location="${vitro.home.directory}/solr" />
<property name="solr.home.dir" location="${vitro.home.directory}/solr" />
</target>
<!-- =================================
@ -126,52 +130,60 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
================================= -->
<target name="clean" depends="properties" description="--> Delete all artifacts.">
<delete dir="${build.dir}" />
<delete dir="${solr.home}" excludes="data/**/*" includeemptydirs="true" />
<delete dir="${solr.home.dir}" excludes="data/**/*" includeemptydirs="true" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: compileUtilities
- - - - - - - - - - - - - - - - - -->
<target name="compileUtilities">
<mkdir dir="${utility.classes.dir}" />
<javac srcdir="${utilities.source.dir}"
destdir="${utility.classes.dir}"
debug="true"
deprecation="${javac.deprecation}"
encoding="UTF8"
includeantruntime="false"
optimize="false"
source="1.6">
<classpath refid="utility.compile.classpath" />
</javac>
<typedef name="dirDifference"
classname="edu.cornell.mannlib.vitro.utilities.anttasks.DirDifferenceFileSet"
classpathref="utility.run.classpath" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: prepare
- - - - - - - - - - - - - - - - - -->
<target name="prepare" depends="properties">
<target name="prepare" depends="properties, compileUtilities">
<mkdir dir="${build.dir}" />
<mkdir dir="${war-classes.dir}" />
<mkdir dir="${war-resources.dir}" />
<mkdir dir="${test-classes.dir}" />
<mkdir dir="${war.classes.dir}" />
<mkdir dir="${war.resources.dir}" />
<mkdir dir="${test.classes.dir}" />
<!-- copy the themes into the war directory. -->
<!-- copy all sorts of web stuff into the war directory. -->
<copy todir="${war.dir}">
<fileset dir="${webapp.dir}/web">
<!--
If a product doesn't want the core themes, it can
set this property and they will be skipped.
-->
<exclude name="themes/**/*" if="skip.core.themes" />
<fileset dir="${appbase.dir}/web" />
<fileset dir="${appbase.dir}" includes="themes/**/*" />
</copy>
<copy todir="${war.webinf.dir}">
<fileset dir="${appbase.dir}">
<!-- copy the JARs into the war directory -->
<include name="lib/*" />
<!-- these are already in Tomcat: we mustn't conflict. -->
<exclude name="lib/jsp-api.jar" />
<exclude name="lib/servlet-api.jar" />
</fileset>
</copy>
<!-- copy the config files into the war directory. -->
<copy todir="${war-webinf.dir}">
<fileset file="${webapp.dir}/config/web.xml" />
<fileset file="${webapp.dir}/config/dwr.xml" />
</copy>
<copy todir="${war-resources.dir}">
<fileset file="${webapp.dir}/config/startup_listeners.txt" />
</copy>
<!-- copy the ontologies and the filegraphs into the war directory. -->
<copy todir="${war-webinf.dir}">
<fileset dir="${webapp.dir}" includes="ontologies" />
<fileset dir="${webapp.dir}" includes="ontologies/**/*" />
<fileset dir="${webapp.dir}" includes="filegraph" />
<fileset dir="${webapp.dir}" includes="filegraph/**/*" />
</copy>
<!-- use the production Log4J properties, unless a debug version exists. -->
<available file="${webapp.dir}/config/debug.log4j.properties"
<available file="${appbase.dir}/config/debug.log4j.properties"
property="debug.log4j.exists" />
<copy tofile="${war-classes.dir}/log4j.properties" filtering="true" overwrite="true">
<fileset dir="${webapp.dir}/config">
<copy tofile="${war.classes.dir}/log4j.properties" filtering="true" overwrite="true">
<fileset dir="${appbase.dir}/config">
<include name="default.log4j.properties" unless="debug.log4j.exists" />
<include name="debug.log4j.properties" if="debug.log4j.exists" />
</fileset>
@ -180,40 +192,17 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
</filterchain>
</copy>
<!-- copy the deploy.properties into the war directory -->
<copy todir="${war-classes.dir}">
<copy todir="${war.classes.dir}">
<!-- copy the deploy.properties into the war directory -->
<fileset file="${deploy.properties.file}" />
</copy>
<!-- copy the custom tag libraries into the war directory -->
<copy todir="${war-webinf.dir}/tlds">
<fileset dir="${webapp.dir}/config/tlds" includes="**/*" excludes="*.LCK" />
</copy>
<!-- copy any xml files from source tree to the war directory -->
<copy todir="${build.dir}/war/WEB-INF/classes">
<fileset dir="${webapp.dir}/src" includes="**/*.xml" />
</copy>
<!-- copy the JARs into the war directory -->
<copy todir="${war-lib.dir}">
<fileset dir="${webapp.dir}/lib">
<!-- these are already in Tomcat: we mustn't conflict. -->
<exclude name="jsp-api.jar" />
<exclude name="servlet-api.jar" />
</fileset>
</copy>
<!-- copy the servlet JARs into their own directory, to compile against. -->
<copy todir="${servletjars.dir}">
<fileset dir="${webapp.dir}/lib">
<include name="jsp-api.jar" />
<include name="servlet-api.jar" />
</fileset>
<!-- copy any xml files from source tree to the war directory -->
<fileset dir="${appbase.dir}/src" includes="**/*.xml" />
</copy>
<!-- copy the context file into the war directory -->
<copy file="${webapp.dir}/context.xml" tofile="${war.dir}/META-INF/context.xml" />
<copy file="${appbase.dir}/context.xml" tofile="${war.dir}/META-INF/context.xml" />
</target>
<!-- =================================
@ -221,15 +210,15 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
================================= -->
<target name="compile" depends="prepare" description="--> Compile Java sources">
<!-- deletes all files that depend on changed .java files -->
<depend srcdir="${webapp.dir}/src"
destdir="${war-classes.dir}"
<depend srcdir="${appbase.dir}/src"
destdir="${war.classes.dir}"
closure="false"
cache="${build.dir}/.depcache">
<classpath refid="compile.classpath" />
</depend>
<javac srcdir="${webapp.dir}/src"
destdir="${war-classes.dir}"
<javac srcdir="${appbase.dir}/src"
destdir="${war.classes.dir}"
debug="true"
deprecation="${javac.deprecation}"
encoding="UTF8"
@ -244,8 +233,8 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
target: test
================================= -->
<target name="test" depends="compile" unless="skiptests" description="--> Run JUnit tests">
<javac srcdir="${webapp.dir}/test"
destdir="${test-classes.dir}"
<javac srcdir="${appbase.dir}/test"
destdir="${test.classes.dir}"
debug="true"
deprecation="${javac.deprecation}"
encoding="UTF8"
@ -255,15 +244,22 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
<classpath refid="test.compile.classpath" />
</javac>
<java classname="edu.cornell.mannlib.vitro.testing.VitroTestRunner"
<java classname="edu.cornell.mannlib.vitro.utilities.testing.VitroTestRunner"
fork="yes"
failonerror="true">
<classpath refid="test.run.classpath" />
<arg file="${webapp.dir}/test" />
<arg file="${appbase.dir}/test" />
<arg value="${testlevel}" />
</java>
</target>
<!-- =================================
target: jar
================================= -->
<target name="jar" depends="test" description="--> Compile the Java, and build a JAR file">
<jar basedir="${war.classes.dir}" destfile="${build.dir}/${ant.project.name}.jar" />
</target>
<!-- =================================
target: revisionInfo
================================= -->
@ -271,54 +267,32 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
depends="test"
unless="skipinfo"
description="--> Store revision info in build">
<property name="revisionInfo.product.dir" location="${ant.file.vitroCore}/.." />
<property name="revisionInfo.build.file" location="${war-resources.dir}/revisionInfo.txt" />
<delete file="${revisionInfo.build.file}" />
<tstamp>
<format property="revisionInfo.timestamp" pattern="yyyy-MM-dd HH:mm:ss" />
</tstamp>
<echo file="${revisionInfo.build.file}">${revisionInfo.timestamp}
</echo>
<javac srcdir="${webapp.dir}/../utilities/buildutils/revisioninfo"
destdir="${test-classes.dir}"
debug="true"
deprecation="${javac.deprecation}"
encoding="UTF8"
includeantruntime="false"
optimize="false"
source="1.6">
</javac>
<java classname="edu.cornell.mannlib.vitro.utilities.revisioninfo.RevisionInfoBuilder"
fork="no"
failonerror="true">
<classpath refid="test.run.classpath" />
<arg value="${ant.project.name}" />
<arg file="${revisionInfo.product.dir}" />
<arg file="${revisionInfo.build.file}" />
</java>
<addRevisionInfoLine productName="vitroCore" productCheckoutDir="${corebase.dir}/.." />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: prepareSolr
- - - - - - - - - - - - - - - - - -->
<target name="prepareSolr" depends="properties">
<property name="solr.distrib.dir" location="${webapp.dir}/../solr" />
<property name="solr.distrib.dir" location="${corebase.dir}/../solr" />
<property name="solr.example.dir" location="${solr.distrib.dir}/exampleSolr" />
<property name="solr.context.config.example"
location="${solr.distrib.dir}/exampleSolrContext.xml" />
<property name="solr.war" location="${solr.distrib.dir}/apache-solr-3.1.0.war" />
<property name="solr.docbase" location="${solr.home}/solr.war" />
<property name="solr.docbase" location="${solr.home.dir}/solr.war" />
<property name="solr.context.name" value="${webapp.name}solr" />
<property name="solr.context.config" location="${solr.home}/${solr.context.name}.xml" />
<property name="solr.context.config" location="${solr.home.dir}/${solr.context.name}.xml" />
<!-- Create and copy the example directory to the solr.home directory. -->
<mkdir dir="${solr.home}" />
<copy todir="${solr.home}">
<!-- Create and copy the example directory to the solr.home.dir directory. -->
<mkdir dir="${solr.home.dir}" />
<copy todir="${solr.home.dir}">
<fileset dir="${solr.example.dir}" includes="**/*" />
</copy>
@ -327,12 +301,12 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
<fileset file="${solr.war}" />
</copy>
<war destfile="${solr.docbase}" update="true">
<classes dir="${webapp.dir}/config/solr/" />
<classes dir="${appbase.dir}/config/solr/" />
</war>
<!-- if no mask is define, go with an unsecured installation. -->
<property name="vitro.local.solr.ipaddress.mask" value=".*" />
<!-- Create the context configuration XML with expanded properties. -->
<copy tofile="${solr.context.config}" filtering="true">
<fileset file="${solr.context.config.example}" />
@ -347,7 +321,7 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
- - - - - - - - - - - - - - - - - -->
<target name="deploySolr" depends="prepareSolr" unless="noSolrDeploy">
<unwar src="${solr.docbase}" dest="${tomcat.home}/webapps/${solr.context.name}" />
<copy todir="${tomcat.home}/conf/Catalina/localhost" overwrite="true" >
<copy todir="${tomcat.home}/conf/Catalina/localhost" overwrite="true">
<fileset file="${solr.context.config}" />
</copy>
</target>
@ -384,16 +358,48 @@ deploy - Deploy the application directly into the Tomcat webapps directory.
================================= -->
<target name="licenser" description="--> Check source files for licensing tags">
<property name="licenser.properties.file"
location="${webapp.dir}/config/licenser/licenser.properties" />
<property name="licenser.label" value="Vitro core" />
<echo message="Checking license tags on ${licenser.label}" />
<exec executable="ruby" dir="${webapp.dir}/../utilities/licenser" failonerror="true">
<arg value="licenser.rb" />
<arg value="${licenser.properties.file}" />
<redirector outputproperty="licenser.test.output" alwayslog="true" />
</exec>
location="${corebase.dir}/config/licenser/licenser.properties" />
<runLicenserScript productname="Vitro core" propertiesfile="${licenser.properties.file}" />
</target>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MACROS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--
Run the licenser script.
-->
<macrodef name="runLicenserScript">
<attribute name="productName" />
<attribute name="propertiesFile" />
<sequential>
<echo message="Checking license tags on @{productName}" />
<exec executable="ruby" dir="${corebase.dir}/../utilities/licenser" failonerror="true">
<arg value="licenser.rb" />
<arg value="@{propertiesFile}" />
<redirector outputproperty="licenser.test.output" alwayslog="true" />
</exec>
</sequential>
</macrodef>
<!--
Add a line to the revisionInfo file.
-->
<macrodef name="addRevisionInfoLine">
<attribute name="productName" />
<attribute name="productCheckoutDir" />
<sequential>
<java classname="edu.cornell.mannlib.vitro.utilities.revisioninfo.RevisionInfoBuilder"
fork="no"
failonerror="true">
<classpath refid="utility.run.classpath" />
<arg value="@{productName}" />
<arg file="@{productCheckoutDir}" />
<arg file="${revisionInfo.build.file}" />
</java>
</sequential>
</macrodef>
</project>

View file

@ -113,21 +113,21 @@ webapp/web/src/xml/*
webapp/web/templates/freemarker/page/partials/googleAnalytics.ftl
# See /doc/3rd-party-licenses.txt for LICENSE file
webapp/config/tlds/sparqltag.tld
webapp/web/WEB-INF/tlds/sparqltag.tld
# See /doc/3rd-party-licenses.txt for LICENSE file
webapp/config/tlds/c.tld
webapp/config/tlds/fn.tld
webapp/web/WEB-INF/tlds/c.tld
webapp/web/WEB-INF/tlds/fn.tld
# PROBLEM: Can't find any info on licensing.
webapp/config/tlds/database.tld
webapp/web/WEB-INF/tlds/database.tld
# See /doc/3rd-party-licenses.txt for LICENSE file
webapp/config/tlds/taglibs-mailer.tld
webapp/web/WEB-INF/tlds/taglibs-mailer.tld
# See /doc/3rd-party-licenses.txt for LICENSE file
webapp/config/tlds/taglibs-random.tld
webapp/config/tlds/taglibs-string.tld
webapp/web/WEB-INF/tlds/taglibs-random.tld
webapp/web/WEB-INF/tlds/taglibs-string.tld
# See /doc/3rd-party-licenses.txt for LICENSE file
webapp/web/themes/enhanced/css/blueprint/grid.css

View file

@ -1,321 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<!-- ======================================================================
Build script for the Vivo Products.
jeb228
======================================================================-->
<project name="vivoProduct" default="describe">
<!--
This script should not be run on its own.
It should only be run from the build script of an individual Product.
-->
<fail>
<condition>
<equals arg1="${ant.file.vivoProduct}" arg2="${ant.file}" />
</condition>
This script should not be run by itself.
It should be invoked from the build script of a Vivo product.
</fail>
<fail unless="inner.basedir"
message="The build script for the product must define a value for inner.basedir" />
<!--
The build directory goes in the product directory.
Everything else hangs from the build directory.
-->
<property name="build.dir" location="./.build" />
<property name="war.dir" location="${build.dir}/war" />
<property name="war-webinf.dir" location="${war.dir}/WEB-INF" />
<property name="war-classes.dir" location="${war-webinf.dir}/classes" />
<property name="war-resources.dir" location="${war-webinf.dir}/resources" />
<property name="war-lib.dir" location="${war-webinf.dir}/lib" />
<property name="test-classes.dir" location="${build.dir}/testclasses" />
<property name="servletjars.dir" location="${build.dir}/servletjars" />
<property name="javac.deprecation" value="true" />
<!-- Is there a "src" directory in the product? -->
<property name="product.source.dir" location="./src" />
<available property="product.sources.exist" file="${product.source.dir}" />
<!-- Is there a "test" directory in the product? -->
<property name="product.test.dir" location="./test" />
<available property="product.tests.exist" file="${product.test.dir}" />
<!-- Is there a "themes" directory in the product? -->
<property name="product.themes.dir" location="./themes" />
<available property="product.themes.exist" file="${product.themes.dir}" />
<!-- Is there a modifications directory in the product? -->
<property name="product.modifications.dir" location="./modifications" />
<available property="product.modifications.exist" file="${product.modifications.dir}" />
<!-- - - - - - - - - - - - - - - - - -
paths: for compiling and running
- - - - - - - - - - - - - - - - - -->
<path id="compile.classpath">
<fileset dir="${war-lib.dir}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${servletjars.dir}">
<include name="**/*.jar" />
</fileset>
</path>
<path id="test.compile.classpath">
<pathelement location="${product.test.dir}"/>
<pathelement location="${war-classes.dir}" />
<path refid="compile.classpath" />
</path>
<path id="test.run.classpath">
<pathelement location="${test-classes.dir}" />
<path refid="test.compile.classpath" />
</path>
<!-- =================================
target: describe
================================= -->
<target name="describe" description="--> Describe the targets (this is the default).">
<innercall target="describe" />
</target>
<!-- =================================
target: all
================================= -->
<target name="all" depends="clean, deploy" description="--> Run 'clean', then 'deploy'" />
<!-- =================================
target: clean
================================= -->
<target name="clean" description="--> Delete all artifacts.">
<innercall target="clean" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productPrepare
- - - - - - - - - - - - - - - - - -->
<target name="productPrepare">
<antcall target="prepareThemes" />
<antcall target="prepareModifications" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: prepareThemes
- - - - - - - - - - - - - - - - - -->
<target name="prepareThemes" if="product.themes.exist">
<copy todir="${build.dir}/war/themes" overwrite="true">
<fileset dir="${product.themes.dir}" />
</copy>
</target>
<!-- - - - - - - - - - - - - - - - - -
target: prepareModifications
- - - - - - - - - - - - - - - - - -->
<target name="prepareModifications" if="product.modifications.exist">
<copy todir="${build.dir}/war" overwrite="true">
<fileset dir="${product.modifications.dir}" />
</copy>
</target>
<!-- =================================
target: compile
================================= -->
<target name="compile" description="--> Compile Java sources.">
<innercall target="compile" />
<antcall target="productCompile" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productCompile
- - - - - - - - - - - - - - - - - -->
<target name="productCompile" depends="productPrepare" if="product.sources.exist">
<property name="product.classes.dir" value="${build.dir}/${ant.project.name}/classes" />
<mkdir dir="${product.classes.dir}" />
<javac srcdir="${product.source.dir}"
destdir="${product.classes.dir}"
debug="true"
deprecation="${javac.deprecation}"
encoding="UTF8"
includeantruntime="false"
optimize="true"
source="1.6">
<classpath>
<path refid="compile.classpath" />
<pathelement location="${build.dir}/war/WEB-INF/classes"/>
</classpath>
</javac>
<copy todir="${build.dir}/war/WEB-INF/classes" overwrite="true">
<fileset dir="${product.classes.dir}" />
</copy>
</target>
<!-- =================================
target: test
================================= -->
<target name="test" description="--> Run JUnit tests">
<innercall target="test" />
<antcall target="productTest" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productTest
- - - - - - - - - - - - - - - - - -->
<target name="productTest" depends="productCompile" if="product.tests.exist" unless="skiptests">
<javac srcdir="${product.test.dir}"
destdir="${test-classes.dir}"
debug="true"
deprecation="true"
encoding="UTF8"
includeantruntime="false"
optimize="false"
source="1.6">
<classpath refid="test.compile.classpath" />
</javac>
<java classname="edu.cornell.mannlib.vitro.testing.VitroTestRunner"
fork="yes"
failonerror="true">
<classpath refid="test.run.classpath" />
<arg file="${product.test.dir}" />
<arg value="${testlevel}" />
</java>
</target>
<!-- =================================
target: revisionInfo
================================= -->
<target name="revisionInfo" description="--> Store revision info in build">
<innercall target="revisionInfo" />
<antcall target="productRevisionInfo" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productRevisionInfo
- - - - - - - - - - - - - - - - - -->
<target name="productRevisionInfo" depends="productTest" unless="skipinfo">
<property name="revisionInfo.product.dir" location="${ant.file}/.." />
<property name="revisionInfo.build.file" location="${war-resources.dir}/revisionInfo.txt" />
<java classname="edu.cornell.mannlib.vitro.utilities.revisioninfo.RevisionInfoBuilder"
fork="no"
failonerror="true">
<classpath refid="test.run.classpath" />
<arg value="${ant.project.name}" />
<arg file="${revisionInfo.product.dir}" />
<arg file="${revisionInfo.build.file}" />
</java>
</target>
<!-- - - - - - - - - - - - - - - - - -
target: deploySolr
This must be visible so a second-level product like CornellVivo can call it.
- - - - - - - - - - - - - - - - - -->
<target name="deploySolr" >
<innercall target="deploySolr" />
</target>
<!-- =================================
target: deploy
================================= -->
<target name="deploy" description="--> Build the app and install in Tomcat">
<!-- the inner "deploy" would just do a sync that will be done by productDeploy -->
<innercall target="revisionInfo" />
<antcall target="deploySolr" />
<antcall target="productDeploy" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productDeploy
- - - - - - - - - - - - - - - - - -->
<target name="productDeploy" depends="productRevisionInfo">
<property name="webapp.deploy.home" value="${tomcat.home}/webapps/${webapp.name}" />
<mkdir dir="${webapp.deploy.home}" />
<sync todir="${webapp.deploy.home}" includeemptydirs="true">
<fileset dir="${build.dir}/war" />
</sync>
</target>
<!-- =================================
target: war
================================= -->
<target name="war" description="--> Build the app and create a WAR file">
<innercall target="revisionInfo" />
<antcall target="productWar" />
</target>
<!-- - - - - - - - - - - - - - - - - -
target: productWar
- - - - - - - - - - - - - - - - - -->
<target name="productWar" depends="productRevisionInfo">
<jar basedir="${build.dir}/war" destfile="${build.dir}/${webapp.name}.war"/>
</target>
<!-- =================================
target: jar
================================= -->
<target name="jar" depends="revisionInfo" description="--> Build the app and create a JAR file">
<jar basedir="${build.dir}/war/WEB-INF/classes" destfile="${build.dir}/${webapp.name}.jar" />
</target>
<!-- =================================
target: licenser
In regular use, checks that all appropriate source files have license tags.
At release time, applies license text to source files.
NOTE: don't override licenser.properties.file from the command line.
Instead, override licenser.core.properties.file and licenser.product.properties.file
================================= -->
<target name="licenser" description="--> Check source files for licensing tags">
<!-- Once for the product... -->
<innercall target="licenser">
<property name="licenser.properties.file" value="${licenser.product.properties.file}" />
<property name="licenser.label" value="${ant.project.name}" />
</innercall>
<!-- ...and once for the core. -->
<condition property="licenser.properties.file" value="${licenser.core.properties.file}">
<isset property="licenser.core.properties.file" />
</condition>
<innercall target="licenser">
<propertyset>
<propertyref name="licenser.properties.file" />
</propertyset>
</innercall>
</target>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MACROS
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!--
Call a target in the inner script.
-->
<macrodef name="innercall">
<attribute name="target" />
<element name="additionalProperties" implicit="yes" optional="true" />
<sequential>
<ant dir="${inner.basedir}" inheritall="false">
<!-- pass the properties that are needed. -->
<propertyset>
<propertyref name="build.dir" />
<propertyref name="skip.core.themes" />
<propertyref name="deploy.properties.file" />
</propertyset>
<additionalProperties />
<target name="@{target}" />
</ant>
</sequential>
</macrodef>
</project>

View file

@ -1381,15 +1381,11 @@ a {
.middle {
vertical-align: middle;
}
/* EDITING DISPLAY------> */
.edit-individual {
border-left: 1px dotted #47b6d0;
}
.disabledSubmit {
color: #ede ! important;
background-color: #47b6d0 ! important;
}
/* -------------------------------------------------> */
/* SITE ADMIN DASHBOARD ----------------------------> */
/* -------------------------------------------------> */

View file

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View file

Before

Width:  |  Height:  |  Size: 135 B

After

Width:  |  Height:  |  Size: 135 B

View file

Before

Width:  |  Height:  |  Size: 183 B

After

Width:  |  Height:  |  Size: 183 B

View file

Before

Width:  |  Height:  |  Size: 53 B

After

Width:  |  Height:  |  Size: 53 B

View file

Before

Width:  |  Height:  |  Size: 194 B

After

Width:  |  Height:  |  Size: 194 B

View file

Before

Width:  |  Height:  |  Size: 54 B

After

Width:  |  Height:  |  Size: 54 B

View file

Before

Width:  |  Height:  |  Size: 234 B

After

Width:  |  Height:  |  Size: 234 B

View file

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

Before

Width:  |  Height:  |  Size: 46 B

After

Width:  |  Height:  |  Size: 46 B

View file

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 377 B

View file

Before

Width:  |  Height:  |  Size: 541 B

After

Width:  |  Height:  |  Size: 541 B

View file

Before

Width:  |  Height:  |  Size: 327 B

After

Width:  |  Height:  |  Size: 327 B

View file

Before

Width:  |  Height:  |  Size: 48 B

After

Width:  |  Height:  |  Size: 48 B

View file

@ -51,6 +51,15 @@
<!-- in 2.4 spec, filter chain order is first by filter-mapping <url-pattern> order in web.xml,
then filter-mapping <servlet-name> order in web.xml -->
<filter>
<filter-name>Startup Status Display Filter</filter-name>
<filter-class>edu.cornell.mannlib.vitro.webapp.filters.StartupStatusDisplayFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Startup Status Display Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Session Timeout Limiting Filter</filter-name>
<filter-class>edu.cornell.mannlib.vitro.webapp.filters.SessionTimeoutLimitingFilter</filter-class>
@ -657,6 +666,15 @@
<url-pattern>/admin/showAuth</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>StartupStatus</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.admin.StartupStatusController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StartupStatus</servlet-name>
<url-pattern>/startupStatus</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>StatementChangeListingController</servlet-name>
<servlet-class>edu.cornell.mannlib.vitro.webapp.controller.edit.listing.jena.StatementChangeListingController</servlet-class>