[hibernate-commits] [hibernate/hibernate-search] d11120: HSEARCH-3463 Add a wrapper annotation @ContainerEx...

Yoann Rodière noreply at github.com
Fri May 24 05:44:22 EDT 2019


  Branch: refs/heads/master
  Home:   https://github.com/hibernate/hibernate-search
  Commit: d1112026a3dc7a515196fbd1e8c60e1b364729a7
      https://github.com/hibernate/hibernate-search/commit/d1112026a3dc7a515196fbd1e8c60e1b364729a7
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M documentation/src/main/asciidoc/mapper-orm-mapping.asciidoc
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/automaticindexing/AutomaticIndexingMapKeysAssociationIT.java
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/smoke/AnnotationMappingSmokeIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorExplicitIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/AssociationInverseSide.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtract.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtraction.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/FullTextField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/GenericField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexedEmbedded.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexingDependency.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/KeywordField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/PropertyValue.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ScaledNumberField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorHelper.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorProvider.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/PropertyFieldAnnotationProcessor.java

  Log Message:
  -----------
  HSEARCH-3463 Add a wrapper annotation @ContainerExtraction to define extraction-related options, in particular to disable it


  Commit: 438793a1b66e48e4dfcad4e1c0323eafa6af54c5
      https://github.com/hibernate/hibernate-search/commit/438793a1b66e48e4dfcad4e1c0323eafa6af54c5
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/ContainerExtractorPath.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/AssociationInverseSideMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/IndexingDependencyMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyFieldMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyIndexedEmbeddedMappingContext.java

  Log Message:
  -----------
  HSEARCH-3463 Add some javadoc to container-extractor-related APIs


  Commit: b28a2fc7ae0015fa0f12cbc5eb9307dfe7a22106
      https://github.com/hibernate/hibernate-search/commit/b28a2fc7ae0015fa0f12cbc5eb9307dfe7a22106
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/builtin/BuiltinContainerExtractor.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtractorRef.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorHelper.java

  Log Message:
  -----------
  HSEARCH-3463 Remove BuiltinContainerExtractor.AUTOMATIC

It lost its meaning with the introduction of @ContainerExtraction, which
is able to interpret a empty extractor array differently depending on
the value of @ContainerExtraction.extract. In particular it's able to
interepret that empty array as "use default extractors" when extract =
ContainerExtract.DEFAULT, which is what
BuiltinContainerExtractor.AUTOMATIC was created for in the first place.


  Commit: a84eb4c0175f4fcc0462c2a8fcc5985f432d2074
      https://github.com/hibernate/hibernate-search/commit/a84eb4c0175f4fcc0462c2a8fcc5985f432d2074
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M mapper/javabean/src/main/java/org/hibernate/search/mapper/javabean/JavaBeanMappingBuilder.java
    M mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/HibernateOrmMappingDefinitionContainerContext.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/ContainerExtractorDefinitionContext.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/builtin/BuiltinContainerExtractors.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/impl/ContainerExtractorBinder.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/impl/ContainerExtractorDefinitionContextImpl.java
    A mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/spi/ContainerExtractorRegistry.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/building/impl/PojoMapper.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/spi/AbstractPojoMappingInitiator.java

  Log Message:
  -----------
  HSEARCH-3463 Introduce a registry for container extractors

So that we can refer to container extractors by name, which will make
annotation configuration a bit easier (see following commits).


  Commit: 8bc625f3f7ce177cdf3cb8c74e646bd652dc95c2
      https://github.com/hibernate/hibernate-search/commit/8bc625f3f7ce177cdf3cb8c74e646bd652dc95c2
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/lifecycle/CleanupIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/PropertyBridgeBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/testsupport/util/StartupStubContainerExtractor.java
    M mapper/orm/src/main/java/org/hibernate/search/mapper/orm/logging/impl/Log.java
    M mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMetatadaContributor.java
    M mapper/orm/src/main/java/org/hibernate/search/mapper/orm/model/impl/HibernateOrmPathFilterFactory.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/ContainerExtractorPath.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/builtin/BuiltinContainerExtractor.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/impl/ContainerExtractorBinder.java
    R mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/impl/ContainerExtractorDefinitionContextImpl.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/spi/ContainerExtractorRegistry.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtraction.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtractorRef.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorHelper.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/AssociationInverseSideMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/IndexingDependencyMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyFieldMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyIndexedEmbeddedMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/model/path/PojoModelPath.java
    M mapper/pojo/src/test/java/org/hibernate/search/mapper/pojo/model/path/PojoModelPathTest.java

  Log Message:
  -----------
  HSEARCH-3463 Use names instead of classes to refer to container extractors

