diff --git a/src/main/java/org/olat/core/gui/components/Window.java b/src/main/java/org/olat/core/gui/components/Window.java index f4ebd4ad67ff252a0181ebfbbef7854842a04d3d..c9c5cb8fff3b761623a26237a5db987cc0a33057 100644 --- a/src/main/java/org/olat/core/gui/components/Window.java +++ b/src/main/java/org/olat/core/gui/components/Window.java @@ -41,6 +41,7 @@ import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.dispatcher.DispatcherModule; import org.olat.core.dispatcher.mapper.MapperService; +import org.olat.core.dispatcher.mapper.manager.MapperKey; import org.olat.core.gui.GlobalSettings; import org.olat.core.gui.UserRequest; import org.olat.core.gui.Windows; @@ -489,9 +490,10 @@ public class Window extends AbstractComponent { // create a mapper which maps this mediaresource, and serves it once only MediaResourceMapper extMRM = new MediaResourceMapper(); extMRM.setMediaResource(mmr); - String res = CoreSpringFactory.getImpl(MapperService.class).register(ureq.getUserSession(), extMRM) + "/"; + MapperKey mapperKey = CoreSpringFactory.getImpl(MapperService.class).register(ureq.getUserSession(), extMRM); + String resUrl = mapperKey.getUrl() + "/"; // e.g. res = /olat/m/10001/ - Command rmrcom = CommandFactory.createParentRedirectForExternalResource(res); + Command rmrcom = CommandFactory.createParentRedirectForExternalResource(resUrl); wbackofficeImpl.sendCommandTo(rmrcom); if (isDebugLog) { long durationAfterCreateMediaResourceMapper = System.currentTimeMillis() - debug_start; diff --git a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java index 4e82911f5b728fa2cdfa616145a741519a76c1c9..310580c26d0c02ded392b304ef0fa78c5e58b0c4 100644 --- a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java +++ b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java @@ -29,6 +29,7 @@ import org.olat.core.gui.util.CSSHelper; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; +import org.olat.core.util.StringHelper; import org.olat.core.util.io.ShieldInputStream; import org.olat.core.util.vfs.VFSLeaf; import org.olat.search.service.SearchResourceContext; @@ -87,16 +88,28 @@ public class WordOOXMLDocument extends FileDocument { doc.setContent(0, dh.getContent()); } else if(name.startsWith(HEADER) && name.endsWith(".xml")) { String position = name.substring(HEADER.length(), name.indexOf(".xml")); - - OfficeDocumentHandler dh = new OfficeDocumentHandler(); - parse(new ShieldInputStream(zip), dh); - doc.setHeader(Integer.parseInt(position), dh.getContent()); + if(StringHelper.isLong(position)) { + try { + OfficeDocumentHandler dh = new OfficeDocumentHandler(); + parse(new ShieldInputStream(zip), dh); + doc.setHeader(Integer.parseInt(position), dh.getContent()); + } catch (NumberFormatException e) { + log.warn("", e); + //if position not a position, go head + } + } } else if(name.startsWith(FOOTER) && name.endsWith(".xml")) { String position = name.substring(FOOTER.length(), name.indexOf(".xml")); - - OfficeDocumentHandler dh = new OfficeDocumentHandler(); - parse(new ShieldInputStream(zip), dh); - doc.setFooter(Integer.parseInt(position), dh.getContent()); + if(StringHelper.isLong(position)) { + try { + OfficeDocumentHandler dh = new OfficeDocumentHandler(); + parse(new ShieldInputStream(zip), dh); + doc.setFooter(Integer.parseInt(position), dh.getContent()); + } catch (NumberFormatException e) { + log.warn("", e); + //if position not a position, go head + } + } } entry = zip.getNextEntry(); }