blob: cd2c0ad9525ee9d3a017fb67808bd658f17b711e [file] [log] [blame]
/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
*
* This program and the accompanying materials are made available under
* the terms of the Common Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/cpl-v10.html
*
* $Id: NestedTask.java,v 1.1.1.1.2.1 2004/07/08 10:52:10 vlad_r Exp $
*/
package com.vladium.emma.ant;
import com.vladium.util.IProperties;
// ----------------------------------------------------------------------------
/**
* @author Vlad Roubtsov, (C) 2003
*/
public
abstract class NestedTask extends SuppressableTask
{
// public: ................................................................
// protected: .............................................................
protected NestedTask (final SuppressableTask parent)
{
if (parent == null)
throw new IllegalArgumentException ("null input: parent");
m_parent = parent;
}
/**
* Overrides {@link SuppressableTask#getTaskSettings()} to mix in parent
* task settings as the base settings.
*/
protected final IProperties getTaskSettings ()
{
final IProperties parentSettings = m_parent != null
? m_parent.getTaskSettings ()
: null;
final IProperties taskOverrides = super.getTaskSettings ();
// task settings are always more specific than parent settings, but attention
// needs to be paid to horizontal inheritance:
if (parentSettings == null)
return taskOverrides;
else
{
final IProperties settings = IProperties.Factory.combine (taskOverrides, parentSettings);
return settings;
}
}
protected final SuppressableTask m_parent;
// package: ...............................................................
// private: ...............................................................
} // end of class
// ----------------------------------------------------------------------------