testing for tom groovy lukking?

stemmer
1

Jeg ønsker å la brukerne levere en groovy klasse med en eiendom som er en fil-velgeren nedleggelse som jeg passet på å AntBuilder er 'kopi' oppgave:

  class Foo {
    def ANT = { fileset(dir:'/tmp/tmp1') }
  }

i min kode, plukker jeg opp ANT eiendom som 'FANT' og pass til Ant:

  ant.copy(todir:'/tmp/tmp2', fAnt)

Dette fungerer - men hvis brukeren går i en tom lukkeanordning (ANT def = {}) eller med en velger som velger ikke noe (kanskje fileset dir ikke eksisterer) så det blåser opp. Jeg prøvde rundt maur kopi med en prøve-fangst å fange InvokerInvocationException, men en måte unntaket kommer gjennom uansett ... mens jeg spore det ned, er det en måte å lese tilbake en groovy Closure innholdet som en streng, eller å teste om den er tom?

Publisert på 29/12/2009 klokken 23:01
kilden bruker
På andre språk...                            


2 svar

stemmer
0

En mysteriet løst - unntaket jeg trenger for å fange er org.apache.tools.ant.BuildException - så jeg kan bare ta det til felle feil, men det opprinnelige spørsmålet gjenstår - er det en måte å undersøke en nedleggelse innholdet?

Svarte 29/12/2009 kl. 23:23
kilden bruker

stemmer
1

Kort sagt: Nei, du kan ikke dekompilere en nedleggelse i en meanngful måte under kjøring. Hvis det er brukeren som følger med, kan det Closure også være en Java-klasse.

Lange svaret: Hvis du ønsker å gjøre mye arbeid, kan du være i stand til, men det er sannsynligvis ikke verdt det. Groovy parser er en del av API, så hvis du har tilgang til kilde, kan du teoretisk undersøke AST og finne ut om nedleggelse er tom. Se inn i SourceUnit klassen.

Det er nesten helt sikkert ikke verdt innsatsen skjønt. Du er bedre å fange unntak og legge en nyttig melding som "Du har kanskje gått tom nedleggelse eller ugyldig fileset".

Svarte 30/12/2009 kl. 14:44
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more