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

org.apache.ivy.plugins.trigger.LogTrigger Maven / Gradle / Ivy

There is a newer version: 3.9
Show newest version
/*
 *  Licensed to the Apache Software Foundation (ASF) under one or more
 *  contributor license agreements.  See the NOTICE file distributed with
 *  this work for additional information regarding copyright ownership.
 *  The ASF licenses this file to You 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.apache.ivy.plugins.trigger;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.apache.ivy.core.IvyPatternHelper;
import org.apache.ivy.core.event.IvyEvent;
import org.apache.ivy.core.resolve.ResolveProcessException;
import org.apache.ivy.util.Message;

/**
 * A trigger performing logging.
 * 

* The implementation is widely inspired by Ant Echo task. *

*/ public class LogTrigger extends AbstractTrigger { private static final String LINE_SEPARATOR = System.getProperty("line.separator"); private String message = ""; private File file = null; private boolean append = true; /** encoding; set to null or empty means 'default' */ private String encoding = ""; public void progress(IvyEvent event) { log(IvyPatternHelper.substituteVariables(message, event.getAttributes())); } /** * Logs the given message. * * @param message the message to log */ protected void log(String message) { if (file == null) { Message.info(message); } else { Writer out = null; try { // we add a line separator here for consistency with Message.info which creates a // new line each time. // we use the system dependent line separator to ease reading the log file message += LINE_SEPARATOR; String filename = file.getAbsolutePath(); if (encoding == null || encoding.length() == 0) { out = new FileWriter(filename, append); } else { out = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(filename, append), encoding)); } out.write(message, 0, message.length()); } catch (IOException e) { throw new ResolveProcessException(e); } finally { if (out != null) { try { out.close(); } catch (IOException e) { throw new ResolveProcessException(e); } } } } } /** * Message to write. * * @param msg Sets the value for the message variable. */ public void setMessage(String msg) { this.message = msg; } /** * File to write to. * @param file the file to write to, if not set, echo to standard Ivy logging */ public void setFile(File file) { this.file = file; } /** * If true, append to existing file. * @param append if true, append to existing file, default is false. */ public void setAppend(boolean append) { this.append = append; } /** * Declare the encoding to use when outputting to a file; * Use "" for the platform's default encoding. * @param encoding the character encoding to use. */ public void setEncoding(String encoding) { this.encoding = encoding; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy