All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scijava.util.CheckSezpoz Maven / Gradle / Ivy

/*
 * #%L
 * SciJava Common shared library for SciJava software.
 * %%
 * Copyright (C) 2009 - 2017 Board of Regents of the University of
 * Wisconsin-Madison, Broad Institute of MIT and Harvard, Max Planck
 * Institute of Molecular Cell Biology and Genetics, University of
 * Konstanz, and KNIME GmbH.
 * %%
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 *    this list of conditions and the following disclaimer in the documentation
 *    and/or other materials provided with the distribution.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * #L%
 */

package org.scijava.util;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.scijava.annotations.EclipseHelper;
import org.w3c.dom.Document;

/**
 * Deprecated class.
 * 
 * @author Johannes Schindelin
 */
@Deprecated
public final class CheckSezpoz {

	@Deprecated
	public static boolean verbose;

	@Deprecated
	public static final String FILE_NAME = "latest-sezpoz-check.txt";

	@Deprecated
	private CheckSezpoz() {
		// NB: Prevent instantiation of utility class.
	}

	/**
	 * Checks the annotations of all CLASSPATH components. Optionally, it only
	 * checks the non-.jar components of the CLASSPATH. This is for Eclipse.
	 * Eclipse fails to run the annotation processor at each incremental build. In
	 * contrast to Maven, Eclipse usually does not build .jar files, though, so we
	 * can have a very quick check at startup if the annotation processor was not
	 * run correctly and undo the damage.
	 * 
	 * @param checkJars whether to inspect .jar components of the CLASSPATH
	 * @return false, when the annotation processor had to be run
	 * @throws IOException
	 * @see EclipseHelper
	 */
	@Deprecated
	public static boolean check(final boolean checkJars) throws IOException {
		EclipseHelper.main();
		return false;
	}

	/**
	 * Checks the annotations of a CLASSPATH component.
	 * 
	 * @param file the CLASSPATH component (.jar file or directory)
	 * @return false, when the annotation processor had to be run
	 * @throws IOException
	 * @see EclipseHelper
	 */
	@Deprecated
	public static boolean check(final File file) throws IOException {
		System.err.println("Warning: Deprecated CheckSezpoz class was called!");
		EclipseHelper.updateAnnotationIndex(new URLClassLoader(new URL[] { file.toURI().toURL() }));
		return false;
	}

	/**
	 * Checks the annotations of a directory in the CLASSPATH.
	 * 
	 * @param classes the CLASSPATH component directory
	 * @return false, when the annotation processor had to be run
	 * @throws IOException
	 * @see EclipseHelper
	 */
	@Deprecated
	public static boolean checkDirectory(final File classes) throws IOException {
		return check(classes);
	}

	/**
	 * Checks whether the annotations are possibly out-of-date.
	 * 

* This method looks whether there are any {@code .class} files older than * their corresponding {@code .java} files, or whether there are * {@code .class} files that were generated since last time we checked. *

* * @param classes the {@code classes/} directory where Maven puts the * {@code .class} files * @param source the {@code src/main/java/} directory where Maven expects the * {@code .java} files * @param youngerThan the date/time when we last checked * @see EclipseHelper */ @Deprecated public static boolean checkDirectory(final File classes, final File source, final long youngerThan) throws IOException { return check(classes); } /** * Checks a {@code .jar} file for stale annotations. *

* This method is broken at the moment since there is no good way to verify * that SezPoz ran before the {@code .jar} file was packaged. *

* * @param file the {@code .jar} file * @see EclipseHelper */ @Deprecated public static void checkJar(final File file) throws IOException { check(file); } /** * Runs SezPoz on the sources, writing the annotations into the classes' * {@code META-INF/annotations/} directory. * * @param classes the output directory * @param sources the directory containing the source files * @return whether anything in {@code META-INF/annotations/*} changed * @see EclipseHelper */ @Deprecated public static boolean fix(final File classes, final File sources) { try { return check(classes); } catch (IOException e) { throw new RuntimeException(e); } } /** * Writes out a DOM as {@code .xml} file. * * @param xml the DOM * @param file the file to write * @throws TransformerException */ @Deprecated public static void writeXMLFile(final Document xml, final File file) throws TransformerException { final Source source = new DOMSource(xml); final Result result = new StreamResult(file); final TransformerFactory factory = TransformerFactory.newInstance(); final Transformer transformer = factory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); transformer.transform(source, result); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy