001package jmri.jmrix.dccpp.network.configurexml; 002 003import jmri.jmrix.configurexml.AbstractNetworkConnectionConfigXml; 004import jmri.jmrix.dccpp.network.ConnectionConfig; 005import jmri.jmrix.dccpp.network.DCCppEthernetAdapter; 006import org.jdom2.Element; 007 008/** 009 * Handle XML persistence of layout connections by persisting the DCC-EX Server 010 * (and connections). Note this is named as the XML version of a 011 * ConnectionConfig object, but it's actually persisting the DCC-EX Server. 012 * <p> 013 * This class is invoked from jmrix.JmrixConfigPaneXml on write, as that class 014 * is the one actually registered. Reads are brought here directly via the class 015 * attribute in the XML. 016 * 017 * @author Paul Bender Copyright (C) 2011 018 * @author Mark Underwood Copyright (C) 2015 019 * @author Chad Francis Copyright (C) 2026 020 */ 021public class ConnectionConfigXml extends AbstractNetworkConnectionConfigXml { 022 023 public ConnectionConfigXml() { 024 super(); 025 } 026 027 @Override 028 protected void getInstance() { 029 if (adapter == null) { 030 adapter = new DCCppEthernetAdapter(); 031 } 032 } 033 034 @Override 035 protected void getInstance(Object object) { 036 adapter = ((ConnectionConfig) object).getAdapter(); 037 } 038 039 @Override 040 protected void register() { 041 this.register(new ConnectionConfig(adapter)); 042 } 043 044 @Override 045 protected void extendElement(Element e) { 046 e.setAttribute("reconnectEnabled", 047 adapter.getAllowConnectionRecovery() ? "true" : "false"); 048 } 049 050 @Override 051 protected void unpackElement(Element shared, Element perNode) { 052 if (shared.getAttribute("reconnectEnabled") != null) { 053 boolean enabled = shared.getAttribute("reconnectEnabled").getValue().equals("true"); 054 adapter.setAllowConnectionRecovery(enabled); 055 if (enabled) { 056 adapter.setReconnectMaxAttempts(-1); 057 } 058 } 059 } 060 061}