polygene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niclas Hedhman <nic...@hedhman.org>
Subject Re: Test Error found...
Date Fri, 10 Jul 2015 14:24:52 GMT
Ah, so the testcase around all of this is listing a usecase like;

  public interface MyService

  public interface MyService2 extends MyService


That both MyService and MyService can be injected with their primary type.
TypeLookup would need to better understand type hierarchies, but I suspect
that it quickly becomes a slippery slope.


Niclas

On Fri, Jul 10, 2015 at 5:16 PM, Niclas Hedhman <niclas@hedhman.org> wrote:

> That was quick... single() also throw IllegalArgumentException on zero
> results. I added a atMostOne() method in Iterables. All this will be
> re-written in 3.0 and use Java 8 Function+Stream API.
>
> On Fri, Jul 10, 2015 at 5:09 PM, Niclas Hedhman <niclas@hedhman.org>
> wrote:
>
>> I am introducing a small fix (use single() instead of first(), catch
>> IllegalArgumentException and rethrow a AmbiguousTypeException), and the
>> output is
>>
>> org.qi4j.api.composite.AmbiguousTypeException: More than one model
>> matches the classname
>> org.qi4j.api.value.ValueSerialization:[OrgJsonValueSerializationService(active=false,module='Module
>> 1'), JacksonValueSerializationService(active=false,module='Module 1')]
>>
>>
>> for the case that I just detected.
>>
>> I am starting a local build to see what else fails and whether there is
>> concern for this change. Perhaps some way it is needed to ignore ambiguous
>> types in some usecase.
>>
>>
>> I'll report back later.
>> Niclas
>>
>> On Fri, Jul 10, 2015 at 4:56 PM, Niclas Hedhman <niclas@hedhman.org>
>> wrote:
>>
>>> So, the question is; SHOULD a AmbiguousTypeException be thrown when one
>>> is asking for a @Service injection of a composite type or
>>> ServiceReference<T>?
>>>
>>> And I am pretty sure the exact same code is called if one calls
>>> ServiceFinder.findService(), and that would also throw the
>>> AmbiguousTypeException.
>>>
>>>
>>> Cheers
>>> Niclas
>>>
>>> On Fri, Jul 10, 2015 at 4:53 PM, Niclas Hedhman <niclas@hedhman.org>
>>> wrote:
>>>
>>>> And it is not done there... It takes, and instantiates, the first one.
>>>> Line 378 in TypeLookup
>>>>
>>>> On Fri, Jul 10, 2015 at 4:50 PM, Niclas Hedhman <niclas@hedhman.org>
>>>> wrote:
>>>>
>>>>> The findService() (single instance) should be checking ambiguity,
>>>>> where as findServices() shouldn't. I am looking into that at the moment.
>>>>>
>>>>> On Fri, Jul 10, 2015 at 4:45 PM, Paul Merlin <paul@nosphere.org>
>>>>> wrote:
>>>>>
>>>>>> Good catch Niclas.
>>>>>>
>>>>>> No AmbiguousTypeException should be expected though.
>>>>>>
>>>>>> There is two services registered for the ValueSerialization type
with
>>>>>> !=
>>>>>> identities, possibly different qualifiers etc... there's no type
>>>>>> ambiguity with multiple services of the same type.
>>>>>>
>>>>>> Think @Service Iterable<ValueSerialization> inject;
>>>>>>
>>>>>> /Paul
>>>>>>
>>>>>> Niclas Hedhman a écrit :
>>>>>> > EntityTestAssembler is the answer... which is invoked in the
>>>>>> > AbstractValueCompositeSerializationTest.
>>>>>> >
>>>>>> > I'll resolve that. Sorry for the noise.
>>>>>> >
>>>>>> > On Fri, Jul 10, 2015 at 4:31 PM, Niclas Hedhman <niclas@hedhman.org>
>>>>>> wrote:
>>>>>> >
>>>>>> >> So, the Module contains TWO ValueSerialization systems,
both the
>>>>>> OrgJson
>>>>>> >> and the Jackson ones.
>>>>>> >>
>>>>>> >> That should then raise the question, Why don't we get
>>>>>> >> AmbigiousTypeException??
>>>>>> >>
>>>>>> >> There are also a MemoryEntityStore and a UuidIdentityGenerator
in
>>>>>> the
>>>>>> >> Module.... Where are those coming from?
>>>>>> >>
>>>>>> >>
>>>>>> >> Cheers
>>>>>> >>
>>>>>> >> On Fri, Jul 10, 2015 at 4:25 PM, Niclas Hedhman <
>>>>>> niclas@hedhman.org>
>>>>>> >> wrote:
>>>>>> >>
>>>>>> >>> I think I have found a Testcase problem, while trying
to improve
>>>>>> the
>>>>>> >>> ValueSerialization subsystem.
>>>>>> >>>
>>>>>> >>> To show what I mean;
>>>>>> >>>
>>>>>> >>>    a. Put a breakpoint on the first line in the only(!)
test in
>>>>>> >>> AbstractValueCompositeSerializationTest
>>>>>> >>>
>>>>>> >>>    b. Run the JacksonValueCompositeSerializationTest.
>>>>>> >>>
>>>>>> >>>    c. At breakpoint, look at the this.valueSerialization
member.
>>>>>> It has
>>>>>> >>> a ServiceComposite reference to the
>>>>>> OrgJsonValueSerializationService,
>>>>>> >>> not the Jackson one.
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> I am trying to figure out how this is at all possible.
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> Cheers
>>>>>> >>> --
>>>>>> >>> Niclas Hedhman, Software Developer
>>>>>> >>> http://zest.apache.org - New Energy for Java
>>>>>> >>>
>>>>>> >> --
>>>>>> >> Niclas Hedhman, Software Developer
>>>>>> >> http://zest.apache.org - New Energy for Java
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Niclas Hedhman, Software Developer
>>>>> http://zest.apache.org - New Energy for Java
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Niclas Hedhman, Software Developer
>>>> http://zest.apache.org - New Energy for Java
>>>>
>>>
>>>
>>>
>>> --
>>> Niclas Hedhman, Software Developer
>>> http://zest.apache.org - New Energy for Java
>>>
>>
>>
>>
>> --
>> Niclas Hedhman, Software Developer
>> http://zest.apache.org - New Energy for Java
>>
>
>
>
> --
> Niclas Hedhman, Software Developer
> http://zest.apache.org - New Energy for Java
>



-- 
Niclas Hedhman, Software Developer
http://zest.apache.org - New Energy for Java

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message