configuration entry store should be able to read the defect format of earlier versions

This commit is contained in:
Sebastian Sdorra
2013-09-16 11:43:50 +02:00
parent ac365b6329
commit 364ecfbdb8
3 changed files with 64 additions and 5 deletions

View File

@@ -346,7 +346,7 @@ public class JAXBConfigurationEntryStore<V>
// configuration // configuration
reader.nextTag(); reader.nextTag();
// entry start // entry start
reader.nextTag(); reader.nextTag();
@@ -366,6 +366,7 @@ public class JAXBConfigurationEntryStore<V>
if (!element.isNil()) if (!element.isNil())
{ {
V v = element.getValue(); V v = element.getValue();
logger.trace("add element {} to configuration entry store", v); logger.trace("add element {} to configuration entry store", v);
entries.put(key, v); entries.put(key, v);
@@ -375,11 +376,13 @@ public class JAXBConfigurationEntryStore<V>
logger.warn("could not unmarshall object of entry store"); logger.warn("could not unmarshall object of entry store");
} }
// closed entry tag // closed or new entry tag
reader.nextTag(); if (reader.nextTag() == XMLStreamReader.END_ELEMENT)
{
// start new entry // fixed format, start new entry
reader.nextTag(); reader.nextTag();
}
} }
} }
catch (Exception ex) catch (Exception ex)
@@ -412,6 +415,7 @@ public class JAXBConfigurationEntryStore<V>
); );
//J+ //J+
writer.writeStartDocument(); writer.writeStartDocument();
// configuration start // configuration start
writer.writeStartElement(TAG_CONFIGURATION); writer.writeStartElement(TAG_CONFIGURATION);
@@ -421,11 +425,14 @@ public class JAXBConfigurationEntryStore<V>
for (Entry<String, V> e : entries.entrySet()) for (Entry<String, V> e : entries.entrySet())
{ {
// entry start // entry start
writer.writeStartElement(TAG_ENTRY); writer.writeStartElement(TAG_ENTRY);
// key start // key start
writer.writeStartElement(TAG_KEY); writer.writeStartElement(TAG_KEY);
writer.writeCharacters(e.getKey()); writer.writeCharacters(e.getKey());
// key end // key end
writer.writeEndElement(); writer.writeEndElement();
@@ -434,6 +441,7 @@ public class JAXBConfigurationEntryStore<V>
e.getValue()); e.getValue());
m.marshal(je, writer); m.marshal(je, writer);
// entry end // entry end
writer.writeEndElement(); writer.writeEndElement();
} }

View File

@@ -97,6 +97,30 @@ public class JAXBConfigurationEntryStoreTest
assertEquals("tuser3", a3.getName()); assertEquals("tuser3", a3.getName());
} }
/**
* Method description
*
*
* @throws IOException
*/
@Test
public void testLoadWrongFormat() throws IOException
{
ConfigurationEntryStore<AssignedPermission> store =
createPermissionStore(RESOURCE_WRONG);
AssignedPermission a1 = store.get("3ZOHKUePB3");
assertEquals("tuser", a1.getName());
AssignedPermission a2 = store.get("7COHL2j1G1");
assertEquals("tuser2", a2.getName());
AssignedPermission a3 = store.get("A0OHL3Qqw2");
assertEquals("tuser3", a3.getName());
}
/** /**
* Method description * Method description

View File

@@ -0,0 +1,27 @@
<?xml version="1.0" ?>
<configuration>
<entry>
<key>3ZOHKUePB3</key>
<value>
<group-permission>false</group-permission>
<name>tuser</name>
<permission>repository:*:READ</permission>
</value>
<entry>
<key>A0OHL3Qqw2</key>
<value>
<group-permission>false</group-permission>
<name>tuser3</name>
<permission>repository:*:OWNER</permission>
</value>
<entry>
<key>7COHL2j1G1</key>
<value>
<group-permission>false</group-permission>
<name>tuser2</name>
<permission>repository:*:WRITE</permission>
</value>
</entry>
</entry>
</entry>
</configuration>