001// Copyright 2005-2006 Ferdinand Prantl <prantl@users.sourceforge.net> 002// Copyright 2001-2004 The Apache Software Foundation 003// All rights reserved. 004// 005// Licensed under the Apache License, Version 2.0 (the "License"); 006// you may not use this file except in compliance with the License. 007// You may obtain a copy of the License at 008// 009// http://www.apache.org/licenses/LICENSE-2.0 010// 011// Unless required by applicable law or agreed to in writing, software 012// distributed under the License is distributed on an "AS IS" BASIS, 013// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014// See the License for the specific language governing permissions and 015// limitations under the License. 016// 017// See http://ant-eclipse.sourceforge.net for the most recent version 018// and more information. 019 020package prantl.ant.eclipse; 021 022import org.apache.tools.ant.BuildException; 023import org.apache.tools.ant.types.Reference; 024 025/** 026 * Describes an element under the element classpath referencing a path consisting 027 * optionally from more elements (directories or files). Only one attribute of the two 028 * <tt>path</tt> and <tt>pathref</tt> is allowed. 029 * 030 * @since Ant-Eclipse 1.0 031 * @author Ferdinand Prantl <prantl@users.sourceforge.net> 032 */ 033public class ClassPathEntryPathElement extends ClassPathEntryElement { 034 035 private Reference pathRef = null; 036 037 /** 038 * Creates a new instance of the classpathentry-src element. 039 * 040 * @since Ant-Eclipse 1.0 041 */ 042 public ClassPathEntryPathElement() { 043 } 044 045 /** 046 * Returns a reference to the kind-of-element specific path value or <tt>null</tt> 047 * if it has not been set, which should be considered an error. However, descendant 048 * classes may set a default for this attribute or to the attribute <tt>path</tt>, 049 * which can be used instead or together. 050 * 051 * @return A reference to the kind-of-element specific path value or <tt>null</tt> 052 * if not having been set (descendant classes may return a default in this 053 * case). 054 */ 055 public Reference getPathRef() { 056 return pathRef; 057 } 058 059 /** 060 * Sets the reference to a path of the classpathentry element. 061 * 062 * @param value 063 * A reference to the kind-of-element specific path value. 064 * @throws BuildException 065 * If an attribute <tt>path</tt> has been set. 066 * @since Ant-Eclipse 1.0 067 */ 068 public void setPathRef(Reference value) { 069 if (getPath() != null) 070 throw new BuildException( 071 "Only one of the attributes \"path\" or \"pathref\" is allowed."); 072 pathRef = value; 073 } 074 075 /** 076 * Sets the path of the classpathentry element. 077 * 078 * @param value 079 * A kind-of-element specific path value. 080 * @throws BuildException 081 * If an attribute <tt>pathref</tt> has been set. 082 * @since Ant-Eclipse 1.0 083 */ 084 public void setPath(String value) { 085 if (getPathRef() != null) 086 throw new BuildException( 087 "Only one of the attributes \"path\" or \"pathref\" is allowed."); 088 super.setPath(value); 089 } 090 091 /** 092 * Performs the validation of the element at the time when the whole build file was 093 * parsed checking the content of the element and possibly adding mandatory attributes 094 * with default settings. 095 * 096 * @since Ant-Eclipse 1.0 097 */ 098 public void validate() { 099 if (getPath() == null && pathRef == null) 100 throw new BuildException( 101 "None of the attributes \"path\" or \"pathref\" was set in an element under \"classpath\"."); 102 } 103 104}