Skip to content

Commit

Permalink
STXM-11 Add unregister methods
Browse files Browse the repository at this point in the history
  • Loading branch information
bstansberry committed Jan 6, 2012
1 parent 6bb456f commit 8f05c65
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/main/java/org/jboss/staxmapper/XMLMapper.java
Expand Up @@ -42,6 +42,13 @@ public interface XMLMapper {
*/
void registerRootElement(QName name, XMLElementReader<?> reader);

/**
* Removes a {@link #registerRootElement(QName, XMLElementReader) previously registered root element}.
*
* @param name the element name
*/
void unregisterRootElement(QName name);

/**
* Add a known root attribute which can be read by {@link XMLExtendedStreamReader#handleAttribute(Object, int)}.
*
Expand All @@ -50,6 +57,13 @@ public interface XMLMapper {
*/
void registerRootAttribute(QName name, XMLAttributeReader<?> reader);

/**
* Removes a {@link #registerRootAttribute(QName, XMLAttributeReader) previously registered root attribute}.
*
* @param name the element name
*/
void unregisterRootAttribute(QName name);

/**
* Parse a document. The document must have a known, registered root element which can accept the given root object.
*
Expand Down Expand Up @@ -78,7 +92,7 @@ public interface XMLMapper {
*/
@Deprecated
void deparseDocument(XMLContentWriter contentWriter, XMLStreamWriter streamWriter) throws XMLStreamException;

/**
* A factory for creating an instance of {@link XMLMapper}.
*/
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/org/jboss/staxmapper/XMLMapperImpl.java
Expand Up @@ -45,12 +45,22 @@ public void registerRootElement(QName name, XMLElementReader<?> reader) {
}
}

@Override
public void unregisterRootElement(QName name) {
rootElements.remove(name);
}

public void registerRootAttribute(QName name, XMLAttributeReader<?> reader) {
if (rootAttributes.putIfAbsent(name, reader) != null) {
throw new IllegalArgumentException("Root attribute for " + name + " already registered");
}
}

@Override
public void unregisterRootAttribute(QName name) {
rootAttributes.remove(name);
}

public void parseDocument(Object rootObject, XMLStreamReader reader) throws XMLStreamException {
try {
reader.require(START_DOCUMENT, null, null);
Expand Down

0 comments on commit 8f05c65

Please sign in to comment.