Hrmm not sure what you mean. This is not a framework it is business logic
and I really like to put validators in a list like this instead of if else
if else if else if

On 27 February 2015 at 19:37, Romain Manni-Bucau <[email protected]>
wrote:

> Mark will surely say you that configuring anyThingCriterion will make your
> iterable size (if i can say it) = 1 even if you have 100 criterions ;)
>
> this is not a real spi
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau>
>
> 2015-02-27 19:34 GMT+01:00 Karl Kildén <[email protected]>:
>
>> Hi John!
>>
>> Summary: we use it as iterable
>>
>> Long story for completeness:
>>
>> Basically we get a thing from our business partner (inputThing) and map
>> it to our representation of thing (ProcessedThing)
>>
>> Each ThingCriterion can veto the processedThing and then they used
>> inputThing to print a pretty error message. When the Thing is enhanced
>> (happens all the time) we implement new ThingCriterion  and they get picked
>> up automatically...
>>
>>
>>
>>     @Inject
>>     private Instance<ThingCriterion> thingCriteria;
>>
>>
>>     public List<ValidationProblem> validateList(final ProcessedThing
>> thing, final InputThing inputThing) {
>>         List<ValidationProblem> results = new ArrayList<>();
>>         for (final ThingCriterion criterion : thingCriteria) {
>>             results.addAll(criterion.validate(thing, inputThing));
>>         }
>>         return results;
>>     }
>>
>>
>> Romain,
>>
>> Thanks for your help. Great suggestion will it have better perf then just
>> putting @ApplicationScoped on my ThingCriterion beans? Probably not
>> important just curious.
>>
>> cheers
>>
>> On 27 February 2015 at 19:25, Romain Manni-Bucau <[email protected]>
>> wrote:
>>
>>> When I used this pattern I always did (for perf reason but side effect
>>> is  behavior is what you want):
>>>
>>> @PostConstruct
>>> private void resolve() {
>>>    value = instance......get();
>>> }
>>>
>>> then in the code don't use instance at all but value.
>>>
>>>
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <http://rmannibucau.wordpress.com> | Github
>>> <https://github.com/rmannibucau> | LinkedIn
>>> <https://www.linkedin.com/in/rmannibucau>
>>>
>>> 2015-02-27 19:15 GMT+01:00 John D. Ament <[email protected]>:
>>>
>>>> Are you calling get() on the Instance with each request (or whatever0
>>>> that comes into this bean?
>>>>
>>>> On Fri, Feb 27, 2015 at 1:13 PM Karl Kildén <[email protected]>
>>>> wrote:
>>>>
>>>>> To explain myself further ALL I had on my heap was my
>>>>> Instance<MyInterface>... and gc released 0.5% memory :)
>>>>>
>>>>> I had 200 000 of them at least. They where supposed to be four
>>>>> singletons. My idea was inject into @ApplicationScoped and omit to give
>>>>> them scope because they will be @ApplicationScoped anyways... Seems every
>>>>> invocation of my @ApplicationScoped bean recreated all instances.
>>>>>
>>>>> What I had was unrecoverable mem leak. Now I could be doing something
>>>>> stupid or Instance<MyInterface> has a problem or something else...
>>>>>
>>>>> Cheers
>>>>>
>>>>>
>>>>>
>>>>> On 27 February 2015 at 19:05, Romain Manni-Bucau <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> If dependent it will be kept in enclosing bean.
>>>>>>  Le 27 févr. 2015 19:00, "Lars-Fredrik Smedberg" <[email protected]>
>>>>>> a écrit :
>>>>>>
>>>>>> So does this mean that there will be a memory leak in the case Karl
>>>>>>> described?
>>>>>>>
>>>>>>> I have used similar constructs before so im curios (@Inject
>>>>>>> @Provider <some dep scoped bean> in an @ApplicationScoped bean and 
>>>>>>> called
>>>>>>> get () on the injected provider).
>>>>>>>
>>>>>>> I thought for a while that it might get garbage collected when the
>>>>>>> created bean is outof scope or maybe then there is no way for 
>>>>>>> @PreDestroy
>>>>>>> to be called?
>>>>>>>
>>>>>>> Regards
>>>>>>> LF
>>>>>>>
>>>>>>> I thought that the created dep scoped bean would be
>>>>>>> On Feb 27, 2015 6:07 PM, "Romain Manni-Bucau" <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Yes.
>>>>>>>>
>>>>>>>> Will be destoyed with the bean where it is injected IIRC so the app
>>>>>>>> here.
>>>>>>>> Le 27 févr. 2015 16:59, <[email protected]> a écrit :
>>>>>>>>
>>>>>>>>> Hello! I have a bean with @ApplicationScoped. When I inject
>>>>>>>>> Instance<MyInterface> instance and my actual beans implementing 
>>>>>>>>> MyInstance
>>>>>>>>> are dependentscoped they get recreated over and over and are not gc'd.
>>>>>>>>>
>>>>>>>>> Expected behavior?
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>
>>>>>>>>
>>>>>
>>>
>>
>

Reply via email to