From 456b63bf4968cb5288ea492fcaaf7d9ffbba877c Mon Sep 17 00:00:00 2001 From: David LaBissoniere Date: Fri, 24 Sep 2010 15:32:31 -0500 Subject: [PATCH] Proposed fix for bug7084: Explicit MAC persistence Avoided adding extra field to network assoc database table by encoding whether MAC is explicit in the MAC field itself (prefixed with 'X'). Since we aren't likely changing anything else in the schema for 2.6, this seems reasonable and simplifies upgrading. Up for discussion, however. --- .../workspace/persistence/PersistenceAdapterImpl.java | 10 ++++++++++ .../persistence/impls/AssociationPersistenceUtil.java | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/service/service/java/source/src/org/globus/workspace/persistence/PersistenceAdapterImpl.java b/service/service/java/source/src/org/globus/workspace/persistence/PersistenceAdapterImpl.java index 6300c8c2..6fdfac8b 100644 --- a/service/service/java/source/src/org/globus/workspace/persistence/PersistenceAdapterImpl.java +++ b/service/service/java/source/src/org/globus/workspace/persistence/PersistenceAdapterImpl.java @@ -1741,6 +1741,16 @@ public synchronized Hashtable currentAssociations(boolean cachedIsFine) rs2.getString(6), rs2.getString(7)); entry.setInUse(rs2.getBoolean(8)); + + // Encoding that MAC is explicit in the MAC field itself. + // better to introduce a new field to schema? + String mac = entry.getMac(); + if (mac.startsWith(AssociationPersistenceUtil.EXPLICIT_MAC_PREFIX)) { + mac = mac.substring(AssociationPersistenceUtil.EXPLICIT_MAC_PREFIX.length()); + entry.setMac(mac); + entry.setExplicitMac(true); + } + entries.add(entry); } assoc.setEntries(entries); diff --git a/service/service/java/source/src/org/globus/workspace/persistence/impls/AssociationPersistenceUtil.java b/service/service/java/source/src/org/globus/workspace/persistence/impls/AssociationPersistenceUtil.java index b2775ecc..9078da28 100644 --- a/service/service/java/source/src/org/globus/workspace/persistence/impls/AssociationPersistenceUtil.java +++ b/service/service/java/source/src/org/globus/workspace/persistence/impls/AssociationPersistenceUtil.java @@ -31,6 +31,8 @@ public class AssociationPersistenceUtil implements PersistenceAdapterConstants { + public static final String EXPLICIT_MAC_PREFIX = "X"; + // not necessary to switch to prep statement, this only happens at startup public static String[] insertAllAssociationsSQL(Hashtable associations) { @@ -79,7 +81,9 @@ public static String[] insertAllAssociationsSQL(Hashtable associations) { append("'"); if (entry.getMac() != null) { + // Prefix explicit MAC addresses so they can be detected on load buf.append(", '"). + append(entry.isExplicitMac() ? EXPLICIT_MAC_PREFIX : ""). append(entry.getMac()). append("'"); } else {