diff --git a/engine/src/main/java/org/hibernate/search/analyzer/impl/LuceneAnalyzerReference.java b/engine/src/main/java/org/hibernate/search/analyzer/impl/LuceneAnalyzerReference.java index 5a3bd41d716..24cf7f31115 100644 --- a/engine/src/main/java/org/hibernate/search/analyzer/impl/LuceneAnalyzerReference.java +++ b/engine/src/main/java/org/hibernate/search/analyzer/impl/LuceneAnalyzerReference.java @@ -37,9 +37,8 @@ public boolean is(Class analyzerType) { } @Override - @SuppressWarnings("unchecked") public T unwrap(Class analyzerType) { - return (T) this; + return analyzerType.cast( this ); } @Override diff --git a/engine/src/main/java/org/hibernate/search/analyzer/impl/RemoteAnalyzerReference.java b/engine/src/main/java/org/hibernate/search/analyzer/impl/RemoteAnalyzerReference.java index b074bd0cd56..0d10649fa74 100644 --- a/engine/src/main/java/org/hibernate/search/analyzer/impl/RemoteAnalyzerReference.java +++ b/engine/src/main/java/org/hibernate/search/analyzer/impl/RemoteAnalyzerReference.java @@ -39,9 +39,8 @@ public boolean is(Class analyzerType) { } @Override - @SuppressWarnings("unchecked") public T unwrap(Class analyzerType) { - return (T) this; + return analyzerType.cast( this ); } @Override diff --git a/engine/src/main/java/org/hibernate/search/util/impl/ScopedAnalyzerReference.java b/engine/src/main/java/org/hibernate/search/util/impl/ScopedAnalyzerReference.java index 774f256a82b..72525b123c2 100644 --- a/engine/src/main/java/org/hibernate/search/util/impl/ScopedAnalyzerReference.java +++ b/engine/src/main/java/org/hibernate/search/util/impl/ScopedAnalyzerReference.java @@ -48,21 +48,20 @@ else if ( RemoteAnalyzerReference.class.isAssignableFrom( analyzerType ) ) { } @Override - @SuppressWarnings("unchecked") public T unwrap(Class analyzerType) { if ( LuceneAnalyzerReference.class.isAssignableFrom( analyzerType ) ) { if ( !( scopedAnalyzer instanceof ScopedLuceneAnalyzer ) ) { throw log.scopedAnalyzerIsNotLucene( scopedAnalyzer ); } - return (T) new LuceneAnalyzerReference( (ScopedLuceneAnalyzer) scopedAnalyzer ); + return analyzerType.cast( new LuceneAnalyzerReference( (ScopedLuceneAnalyzer) scopedAnalyzer ) ); } else if ( RemoteAnalyzerReference.class.isAssignableFrom( analyzerType ) ) { if ( !( scopedAnalyzer instanceof ScopedRemoteAnalyzer ) ) { throw log.scopedAnalyzerIsNotRemote( scopedAnalyzer ); } - return (T) new RemoteAnalyzerReference( (ScopedRemoteAnalyzer) scopedAnalyzer ); + return analyzerType.cast( new RemoteAnalyzerReference( (ScopedRemoteAnalyzer) scopedAnalyzer ) ); } - return (T) this; + return analyzerType.cast( this ); } @Override