throw parsing exception if top level element is not <repository> (FELIX-1948)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@891674 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
index 860ccb9..8646bba 100644
--- a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
+++ b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
@@ -65,6 +65,7 @@
private Locator locator;
private ISigilBundle bundle;
private IPackageExport export;
+ private int depth;
public OBRHandler( URL obrURL, File bundleCache, OBRListener listener )
@@ -83,7 +84,10 @@
public void startElement( String uri, String localName, String qName, Attributes attributes ) throws SAXException
{
- if ( "resource".equals( qName ) )
+ if ( depth++ == 0 && !"repository".equals( qName ) ) {
+ throw new SAXParseException("Invalid OBR document, expected repository top level element", locator);
+ }
+ else if ( "resource".equals( qName ) )
{
startResource( attributes );
}
@@ -104,6 +108,7 @@
public void endElement( String uri, String localName, String qName ) throws SAXException
{
+ depth--;
if ( "resource".equals( qName ) )
{
endResource();