From b6e2449f09ade6cb8841ea0dd365fde4e8bd94dc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Euzenat?= <Jerome.Euzenat@inria.fr>
Date: Sat, 3 Oct 2015 12:02:04 +0000
Subject: [PATCH] - cleared various warnings [lint]

---
 .../exmo/align/impl/BasicAlignment.java       | 18 ++++++++------
 .../align/impl/BitSetDisjunctiveRelation.java | 14 ++++++-----
 .../exmo/align/impl/DisjunctiveRelation.java  |  4 ++--
 .../exmo/align/impl/edoal/Comparator.java     |  4 ++++
 .../exmo/align/impl/eval/GraphEvaluator.java  | 24 +++++++++----------
 .../align/impl/rel/A5AlgebraRelation.java     |  4 ++--
 6 files changed, 39 insertions(+), 29 deletions(-)

diff --git a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
index c6558a92..34d37b07 100644
--- a/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
+++ b/src/fr/inrialpes/exmo/align/impl/BasicAlignment.java
@@ -132,7 +132,6 @@ public class BasicAlignment implements Alignment, Extensible {
     public void init( Object onto1, Object onto2 ) throws AlignmentException {
 	try {
 	    Class<?>[] cArg = { String.class };
-	    //relationConstructor = (Constructor<Relation>)relationType.getConstructor( cArg );
 	    relationCreationMethod = relationType.getMethod( "createRelation", cArg);
 	} catch ( NoSuchMethodException nsmex ) {
 	    // Should be different if NoSuchMethodException or IllegalAccessException
@@ -243,7 +242,9 @@ public class BasicAlignment implements Alignment, Extensible {
 	try {
 	    Class<?> cl = Class.forName( classname );
 	    if ( Relation.class.isAssignableFrom( cl ) ) {
-		relationType = (Class<? extends Relation>)cl;
+		@SuppressWarnings("unchecked") // Yes, that's ridiculous...
+		    Class<? extends Relation> r = (Class<? extends Relation>)cl;
+		relationType = r;
 	    } else {
 		throw new AlignmentException( "Class "+classname+" does not implement the Relation interface" );
 	    }
@@ -354,14 +355,17 @@ public class BasicAlignment implements Alignment, Extensible {
 	// Any of them... call the local createRelation()...
 	// First try to understand the relation as correct
 	try {
-	    //return relationConstructor.newInstance( rel );
 	    return (Relation)relationCreationMethod.invoke( null, rel );
 	} catch ( Exception ex ) {
 	    try { // Create a relation from classname
-		Class<?> relationClass = Class.forName(rel);
-		Class<?>[] cArg = { String.class };
-		Constructor<Relation> localRelationConstructor = (Constructor<Relation>)relationClass.getConstructor( cArg );
-		return localRelationConstructor.newInstance( "rel" );
+		Class<?> relationClass = (Class<?>)Class.forName(rel);
+		if ( Relation.class.isAssignableFrom( relationClass ) ) {
+		    Class<?>[] cArg = { String.class };
+		    @SuppressWarnings("unchecked") // Yes, that's ridiculous...
+			Constructor<Relation> localRelationConstructor = ((Class<Relation>)relationClass).getConstructor( cArg );
+		    return localRelationConstructor.newInstance( "rel" );
+		} else throw new AlignmentException( "Unknown relation class "+rel );
+		// Exception will be caught just below
 	    } catch ( Exception ex2 ) {
 		logger.debug( "IGNORED Exception: created Basic Relation)", ex );
 		//Otherwise, just create a Basic relation
diff --git a/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java b/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
index 70270c00..0384c25b 100644
--- a/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/BitSetDisjunctiveRelation.java
@@ -85,7 +85,7 @@ public abstract class BitSetDisjunctiveRelation<T extends BaseRelation> extends
     }
 
     /** intersection */
-    protected BitSet protojoin( BitSetDisjunctiveRelation<T>... drs ) {
+    @SafeVarargs protected final BitSet protojoin( BitSetDisjunctiveRelation<T>... drs ) {
 	BitSet bs = (BitSet)relset.clone();
 	for( BitSetDisjunctiveRelation<T> dr : drs ) {
 	    bs.and( dr.getRelations() );
@@ -93,12 +93,12 @@ public abstract class BitSetDisjunctiveRelation<T extends BaseRelation> extends
 	return bs;
     }
 
-    public DisjunctiveRelation<T> join( DisjunctiveRelation<T>... drs ) throws AlignmentException {
+    @SuppressWarnings({"unchecked", "varargs"}) public DisjunctiveRelation<T> join( DisjunctiveRelation<T>... drs ) throws AlignmentException {
 	throw new AlignmentException( "Cannot join relations from heterogeneous algebras" );
     }
 
     /** union */
-    protected BitSet protomeet( BitSetDisjunctiveRelation<T>... drs ) {
+    @SafeVarargs protected final BitSet protomeet( BitSetDisjunctiveRelation<T>... drs ) {
 	BitSet bs = (BitSet)relset.clone();
 	for( BitSetDisjunctiveRelation<T> dr : drs ) {
 	    bs.or( dr.getRelations() );
@@ -106,7 +106,7 @@ public abstract class BitSetDisjunctiveRelation<T extends BaseRelation> extends
 	return bs;
     }
 
-    public DisjunctiveRelation<T> meet( DisjunctiveRelation<T>... drs ) throws AlignmentException {
+    @SuppressWarnings({"unchecked", "varargs"}) public DisjunctiveRelation<T> meet( DisjunctiveRelation<T>... drs ) throws AlignmentException {
 	throw new AlignmentException( "Cannot meet relations from heterogeneous algebras" );
     }
 
@@ -181,9 +181,11 @@ public abstract class BitSetDisjunctiveRelation<T extends BaseRelation> extends
 	    return ( ( relset.nextSetBit( index ) != -1 ) );
 	}        
         
-	public T next() {
+	// The class is private and always called with the proper T
+	// Would be nice to tell, its the same T
+	@SuppressWarnings({"unchecked"}) public T next() {
 	    index = relset.nextSetBit( index );
-	    if ( index != -1 ) return (T)getRelation( index++ );
+	    if ( index != -1 ) return (T)getRelation( index++ ); //[W: unchecked]
 	    else throw new IllegalStateException();
 	}
     }
diff --git a/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java b/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
index f369293e..45c423fd 100644
--- a/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/DisjunctiveRelation.java
@@ -39,9 +39,9 @@ public interface DisjunctiveRelation<T extends BaseRelation> extends Relation, I
 
     public T getRelation( String rel );
 
-    public DisjunctiveRelation<T> join( DisjunctiveRelation<T>... drs ) throws AlignmentException;
+    @SuppressWarnings({"unchecked", "varargs"}) public DisjunctiveRelation<T> join( DisjunctiveRelation<T>... drs ) throws AlignmentException;
 
-    public DisjunctiveRelation<T> meet( DisjunctiveRelation<T>... drs ) throws AlignmentException;
+    @SuppressWarnings({"unchecked", "varargs"}) public DisjunctiveRelation<T> meet( DisjunctiveRelation<T>... drs ) throws AlignmentException;
 
     public boolean isEmpty();
 
diff --git a/src/fr/inrialpes/exmo/align/impl/edoal/Comparator.java b/src/fr/inrialpes/exmo/align/impl/edoal/Comparator.java
index 597ffd42..c2574f3d 100644
--- a/src/fr/inrialpes/exmo/align/impl/edoal/Comparator.java
+++ b/src/fr/inrialpes/exmo/align/impl/edoal/Comparator.java
@@ -81,4 +81,8 @@ public class Comparator {
 	else return uri.equals( ((Comparator)ob).getURI() );
     }
 
+    public int hashCode() {
+	return 17+7*uri.hashCode();
+    }
+
 }
diff --git a/src/fr/inrialpes/exmo/align/impl/eval/GraphEvaluator.java b/src/fr/inrialpes/exmo/align/impl/eval/GraphEvaluator.java
index 4538083a..d257af41 100644
--- a/src/fr/inrialpes/exmo/align/impl/eval/GraphEvaluator.java
+++ b/src/fr/inrialpes/exmo/align/impl/eval/GraphEvaluator.java
@@ -1,7 +1,7 @@
 /*
  * $Id$
  *
- * Copyright (C) INRIA, 2004-2005, 2007-2010, 2013-2014
+ * Copyright (C) INRIA, 2004-2005, 2007-2010, 2013-2015
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Lesser General Public License as published by
@@ -214,17 +214,17 @@ public abstract class GraphEvaluator {
     public abstract String xlabel();
     public abstract String ylabel();
 
-}
-
-class EvalCell {
-    Cell cell = null;
-    boolean correct = false;
 
-    public EvalCell( Cell c, boolean b ){
-	cell = c;
-	correct = b;
+    class EvalCell {
+	Cell cell = null;
+	boolean correct = false;
+	
+	public EvalCell( Cell c, boolean b ){
+	    cell = c;
+	    correct = b;
+	}
+	
+	public boolean correct() { return correct; }
+	public Cell cell() { return cell; }
     }
-
-    public boolean correct() { return correct; }
-    public Cell cell() { return cell; }
 }
diff --git a/src/fr/inrialpes/exmo/align/impl/rel/A5AlgebraRelation.java b/src/fr/inrialpes/exmo/align/impl/rel/A5AlgebraRelation.java
index 7d6ce848..2a103f89 100644
--- a/src/fr/inrialpes/exmo/align/impl/rel/A5AlgebraRelation.java
+++ b/src/fr/inrialpes/exmo/align/impl/rel/A5AlgebraRelation.java
@@ -225,11 +225,11 @@ public class A5AlgebraRelation extends BitSetAlgebraRelation<A5BaseRelation> {
 	return new A5AlgebraRelation( protoinverse() );
     }
 
-    public A5AlgebraRelation join( A5AlgebraRelation... drs ) {
+    public final A5AlgebraRelation join( A5AlgebraRelation... drs ) {
 	return new A5AlgebraRelation( protojoin( drs ) );
     }
 
-    public A5AlgebraRelation meet( A5AlgebraRelation... drs ) {
+    public final A5AlgebraRelation meet( A5AlgebraRelation... drs ) {
 	return new A5AlgebraRelation( protomeet( drs ) );
     }
 
-- 
GitLab