{"action":"created","issue":{"url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/23","repository_url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc","labels_url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/23/labels{/name}","comments_url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/23/comments","events_url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/23/events","html_url":"https://github.com/hibernate/hibernate-search-6-poc/pull/23","id":300723988,"number":23,"title":"Finalize container value extractors","user":{"login":"yrodiere","id":412878,"avatar_url":"https://avatars1.githubusercontent.com/u/412878?v=4","gravatar_id":"","url":"https://api.github.com/users/yrodiere","html_url":"https://github.com/yrodiere","followers_url":"https://api.github.com/users/yrodiere/followers","following_url":"https://api.github.com/users/yrodiere/following{/other_user}","gists_url":"https://api.github.com/users/yrodiere/gists{/gist_id}","starred_url":"https://api.github.com/users/yrodiere/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yrodiere/subscriptions","organizations_url":"https://api.github.com/users/yrodiere/orgs","repos_url":"https://api.github.com/users/yrodiere/repos","events_url":"https://api.github.com/users/yrodiere/events{/privacy}","received_events_url":"https://api.github.com/users/yrodiere/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-02-27T17:30:38Z","updated_at":"2018-02-28T15:26:59Z","closed_at":null,"author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/pulls/23","html_url":"https://github.com/hibernate/hibernate-search-6-poc/pull/23","diff_url":"https://github.com/hibernate/hibernate-search-6-poc/pull/23.diff","patch_url":"https://github.com/hibernate/hibernate-search-6-poc/pull/23.patch"},"body":"Well, maybe it's not \"finalized\", but at least it's not just a hack anymore.\r\n\r\nMain changes:\r\n\r\n * Improved generic type introspection (the part where we get the type arguments of a parameterized type, for instance) greatly. The previous implementation was just a hack and was very fragile.\r\n * Added more built-in extractors (Optionals, generic arrays, map keys)\r\n * Added support for recursive container value extractor resolution (e.g. `Map<String, List<SomeEntity>>`). Of course it's not very useful in the ORM integration, since ORM doesn't support those types very well, but it might be useful in non-ORM uses of Hibernate Search.\r\n * Added ways to configure the extractors to use in an `@IndexedEmbedded`/`@Field` explicitly\r\n * Got rid of hard-coded type matching, adding the capability to infer supported type from the type arguments to the `ContainerValueExtractor` interface in the implementation type. This effectively allows users to implement their own extractor.\r\n * Cleaned up the code, splitting it into three parts: type introspection (package `.model.spi`), type matching (`.model.typematching.impl`) and container creation/resolution (`.extractor.impl`)"},"comment":{"url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/comments/369274689","html_url":"https://github.com/hibernate/hibernate-search-6-poc/pull/23#issuecomment-369274689","issue_url":"https://api.github.com/repos/hibernate/hibernate-search-6-poc/issues/23","id":369274689,"user":{"login":"gsmet","id":1279749,"avatar_url":"https://avatars1.githubusercontent.com/u/1279749?v=4","gravatar_id":"","url":"https://api.github.com/users/gsmet","html_url":"https://github.com/gsmet","followers_url":"https://api.github.com/users/gsmet/followers","following_url":"https://api.github.com/users/gsmet/following{/other_user}","gists_url":"https://api.github.com/users/gsmet/gists{/gist_id}","starred_url":"https://api.github.com/users/gsmet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gsmet/subscriptions","organizations_url":"https://api.github.com/users/gsmet/orgs","repos_url":"https://api.github.com/users/gsmet/repos","events_url":"https://api.github.com/users/gsmet/events{/privacy}","received_events_url":"https://api.github.com/users/gsmet/received_events","type":"User","site_admin":false},"created_at":"2018-02-28T15:26:59Z","updated_at":"2018-02-28T15:26:59Z","author_association":"OWNER","body":"> About annotating type paramters, I don't like the idea for Hibernate Search for two reasons\r\n\r\nI can understand your point of view. I don't particularly like your syntax but it has the advantage of having all the fields at the same level and it's probably easier to understand the structure of the index.\r\n\r\nAbout your type parameter resolution algorithm, I will probably have to study it more closely at some point. We have a suboptimal piece of code for that in HV and I was surprised you could manage all these cases with your code, thus my question.\r\n\r\nI think the supported cases are enough for now and it looks good so feel free to merge it."}}
{"actor":{"display_login":"gsmet"}}