Skip to content

Commit

Permalink
adds equals/hashCode to some data classes (#352)
Browse files Browse the repository at this point in the history
  • Loading branch information
cfieber authored and decebals committed Dec 4, 2019
1 parent dda9f38 commit a80ea7a
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 0 deletions.
20 changes: 20 additions & 0 deletions pf4j/src/main/java/org/pf4j/DefaultPluginDescriptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;

/**
* @author Decebal Suiu
Expand Down Expand Up @@ -196,4 +197,23 @@ public PluginDescriptor setLicense(String license) {
return this;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof DefaultPluginDescriptor)) return false;
DefaultPluginDescriptor that = (DefaultPluginDescriptor) o;
return Objects.equals(pluginId, that.pluginId) &&
Objects.equals(pluginDescription, that.pluginDescription) &&
Objects.equals(pluginClass, that.pluginClass) &&
Objects.equals(version, that.version) &&
Objects.equals(requires, that.requires) &&
Objects.equals(provider, that.provider) &&
dependencies.equals(that.dependencies) &&
Objects.equals(license, that.license);
}

@Override
public int hashCode() {
return Objects.hash(pluginId, pluginDescription, pluginClass, version, requires, provider, dependencies, license);
}
}
14 changes: 14 additions & 0 deletions pf4j/src/main/java/org/pf4j/PluginClasspath.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;

/**
Expand Down Expand Up @@ -60,4 +61,17 @@ public PluginClasspath addJarsDirectories(Collection<String> jarsDirectories) {
return this;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PluginClasspath)) return false;
PluginClasspath that = (PluginClasspath) o;
return classesDirectories.equals(that.classesDirectories) &&
jarsDirectories.equals(that.jarsDirectories);
}

@Override
public int hashCode() {
return Objects.hash(classesDirectories, jarsDirectories);
}
}
16 changes: 16 additions & 0 deletions pf4j/src/main/java/org/pf4j/PluginDependency.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package org.pf4j;

import java.util.Objects;

/**
* @author Decebal Suiu
*/
Expand Down Expand Up @@ -61,4 +63,18 @@ public String toString() {
+ optional + "]";
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof PluginDependency)) return false;
PluginDependency that = (PluginDependency) o;
return optional == that.optional &&
pluginId.equals(that.pluginId) &&
pluginVersionSupport.equals(that.pluginVersionSupport);
}

@Override
public int hashCode() {
return Objects.hash(pluginId, pluginVersionSupport, optional);
}
}
12 changes: 12 additions & 0 deletions pf4j/src/test/java/org/pf4j/PluginDependencyTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,32 +33,44 @@ public class PluginDependencyTest {
@Test
public void testPluginDependecy() {
PluginDependency instance = new PluginDependency("test");
PluginDependency instance2 = new PluginDependency("test");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("*", instance.getPluginVersionSupport());
assertFalse(instance.isOptional());

instance = new PluginDependency("test@");
instance2 = new PluginDependency("test@");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("*", instance.getPluginVersionSupport());
assertFalse(instance.isOptional());

instance = new PluginDependency("test?");
instance2 = new PluginDependency("test?");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("*", instance.getPluginVersionSupport());
assertTrue(instance.isOptional());

instance = new PluginDependency("test?@");
instance2 = new PluginDependency("test?@");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("*", instance.getPluginVersionSupport());
assertTrue(instance.isOptional());

instance = new PluginDependency("test@1.0");
instance2 = new PluginDependency("test@1.0");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("1.0", instance.getPluginVersionSupport());
assertFalse(instance.isOptional());
assertEquals("PluginDependency [pluginId=test, pluginVersionSupport=1.0, optional=false]", instance.toString());

instance = new PluginDependency("test?@1.0");
instance2 = new PluginDependency("test?@1.0");
assertEquals(instance, instance2);
assertEquals("test", instance.getPluginId());
assertEquals("1.0", instance.getPluginVersionSupport());
assertTrue(instance.isOptional());
Expand Down

0 comments on commit a80ea7a

Please sign in to comment.