diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java index a1cfe0bcefbe12e3edf6addcbd549763ac581ff5..91e47e190045379693b532ae419f9d84964adffc 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponent.java @@ -30,7 +30,7 @@ import ch.systemsx.cisd.openbis.dss.component.IDataSetDss; import ch.systemsx.cisd.openbis.dss.component.IDssComponent; import ch.systemsx.cisd.openbis.dss.rpc.client.DssServiceRpcFactory; import ch.systemsx.cisd.openbis.dss.rpc.client.IDssServiceRpcFactory; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.FileInfoDssDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcGeneric; import ch.systemsx.cisd.openbis.generic.shared.IETLLIMSService; @@ -301,9 +301,9 @@ class AuthenticatedState extends AbstractDssComponentState private IDssServiceRpcGeneric basicGetDssServiceForUrl(String serverURL) { IDssServiceRpcGeneric dssService = null; - DssServiceRpcInterface[] ifaces = + RpcServiceInterfaceDTO[] ifaces = dssServiceFactory.getSupportedInterfaces(serverURL, false); - for (DssServiceRpcInterface iface : ifaces) + for (RpcServiceInterfaceDTO iface : ifaces) { if (V1_INTERFACE_NAME.equals(iface.getInterfaceName())) { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServer.java index f5eb185e1dd4d588d925daa77e560e3a7f4b1367..37382692bf559269449f4be14462407990d30fff 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServer.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DataStoreServer.java @@ -53,7 +53,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.ConfigParameters.PluginServle import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.utils.PropertyParametersUtil; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; import ch.systemsx.cisd.openbis.generic.shared.IServer; /** @@ -222,13 +222,13 @@ public class DataStoreServer ServiceProvider.getDssServiceRpcNameServer(); DssServiceRpcNameServer rpcNameServer = (DssServiceRpcNameServer) nameServiceExporter.getService(); - DssServiceRpcInterface v1Interface = new DssServiceRpcInterface(); + RpcServiceInterfaceDTO v1Interface = new RpcServiceInterfaceDTO(); v1Interface.setInterfaceName("V1"); v1Interface.setInterfaceUrlSuffix("/rpc/v1"); rpcNameServer.addSupportedInterface(v1Interface); String nameServerPath = "/" + DATA_STORE_SERVER_RPC_SERVICE_NAME; - DssServiceRpcInterface nameServerInterface = new DssServiceRpcInterface(); + RpcServiceInterfaceDTO nameServerInterface = new RpcServiceInterfaceDTO(); nameServerInterface.setInterfaceName("NameServer"); nameServerInterface.setInterfaceUrlSuffix("/rpc"); rpcNameServer.addSupportedInterface(nameServerInterface); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java index c05d085ed866eb47a2d4fc52d339914189fb1551..5e94929e45bcd898e90f01db32b187123a9dc2b6 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DssServiceRpcNameServer.java @@ -22,8 +22,8 @@ import org.apache.log4j.Logger; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; -import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcNameServer; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; +import ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcServiceNameServer; /** * Implementation of the IDssServiceRpcNameServer interface which registry for accessing the RPC @@ -31,21 +31,21 @@ import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcNameServer; * * @author Chandrasekhar Ramakrishnan */ -public class DssServiceRpcNameServer implements IDssServiceRpcNameServer +public class DssServiceRpcNameServer implements IRpcServiceNameServer { - private final ArrayList<DssServiceRpcInterface> supportedInterfaces; + private final ArrayList<RpcServiceInterfaceDTO> supportedInterfaces; static private final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, DssServiceRpcNameServer.class); DssServiceRpcNameServer() { - supportedInterfaces = new ArrayList<DssServiceRpcInterface>(); + supportedInterfaces = new ArrayList<RpcServiceInterfaceDTO>(); } - public DssServiceRpcInterface[] getSupportedInterfaces() + public RpcServiceInterfaceDTO[] getSupportedInterfaces() { - DssServiceRpcInterface[] ifaces = new DssServiceRpcInterface[supportedInterfaces.size()]; + RpcServiceInterfaceDTO[] ifaces = new RpcServiceInterfaceDTO[supportedInterfaces.size()]; return supportedInterfaces.toArray(ifaces); } @@ -62,7 +62,7 @@ public class DssServiceRpcNameServer implements IDssServiceRpcNameServer /** * Package-visible method for configuring the registry */ - void addSupportedInterface(DssServiceRpcInterface iface) + void addSupportedInterface(RpcServiceInterfaceDTO iface) { supportedInterfaces.add(iface); operationLog.info("Registered RPC Interface " + iface.toString()); diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java index e610283e9038f9ed32025a58f9e6ec2e09c7cec7..78db076c7d59cf6390e8e06eb3b16aa7f3add177 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/DssServiceRpcFactory.java @@ -30,9 +30,9 @@ import com.marathon.util.spring.StreamSupportingHttpInvokerProxyFactoryBean; import ch.systemsx.cisd.common.spring.HttpInvokerUtils; import ch.systemsx.cisd.common.ssl.SslCertificateHelper; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpc; -import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcNameServer; +import ch.systemsx.cisd.openbis.dss.rpc.shared.IRpcServiceNameServer; /** * Client-side factory for DssServiceRpc objects. @@ -47,24 +47,24 @@ public class DssServiceRpcFactory implements IDssServiceRpcFactory private static final String NAME_SERVER_SUFFIX = "/rpc"; - public DssServiceRpcInterface[] getSupportedInterfaces(String serverURL, + public RpcServiceInterfaceDTO[] getSupportedInterfaces(String serverURL, boolean getServerCertificateFromServer) throws IncompatibleAPIVersionsException { // We assume the location of the name server follows the convention String nameServerURL = serverURL + NAME_SERVER_SUFFIX; - Class<IDssServiceRpcNameServer> clazz = IDssServiceRpcNameServer.class; + Class<IRpcServiceNameServer> clazz = IRpcServiceNameServer.class; if (getServerCertificateFromServer) { new SslCertificateHelper(nameServerURL, getConfigDirectory(), "dss").setUpKeyStore(); } - IDssServiceRpcNameServer nameServer = - new ServiceProxyBuilder<IDssServiceRpcNameServer>(nameServerURL, clazz, + IRpcServiceNameServer nameServer = + new ServiceProxyBuilder<IRpcServiceNameServer>(nameServerURL, clazz, SERVER_TIMEOUT_MIN, 1).getServiceInterface(); return nameServer.getSupportedInterfaces(); } - public <T extends IDssServiceRpc> T getService(DssServiceRpcInterface iface, + public <T extends IDssServiceRpc> T getService(RpcServiceInterfaceDTO iface, Class<T> ifaceClazz, String serverURL, boolean getServerCertificateFromServer) throws IncompatibleAPIVersionsException { diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java index 345127b8b74a20aa927db17b9fb9610887ef113a..2d5a3eeda868ce1555eb99341bd58414628c8b69 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/client/IDssServiceRpcFactory.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.dss.rpc.client; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpc; /** @@ -37,13 +37,13 @@ public interface IDssServiceRpcFactory * shouldGetServerCertificateFromServer is true, the factory will retrieve the SSL * certificate from the server. */ - public abstract DssServiceRpcInterface[] getSupportedInterfaces(String serverURL, + public abstract RpcServiceInterfaceDTO[] getSupportedInterfaces(String serverURL, boolean shouldGetServerCertificateFromServer) throws IncompatibleAPIVersionsException; /** * Get get RPC service interface specified by <code>iface</code>. */ - public abstract <T extends IDssServiceRpc> T getService(DssServiceRpcInterface iface, + public abstract <T extends IDssServiceRpc> T getService(RpcServiceInterfaceDTO iface, Class<T> ifaceClazz, String serverURL, boolean getServerCertificateFromServer) throws IncompatibleAPIVersionsException; } \ No newline at end of file diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/DssServiceRpcInterface.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/DssServiceRpcInterface.java deleted file mode 100644 index 845bf29615a51961961c91d00941828a0d59aa3c..0000000000000000000000000000000000000000 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/DssServiceRpcInterface.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2010 ETH Zuerich, CISD - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package ch.systemsx.cisd.openbis.dss.rpc.shared; - -import java.io.Serializable; - -/** - * Describes an RPC interface supported by the data store server. - * - * @author Chandrasekhar Ramakrishnan - */ -public class DssServiceRpcInterface implements Serializable -{ - private static final long serialVersionUID = 1L; - - private String interfaceName; - - private String interfaceUrlSuffix; - - /** - * The name of this interface used for identification. - */ - public String getInterfaceName() - { - return interfaceName; - } - - public void setInterfaceName(String interfaceName) - { - this.interfaceName = interfaceName; - } - - /** - * The suffix added to the DSS URL to produce the URL for this interface. Used by a service - * factory to create a proxy to the service. - */ - public String getInterfaceUrlSuffix() - { - return interfaceUrlSuffix; - } - - public void setInterfaceUrlSuffix(String interfaceUrlSuffix) - { - this.interfaceUrlSuffix = interfaceUrlSuffix; - } - - @Override - public String toString() - { - StringBuilder sb = new StringBuilder(); - sb.append("DssServiceRpcInterface["); - sb.append(getInterfaceName()); - sb.append(","); - sb.append(getInterfaceUrlSuffix()); - sb.append("]"); - return sb.toString(); - } -} diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java index 86891432228278cc7328190301c6f56625b4295c..470dcceaaa21a0a05fbff2915775af9075a467d0 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpc.java @@ -21,7 +21,7 @@ package ch.systemsx.cisd.openbis.dss.rpc.shared; * <p> * This interface defines a minimal interface presented by DSS services. It lets clients determine * which version of the interface the server supports. To do anything interesting, clients need to - * get a reference to a specific interface from the {@link IDssServiceRpcNameServer}. + * get a reference to a specific interface from the {@link IRpcServiceNameServer}. * * @author Chandrasekhar Ramakrishnan */ diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcNameServer.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java similarity index 86% rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcNameServer.java rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java index 3512701ad108eb6649884af710ed0075e71fef70..85283be400a21c57fb831daf047059057635f24a 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IDssServiceRpcNameServer.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/IRpcServiceNameServer.java @@ -21,7 +21,7 @@ package ch.systemsx.cisd.openbis.dss.rpc.shared; * * @author Chandrasekhar Ramakrishnan */ -public interface IDssServiceRpcNameServer extends IDssServiceRpc +public interface IRpcServiceNameServer extends IDssServiceRpc { - DssServiceRpcInterface[] getSupportedInterfaces(); + RpcServiceInterfaceDTO[] getSupportedInterfaces(); } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java new file mode 100644 index 0000000000000000000000000000000000000000..4622ee4ee981750cb35fe5dc257215de3f5108fe --- /dev/null +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/rpc/shared/RpcServiceInterfaceDTO.java @@ -0,0 +1,138 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.rpc.shared; + +import java.io.Serializable; + +/** + * Describes an RPC interface supported by the data store server. + * + * @author Chandrasekhar Ramakrishnan + */ +public class RpcServiceInterfaceDTO implements Serializable +{ + private static final long serialVersionUID = 1L; + + private String interfaceName; + + private String interfaceUrlSuffix; + + private int interfaceMajorVersion; + + private int interfaceMinorVersion; + + public RpcServiceInterfaceDTO() + { + interfaceName = "Unknown"; + interfaceUrlSuffix = "unknown"; + interfaceMajorVersion = 0; + interfaceMinorVersion = 0; + } + + /** + * The name of this interface used for identification. + */ + public String getInterfaceName() + { + return interfaceName; + } + + public void setInterfaceName(String interfaceName) + { + this.interfaceName = interfaceName; + } + + /** + * The suffix added to the DSS URL to produce the URL for this interface. Used by a service + * factory to create a proxy to the service. + */ + public String getInterfaceUrlSuffix() + { + return interfaceUrlSuffix; + } + + public void setInterfaceUrlSuffix(String interfaceUrlSuffix) + { + this.interfaceUrlSuffix = interfaceUrlSuffix; + } + + /** + * The major version of the interface. E.g., an interface with version 2.11 has major version 2. + */ + public int getInterfaceMajorVersion() + { + return interfaceMajorVersion; + } + + public void setInterfaceMajorVersion(int interfaceMajorVersion) + { + this.interfaceMajorVersion = interfaceMajorVersion; + } + + /** + * The major version of the interface. E.g., an interface with version 2.11 has minor version + * 11. + */ + public int getInterfaceMinorVersion() + { + return interfaceMinorVersion; + } + + public void setInterfaceMinorVersion(int interfaceMinorVersion) + { + this.interfaceMinorVersion = interfaceMinorVersion; + } + + @Override + public boolean equals(Object obj) + { + if (false == obj instanceof RpcServiceInterfaceDTO) + return false; + + RpcServiceInterfaceDTO other = (RpcServiceInterfaceDTO) obj; + return getInterfaceName().equals(other.getInterfaceName()) + && getInterfaceUrlSuffix().equals(other.getInterfaceUrlSuffix()) + && getInterfaceMajorVersion() == other.getInterfaceMajorVersion() + && getInterfaceMinorVersion() == other.getInterfaceMinorVersion(); + } + + @Override + public int hashCode() + { + int hash = getInterfaceName().hashCode(); + hash = hash * 31 + getInterfaceUrlSuffix().hashCode(); + hash = hash * 31 + getInterfaceMajorVersion(); + hash = hash * 31 + getInterfaceMinorVersion(); + return hash; + } + + @Override + public String toString() + { + StringBuilder sb = new StringBuilder(); + sb.append("RpcServiceInterface["); + sb.append(getInterfaceName()); + sb.append(","); + sb.append(getInterfaceUrlSuffix()); + sb.append(",v."); + sb.append(getInterfaceMajorVersion()); + sb.append("."); + sb.append(getInterfaceMinorVersion()); + sb.append("]"); + return sb.toString(); + } +} diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponentTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponentTest.java index cb66e4805aec17e70e96dd1680e04f2ad135647f..12c46e57cc63d6a535540338dfcf0d5730b4bddb 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponentTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/DssComponentTest.java @@ -33,7 +33,7 @@ import org.testng.annotations.Test; import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; import ch.systemsx.cisd.openbis.dss.component.IDataSetDss; import ch.systemsx.cisd.openbis.dss.rpc.client.IDssServiceRpcFactory; -import ch.systemsx.cisd.openbis.dss.rpc.shared.DssServiceRpcInterface; +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.FileInfoDssDTO; import ch.systemsx.cisd.openbis.dss.rpc.shared.FileInfoDssBuilder; import ch.systemsx.cisd.openbis.dss.rpc.shared.IDssServiceRpcGeneric; @@ -158,8 +158,8 @@ public class DssComponentTest extends AbstractFileSystemTestCase final FileInfoDssDTO[] fileInfos = new FileInfoDssDTO[list.size()]; list.toArray(fileInfos); - final DssServiceRpcInterface[] ifaces = new DssServiceRpcInterface[1]; - final DssServiceRpcInterface iface = new DssServiceRpcInterface(); + final RpcServiceInterfaceDTO[] ifaces = new RpcServiceInterfaceDTO[1]; + final RpcServiceInterfaceDTO iface = new RpcServiceInterfaceDTO(); iface.setInterfaceName("V1"); iface.setInterfaceUrlSuffix("/rpc/v1"); ifaces[0] = iface; diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/RpcServiceInterfaceTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/RpcServiceInterfaceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..eac66db9f9b86c91fa2be77d412486967e78d6ff --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/component/impl/RpcServiceInterfaceTest.java @@ -0,0 +1,61 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.dss.component.impl; + +import org.testng.AssertJUnit; +import org.testng.annotations.Test; + +import ch.systemsx.cisd.openbis.dss.rpc.shared.RpcServiceInterfaceDTO; + +/** + * @author Chandrasekhar Ramakrishnan + */ +public class RpcServiceInterfaceTest extends AssertJUnit +{ + @Test + public void testToString() + { + final RpcServiceInterfaceDTO iface = new RpcServiceInterfaceDTO(); + iface.setInterfaceName("DSS Generic"); + iface.setInterfaceUrlSuffix("/rpc/dss-generic/v1"); + iface.setInterfaceMajorVersion(1); + iface.setInterfaceMinorVersion(7); + assertEquals("RpcServiceInterface[DSS Generic,/rpc/dss-generic/v1,v.1.7]", iface.toString()); + } + + @Test + public void testEquality() + { + final int majorVersion = (int) (Math.random() * 10); + final int minorVersion = (int) (Math.random() * 100); + final RpcServiceInterfaceDTO iface1 = new RpcServiceInterfaceDTO(); + iface1.setInterfaceName("DSS Generic"); + iface1.setInterfaceUrlSuffix("/rpc/dss-generic/v1"); + iface1.setInterfaceMajorVersion(majorVersion); + iface1.setInterfaceMinorVersion(minorVersion); + + final RpcServiceInterfaceDTO iface2 = new RpcServiceInterfaceDTO(); + iface2.setInterfaceName("DSS Generic"); + iface2.setInterfaceUrlSuffix("/rpc/dss-generic/v1"); + iface2.setInterfaceMajorVersion(majorVersion); + iface2.setInterfaceMinorVersion(minorVersion); + + assertTrue(iface1 != iface2); + assertEquals(iface1, iface2); + assertEquals(iface1.hashCode(), iface2.hashCode()); + } +}