cgspace-notes/docs/2022-10/index.html

762 lines
68 KiB
HTML
Raw Normal View History

2022-10-01 18:47:37 +02:00
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:title" content="October, 2022" />
<meta property="og:description" content="2022-10-01
Start a harvest on AReS last night
Yesterday I realized how to use GraphicsMagick with im4java and I want to re-visit some of my thumbnail tests
I&rsquo;m also interested in libvips support via jVips, though last time I checked it was only for Java 8
I filed an issue to ask about Java 11&#43; support
" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/2022-10/" />
<meta property="article:published_time" content="2022-10-01T19:45:36+03:00" />
2022-10-17 14:58:02 +02:00
<meta property="article:modified_time" content="2022-10-15T17:38:47+03:00" />
2022-10-01 18:47:37 +02:00
<meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="October, 2022"/>
<meta name="twitter:description" content="2022-10-01
Start a harvest on AReS last night
Yesterday I realized how to use GraphicsMagick with im4java and I want to re-visit some of my thumbnail tests
I&rsquo;m also interested in libvips support via jVips, though last time I checked it was only for Java 8
I filed an issue to ask about Java 11&#43; support
"/>
2022-10-09 20:19:38 +02:00
<meta name="generator" content="Hugo 0.104.3" />
2022-10-01 18:47:37 +02:00
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"headline": "October, 2022",
"url": "https://alanorth.github.io/cgspace-notes/2022-10/",
2022-10-17 14:58:02 +02:00
"wordCount": "2332",
2022-10-01 18:47:37 +02:00
"datePublished": "2022-10-01T19:45:36+03:00",
2022-10-17 14:58:02 +02:00
"dateModified": "2022-10-15T17:38:47+03:00",
2022-10-01 18:47:37 +02:00
"author": {
"@type": "Person",
"name": "Alan Orth"
},
"keywords": "Notes"
}
</script>
<link rel="canonical" href="https://alanorth.github.io/cgspace-notes/2022-10/">
<title>October, 2022 | CGSpace Notes</title>
<!-- combined, minified CSS -->
<link href="https://alanorth.github.io/cgspace-notes/css/style.c6ba80bc50669557645abe05f86b73cc5af84408ed20f1551a267bc19ece8228.css" rel="stylesheet" integrity="sha256-xrqAvFBmlVdkWr4F&#43;GtzzFr4RAjtIPFVGiZ7wZ7Ogig=" crossorigin="anonymous">
<!-- minified Font Awesome for SVG icons -->
<script defer src="https://alanorth.github.io/cgspace-notes/js/fontawesome.min.f5072c55a0721857184db93a50561d7dc13975b4de2e19db7f81eb5f3fa57270.js" integrity="sha256-9QcsVaByGFcYTbk6UFYdfcE5dbTeLhnbf4HrXz&#43;lcnA=" crossorigin="anonymous"></script>
<!-- RSS 2.0 feed -->
</head>
<body>
<div class="blog-masthead">
<div class="container">
<nav class="nav blog-nav">
<a class="nav-link " href="https://alanorth.github.io/cgspace-notes/">Home</a>
</nav>
</div>
</div>
<header class="blog-header">
<div class="container">
<h1 class="blog-title" dir="auto"><a href="https://alanorth.github.io/cgspace-notes/" rel="home">CGSpace Notes</a></h1>
<p class="lead blog-description" dir="auto">Documenting day-to-day work on the <a href="https://cgspace.cgiar.org">CGSpace</a> repository.</p>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-sm-8 blog-main">
<article class="blog-post">
<header>
<h2 class="blog-post-title" dir="auto"><a href="https://alanorth.github.io/cgspace-notes/2022-10/">October, 2022</a></h2>
<p class="blog-post-meta">
<time datetime="2022-10-01T19:45:36+03:00">Sat Oct 01, 2022</time>
in
<span class="fas fa-folder" aria-hidden="true"></span>&nbsp;<a href="/categories/notes/" rel="category tag">Notes</a>
</p>
</header>
<h2 id="2022-10-01">2022-10-01</h2>
<ul>
<li>Start a harvest on AReS last night</li>
<li>Yesterday I realized how to use <a href="https://im4java.sourceforge.net/docs/dev-guide.html">GraphicsMagick with im4java</a> and I want to re-visit some of my thumbnail tests
<ul>
<li>I&rsquo;m also interested in libvips support via jVips, though last time I checked it was only for Java 8</li>
<li>I filed <a href="https://github.com/criteo/JVips/issues/141">an issue to ask about Java 11+ support</a></li>
</ul>
</li>
</ul>
2022-10-03 15:26:30 +02:00
<h2 id="2022-10-03">2022-10-03</h2>
<ul>
<li>Make two pull requests for DSpace 7.x
<ul>
<li><a href="https://github.com/DSpace/DSpace/pull/8503">Update PDFBox dependency to version 2.0.27</a></li>
<li><a href="https://github.com/DSpace/DSpace/pull/8504">Update Apache commons-dbcp2 and commons-pool2 dependencies</a></li>
</ul>
</li>
<li>Udana had asked me about their RSS feed and it not showing the latest publications in his email inbox
<ul>
<li>He is using this feed from FeedBurner: <a href="https://feeds.feedburner.com/iwmi-cgspace">https://feeds.feedburner.com/iwmi-cgspace</a></li>
<li>I don&rsquo;t have access to the FeedBurner configuration, but I looked at the <a href="https://gist.github.com/alanorth/0c518fc571f450f8cc353c42cbdd277c">raw feed</a> and see it&rsquo;s just getting all the items in the IWMI community</li>
<li>This OpenSearch query should do the same: <code>https://cgspace.cgiar.org/open-search/discover?scope=10568/16814&amp;query=*&amp;sort_by=3&amp;order=DESC</code></li>
<li>The <code>sort_by=3</code> corresponds to <code>webui.itemlist.sort-option.3 = dateaccessioned:dc.date.accessioned:date</code> in dspace.cfg</li>
</ul>
</li>
<li>Peter sent me a CSV file a few days ago that he was unable to upload to CGSpace
<ul>
<li>The stacktrace from the error he was getting was:</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>Java stacktrace: java.lang.ClassCastException: org.apache.cocoon.servlet.multipart.PartInMemory cannot be cast to org.dspace.app.xmlui.cocoon.servlet.multipart.DSpacePartOnDisk
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.aspect.administrative.FlowMetadataImportUtils.processUploadCSV(FlowMetadataImportUtils.java:116)
</span></span><span style="display:flex;"><span> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
</span></span><span style="display:flex;"><span> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:155)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:3237)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2394)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:162)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:160)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.Context.call(Context.java:538)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.ScriptableObject.callMethod(ScriptableObject.java:1833)
</span></span><span style="display:flex;"><span> at org.mozilla.javascript.ScriptableObject.callMethod(ScriptableObject.java:1803)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.handleContinuation(FOM_JavaScriptInterpreter.java:698)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke(CallFunctionNode.java:94)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:82)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:186)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:260)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.SelectNode.invoke(SelectNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:186)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:260)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:107)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.buildPipeline(ConcreteTreeProcessor.java:186)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.buildPipeline(TreeProcessor.java:260)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:277)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.AspectGenerator.setup(AspectGenerator.java:81)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.prepareInternal(AbstractProcessingPipeline.java:480)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor267.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.prepareInternal(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.init(SitemapSource.java:292)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSource.&lt;init&gt;(SitemapSource.java:148)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.impl.SitemapSourceFactory.getSource(SitemapSourceFactory.java:62)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:153)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.source.CocoonSourceResolver.resolveURI(CocoonSourceResolver.java:183)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.generation.FileGenerator.setup(FileGenerator.java:99)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor255.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy190.setup(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.setupPipeline(AbstractProcessingPipeline.java:343)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.setupPipeline(AbstractCachingProcessingPipeline.java:710)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.preparePipeline(AbstractProcessingPipeline.java:466)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:411)
</span></span><span style="display:flex;"><span> at sun.reflect.GeneratedMethodAccessor331.invoke(Unknown Source)
</span></span><span style="display:flex;"><span> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
</span></span><span style="display:flex;"><span> at java.lang.reflect.Method.invoke(Method.java:498)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:71)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy189.process(Unknown Source)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:147)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:247)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:247)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke(MountNode.java:117)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:143)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:78)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:81)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:239)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:247)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:351)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:169)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.sitemap.SitemapServlet.service(SitemapServlet.java:84)
</span></span><span style="display:flex;"><span> at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:468)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:443)
</span></span><span style="display:flex;"><span> at org.apache.cocoon.servletservice.spring.ServletFactoryBean$ServiceInterceptor.invoke(ServletFactoryBean.java:264)
</span></span><span style="display:flex;"><span> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
</span></span><span style="display:flex;"><span> at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
</span></span><span style="display:flex;"><span> at com.sun.proxy.$Proxy186.service(Unknown Source)
</span></span><span style="display:flex;"><span> at org.dspace.springmvc.CocoonView.render(CocoonView.java:113)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1216)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1001)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:867)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:853)
</span></span><span style="display:flex;"><span> at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
</span></span><span style="display:flex;"><span> at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:827)
</span></span><span style="display:flex;"><span> at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:113)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.DSpaceCocoonServletFilter.doFilter(DSpaceCocoonServletFilter.java:160)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.dspace.app.xmlui.cocoon.servlet.multipart.DSpaceMultipartFilter.doFilter(DSpaceMultipartFilter.java:119)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.dspace.utils.servlet.DSpaceWebappServletFilter.doFilter(DSpaceWebappServletFilter.java:78)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
</span></span><span style="display:flex;"><span> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)
</span></span><span style="display:flex;"><span> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
</span></span><span style="display:flex;"><span> at org.apache.catalina.valves.CrawlerSessionManagerValve.invoke(CrawlerSessionManagerValve.java:235)
</span></span><span style="display:flex;"><span> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
</span></span><span style="display:flex;"><span> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
</span></span><span style="display:flex;"><span> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:451)
</span></span><span style="display:flex;"><span> at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1201)
</span></span><span style="display:flex;"><span> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
</span></span><span style="display:flex;"><span> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)
</span></span><span style="display:flex;"><span> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
</span></span><span style="display:flex;"><span> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
</span></span><span style="display:flex;"><span> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
</span></span><span style="display:flex;"><span> at java.lang.Thread.run(Thread.java:750)
</span></span></code></pre></div><ul>
<li>So this is a broken side effect from the <code>org.apache.cocoon.uploads.autosave=false</code> change I made a few weeks ago
<ul>
<li>Importing the CSV via the command line works fine</li>
</ul>
</li>
</ul>
2022-10-05 16:22:42 +02:00
<h2 id="2022-10-04">2022-10-04</h2>
<ul>
<li>I stumbled across more low-quality thumbnails on CGSpace
<ul>
<li>Some have the description &ldquo;Generated Thumbnail&rdquo;, and others are manually uploaded &ldquo;.jpg.jpg&rdquo; ones&hellip;</li>
<li>I want to develop some more thumbnail fixer scripts to the cgspace-java-helpers suite:
<ul>
<li>If an item has an <code>IM Thumbnail</code> and a <code>Generated Thumbnail</code> in the <code>THUMBNAIL</code> bundle, remove the <code>Generated Thumbnail</code></li>
<li>If an item has a PDF bitstream and a JPG bitstream with description /thumbnail/ in the ORIGINAL bundle, remove the /thumbnail/ bitstream in the ORIGINAL bundle and try to remove the /thumbnail/.jpg bitstream in the THUMBNAIL bundle</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="2022-10-05">2022-10-05</h2>
<ul>
<li>I updated the <a href="https://github.com/ilri/cgspace-java-helpers">cgspace-java-helpers</a> to include a new <code>FixLowQualityThumbnails</code> script to detect the low-quality thumbnails I found above</li>
<li>Add missing ORCID identifier for an Alliance author</li>
2022-10-07 20:29:35 +02:00
<li>I&rsquo;ve been running the <code>dspace cleanup -v</code> script every few weeks or months on CGSpace and assuming it finished successfully because I didn&rsquo;t get a error on the stdout/stderr, but today I noticed that the script keeps saying it is deleting the same bitstreams
<ul>
<li>I looked in dspace.log and found the error I used to see a lot:</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>Caused by: org.postgresql.util.PSQLException: ERROR: update or delete on table &#34;bitstream&#34; violates foreign key constraint &#34;bundle_primary_bitstream_id_fkey&#34; on table &#34;bundle&#34;
</span></span><span style="display:flex;"><span> Detail: Key (uuid)=(99b76ee4-15c6-458c-a940-866148bc7dee) is still referenced from table &#34;bundle&#34;.
</span></span></code></pre></div><ul>
<li>If I mark the primary bitstream as null manually the cleanup script continues until it finds a few more
<ul>
<li>I ended up with a long list of UUIDs to fix before the script would complete:</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ psql -d dspace -c <span style="color:#e6db74">&#34;update bundle set primary_bitstream_id=NULL where primary_bitstream_id in (&#39;b76d41c0-0a02-4f53-bfde-a840ccfff903&#39;,&#39;1981efaa-eadb-46cd-9d7b-12d7a8cff4c4&#39;,&#39;97a8b1fa-3c12-4122-9c7b-fc2a3eaf570d&#39;,&#39;99b76ee4-15c6-458c-a940-866148bc7dee&#39;,&#39;f330fc22-a787-46e2-b8d0-64cc3e166124&#39;,&#39;592f4a0d-1ed5-4663-be0e-958c0d3e653b&#39;,&#39;e73b3178-8f29-42bc-bfd1-1a454903343c&#39;,&#39;e3a5f592-ac23-4934-a2b2-26735fac0c4f&#39;,&#39;73f4ff6c-6679-44e8-8cbd-9f28a1df6927&#39;,&#39;11c9a75c-17a6-4966-a4e8-a473010eb34c&#39;,&#39;155faf93-92c5-4c17-866e-1db50b1f9687&#39;,&#39;8e073e9e-ab54-4d99-971a-66de073d51e3&#39;,&#39;76ddd62c-6499-4a8c-beea-3fc8c60200d8&#39;,&#39;2850fcc9-f450-430a-9317-c42def74e813&#39;,&#39;8fef3198-2aea-4bd8-aeab-bf5fccb46e42&#39;,&#39;9e3c3528-e20f-4da3-a0bd-ae9b8515b770&#39;)&#34;</span>
</span></span></code></pre></div><h2 id="2022-10-06">2022-10-06</h2>
<ul>
<li>I finished running the cleanup script on CGSpace and the before and after on the number of bitstreams is interesting:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ find /home/cgspace.cgiar.org/assetstore -type f | wc -l
</span></span><span style="display:flex;"><span>181094
</span></span><span style="display:flex;"><span>$ find /home/cgspace.cgiar.org/assetstore -type f | wc -l
</span></span><span style="display:flex;"><span>178329
</span></span></code></pre></div><ul>
<li>So that cleaned up ~2,700 bitstreams!</li>
<li>Interesting, someone on the DSpace Slack mentioned this as being a known issue with discussion, reproducers, and a pull request: <a href="https://github.com/DSpace/DSpace/issues/7348">https://github.com/DSpace/DSpace/issues/7348</a></li>
<li>I am having an issue with the new FixLowQualityThumbnails script on some communities like 10568/117865 and 10568/97114
<ul>
<li>For some reason it doesn&rsquo;t descend into the collections</li>
<li>Also, my old FixJpgJpgThumbnails doesn&rsquo;t either&hellip; weird</li>
<li>I might have to resort to getting a list of collections and doing it that way:</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ psql -h localhost -U postgres -d dspacetest -c <span style="color:#e6db74">&#39;SELECT ds6_collection2collectionhandle(uuid) FROM collection WHERE uuid in (SELECT uuid FROM collection);&#39;</span> |
</span></span><span style="display:flex;"><span> sed 1,2d |
</span></span><span style="display:flex;"><span> tac |
</span></span><span style="display:flex;"><span> sed 1,3d &gt; /tmp/collections
</span></span></code></pre></div><ul>
<li>Strange, I don&rsquo;t think doing it by collections is actually working because it says it&rsquo;s replacing the bitstreams, but it doesn&rsquo;t actually do it
<ul>
<li>I don&rsquo;t have time to figure out what&rsquo;s happening, because I see &ldquo;update_item&rdquo; in dspace.log when the script says it&rsquo;s doing it, but it doesn&rsquo;t do it</li>
<li>I might just extract a list of items that have .jpg.jpg thumbnails from the database and run the script through item mode</li>
<li>There might be a problem with the context commit logic&hellip;?</li>
</ul>
</li>
<li>I exported a list of items that have .jpg.jpg thumbnails on CGSpace:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ psql -h localhost -p <span style="color:#ae81ff">5432</span> -U postgres -d dspacetest -c <span style="color:#e6db74">&#34;SELECT ds6_bitstream2itemhandle(dspace_object_id) FROM metadatavalue WHERE text_value ~ &#39;.*\.(jpg|jpeg|JPG|JPEG)\.(jpg|jpeg|JPG|JPEG)&#39; AND dspace_object_id IS NOT NULL;&#34;</span> |
</span></span><span style="display:flex;"><span> sed 1,2d |
</span></span><span style="display:flex;"><span> tac |
</span></span><span style="display:flex;"><span> sed 1,3d |
</span></span><span style="display:flex;"><span> grep -v &#39;&#39; |
</span></span><span style="display:flex;"><span> sort -u |
</span></span><span style="display:flex;"><span> sed &#39;s/ //&#39; &gt; /tmp/jpgjpg-handles.txt
</span></span></code></pre></div><ul>
<li>I restarted DSpace Test because it had high load since yesterday and I don&rsquo;t know why</li>
<li>Run <code>check-duplicates.py</code> on the 1642 MARLO Innovations to try to include matches from the OICRs we uploaded last month
<ul>
<li>Then I processed those matches like I did with the OICRs themselves last month, and then cleaned them one last time with csv-metadata-quality, created a SAF bundle, and uploaded them to CGSpace</li>
<li>BTW this bumps CGSpace over 100,000 items&hellip;</li>
<li>Then I did the same for the 749 MARLO MELIAs and imported them to CGSpace</li>
</ul>
</li>
<li>Meeting about CG Core types with Abenet, Marie-Angelique, Sara, Margarita, and Valentina</li>
<li>I made some minor logic changes to the FixJpgJpgThumbnails script in cgspace-java-helpers
<ul>
<li>Now it checks to make sure the bitstream description is not empty or null, and also excludes Maps (in addition to Infographics) since those are likely to be JPEG files in the ORIGINAL bundle on purpose</li>
</ul>
</li>
</ul>
<h2 id="2022-10-07">2022-10-07</h2>
<ul>
<li>I did the matching and cleaning on the 512 MARLO Policies and uploaded them to CGSpace</li>
<li>I sent a list of the IDs and Handles for all four groups of MARLO items to Jose so he can do the redirects on their server:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ wc -l /tmp/*mappings.csv
</span></span><span style="display:flex;"><span> 1643 /tmp/crp-innovation-mappings.csv
</span></span><span style="display:flex;"><span> 750 /tmp/crp-melia-mappings.csv
</span></span><span style="display:flex;"><span> 683 /tmp/crp-oicr-mappings.csv
</span></span><span style="display:flex;"><span> 513 /tmp/crp-policy-mappings.csv
</span></span><span style="display:flex;"><span> 3589 total
</span></span></code></pre></div><ul>
<li>I fixed the mysterious issue with my cgspace-java-helpers scripts not working on communities and collections
<ul>
<li>It was because the code wasn&rsquo;t committing the context!</li>
<li>I ran both <code>FixJpgJpgThumbnails</code> and <code>FixLowQualityThumbnails</code> on a dozen or so large collections on CGSpace and processed about 1,200 low-quality thumbnails</li>
</ul>
</li>
<li>I did a complete re-sync of CGSpace to DSpace Test</li>
2022-10-05 16:22:42 +02:00
</ul>
2022-10-09 20:19:38 +02:00
<h2 id="2022-10-08">2022-10-08</h2>
<ul>
<li>Start a harvest on AReS</li>
<li>Experiment with PDF thumbnails in ImageMagick again, I found an <a href="https://legacy.imagemagick.org/Usage/thumbnails/">interesting reference on their legacy website</a> saying we can use <code>-unsharp</code> after <code>-thumbnail</code> to make them less blurry
<ul>
<li>There are a few examples for unsharp values (starting from a DSpace default of a flattened JPEG from the PDF, then the thumbnail in a second operation:</li>
</ul>
</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>$ convert <span style="color:#e6db74">&#39;10568-103447.pdf[0]&#39;</span> -flatten 10568-103447-dspace-step1.pdf.jpg
</span></span><span style="display:flex;"><span>$ convert 10568-103447-dspace-step1.pdf.jpg -thumbnail 600x600 -unsharp 0x.5 10568-103447-dspace-step2-600-unsharp.pdf.jpg
</span></span><span style="display:flex;"><span>$ convert 10568-103447-dspace-step1.pdf.jpg -thumbnail 600x600 -unsharp 2x0.5+0.7+0 10568-103447-dspace-step2-600-unsharp2.pdf.jpg
</span></span><span style="display:flex;"><span>$ convert 10568-103447-dspace-step1.pdf.jpg -thumbnail 600x600 -unsharp 0x0.75+0.75+0.008 10568-103447-dspace-step2-600-unsharp3.pdf.jpg
</span></span><span style="display:flex;"><span>$ convert 10568-103447-dspace-step1.pdf.jpg -thumbnail 600x600 -unsharp 1.5x1+0.7+0.02 10568-103447-dspace-step2-600-unsharp4.pdf.jpg
</span></span></code></pre></div><ul>
<li>I merged all the changes from <code>6_x-dev</code> to <code>6_x-prod</code> after having run them on DSpace Test for the last ten days</li>
</ul>
2022-10-13 06:10:59 +02:00
<h2 id="2022-10-11">2022-10-11</h2>
<ul>
<li>I put together the microsite for improving DSpace PDF thumbnails: <a href="https://github.com/alanorth/improved-dspace-thumbnails/">https://github.com/alanorth/improved-dspace-thumbnails/</a>
<ul>
<li>I need to make the pull request to DSpace</li>
</ul>
</li>
<li>I also discussed the thumbnails with Dani in Addis</li>
</ul>
<h2 id="2022-10-12">2022-10-12</h2>
<ul>
<li>I submitted a pull request to DSpace 7 for the <code>-unsharp 0x0.5</code> change: <a href="https://github.com/DSpace/DSpace/pull/8515">https://github.com/DSpace/DSpace/pull/8515</a></li>
<li>I did some tests on CGSpace and verified that MEL will indeed need admin permissions on every collection that they want to map to</li>
<li>I had a call with Salem and he asked me about redirecting from some CRP duplicates that exist in both MELSpace and CGSpace
<ul>
<li>We decided that the only way is to use an HTTP 301 redirect in the nginx web server, but I said that I&rsquo;d check with CNRI to see if there was a way to do this within the Handle system</li>
</ul>
</li>
</ul>
2022-10-15 16:38:47 +02:00
<h2 id="2022-10-13">2022-10-13</h2>
<ul>
<li>Disable the REST API cache on CGSpace temporarily to see if that fixes a strange problem we are seeing with listing publications on ilri.org</li>
<li>Meeting with MEL, MARLO, and CG Core people to continue discussing <code>dcterms.type</code></li>
<li>I added the new MEL account to all the appropriate authorizations for Initiatives that ICARDA is involved in on CGSpace
<ul>
<li>I still have to add the few that WorldFish is involved in</li>
</ul>
</li>
</ul>
<h2 id="2022-10-14">2022-10-14</h2>
<ul>
<li>Abenet finalized adding the MEL user to all initiative collections on CGSpace</li>
<li>Re-sync CGSpace to DSpace Test to get the new MEL user and authorizations</li>
<li>I checked ilri.org and I see more publications for 2021 and earlier
<ul>
<li>The results are still strange though because I only see a few for each year</li>
</ul>
</li>
</ul>
<h2 id="2022-10-15">2022-10-15</h2>
<ul>
<li>I&rsquo;m going to turn the REST API cache on CGSpace back on to see if the ilri.org publications thing gets broken again</li>
<li>Start a harvest on AReS</li>
</ul>
2022-10-17 14:58:02 +02:00
<h2 id="2022-10-16">2022-10-16</h2>
<ul>
<li>The harvest on AReS finished but somehow there are 1,100 less items than the previous indexing&hellip; hmmm
<ul>
<li>I don&rsquo;t see any hits from MELSpace there so I will start another harvest&hellip;</li>
<li>After starting the harvesting the load on the server went up to 20 and UptimeRobot said CGSpace was down for three hours, sigh</li>
<li>I stopped the harvesting and the load went down immediately</li>
<li>I am trying to find a pattern with the load on Sundays</li>
</ul>
</li>
<li>I see this in the AReS backend logs:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-console" data-lang="console"><span style="display:flex;"><span>[Nest] 1 - 10/16/2022, 6:42:04 PM [HarvesterService] Starting Harvest =&gt;0
</span></span><span style="display:flex;"><span>[Nest] 1 - 10/16/2022, 6:42:07 PM [HarvesterService] Starting Harvest =&gt;101555
</span></span><span style="display:flex;"><span>[Nest] 1 - 10/16/2022, 6:42:10 PM [HarvesterService] Starting Harvest =&gt;4936
</span></span></code></pre></div><ul>
<li>Which means MELSpace is having some issue</li>
<li>I&rsquo;m not sure what was going on on CGSpace yesterday, but the load was indeed very high according to Munin:</li>
</ul>
<p><img src="/cgspace-notes/2022/10/cpu-day.png" alt="CGSpace CPU load day"></p>
<ul>
<li>The pattern is clear on Sundays if you look at the past month:</li>
</ul>
<p><img src="/cgspace-notes/2022/10/cpu-month.png" alt="CGSpace CPU load month"></p>
<ul>
<li>I have yet to find an increased nginx request pattern correlating with the increased load, but looking back on the last year it seems something started happening around March, 2022, and also I start seeing CPU steal in July (red coming from the top of the graph):</li>
</ul>
<p><img src="/cgspace-notes/2022/10/cpu-year.png" alt="CGSpace CPU load year"></p>
<ul>
<li>The amount of CPU steal is very low if I look at it now, around 1 or 2 percent, but what&rsquo;s happening now reminds me of the mysterious load problems I had in 2019-03 that were due to CPU steal</li>
</ul>
2022-10-01 18:47:37 +02:00
<!-- raw HTML omitted -->
</article>
</div> <!-- /.blog-main -->
<aside class="col-sm-3 ml-auto blog-sidebar">
<section class="sidebar-module">
<h4>Recent Posts</h4>
<ol class="list-unstyled">
<li><a href="/cgspace-notes/2022-10/">October, 2022</a></li>
<li><a href="/cgspace-notes/2022-09/">September, 2022</a></li>
<li><a href="/cgspace-notes/2022-08/">August, 2022</a></li>
<li><a href="/cgspace-notes/2022-07/">July, 2022</a></li>
<li><a href="/cgspace-notes/2022-06/">June, 2022</a></li>
</ol>
</section>
<section class="sidebar-module">
<h4>Links</h4>
<ol class="list-unstyled">
<li><a href="https://cgspace.cgiar.org">CGSpace</a></li>
<li><a href="https://dspacetest.cgiar.org">DSpace Test</a></li>
<li><a href="https://github.com/ilri/DSpace">CGSpace @ GitHub</a></li>
</ol>
</section>
</aside>
</div> <!-- /.row -->
</div> <!-- /.container -->
<footer class="blog-footer">
<p dir="auto">
Blog template created by <a href="https://twitter.com/mdo">@mdo</a>, ported to Hugo by <a href='https://twitter.com/mralanorth'>@mralanorth</a>.
</p>
<p>
<a href="#">Back to top</a>
</p>
</footer>
</body>
</html>