Return-Path: X-Original-To: apmail-incubator-deltaspike-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-deltaspike-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 570CE9714 for ; Fri, 15 Jun 2012 18:26:56 +0000 (UTC) Received: (qmail 39131 invoked by uid 500); 15 Jun 2012 18:26:56 -0000 Delivered-To: apmail-incubator-deltaspike-dev-archive@incubator.apache.org Received: (qmail 39101 invoked by uid 500); 15 Jun 2012 18:26:56 -0000 Mailing-List: contact deltaspike-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: deltaspike-dev@incubator.apache.org Delivered-To: mailing list deltaspike-dev@incubator.apache.org Received: (qmail 39093 invoked by uid 99); 15 Jun 2012 18:26:56 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Jun 2012 18:26:56 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of lightguard.jp@gmail.com designates 209.85.217.175 as permitted sender) Received: from [209.85.217.175] (HELO mail-lb0-f175.google.com) (209.85.217.175) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Jun 2012 18:26:49 +0000 Received: by lbol5 with SMTP id l5so2944944lbo.6 for ; Fri, 15 Jun 2012 11:26:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=VzCIkMBMFiUPIeaLO6crPRU2n446mJF4gm+QCxIIQlU=; b=cEny/P9l2sQUqnQ765EUbSD7LgzYIkmgewmiiNYN38lDXe4S4HvICMF4XHSzRloHNO TpUNiyK+d1BLy0S0OBoRpVr2JlVYZ7AXzKgdCt4zWtVS6WX47o60xLXKBYb5cl+67Di3 lsGnyHoo1TTEJRKuGrzFLuPs/z6NhIEgHvZNlkZP4KrAjLvBFIZiSY5rEt0LHT4hZEs7 fhJkN+apMMxuQstztiYkTuLv8+M/UAd3e3Xbis7XHVYvgrlulD8kUcztRyr7wriRsueC fI4XrVb43bJKmahvN8hXacjmzDaGU5HNCZt4BOVKrs58mj8NvY59fJYRU1+mITb/em8/ jCxQ== Received: by 10.112.45.168 with SMTP id o8mr2915006lbm.88.1339784788677; Fri, 15 Jun 2012 11:26:28 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.97.144 with HTTP; Fri, 15 Jun 2012 11:26:08 -0700 (PDT) In-Reply-To: References: <20120614062610.11E6D11397@tyr.zones.apache.org> <1339709890.19575.YahooMailNeo@web171501.mail.ir2.yahoo.com> <74E2B35A-5516-4E92-B976-49EB03A08C12@gmail.com> From: Jason Porter Date: Fri, 15 Jun 2012 12:26:08 -0600 Message-ID: Subject: Re: git commit: DELTASPIKE-196 NO integration with Exception Handler needed! To: deltaspike-dev@incubator.apache.org Content-Type: multipart/alternative; boundary=bcaec554dda667959204c286f4cd --bcaec554dda667959204c286f4cd Content-Type: text/plain; charset=UTF-8 In that case, the most flexible way we could do this would be to use the DeltaSpike exception handling, and qualify the exception event so the application developers can decide the best way to handle those exceptions. As long as we use the same qualifier it could be as easy as creating an exception handler that accepts @CustomQualifier Throwable. They could then handle all DeltaSpike exceptions the same way. The affords us the maximum flexibility and also would be consistent with how we tell users to handle exceptions in their application. As you've said before Gerhard, and I agree, perf when you're dealing with exceptions which would stop a process isn't really paramount, I see adding in this bit of logic to pass the exception to the DeltaSpike exception handling system as a simple, flexible and workable solution for all involved. On Fri, Jun 15, 2012 at 12:11 PM, Gerhard Petracek < gerhard.petracek@gmail.com> wrote: > hi jason, > > with the current implementation there is no easy/nice possibility to handle > @ConfigProperty-producer exceptions differently. > there are just so many different requirements out there. > e.g. a special notification should be sent to an admin, if dyn. > config-properties are invalid (and many more). > > right now: > due to the details described in my previous mail, you just can detect a > NumberFormatException ( / generic RuntimeException) and even in the > application you just can e.g. log it in a general manner. > > if we are ok with it, we have to document it (that we won't support more > complex use-cases out-of-the-box). > or we throw a qualified NumberFormatException > or (since we found the logging issue - as mentioned by mark) we use > exceptions defined by deltaspike e.g. InvalidConfigPropertyFormatException > > whatever we agree on - imo it should be consistent in almost all parts of > deltaspike. > (as we know e.g. the bootstrapping process is special and we might have to > handle it differently,...) > > regards, > gerhard > > > > 2012/6/15 Jason Porter > > > What was wrong with the idea of a try catch block at the producer level? > > > > Sent from my iPhone > > > > On Jun 14, 2012, at 19:17, Gerhard Petracek > > wrote: > > > > > it isn't about recovering from it. > > > it's about the approach we suggest/support to handle it with a custom > > > implementation (since there are a lot of different requirements out > > there). > > > > > > e.g. > > > //... > > > public class MyBean > > > { > > > @Inject > > > @ConfigProperty(name = "myProperty") > > > private Integer myProperty; > > > > > > public Integer getMyProperty() > > > { > > > return myProperty; > > > } > > > } > > > > > > in case of an invalid value the producer for this config-property > > (provided > > > by deltaspike) will throw a NumberFormatException (after a recent > commit > > > from mark a generic RuntimeException which wraps it). > > > since the @ConfigProperty-producers create >dependent scoped< values, > the > > > exception can be caused by any method-call to this bean (even by e.g. > > > #toString), because those producers get called at the first method-call > > to > > > the bean. > > > -> you can't use a simple try/catch block only for #getMyProperty to > > > integrate a custom/special implementation for handling exceptions > thrown > > by > > > a @ConfigProperty-producer (as mentioned earlier: i'm not talking > > > about recovering from it) . > > > > > > for integrating a custom implementation for handling it, there are the > > > following possibilities: > > > > > > - throwing a generic RuntimeException with the available information > > > (that's what was added during this discussion) > > > - throwing a custom RuntimeException with the available information > > > - integrating with the exception handler of deltaspike (qualification > of > > > the exception) > > > - some other possibilities which aren't that nice at all > > > > > > bootstrapping is always a special case - the main part is how we handle > > > such topics at runtime (after the bootstrapping process). > > > since @ConfigProperty is important and quite special at the same time > and > > > the producers are called after the bootstrapping process, we can use it > > as > > > a first example for the whole topic (of using the exception handler of > > > deltaspike internally). > > > > > > regards, > > > gerhard > > > > > > > > > > > > 2012/6/14 Mark Struberg > > > > > >> Well, this is split. The native underlying impl is already being used > > >> during bootstrap by Extensions. > > >> The injection stuff can of course only be performed after the > container > > >> did finally boot. > > >> > > >> LieGrue, > > >> strub > > >> > > >> > > >> > > >> ----- Original Message ----- > > >>> From: Gerhard Petracek > > >>> To: deltaspike-dev@incubator.apache.org > > >>> Cc: > > >>> Sent: Thursday, June 14, 2012 11:23 PM > > >>> Subject: Re: git commit: DELTASPIKE-196 NO integration with Exception > > >> Handler needed! > > >>> > > >>> right now we don't do it during the bootstrapping process (it's done > > >>> lazily > > >>> during runtime). > > >>> > > >>> the basic question is where and how we integrate our own exception > > >> handling > > >>> mechanism in the rest of deltaspike. > > >>> and i think jason is the expert for it since he wrote the catch > module. > > >>> > > >>> regards, > > >>> gerhard > > >>> > > >>> > > >>> > > >>> 2012/6/14 Jason Porter > > >>> > > >>>> Gerhard asked me to take a look at this, and I didn't have the full > > >>> context > > >>>> on IRC. In speaking with him it sounded like a good idea to use the > DS > > >>>> exception handling here, however, Mark makes an excellent point > about > > >> not > > >>>> really being able to solve this without user intervention. We could > > use > > >>>> exception handling here and if there isn't any thing to handle it, > we > > >>> could > > >>>> rethrow the exception and halt the deployment anyway. > > >>>> > > >>>> Another thought just occurred to me, because we're really doing this > > >>> before > > >>>> the application fully completes deployment, I'm not even 100% sure > > >>>> DeltaSpike exception handling would work, that's probably an > > >>> implementation > > >>>> specific detail. In light of those two ideas, I'm going to stand by > > >>> Mark > > >>>> and say we should leave it out. > > >>>> > > >>>> On Thu, Jun 14, 2012 at 12:26 AM, wrote: > > >>>> > > >>>>> Updated Branches: > > >>>>> refs/heads/master 9ca1855d7 -> 1c6354650 > > >>>>> > > >>>>> > > >>>>> DELTASPIKE-196 NO integration with Exception Handler needed! > > >>>>> > > >>>>> The DS Exception Handler is for _business_ methods. > > >>>>> Technical and configuration issues shall not be handled by DS > > >>>>> but by the user. We cannot recover from it without any > > >>>>> user interaction anyway... > > >>>>> > > >>>>> > > >>>>> Project: > > >>>> http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo > > >>>>> Commit: > > >>>>> > > >>>> > > >> > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/1c635465 > > >>>>> Tree: > > >>>>> > > >>>> > > >> > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/1c635465 > > >>>>> Diff: > > >>>>> > > >>>> > > >> > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/1c635465 > > >>>>> > > >>>>> Branch: refs/heads/master > > >>>>> Commit: 1c63546506457e1a74fed6ca92cb9d0c0d54a2fc > > >>>>> Parents: 9ca1855 > > >>>>> Author: Mark Struberg > > >>>>> Authored: Thu Jun 14 07:55:52 2012 +0200 > > >>>>> Committer: Mark Struberg > > >>>>> Committed: Thu Jun 14 07:55:52 2012 +0200 > > >>>>> > > >>>>> > > >> ---------------------------------------------------------------------- > > >>>>> .../impl/config/DefaultConfigPropertyProducer.java | 3 --- > > >>>>> 1 files changed, 0 insertions(+), 3 deletions(-) > > >>>>> > > >> ---------------------------------------------------------------------- > > >>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>> > > >>> > > >> > > > http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/1c635465/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/DefaultConfigPropertyProducer.java > > >>>>> > > >> ---------------------------------------------------------------------- > > >>>>> diff --git > > >>>>> > > >>>> > > >>> > > >> > > > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/DefaultConfigPropertyProducer.java > > >>>>> > > >>>> > > >>> > > >> > > > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/DefaultConfigPropertyProducer.java > > >>>>> index d878139..cd4422e 100644 > > >>>>> --- > > >>>>> > > >>>> > > >>> > > >> > > > a/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/DefaultConfigPropertyProducer.java > > >>>>> +++ > > >>>>> > > >>>> > > >>> > > >> > > > b/deltaspike/core/impl/src/main/java/org/apache/deltaspike/core/impl/config/DefaultConfigPropertyProducer.java > > >>>>> @@ -54,7 +54,6 @@ public class DefaultConfigPropertyProducer > extends > > >>>>> BaseConfigPropertyProducer > > >>>>> return null; > > >>>>> } > > >>>>> > > >>>>> - //X TODO integrate with the HandledHandler of DeltaSpike > > >>>>> return Integer.parseInt(configuredValue); > > >>>>> } > > >>>>> > > >>>>> @@ -69,7 +68,6 @@ public class DefaultConfigPropertyProducer > extends > > >>>>> BaseConfigPropertyProducer > > >>>>> return null; > > >>>>> } > > >>>>> > > >>>>> - //X TODO integrate with the HandledHandler of DeltaSpike > > >>>>> return Long.parseLong(configuredValue); > > >>>>> } > > >>>>> > > >>>>> @@ -108,7 +106,6 @@ public class DefaultConfigPropertyProducer > > >> extends > > >>>>> BaseConfigPropertyProducer > > >>>>> } > > >>>>> > > >>>>> //X TODO think about something like @NumberFormat(...) > > >>>>> - //X TODO integrate with the HandledHandler of DeltaSpike > > >>>>> return Float.parseFloat(configuredValue); > > >>>>> } > > >>>>> } > > >>>>> > > >>>>> > > >>>> > > >>>> > > >>>> -- > > >>>> Jason Porter > > >>>> http://lightguard-jp.blogspot.com > > >>>> http://twitter.com/lightguardjp > > >>>> > > >>>> Software Engineer > > >>>> Open Source Advocate > > >>>> Author of Seam Catch - Next Generation Java Exception Handling > > >>>> > > >>>> PGP key id: 926CCFF5 > > >>>> PGP key available at: keyserver.net, pgp.mit.edu > > >>>> > > >>> > > >> > > > -- Jason Porter http://lightguard-jp.blogspot.com http://twitter.com/lightguardjp Software Engineer Open Source Advocate Author of Seam Catch - Next Generation Java Exception Handling PGP key id: 926CCFF5 PGP key available at: keyserver.net, pgp.mit.edu --bcaec554dda667959204c286f4cd--