package org.dcm4che3.conf.dicom; import org.dcm4che3.conf.api.extensions.CommonConnectionExtension; import org.dcm4che3.conf.core.api.ConfigurableClass; import org.dcm4che3.conf.core.api.ConfigurableProperty; import org.dcm4che3.conf.core.api.ConfigurationException; import org.dcm4che3.conf.dicom.misc.DeepEquals; import org.dcm4che3.net.Connection; import org.dcm4che3.net.ConnectionExtension; import org.dcm4che3.net.Device; import org.junit.Assert; import org.junit.Test; import java.io.IOException; import java.security.GeneralSecurityException; public class ConnectionExtensionTest { @ConfigurableClass public static class MyConnectionExtension1 extends CommonConnectionExtension { @ConfigurableProperty private String myProperty; public String getMyProperty() { return myProperty; } public void setMyProperty(String myProperty) { this.myProperty = myProperty; } } @ConfigurableClass public static class MyConnectionExtension2 extends CommonConnectionExtension { @ConfigurableProperty private String myOtherProperty; public String getMyOtherProperty() { return myOtherProperty; } public void setMyOtherProperty(String myOtherProperty) { this.myOtherProperty = myOtherProperty; } } @Test public void test() throws ConfigurationException, IOException, GeneralSecurityException { System.setProperty("org.dcm4che.conf.filename", "target/config.json"); CommonDicomConfigurationWithHL7 configurationWithHL7 = new DicomConfigurationBuilder(System.getProperties()) .registerExtensionForBaseExtension(MyConnectionExtension1.class, ConnectionExtension.class) .registerExtensionForBaseExtension(MyConnectionExtension2.class, ConnectionExtension.class) .build(); Device aDevice = new Device("aDevice"); // 1 extension Connection conn = new Connection("myConn1", "local"); MyConnectionExtension1 myConnectionExtension1 = new MyConnectionExtension1(); myConnectionExtension1.setMyProperty("aValue1"); conn.addExtension(myConnectionExtension1); aDevice.addConnection(conn); // 2 extension Connection conn2 = new Connection("myConn2", "remote"); MyConnectionExtension1 connectionExtension21 = new MyConnectionExtension1(); connectionExtension21.setMyProperty("myValue2"); MyConnectionExtension2 connectionExtension22 = new MyConnectionExtension2(); connectionExtension22.setMyOtherProperty("myValue3"); conn2.addExtension(connectionExtension21); conn2.addExtension(connectionExtension22); aDevice.addConnection(conn2); // no extension aDevice.addConnection(new Connection("myConn3", "0.0.0.0")); configurationWithHL7.purgeConfiguration(); configurationWithHL7.persist(aDevice); Device loaded = configurationWithHL7.findDevice("aDevice"); Assert.assertTrue(DeepEquals.deepEquals(loaded, aDevice)); // try reconfigure aDevice.reconfigure(loaded); Assert.assertTrue(DeepEquals.deepEquals(loaded, aDevice)); // try reconfigure an empty device Device aDevice1 = new Device("aDevice"); aDevice1.reconfigure(loaded); Assert.assertTrue(DeepEquals.deepEquals(loaded, aDevice1)); } }