Multiple reasons:

1. This will allow the replacement of the BuiltinContainerExtractor enum
by simple string references, which in turn will allow the removal of
@ContainerExtractorRef so that we can pass string arrays directly in
annotations.
In other words, this will simplify the mapping; see the next commits.
2. Container extractors have a meaning for us and must be interpreted in
order to build reindexing resolvers, in particular. Thus we cannot hope
to make them completely abstract like we do for bridge builders: we need
to know what container extractors do. This means we cannot hope to one
day have an anonymous implementation of a "container extractor builder"
passed to the programmatic mapping: there must be additional metadata.
Thus the idea of definiting the container extractors beforehand makes
sense.
3. We will ultimately need some sort of configuration anyway to allow
the customization of default container extractors. Why not also register
custom extractors there?


  Commit: 6984e7a7fe7ab07bea3b58aae94935965ec5f625
      https://github.com/hibernate/hibernate-search/commit/6984e7a7fe7ab07bea3b58aae94935965ec5f625
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java

  Log Message:
  -----------
  HSEARCH-3463 Test custom container extractor definition


  Commit: 627c0f6059d72901073bdfb71c6f0537f0680b3a
      https://github.com/hibernate/hibernate-search/commit/627c0f6059d72901073bdfb71c6f0537f0680b3a
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/automaticindexing/AutomaticIndexingMapKeysAssociationIT.java
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/smoke/AnnotationMappingSmokeIT.java
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/smoke/ProgrammaticMappingSmokeIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorExplicitIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/PropertyBridgeBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/ProgrammaticMappingSmokeIT.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/ContainerExtractorPath.java
    R mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/extractor/builtin/BuiltinContainerExtractor.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/logging/impl/Log.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/AssociationInverseSide.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtraction.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtractorRef.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/GenericField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexedEmbedded.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexingDependency.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/PropertyValue.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorHelper.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/AssociationInverseSideMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/IndexingDependencyMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyFieldMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/programmatic/PropertyIndexedEmbeddedMappingContext.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/model/path/PojoModelPath.java
    M mapper/pojo/src/test/java/org/hibernate/search/mapper/pojo/model/path/PojoModelPathTest.java

  Log Message:
  -----------
  HSEARCH-3463 Remove the BuiltinContainerExtractor enum and use string constants instead

This allows a significant simplification of @ContainerExtractorRef.

Also, this opens the door for mappers to contribute custom, built-in
container extractors that were not mentioned in the enum, and still
allow users to reference these extractors with a simple syntax.


  Commit: ae9bca7d18f13fc1f7c39ec1969a35a6fc22bc8b
      https://github.com/hibernate/hibernate-search/commit/ae9bca7d18f13fc1f7c39ec1969a35a6fc22bc8b
  Author: Yoann Rodière <yoann at hibernate.org>
  Date:   2019-05-24 (Fri, 24 May 2019)

  Changed paths:
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/automaticindexing/AutomaticIndexingMapKeysAssociationIT.java
    M integrationtest/mapper/orm/src/test/java/org/hibernate/search/integrationtest/mapper/orm/smoke/AnnotationMappingSmokeIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorBaseIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/mapping/definition/FieldContainerExtractorExplicitIT.java
    M integrationtest/mapper/pojo/src/test/java/org/hibernate/search/integrationtest/mapper/pojo/smoke/AnnotationMappingSmokeIT.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/AssociationInverseSide.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtraction.java
    R mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/ContainerExtractorRef.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/GenericField.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexedEmbedded.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/IndexingDependency.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/PropertyValue.java
    M mapper/pojo/src/main/java/org/hibernate/search/mapper/pojo/mapping/definition/annotation/impl/AnnotationProcessorHelper.java

  Log Message:
  -----------
  HSEARCH-3463 Use an array of strings instead of an array of @ContainerExtractorRef in @ContainerExtraction

To simplify annotation mapping.


Compare: https://github.com/hibernate/hibernate-search/compare/cd1bf076222a...ae9bca7d18f1



More information about the hibernate-commits mailing list