Skip to content

Commit

Permalink
HSEARCH-3993 Add default identifier bridges for Character, Byte, Bool…
Browse files Browse the repository at this point in the history
…ean, Byte, Float, Double
  • Loading branch information
yrodiere authored and fax4ever committed Sep 4, 2020
1 parent 47cf90c commit 88726dc
Show file tree
Hide file tree
Showing 6 changed files with 164 additions and 5 deletions.
@@ -0,0 +1,30 @@
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.mapper.pojo.bridge.builtin.impl;

import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeFromDocumentIdentifierContext;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeToDocumentIdentifierContext;

public final class DefaultBooleanIdentifierBridge implements IdentifierBridge<Boolean> {

@Override
public String toDocumentIdentifier(Boolean propertyValue, IdentifierBridgeToDocumentIdentifierContext context) {
return propertyValue.toString();
}

@Override
public Boolean fromDocumentIdentifier(String documentIdentifier, IdentifierBridgeFromDocumentIdentifierContext context) {
return Boolean.parseBoolean( documentIdentifier );
}

@Override
public boolean isCompatibleWith(IdentifierBridge<?> other) {
return getClass().equals( other.getClass() );
}

}
@@ -0,0 +1,30 @@
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.mapper.pojo.bridge.builtin.impl;

import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeFromDocumentIdentifierContext;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeToDocumentIdentifierContext;

public final class DefaultByteIdentifierBridge implements IdentifierBridge<Byte> {

@Override
public String toDocumentIdentifier(Byte propertyValue, IdentifierBridgeToDocumentIdentifierContext context) {
return propertyValue.toString();
}

@Override
public Byte fromDocumentIdentifier(String documentIdentifier, IdentifierBridgeFromDocumentIdentifierContext context) {
return Byte.parseByte( documentIdentifier );
}

@Override
public boolean isCompatibleWith(IdentifierBridge<?> other) {
return getClass().equals( other.getClass() );
}

}
@@ -0,0 +1,29 @@
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.mapper.pojo.bridge.builtin.impl;

import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeFromDocumentIdentifierContext;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeToDocumentIdentifierContext;

public final class DefaultCharacterIdentifierBridge implements IdentifierBridge<Character> {

@Override
public String toDocumentIdentifier(Character propertyValue, IdentifierBridgeToDocumentIdentifierContext context) {
return propertyValue.toString();
}

@Override
public Character fromDocumentIdentifier(String documentIdentifier, IdentifierBridgeFromDocumentIdentifierContext context) {
return documentIdentifier.charAt( 0 );
}

@Override
public boolean isCompatibleWith(IdentifierBridge<?> other) {
return getClass().equals( other.getClass() );
}
}
@@ -0,0 +1,30 @@
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.mapper.pojo.bridge.builtin.impl;

import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeFromDocumentIdentifierContext;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeToDocumentIdentifierContext;

public final class DefaultDoubleIdentifierBridge implements IdentifierBridge<Double> {

@Override
public String toDocumentIdentifier(Double propertyValue, IdentifierBridgeToDocumentIdentifierContext context) {
return propertyValue.toString();
}

@Override
public Double fromDocumentIdentifier(String documentIdentifier, IdentifierBridgeFromDocumentIdentifierContext context) {
return Double.parseDouble( documentIdentifier );
}

@Override
public boolean isCompatibleWith(IdentifierBridge<?> other) {
return getClass().equals( other.getClass() );
}

}
@@ -0,0 +1,30 @@
/*
* Hibernate Search, full-text search for your domain model
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.search.mapper.pojo.bridge.builtin.impl;

import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeFromDocumentIdentifierContext;
import org.hibernate.search.mapper.pojo.bridge.runtime.IdentifierBridgeToDocumentIdentifierContext;

public final class DefaultFloatIdentifierBridge implements IdentifierBridge<Float> {

@Override
public String toDocumentIdentifier(Float propertyValue, IdentifierBridgeToDocumentIdentifierContext context) {
return propertyValue.toString();
}

@Override
public Float fromDocumentIdentifier(String documentIdentifier, IdentifierBridgeFromDocumentIdentifierContext context) {
return Float.parseFloat( documentIdentifier );
}

@Override
public boolean isCompatibleWith(IdentifierBridge<?> other) {
return getClass().equals( other.getClass() );
}

}
Expand Up @@ -43,10 +43,15 @@
import org.hibernate.search.mapper.pojo.bridge.IdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.ValueBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultBigIntegerIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultBooleanIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultByteIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultCharacterIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultCharacterValueBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultDoubleIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultDurationValueBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultEnumIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultEnumValueBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultFloatIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultIntegerIdentifierBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultJavaNetURIValueBridge;
import org.hibernate.search.mapper.pojo.bridge.builtin.impl.DefaultJavaNetURLValueBridge;
Expand Down Expand Up @@ -201,11 +206,14 @@ private void addDefaults() {
.valueBinder( new PassThroughValueBridge.Binder<>( String.class, ParseUtils::parseString ) )
.identifierBridge( new DefaultStringIdentifierBridge() );
exactType( Character.class )
.valueBridge( new DefaultCharacterValueBridge() );
.valueBridge( new DefaultCharacterValueBridge() )
.identifierBridge( new DefaultCharacterIdentifierBridge() );
exactType( Boolean.class )
.valueBinder( new PassThroughValueBridge.Binder<>( Boolean.class, ConvertUtils::convertBoolean ) );
.valueBinder( new PassThroughValueBridge.Binder<>( Boolean.class, ConvertUtils::convertBoolean ) )
.identifierBridge( new DefaultBooleanIdentifierBridge() );
exactType( Byte.class )
.valueBinder( new PassThroughValueBridge.Binder<>( Byte.class, ConvertUtils::convertByte ) );
.valueBinder( new PassThroughValueBridge.Binder<>( Byte.class, ConvertUtils::convertByte ) )
.identifierBridge( new DefaultByteIdentifierBridge() );
exactType( Short.class )
.valueBinder( new PassThroughValueBridge.Binder<>( Short.class, ConvertUtils::convertShort ) )
.identifierBridge( new DefaultShortIdentifierBridge() );
Expand All @@ -216,9 +224,11 @@ private void addDefaults() {
.valueBinder( new PassThroughValueBridge.Binder<>( Long.class, ConvertUtils::convertLong ) )
.identifierBridge( new DefaultLongIdentifierBridge() );
exactType( Float.class )
.valueBinder( new PassThroughValueBridge.Binder<>( Float.class, ConvertUtils::convertFloat ) );
.valueBinder( new PassThroughValueBridge.Binder<>( Float.class, ConvertUtils::convertFloat ) )
.identifierBridge( new DefaultFloatIdentifierBridge() );
exactType( Double.class )
.valueBinder( new PassThroughValueBridge.Binder<>( Double.class, ConvertUtils::convertDouble ) );
.valueBinder( new PassThroughValueBridge.Binder<>( Double.class, ConvertUtils::convertDouble ) )
.identifierBridge( new DefaultDoubleIdentifierBridge() );
strictSubTypesOf( Enum.class )
.valueBinder( new DefaultEnumValueBridge.Binder() )
.identifierBinder( new DefaultEnumIdentifierBridge.Binder() );
Expand Down

0 comments on commit 88726dc

Please sign in to comment.