krysalis-update/src/java/org/krysalis/depot/update/ant/tool EnvironmentToolTask.java,NONE,1.1 RepositoryToolTask.java,NONE,1.1

Nick Chalko <[email protected]> Wed, 08 Dec 2004 09:07:17 +0000
Newsgroups gmane.comp.krysalis.cvs
Message-ID <[email protected]>
Update of /cvsroot/krysalis/krysalis-update/src/java/org/krysalis/depot/update/ant/tool
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24726/src/java/org/krysalis/depot/update/ant/tool

Added Files:
	EnvironmentToolTask.java RepositoryToolTask.java 
Log Message:
Copied from the apache incubator.

--- NEW FILE: RepositoryToolTask.java ---
/*
 * Copyright  2004 The Apache Software Foundation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.krysalis.depot.update.ant.tool;

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.Task;
import org.krysalis.depot.common.ant.util.AntLogListener;
import org.krysalis.depot.common.log.LogConstants;
import org.krysalis.depot.common.log.Logger;
import org.krysalis.depot.update.Artifact;
import org.krysalis.depot.update.Repository;
import org.krysalis.depot.update.UpdateException;
import org.krysalis.depot.update.artifact.ArtifactGroup;
import org.krysalis.depot.update.config.UpdaterConfig;
import org.krysalis.depot.update.impl.ArtifactUpdaterContext;
import org.krysalis.depot.update.impl.RepositoryWrapper;
import org.krysalis.depot.update.monitor.Monitor;
import org.krysalis.depot.update.monitor.StatisticsMonitor;
import org.krysalis.depot.update.repository.RepositorySet;
import org.krysalis.depot.update.util.UpdateConstants;
import org.krysalis.depot.update.util.select.AllSelector;

/**
 * @author ajack
 */
public class RepositoryToolTask extends Task {

	private String m_updater = UpdateConstants.DEFAULT;
	private String m_repositories = UpdateConstants.DEFAULT;
	private String m_group = null;

	/**
	 * @param string
	 */
	public void setRepositories(String string) {
		m_repositories = string;
	}

	/**
	 * @param string
	 */
	public void setUpdater(String updater) {
		m_updater = updater;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.tools.ant.Task#execute()
	 */
	public void execute() throws BuildException {

		log("Execute RepositoryTool...", Project.MSG_DEBUG);

		// Set logging context, to only errors...
		Logger logger = Logger.pushContext(LogConstants.ERROR,
				new AntLogListener(this));

		UpdaterConfig.configure();

		StatisticsMonitor statistics = new StatisticsMonitor();
		Monitor monitor = Monitor.pushContext(statistics);

		try {
			log("RepositorySet: " + m_repositories);

			ArtifactUpdaterContext context = ArtifactUpdaterContext.getDefaultContext();

			//
			// This uses default or configured stuff..
			//
			RepositorySet set = RepositorySet.getRepositorySet(m_repositories,
					true);

			int repoCnt = 0;
			for (Iterator i = set.getRepositories().iterator(); i.hasNext(); repoCnt++) {
				Repository r = (Repository) i.next();
				RepositoryWrapper repo = new RepositoryWrapper(r, context);

				log("Repository: " + repo + "[" + r.getClass().getName() + "]");

				if (null == m_group) {
					try {
						// List groups ...
						List groups = repo.listGroups(AllSelector.getInstance());

						for (Iterator gi = groups.iterator(); gi.hasNext();) {
							ArtifactGroup group = (ArtifactGroup) gi.next();

							try {

								List artifacts = repo.listArtifacts(group,
										AllSelector.getInstance());

								log(" - Group: " + group + " (Artifacts : "
										+ artifacts.size() + ")");

								for (Iterator si = artifacts.iterator(); si.hasNext();) {
									Artifact specifier = (Artifact) si.next();

									log("  - " + specifier, Project.MSG_VERBOSE);
								}
							} catch (UpdateException re) {
								Logger.getLogger().error(
										" - Failed to list artifacts in group: "
												+ group, re);
							}
						}
					} catch (UpdateException re) {
						Logger.getLogger().error(" - Failed to list groups: ",
								re);
					}
				} else {
					ArtifactGroup group = new ArtifactGroup(m_group);

					try {
						// List groups ...
						List artifacts = repo.listArtifacts(group,
								AllSelector.getInstance());

						for (Iterator gi = artifacts.iterator(); gi.hasNext();) {
							Artifact specifier = (Artifact) gi.next();

							log(" -  " + specifier, Project.MSG_VERBOSE);
						}
					} catch (UpdateException re) {
						Logger.getLogger().error(" - Failed to list groups: ",
								re);
					}
				}
			}

			log(" Artefact Statistics : Parsed=" + statistics.getParsed()
					+ " Failed=" + statistics.getFailed() + " Ignored="
					+ statistics.getIgnored());

			List ignored = statistics.getIgnoredObjects();
			for (Iterator i = ignored.iterator(); i.hasNext();) {
				log(" Ignored : " + i.next());
			}

			List failed = statistics.getFailedObjects();
			for (Iterator i = failed.iterator(); i.hasNext();) {
				log(" Failed : " + i.next());
			}

			if (0 == repoCnt)
				log("No repositories in set: " + m_repositories,
						Project.MSG_WARN);
		}
		//		catch (RuperException re2) {
		//			log(
		//				"RepositoryTool failed: " + re2.getLocalizedMessage(),
		//				Project.MSG_WARN);
		//
		//			throw new BuildException("RepositoryTool failed: ", re2);
		//		}
		finally {
			Monitor.popContext(monitor);
			Logger.popContext(logger);
		}
	}

	/**
	 * @return
	 */
	public String getGroup() {
		return m_group;
	}

	/**
	 * @param string
	 */
	public void setGroup(String string) {
		m_group = string;
	}

}

--- NEW FILE: EnvironmentToolTask.java ---
/*
 * Copyright  2004 The Apache Software Foundation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.krysalis.depot.update.ant.tool;


import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.krysalis.depot.common.ant.util.AntLogListener;
import org.krysalis.depot.common.log.Logger;
import org.krysalis.depot.common.util.envsafe.ClassLoaderContext;
import org.krysalis.depot.update.protocols.DefaultProtocolOperationsManager;

/**
 * @author ajack
 */
public class EnvironmentToolTask extends Task {

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.apache.tools.ant.Task#execute()
	 */
	public void execute() throws BuildException {

		log("Execute RepositoryTool...", Project.MSG_DEBUG);

		// Set logging context, to only errors...
		Logger logger = org.krysalis.depot.common.log.Logger.pushContext(new AntLogListener(this));
	
		try {			
			ClassLoaderContext context = new ClassLoaderContext(this);

			// See which (if any) of these are loadable.
			// Would have to imagine  one (plain JDK) is.	
			testLoad(context, DefaultProtocolOperationsManager.URL_PROVIDER);
			testLoad(context, DefaultProtocolOperationsManager.HTTP_CLIENT_PROVIDER);	
			testLoad(context, DefaultProtocolOperationsManager.VFS_PROVIDER);	
		}
		finally {
			Logger.popContext(logger);
		}
	}
	
	private void testLoad(ClassLoaderContext context, String clazzName) {
		try{
			Object o = context.attemptLoad(clazzName, "test");			
			Logger.getLogger().info("Loaded [" + clazzName + "] as [" + o + "]");
		}
		catch (Throwable t)
		{
			Logger.getLogger().info("Failed to load [" + clazzName + "] : ", t);
		}
	}
}



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. 
http://productguide.itmanagersjournal.com/