diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java index 983c208145..449559371c 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java @@ -18,6 +18,8 @@ */ package org.alfresco.repo.dictionary; +import java.io.IOException; +import java.io.InputStream; import java.io.Serializable; import java.util.Collection; import java.util.HashSet; @@ -637,7 +639,27 @@ public class DictionaryModelType implements ContentServicePolicies.OnContentUpda if (contentReader != null) { // Create a model from the current content - M2Model m2Model = M2Model.createModel(contentReader.getContentInputStream()); + M2Model m2Model = null; + InputStream is = null; + try + { + is = contentReader.getContentInputStream(); + m2Model = M2Model.createModel(is); + } + finally + { + if (is != null) + { + try + { + is.close(); + } + catch (IOException e) + { + logger.error("Failed to close input stream for " + nodeRef); + } + } + } // Try and compile the model CompiledModel compiledModel= m2Model.compile(dictionaryDAO, namespaceDAO); diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java index b88e9893e3..ed6e1fdfdc 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryRepositoryBootstrap.java @@ -18,6 +18,8 @@ */ package org.alfresco.repo.dictionary; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -474,7 +476,26 @@ public class DictionaryRepositoryBootstrap extends AbstractLifecycleBean impleme } else { - model = M2Model.createModel(contentReader.getContentInputStream()); + InputStream is = null; + try + { + is = contentReader.getContentInputStream(); + model = M2Model.createModel(is); + } + finally + { + if (is != null) + { + try + { + is.close(); + } + catch (IOException e) + { + logger.error("Failed to close input stream for " + nodeRef); + } + } + } } } // TODO should we inactivate the model node and put the error somewhere??