### Question:
ClientCustomDataSource extends ClientResource<ClientCustomDataSource> implements ClientReferenceableDataSource { @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof ClientCustomDataSource)) return false; if (!super.equals(o)) return false; ClientCustomDataSource that = (ClientCustomDataSource) o; if (dataSourceName != null ? !dataSourceName.equals(that.dataSourceName) : that.dataSourceName != null) return false; if (properties != null ? (that.properties == null || !new HashSet(properties).equals(new HashSet(that.properties))) : that.properties != null) return false; if (resources != null ? !resources.equals(that.resources) : that.resources != null) return false; if (serviceClass != null ? !serviceClass.equals(that.serviceClass) : that.serviceClass != null) return false; return true; } ClientCustomDataSource();  ClientCustomDataSource(ClientCustomDataSource source); String getDataSourceName(); @Override boolean equals(Object o); @Override int hashCode(); @XmlJavaTypeAdapter(FilesMapXmlAdapter.class) @XmlElement(name = "resources") Map<String, ClientReferenceableFile> getResources(); ClientCustomDataSource setResources(Map<String, ClientReferenceableFile> resources); ClientCustomDataSource setDataSourceName(String dataSourceName); String getServiceClass(); ClientCustomDataSource setServiceClass(String serviceClass); List<ClientProperty> getProperties(); ClientCustomDataSource setProperties(List<ClientProperty> properties); @Override String toString(); @Override ClientCustomDataSource deepClone();  }### Answer:
@Test public void testEquals() throws Exception { assertTrue(dataSource1.equals(dataSource2)); assertTrue(dataSource2.equals(dataSource1)); }