001 /* 002 * Jpkg - Java library and tools for operating system package creation. 003 * 004 * Copyright (c) 2007 Three Rings Design, Inc. 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 1. Redistributions of source code must retain the above copyright 011 * notice, this list of conditions and the following disclaimer. 012 * 2. Redistributions in binary form must reproduce the above copyright 013 * notice, this list of conditions and the following disclaimer in the 014 * documentation and/or other materials provided with the distribution. 015 * 3. Neither the name of the copyright owner nor the names of contributors 016 * may be used to endorse or promote products derived from this software 017 * without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 029 * POSSIBILITY OF SUCH DAMAGE. 030 */ 031 package com.threerings.jpkg.ant.dpkg.scripts; 032 033 import java.util.ArrayList; 034 import java.util.List; 035 036 import com.threerings.antidote.field.ListField; 037 import com.threerings.jpkg.ant.dpkg.scripts.runner.PackageScript; 038 import com.threerings.jpkg.debian.MaintainerScript; 039 040 import static com.threerings.antidote.MutabilityHelper.requiresValidation; 041 042 /** 043 * The <dpkg> task <package> <scripts> field. Used to add package maintainer scripts. 044 * @see MaintainerScript 045 * @see PackageScript 046 */ 047 public class Scripts extends ListField<ValidationScript> 048 { 049 // from Field 050 public String getFieldName () 051 { 052 return "scripts"; 053 } 054 055 @Override // from ListField 056 public String getChildFieldName () 057 { 058 return "script"; 059 } 060 061 /** 062 * Ant adder field: Add a {@link ValidationScript}. 063 */ 064 public void add (ValidationScript script) 065 { 066 appendRequiresValidation(script); 067 } 068 069 /** 070 * Return the list of {@link PackageScript} objects in the <scripts> section. 071 */ 072 public List<PackageScript> getPackageScripts () 073 { 074 requiresValidation(_validatedScripts); 075 return _validatedScripts; 076 } 077 078 @Override // from BaseComponent 079 protected void validateField () 080 { 081 if (noChildFieldsDefined()) { 082 return; 083 } 084 085 switch (validateFieldList()) { 086 case ALL_INVALID: 087 case SOME_INVALID: 088 return; 089 090 case ALL_VALID: 091 _validatedScripts = new ArrayList<PackageScript>(getValidatedFieldList()); 092 break; 093 } 094 } 095 096 /** The list of PackageScript objects after they have been validated. */ 097 private List<PackageScript> _validatedScripts; 098 }