BlackListElement.java
/*
* GovWay - A customizable API Gateway
* https://govway.org
*
* Copyright (c) 2005-2024 Link.it srl (https://link.it).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3, as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.openspcoop2.utils.beans;
import java.io.Serializable;
/*****
*
* Oggetto che identifica un metodo setter da non richiamare durante la copia delle properties tra due bean.
*
* Le informazioni necessarie sono:
*
*
* Nome metodo setter da scartare;
*
* Elenco dei tipi dei parametri del metodo;
*
*
* @author Pintori Giuliano (pintori@link.it)
* @author $Author$
* @version $Rev$, $Date$
*
*/
public class BlackListElement implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String nomeMetodo;
private Class<?>[] classiParametri;
public BlackListElement(String nome, Class<?>... classes) {
this.nomeMetodo = nome;
this.classiParametri = classes;
}
public String getNomeMetodo() {
return this.nomeMetodo;
}
public void setNomeMetodo(String nomeMetodo) {
this.nomeMetodo = nomeMetodo;
}
public Class<?>[] getClassiParametri() {
return this.classiParametri;
}
public void setClassiParametri(Class<?>[] classiParametri) {
this.classiParametri = classiParametri;
}
/****
*
* Override del metodo equals:
*
* Realizza il confronto tra due metodi.
*
*
*
*
*/
@Override
public boolean equals(Object obj) {
if(obj == null){
return false;
}
if(!(obj instanceof BlackListElement)){
return false;
}
BlackListElement ble = (BlackListElement) obj;
// controllo sul nome (Nome diverso = elemento non uguale)
if(!this.nomeMetodo.equals(ble.getNomeMetodo())){
return false;
}
// Stesso nome ma elenco dei parametri diverso: return false;
if(this.classiParametri == null && ble.getClassiParametri() != null){
return false;
}
// Stesso nome ma elenco dei parametri diverso: return false;
if(this.classiParametri != null && ble.getClassiParametri() == null){
return false;
}
// Stesso nome ed elenco dei parametri non presente: return true;
if(this.classiParametri == null && ble.getClassiParametri() == null){
return true;
}
//stesso nome ed elenco dei parametri con un diverso numero di elementi: return false;
int this_length = -1;
if(this.classiParametri!=null) {
this_length = this.classiParametri.length;
}
int ble_length = -1;
if(ble.getClassiParametri()!=null) {
ble_length = ble.getClassiParametri().length;
}
if(this_length != ble_length){
return false;
}
// assumo che se passa tutti i controlli precedenti i due oggetti abbiano lo stesso esatto numero di parametri.
if(this.classiParametri!=null) {
for (int i = 0; i < this.classiParametri.length; i++) {
Class<?> _class = this.classiParametri[i];
Class<?> bleClass = ble.getClassiParametri()[i];
// quando trovo la prima discordanza nell'elenco dei parametri mi fermo: return false;
//if(!_class.getName().equals(bleClass.getName())){
if(!_class.equals(bleClass)){
return false;
}
}
}
return true;
}
@Override
public int hashCode() {
return super.hashCode();
}
}