In this code result = myDef.getRank() - inDef.getRank();
I am getting java.lang.IllegalArgumentException:
Comparison method violates its general contract!
Below is the code snippet . Please help me to resolve this issue.
public int compareTo(Object inObj) {
int result = 0;
if (inObj instanceof OmsFeatureFacade) {
OmsFeatureFacade inFeature = (OmsFeatureFacade) inObj;
FeatureDefinition inDef = inFeature.getFeatureDefinition();
FeatureDefinition myDef = getFeatureDefinition();
if ((inDef == null) || (myDef == null) ) {
return result;
}
// Handling of primary feature.
if (myDef.isPrimary() != inDef.isPrimary()) {
if (myDef.isPrimary()) {
return -1;
}
if (inDef.isPrimary()) {
return 1;
}
}
// Place all bolt on features under primary
if (myDef.isPrimaryPricePlan() != inDef.isPrimaryPricePlan()) {
if (myDef.isPrimaryPricePlan()) {
return -1;
}
if (inDef.isPrimaryPricePlan()) {
return 1;
}
}
// Handling of SC feature.
if (this.isSysGeneratedFeature() != inFeature.isSysGeneratedFeature()) {
if (this.isSysGeneratedFeature()) {
return -1;
}
if (inFeature.isSysGeneratedFeature()) {
return 1;
}
}
// First Sort by rank asc, if no rank, then getRank() returns very large number.
result = myDef.getRank() - inDef.getRank();
if (result != 0) {
return result;
}
// Group by price plan, and sort alpha asc.
result = myDef.getPricePlanCode().compareTo(inDef.getPricePlanCode());
if (result != 0) {
return result;
}
// Handling of main feature for price plan.
if (this.isMainFeature() != inFeature.isMainFeature()) {
if (this.isMainFeature()) {
return -1;
}
if (inFeature.isMainFeature()) {
return 1;
}
}
// Sort alpha asc.
result = myDef.getDescription().compareTo(inDef.getDescription());
if (result != 0) {
return result;
}
}
return result;
}