Index: src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java =================================================================== --- src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java (revision 1478332) +++ src/main/java/org/apache/jackrabbit/oak/jcr/xml/TargetImportHandler.java (working copy) @@ -22,11 +22,10 @@ import java.util.List; import java.util.Map; import java.util.Set; + import javax.jcr.RepositoryException; import javax.jcr.ValueFactory; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.ListMultimap; import org.apache.jackrabbit.commons.NamespaceHelper; import org.apache.jackrabbit.oak.namepath.LocalNameMapper; import org.apache.jackrabbit.oak.namepath.NamePathMapper; @@ -34,6 +33,12 @@ import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; +import com.google.common.base.Function; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Iterables; +import com.google.common.collect.ListMultimap; +import com.google.common.collect.Maps; + /** * {@code TargetImportHandler} serves as the base class for the concrete * classes {@code {@link DocViewImportHandler}} and @@ -45,12 +50,20 @@ protected final ValueFactory valueFactory; protected final NamespaceHelper helper; private final ListMultimap documentContext = ArrayListMultimap.create(); - private Map documentPrefixMap = Collections.emptyMap(); + private final Map documentPrefixMap; protected TargetImportHandler(Importer importer, ValueFactory valueFactory, NamespaceHelper helper) { this.importer = importer; this.valueFactory = valueFactory; this.helper = helper; + + this.documentPrefixMap = Maps.transformValues(documentContext.asMap(), + new Function, String>() { + @Override + public String apply(Collection input) { + return Iterables.getLast(input, null); + } + }); } //--------------------------------------------------------< ImportHandler > @@ -58,7 +71,6 @@ @Override public void startPrefixMapping(String prefix, String uri) throws SAXException { documentContext.put(prefix, uri); - documentPrefixMap = createCurrentPrefixMap(); } @Override @@ -67,7 +79,6 @@ if (!uris.isEmpty()) { uris.remove(uris.size() - 1); } - documentPrefixMap = createCurrentPrefixMap(); } /** @@ -123,20 +134,6 @@ }); } - private Map createCurrentPrefixMap() { - Map result = new HashMap(); - Set>> entries = documentContext.asMap().entrySet(); - for (Map.Entry> entry : entries) { - String key = entry.getKey(); - List value = (List) entry.getValue(); - if (value != null && !value.isEmpty()) { - result.put(key, value.get(value.size() - 1)); - } - } - return result; - } - - protected class NameInfo { private final String localName;