Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 8572D200C40 for ; Thu, 23 Mar 2017 13:59:05 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 84190160B84; Thu, 23 Mar 2017 12:59:05 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C63EF160B75 for ; Thu, 23 Mar 2017 13:59:04 +0100 (CET) Received: (qmail 21211 invoked by uid 500); 23 Mar 2017 12:59:02 -0000 Mailing-List: contact users-help@groovy.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@groovy.apache.org Delivered-To: mailing list users@groovy.apache.org Received: (qmail 21198 invoked by uid 99); 23 Mar 2017 12:59:01 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Mar 2017 12:59:01 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id A27DDCCB36 for ; Thu, 23 Mar 2017 12:59:01 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.221 X-Spam-Level: X-Spam-Status: No, score=-0.221 tagged_above=-999 required=6.31 tests=[RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id FtRa9KFVGp0L for ; Thu, 23 Mar 2017 12:59:00 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 219065F2F1 for ; Thu, 23 Mar 2017 12:59:00 +0000 (UTC) Received: from [192.168.1.121] ([195.141.68.118]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M0hT0-1c2myr2GAo-00urUA for ; Thu, 23 Mar 2017 13:53:55 +0100 Subject: Re: extending a class with an @Delegate To: users@groovy.apache.org References: From: Jochen Theodorou Message-ID: Date: Thu, 23 Mar 2017 13:53:55 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:HmMKpR6uH33nE7RagtpZPxL6p0nyjyQpB0BLze0Bz4NAG9IcBIS hKQrtF4woAWUNDAXDzVB/zHePwQiaIvCD1oc/BSStIOOkml/EYA28wkjIvpB1icBaFmOJfF AR8aflFW/2MLqTl1gpJ38btqhhh0GvEPp9ThIy/5UkP07YpYW3dkrpcn1hY7VhxaxIpSskX 0MDtvil74F6RnA6xxWYdQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:iA8XgkLyh48=:hSz5QTuzEcFi0wnKWyykun sEeSkgh6x36PnKL+ZAxc8qQ1kvRlBoFRpT17ergxjsp5iECYHh4gIfKDHItiUk+YtEx007RZa OGS1rj7IAGoVxZz4/UjCziaRpECbRBc+hvlgQ8iz6UAbPap0+7LM6Tbay2QNsm5V3bEjXpg4t ltfIxEi0jyt4NSjHa/OKSypx8E7mFsg4GjNnNInCNTwUtsKTVOxEKQENUWfT98OK89ZZewEsn U17rxzAYEJYD2yAGZjOVVYiCHzk3nOldoNjDVwuG1ieEev9fnNX4BKmBAPOv1YGi5w6MgW7py AGJW34r0Aslk9YsL9t3nkwYWgTrGgam/tZ94NrsiXZlSjjEEAb0tZTVpJykWhm2ion0Tb3HtD U1sLCvrIwBCANnTb+F6RCI0bNQgLP/AQDcA1p5C0a8bECnhTFj+SMMauCGLh6lbLT5BoNSW32 8DBRo360ai+xZiYtzvgH71zShDoWFIxfCPEAuSAyVLD5R025PXVCeILrqF6MGMD23dHWWsYhz qXnVAf8Wesa+9hoiC0E16PkpHwAWWKKn+LUVxrO+alH0kkjfeqPow2gTz1ujFbqGuaSuiMwdl GQsHtg9Zkszh14d//ddlowFsVbZvTNrm6tjrqFBAoaKaR2lPEdkZljNwyxCoVUIl5d+qI+Pac q2u6oO+kcxci2Vnp4g49sCNX0PSyX6sjduOHrIsm97TGGK+9a84d1O60BY26LHq6rH9w83o1n nRTCcZsyRSB3wU+70JcdAYdSicIZY9COyz8nH8SY8ZDVqGd6o9V0AI+wMhLXmt1Pp1ZxnnOF1 vlDRQqx archived-at: Thu, 23 Mar 2017 12:59:05 -0000 On 23.03.2017 11:56, paul wrote: > Suppose I have two Classes, one extending the other: > > class Person{ String name, int age} > class Pupil extends Person {int grade} > > Now to manage several Persons in a List, and add some custom methods, I > use the @Delegate like > > class Personlist{ > @Delegate List persons > > Personlist underAge(n){persons.findAll{it.age<=n} as Personlist} > } > > Pupillist should have the same methods (since each pupil is a person): > > class Pupillist extends Personlist{ > Pupillist inGrade(g){persons.findAll{it.grade==g} as Pupillist} > } > > Now I want to chain several of these methods like this: > def pl = [...] as Pupillist > pl.underAge(12).inGrade(9) > > throws a MissingMethodException, because `pl.underAge` gets cast into a > Personlist, which has no method `inGrade`. How about not working with Delegate and instead use a category for the methods and just return a list? bye Jochen