/** * FIXME remove the need for such a method, we should always be able to rely on Work.id, * but to respect @DocumentId which is being processed in the DocumentBuilder currently * finding out which id we need is tricky, and requires helpers method like this one. */ @Override public boolean isIdMatchingJpaId() { return ( !idProvided && getTypeMetadata().isJpaIdUsedAsDocumentId() ); }
/** * FIXME remove the need for such a method, we should always be able to rely on Work.id, * but to respect @DocumentId which is being processed in the DocumentBuilder currently * finding out which id we need is tricky, and requires helpers method like this one. */ @Override public boolean isIdMatchingJpaId() { return ( !idProvided && getTypeMetadata().isJpaIdUsedAsDocumentId() ); }
public FieldBridge getBridge(String fieldName) { return getBridge( getTypeMetadata(), fieldName ); }
public FieldBridge getBridge(String fieldName) { return getBridge( getTypeMetadata(), fieldName ); }
private BridgeDefinedField findBridgeDefinedField(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { TypeMetadata typeMetadata = indexBinding.getDocumentBuilder().getTypeMetadata(); BridgeDefinedField bridgeDefinedField = typeMetadata.getBridgeDefinedFieldMetadataFor( fieldPath ); if ( bridgeDefinedField != null ) { return bridgeDefinedField; } } return null; }
private DocumentFieldMetadata findFieldMetadata(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { DocumentFieldMetadata metadata = indexBinding.getDocumentBuilder().getTypeMetadata().getDocumentFieldMetadataFor( fieldPath ); if ( metadata != null ) { return metadata; } } return null; }
/** * Create a root mapping builder. * @param binding The Hibernate Search binding to be translated in an Elasticsearch mapping * @param elasticsearchMapping The Elasticsearch mapping on which properties should be added */ public ElasticsearchMappingBuilder(EntityIndexBinding binding, TypeMapping elasticsearchMapping) { this.binding = binding; this.parent = null; this.typeMetadata = binding.getDocumentBuilder().getTypeMetadata(); this.pathComponentExtractor = new PathComponentExtractor(); this.elasticsearchMapping = elasticsearchMapping; }
/** * Create a root mapping builder. * @param binding The Hibernate Search binding to be translated in an Elasticsearch mapping * @param elasticsearchMapping The Elasticsearch mapping on which properties should be added */ public ElasticsearchMappingBuilder(EntityIndexBinding binding, TypeMapping elasticsearchMapping) { this.binding = binding; this.parent = null; this.typeMetadata = binding.getDocumentBuilder().getTypeMetadata(); this.pathComponentExtractor = new PathComponentExtractor(); this.elasticsearchMapping = elasticsearchMapping; }
private DocumentFieldMetadata findFieldMetadata(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { DocumentFieldMetadata metadata = indexBinding.getDocumentBuilder().getTypeMetadata().getDocumentFieldMetadataFor( fieldPath ); if ( metadata != null ) { return metadata; } } return null; }
private BridgeDefinedField findBridgeDefinedField(Iterable<EntityIndexBinding> targetedBindings, String fieldPath) { if ( fieldPath == null ) { return null; } for ( EntityIndexBinding indexBinding : targetedBindings ) { TypeMetadata typeMetadata = indexBinding.getDocumentBuilder().getTypeMetadata(); BridgeDefinedField bridgeDefinedField = typeMetadata.getBridgeDefinedFieldMetadataFor( fieldPath ); if ( bridgeDefinedField != null ) { return bridgeDefinedField; } } return null; }
private String[] getAllCompatibleFieldNames(DocumentBuilderIndexedEntity documentBuilder) { Collection<DocumentFieldMetadata> allFieldMetadata = documentBuilder.getTypeMetadata().getAllDocumentFieldMetadata(); List<String> fieldNames = new ArrayList<String>( allFieldMetadata.size() ); for ( DocumentFieldMetadata fieldMetadata : allFieldMetadata ) { boolean hasTermVector = fieldMetadata.getTermVector() != Field.TermVector.NO; boolean isStored = fieldMetadata.getStore() != Store.NO; boolean isIdOrEmbeddedId = fieldMetadata.isId() || fieldMetadata.isIdInEmbedded(); if ( ( hasTermVector || isStored ) && !isIdOrEmbeddedId ) { fieldNames.add( fieldMetadata.getAbsoluteName() ); } } if ( fieldNames.size() == 0 ) { throw log.noFieldCompatibleForMoreLikeThis( documentBuilder.getTypeIdentifier() ); } return fieldNames.toArray( new String[fieldNames.size()] ); }
private TypeMetadata getLeafTypeMetadata(Class<?> type, String... propertyPath) { EntityIndexBinding entityIndexBinding = getIndexBinding( searchFactory, type ); TypeMetadata leafTypeMetadata = entityIndexBinding.getDocumentBuilder().getTypeMetadata(); for ( int i = 0; i < propertyPath.length; i++ ) { Iterable<EmbeddedTypeMetadata> embeddedTypeMetadata = leafTypeMetadata.getEmbeddedTypeMetadata(); TypeMetadata metadata = getEmbeddedTypeMetadata( embeddedTypeMetadata, propertyPath[i] ); if ( metadata != null ) { leafTypeMetadata = metadata; } } return leafTypeMetadata; }
public String objectToString(String fieldName, Object value, ConversionContext conversionContext) { if ( fieldName == null ) { throw new AssertionFailure( "Field name should not be null" ); } final FieldBridge bridge = fieldName.equals( getIdFieldName() ) ? getIdBridge() : getBridge( getTypeMetadata(), fieldName ); if ( bridge != null ) { return objectToString( fieldName, bridge, value, conversionContext ); } throw new SearchException( "Unable to find field " + fieldName + " in " + getTypeIdentifier().getName() ); }
public String objectToString(String fieldName, Object value, ConversionContext conversionContext) { if ( fieldName == null ) { throw new AssertionFailure( "Field name should not be null" ); } final FieldBridge bridge = fieldName.equals( getIdFieldName() ) ? getIdBridge() : getBridge( getTypeMetadata(), fieldName ); if ( bridge != null ) { return objectToString( fieldName, bridge, value, conversionContext ); } throw new SearchException( "Unable to find field " + fieldName + " in " + getTypeIdentifier().getName() ); }
private String objectToString(StringBridge bridge, String fieldName, Object value, ConversionContext conversionContext) { conversionContext.pushProperty( fieldName ); String stringValue; try { stringValue = conversionContext .setConvertedTypeId( getTypeMetadata().getType() ) .stringConversionContext( bridge ) .objectToString( value ); } finally { conversionContext.popProperty(); } return stringValue; }
private String objectToString(TwoWayFieldBridge bridge, String fieldName, Object value, ConversionContext conversionContext) { conversionContext.pushProperty( fieldName ); String stringValue; try { stringValue = conversionContext .setConvertedTypeId( getTypeMetadata().getType() ) .twoWayConversionContext( bridge ) .objectToString( value ); } finally { conversionContext.popProperty(); } return stringValue; }
private String objectToString(TwoWayFieldBridge bridge, String fieldName, Object value, ConversionContext conversionContext) { conversionContext.pushProperty( fieldName ); String stringValue; try { stringValue = conversionContext .setConvertedTypeId( getTypeMetadata().getType() ) .twoWayConversionContext( bridge ) .objectToString( value ); } finally { conversionContext.popProperty(); } return stringValue; }
private Object getUnwrappedBridge(Class<?> clazz, String string, Class<?> expectedBridgeClass) { FieldBridge bridge = getExtendedSearchIntegrator().getIndexBindings().get( clazz ).getDocumentBuilder() .getTypeMetadata().getDocumentFieldMetadataFor( string ).getFieldBridge(); return unwrapBridge( bridge, expectedBridgeClass ); }
private Object getUnwrappedBridge(Class<?> clazz, String string, Class<?> expectedBridgeClass) { FieldBridge bridge = sfHolder.getSearchFactory().getIndexBindings().get( clazz ).getDocumentBuilder() .getTypeMetadata().getDocumentFieldMetadataFor( string ).getFieldBridge(); return unwrapBridge( bridge, expectedBridgeClass ); }
@Test @TestForIssue(jiraKey = "HSEARCH-2651") public void testNumericDoesNotDuplicateField() throws Exception { /* * Test that the store(Store.YES) call was taken into account; * it used not to be, because the call to numericField used to * create another, duplicate field, erasing all previous information. */ TypeMetadata metadata = getExtendedSearchIntegrator().getIndexBindings().get( Item.class ) .getDocumentBuilder().getTypeMetadata(); assertTrue( metadata.getDocumentFieldMetadataFor( "price" ).isNumeric() ); assertEquals( Store.YES, metadata.getDocumentFieldMetadataFor( "price" ).getStore() ); }