|
From: <fg...@us...> - 2013-04-02 21:22:18
|
Revision: 4212
http://openutils.svn.sourceforge.net/openutils/?rev=4212&view=rev
Author: fgiust
Date: 2013-04-02 21:22:09 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
update license headers
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/bean/TagCloud.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialogSafeMultivalueSaveHandler.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/HierarchyBoboIndexReader.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/setup/TagCloudModuleVersionHandler.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-parent</artifactId>
@@ -55,6 +56,30 @@
<useManifestOnlyJar>false</useManifestOnlyJar>
</configuration>
</plugin>
+ <plugin>
+ <groupId>com.mycila.maven-license-plugin</groupId>
+ <artifactId>maven-license-plugin</artifactId>
+ <version>1.5.0</version>
+ <configuration>
+ <header>src/main/etc/header.txt</header>
+ <includes>
+ <include>src/**/*.java</include>
+ </includes>
+ <properties>
+ <year>${project.inceptionYear}-2013</year>
+ <name>${project.name}</name>
+ <description>${project.description}</description>
+ <url>${project.url}</url>
+ </properties>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>check</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
<resources>
<resource>
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/bean/TagCloud.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/bean/TagCloud.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/bean/TagCloud.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialogSafeMultivalueSaveHandler.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialogSafeMultivalueSaveHandler.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialogSafeMultivalueSaveHandler.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/HierarchyBoboIndexReader.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/HierarchyBoboIndexReader.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/HierarchyBoboIndexReader.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/setup/TagCloudModuleVersionHandler.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/setup/TagCloudModuleVersionHandler.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/setup/TagCloudModuleVersionHandler.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-04-02 21:08:55 UTC (rev 4211)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-04-02 21:22:09 UTC (rev 4212)
@@ -1,7 +1,7 @@
/**
*
* Tagcloud module for Magnolia CMS (http://www.openmindlab.com/lab/products/mgnltagcloud.html)
- * Copyright(C) 2010-2012, Openmind S.r.l. http://www.openmindonline.it
+ * Copyright(C) 2010-2013, Openmind S.r.l. http://www.openmindonline.it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fg...@us...> - 2013-04-02 21:52:31
|
Revision: 4216
http://openutils.svn.sourceforge.net/openutils/?rev=4216&view=rev
Author: fgiust
Date: 2013-04-02 21:52:23 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
jackrabbit 2.4/lucene 3.6 compatibility - actually requires a patch to bobo-browse since an updated jar is not available
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-02 21:24:15 UTC (rev 4215)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-02 21:52:23 UTC (rev 4216)
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-parent</artifactId>
@@ -25,8 +26,10 @@
</issueManagement>
<inceptionYear>2010</inceptionYear>
<scm>
- <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/magnoliamodules/trunk/openutils-mgnltagcloud</connection>
- <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/magnoliamodules/trunk/openutils-mgnltagcloud</developerConnection>
+ <connection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/magnoliamodules/trunk/openutils-mgnltagcloud
+ </connection>
+ <developerConnection>scm:svn:https://openutils.svn.sourceforge.net/svnroot/openutils/magnoliamodules/trunk/openutils-mgnltagcloud
+ </developerConnection>
<url>http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/trunk/openutils-mgnltagcloud</url>
</scm>
<build>
@@ -142,7 +145,13 @@
<dependency>
<groupId>com.browseengine.bobo</groupId>
<artifactId>bobo-browse</artifactId>
- <version>2.5.1</version>
+ <version>3.2.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>fastutil</groupId>
@@ -150,6 +159,18 @@
<version>5.0.5</version>
</dependency>
<dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>2.5.5</version><!-- temporarily used for bobo-browse patch -->
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
<groupId>net.sourceforge.openutils</groupId>
<artifactId>openutils-mgnltasks</artifactId>
<version>5.0.0</version>
@@ -181,6 +202,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>org.apache.lucene</groupId>
+ <artifactId>lucene-core</artifactId>
+ <version>3.6.0</version><!-- forces version 3.6, used in jackrabbit 2.6 (bobo-browse 3.2.0 actually depends on lucene 3.5) -->
+ </dependency>
+ <dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
@@ -201,6 +227,6 @@
</dependencies>
<properties>
<magnolia.version>4.5.6</magnolia.version>
- <jackrabbit.version>2.4.1</jackrabbit.version>
+ <jackrabbit.version>2.6.0</jackrabbit.version>
</properties>
</project>
\ No newline at end of file
Added: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java (rev 0)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java 2013-04-02 21:52:23 UTC (rev 4216)
@@ -0,0 +1,895 @@
+// lucene 3.6 compatibility patch for bobo-browse 3.2.0, see https://github.com/senseidb/bobo/commit/e78d91ef8a00965d8d55c819f967cac172c23d17
+/**
+ * Bobo Browse Engine - High performance faceted/parametric search implementation
+ * that handles various types of semi-structured data. Written in Java.
+ *
+ * Copyright (C) 2005-2006 John Wang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * To contact the project administrators for the bobo-browse project,
+ * please go to https://sourceforge.net/projects/bobo-browse/, or
+ * send mail to ow...@br....
+ */
+
+package com.browseengine.bobo.api;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import org.apache.log4j.Logger;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.FilterIndexReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.index.SegmentInfos;
+import org.apache.lucene.index.SegmentReader;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermEnum;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.ReaderUtil;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+
+import com.browseengine.bobo.facets.FacetHandler;
+import com.browseengine.bobo.facets.RuntimeFacetHandler;
+import com.browseengine.bobo.facets.RuntimeFacetHandlerFactory;
+
+
+/**
+ * bobo browse index reader
+ */
+public class BoboIndexReader extends FilterIndexReader
+{
+
+ private static final String SPRING_CONFIG = "bobo.spring";
+
+ private static Logger logger = Logger.getLogger(BoboIndexReader.class);
+
+ protected Map<String, FacetHandler< ? >> _facetHandlerMap;
+
+ protected Collection<FacetHandler< ? >> _facetHandlers;
+
+ protected Collection<RuntimeFacetHandlerFactory< ? , ? >> _runtimeFacetHandlerFactories;
+
+ protected Map<String, RuntimeFacetHandlerFactory< ? , ? >> _runtimeFacetHandlerFactoryMap;
+
+ protected WorkArea _workArea;
+
+ protected IndexReader _srcReader;
+
+ protected BoboIndexReader[] _subReaders = null;
+
+ protected int[] _starts = null;
+
+ private Directory _dir = null;
+
+ private final Map<String, Object> _facetDataMap = new HashMap<String, Object>();
+
+ private final ThreadLocal<Map<String, Object>> _runtimeFacetDataMap = new ThreadLocal<Map<String, Object>>()
+ {
+
+ protected Map<String, Object> initialValue()
+ {
+ return new HashMap<String, Object>();
+ }
+ };
+
+ private final ThreadLocal<Map<String, RuntimeFacetHandler< ? >>> _runtimeFacetHandlerMap = new ThreadLocal<Map<String, RuntimeFacetHandler< ? >>>()
+ {
+
+ protected Map<String, RuntimeFacetHandler< ? >> initialValue()
+ {
+ return new HashMap<String, RuntimeFacetHandler< ? >>();
+ }
+ };
+
+ /**
+ * Constructor
+ * @param reader Index reader
+ * @throws IOException
+ */
+ public static BoboIndexReader getInstance(IndexReader reader) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, null, null, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, WorkArea workArea) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, null, null, workArea);
+ }
+
+ /**
+ * Constructor.
+ * @param reader index reader
+ * @param facetHandlers List of facet handlers
+ * @throws IOException
+ */
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, facetHandlers, facetHandlerFactories, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers)
+ throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, facetHandlers, Collections.EMPTY_LIST, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories, WorkArea workArea) throws IOException
+ {
+ BoboIndexReader boboReader = new BoboIndexReader(reader, facetHandlers, facetHandlerFactories, workArea);
+ boboReader.facetInit();
+ return boboReader;
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader) throws IOException
+ {
+ return getInstanceAsSubReader(reader, null, null, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories) throws IOException
+ {
+ return getInstanceAsSubReader(reader, facetHandlers, facetHandlerFactories, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories, WorkArea workArea) throws IOException
+ {
+ BoboIndexReader boboReader = new BoboIndexReader(reader, facetHandlers, facetHandlerFactories, workArea, false);
+ boboReader.facetInit();
+ return boboReader;
+ }
+
+ @Override
+ public long getVersion()
+ {
+ try
+ {
+ SegmentInfos sinfos = new SegmentInfos();
+ sinfos.read(_dir);
+ return sinfos.getVersion();
+ }
+ catch (Exception e)
+ {
+ return 0L;
+ }
+ }
+
+ public IndexReader getInnerReader()
+ {
+ return in;
+ }
+
+ @Override
+ public synchronized IndexReader reopen() throws CorruptIndexException, IOException
+ {
+ IndexReader newInner = null;
+
+ SegmentInfos sinfos = new SegmentInfos();
+ sinfos.read(_dir);
+ int size = sinfos.size();
+
+ if (in instanceof MultiReader)
+ {
+ // setup current reader list
+ List<IndexReader> boboReaderList = new LinkedList<IndexReader>();
+ ReaderUtil.gatherSubReaders((List<IndexReader>) boboReaderList, in);
+ Map<String, BoboIndexReader> readerMap = new HashMap<String, BoboIndexReader>();
+ for (IndexReader reader : boboReaderList)
+ {
+ BoboIndexReader boboReader = (BoboIndexReader) reader;
+ SegmentReader sreader = (SegmentReader) (boboReader.in);
+ readerMap.put(sreader.getSegmentName(), boboReader);
+ }
+
+ ArrayList<BoboIndexReader> currentReaders = new ArrayList<BoboIndexReader>(size);
+ boolean isNewReader = false;
+ for (int i = 0; i < size; ++i)
+ {
+ SegmentInfo sinfo = (SegmentInfo) sinfos.info(i);
+ BoboIndexReader breader = readerMap.remove(sinfo.name);
+ if (breader != null)
+ {
+ // should use SegmentReader.reopen
+ // TODO: see LUCENE-2559
+ BoboIndexReader newReader = (BoboIndexReader) breader.reopen(true);
+ if (newReader != breader)
+ {
+ isNewReader = true;
+ }
+ if (newReader != null)
+ {
+ currentReaders.add(newReader);
+ }
+ }
+ else
+ {
+ isNewReader = true;
+ SegmentReader newSreader = SegmentReader.get(true, sinfo, 1);
+ breader = BoboIndexReader.getInstanceAsSubReader(
+ newSreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ breader._dir = _dir;
+ currentReaders.add(breader);
+ }
+ }
+ isNewReader = isNewReader || (readerMap.size() != 0);
+ if (!isNewReader)
+ {
+ return this;
+ }
+ else
+ {
+ MultiReader newMreader = new MultiReader(currentReaders.toArray(new BoboIndexReader[currentReaders
+ .size()]), false);
+ BoboIndexReader newReader = BoboIndexReader.getInstanceAsSubReader(
+ newMreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ newReader._dir = _dir;
+ return newReader;
+ }
+ }
+ else if (in instanceof SegmentReader)
+ {
+ // should use SegmentReader.reopen
+ // TODO: see LUCENE-2559
+
+ SegmentReader sreader = (SegmentReader) in;
+ int numDels = sreader.numDeletedDocs();
+
+ SegmentInfo sinfo = null;
+ boolean sameSeg = false;
+ // get SegmentInfo instance
+ for (int i = 0; i < size; ++i)
+ {
+ SegmentInfo sinfoTmp = (SegmentInfo) sinfos.info(i);
+ if (sinfoTmp.name.equals(sreader.getSegmentName()))
+ {
+ int numDels2 = sinfoTmp.getDelCount();
+ sameSeg = numDels == numDels2;
+ sinfo = sinfoTmp;
+ break;
+ }
+ }
+
+ if (sinfo == null)
+ {
+ // segment no longer exists
+ return null;
+ }
+ if (sameSeg)
+ {
+ return this;
+ }
+ else
+ {
+ SegmentReader newSreader = SegmentReader.get(true, sinfo, 1);
+ return BoboIndexReader.getInstanceAsSubReader(
+ newSreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ }
+ }
+ else
+ {
+ // should not reach here, a catch-all default case
+ IndexReader reader = in.reopen(true);
+ if (in != reader)
+ {
+ return BoboIndexReader.getInstance(newInner, _facetHandlers, _runtimeFacetHandlerFactories, _workArea);
+ }
+ else
+ {
+ return this;
+ }
+ }
+ }
+
+ @Override
+ public synchronized IndexReader reopen(boolean openReadOnly) throws CorruptIndexException, IOException
+ {
+
+ // bobo readers are always readonly
+ return reopen();
+ }
+
+ public Object getFacetData(String name)
+ {
+ return _facetDataMap.get(name);
+ }
+
+ public Object putFacetData(String name, Object data)
+ {
+ return _facetDataMap.put(name, data);
+ }
+
+ public Object getRuntimeFacetData(String name)
+ {
+ Map<String, Object> map = _runtimeFacetDataMap.get();
+ if (map == null)
+ return null;
+
+ return map.get(name);
+ }
+
+ public Object putRuntimeFacetData(String name, Object data)
+ {
+ Map<String, Object> map = _runtimeFacetDataMap.get();
+ if (map == null)
+ {
+ map = new HashMap<String, Object>();
+ _runtimeFacetDataMap.set(map);
+ }
+ return map.put(name, data);
+ }
+
+ public void clearRuntimeFacetData()
+ {
+ _runtimeFacetDataMap.set(null);
+ }
+
+ public RuntimeFacetHandler< ? > getRuntimeFacetHandler(String name)
+ {
+ Map<String, RuntimeFacetHandler< ? >> map = _runtimeFacetHandlerMap.get();
+ if (map == null)
+ return null;
+
+ return map.get(name);
+ }
+
+ public void putRuntimeFacetHandler(String name, RuntimeFacetHandler< ? > data)
+ {
+ Map<String, RuntimeFacetHandler< ? >> map = _runtimeFacetHandlerMap.get();
+ if (map == null)
+ {
+ map = new HashMap<String, RuntimeFacetHandler< ? >>();
+ _runtimeFacetHandlerMap.set(map);
+ }
+ map.put(name, data);
+ }
+
+ public void clearRuntimeFacetHandler()
+ {
+ _runtimeFacetHandlerMap.set(null);
+ }
+
+ @Override
+ protected void doClose() throws IOException
+ {
+ _facetDataMap.clear();
+ if (_srcReader != null)
+ _srcReader.close();
+ super.doClose();
+ }
+
+ @Override
+ protected void doCommit(Map commitUserData) throws IOException
+ {
+ if (_srcReader != null)
+ _srcReader.flush(commitUserData);
+ }
+
+ @Override
+ protected void doDelete(int n) throws CorruptIndexException, IOException
+ {
+ if (_srcReader != null)
+ _srcReader.deleteDocument(n);
+ }
+
+ private void loadFacetHandler(String name, Set<String> loaded, Set<String> visited, WorkArea workArea)
+ throws IOException
+ {
+ FacetHandler< ? > facetHandler = _facetHandlerMap.get(name);
+ if (facetHandler != null && !loaded.contains(name))
+ {
+ visited.add(name);
+ Set<String> dependsOn = facetHandler.getDependsOn();
+ if (dependsOn.size() > 0)
+ {
+ Iterator<String> iter = dependsOn.iterator();
+ while (iter.hasNext())
+ {
+ String f = iter.next();
+ if (name.equals(f))
+ continue;
+ if (!loaded.contains(f))
+ {
+ if (visited.contains(f))
+ {
+ throw new IOException("Facet handler dependency cycle detected, facet handler: "
+ + name
+ + " not loaded");
+ }
+ loadFacetHandler(f, loaded, visited, workArea);
+ }
+ if (!loaded.contains(f))
+ {
+ throw new IOException("unable to load facet handler: " + f);
+ }
+ facetHandler.putDependedFacetHandler(_facetHandlerMap.get(f));
+ }
+ }
+
+ long start = System.currentTimeMillis();
+ facetHandler.loadFacetData(this, workArea);
+ long end = System.currentTimeMillis();
+ if (logger.isDebugEnabled())
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append("facetHandler loaded: ").append(name).append(", took: ").append(end - start).append(" ms");
+ logger.debug(buf.toString());
+ }
+ loaded.add(name);
+ }
+ }
+
+ private void loadFacetHandlers(WorkArea workArea, Set<String> toBeRemoved) throws IOException
+ {
+ Set<String> loaded = new HashSet<String>();
+ Set<String> visited = new HashSet<String>();
+
+ for (String name : _facetHandlerMap.keySet())
+ {
+ loadFacetHandler(name, loaded, visited, workArea);
+ }
+
+ for (String name : toBeRemoved)
+ {
+ _facetHandlerMap.remove(name);
+ }
+ }
+
+ /**
+ * Find all the leaf sub-readers and wrap each in BoboIndexReader.
+ * @param reader
+ * @param workArea
+ * @return
+ * @throws IOException
+ */
+ private static IndexReader[] createSubReaders(IndexReader reader, WorkArea workArea) throws IOException
+ {
+ List<IndexReader> readerList = new ArrayList<IndexReader>();
+ ReaderUtil.gatherSubReaders(readerList, reader);
+ IndexReader[] subReaders = (IndexReader[]) readerList.toArray(new IndexReader[readerList.size()]);
+ BoboIndexReader[] boboReaders;
+
+ if (subReaders != null && subReaders.length > 0)
+ {
+ boboReaders = new BoboIndexReader[subReaders.length];
+ for (int i = 0; i < subReaders.length; i++)
+ {
+ boboReaders[i] = new BoboIndexReader(subReaders[i], null, null, workArea, false);
+ }
+ }
+ else
+ {
+ boboReaders = new BoboIndexReader[]{new BoboIndexReader(reader, null, null, workArea, false) };
+ }
+ return boboReaders;
+ }
+
+ @Override
+ public Directory directory()
+ {
+ return (_subReaders != null ? _subReaders[0].directory() : super.directory());
+ }
+
+ private static Collection<FacetHandler< ? >> loadFromIndex(File file, WorkArea workArea) throws IOException
+ {
+ // File springFile = new File(file, SPRING_CONFIG);
+ // FileSystemXmlApplicationContext appCtx =
+ // new FileSystemXmlApplicationContext("file:" + springFile.getAbsolutePath());
+ // return (Collection<FacetHandler<?>>) appCtx.getBean("handlers");
+
+ Set<Entry<Class< ? >, Object>> entries = workArea.map.entrySet();
+ FileSystemXmlApplicationContext appCtx = new FileSystemXmlApplicationContext();
+ for (Entry<Class< ? >, Object> entry : entries)
+ {
+ Object obj = entry.getValue();
+ if (obj instanceof ClassLoader)
+ {
+ appCtx.setClassLoader((ClassLoader) obj);
+ break;
+ }
+ }
+
+ String absolutePath = file.getAbsolutePath();
+ String partOne = absolutePath.substring(0, absolutePath.lastIndexOf(File.separator));
+ String partTwo = URLEncoder.encode(
+ absolutePath.substring(absolutePath.lastIndexOf(File.separator) + 1),
+ "UTF-8");
+ absolutePath = partOne + File.separator + partTwo;
+
+ File springFile = new File(new File(absolutePath), SPRING_CONFIG);
+ appCtx.setConfigLocation("file:" + springFile.getAbsolutePath());
+ appCtx.refresh();
+
+ return (Collection<FacetHandler< ? >>) appCtx.getBean("handlers");
+
+ }
+
+ protected void initialize(Collection<FacetHandler< ? >> facetHandlers) throws IOException
+ {
+ if (facetHandlers == null) // try to load from index
+ {
+ Directory idxDir = directory();
+ if (idxDir != null && idxDir instanceof FSDirectory)
+ {
+ FSDirectory fsDir = (FSDirectory) idxDir;
+ File file = fsDir.getFile();
+
+ if (new File(file, SPRING_CONFIG).exists())
+ {
+ facetHandlers = loadFromIndex(file, _workArea);
+ }
+ else
+ {
+ facetHandlers = new ArrayList<FacetHandler< ? >>();
+ }
+ }
+ else
+ {
+ facetHandlers = new ArrayList<FacetHandler< ? >>();
+ }
+ }
+
+ _facetHandlers = facetHandlers;
+ _facetHandlerMap = new HashMap<String, FacetHandler< ? >>();
+ for (FacetHandler< ? > facetHandler : facetHandlers)
+ {
+ _facetHandlerMap.put(facetHandler.getName(), facetHandler);
+ }
+ }
+
+ /**
+ * @param reader
+ * @param facetHandlers
+ * @param facetHandlerFactories
+ * @param workArea
+ * @throws IOException
+ */
+ protected BoboIndexReader(
+ IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories,
+ WorkArea workArea) throws IOException
+ {
+ this(reader, facetHandlers, facetHandlerFactories, workArea, true);
+ _srcReader = reader;
+ }
+
+ /**
+ * @param reader
+ * @param facetHandlers
+ * @param facetHandlerFactories
+ * @param workArea
+ * @param useSubReaders true => we create a MultiReader of all the leaf sub-readers as the inner reader. false => we
+ * use the given reader as the inner reader.
+ * @throws IOException
+ */
+ protected BoboIndexReader(
+ IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories,
+ WorkArea workArea,
+ boolean useSubReaders) throws IOException
+ {
+ super(useSubReaders ? new MultiReader(createSubReaders(reader, workArea), false) : reader);
+ if (useSubReaders)
+ {
+ _dir = reader.directory();
+ BoboIndexReader[] subReaders = (BoboIndexReader[]) in.getSequentialSubReaders();
+ if (subReaders != null && subReaders.length > 0)
+ {
+ _subReaders = subReaders;
+
+ int maxDoc = 0;
+ _starts = new int[_subReaders.length + 1];
+ for (int i = 0; i < _subReaders.length; i++)
+ {
+ _subReaders[i]._dir = _dir;
+ if (facetHandlers != null)
+ _subReaders[i].setFacetHandlers(facetHandlers);
+ _starts[i] = maxDoc;
+ maxDoc += _subReaders[i].maxDoc();
+ }
+ _starts[_subReaders.length] = maxDoc;
+ }
+ }
+ _runtimeFacetHandlerFactories = facetHandlerFactories;
+ _runtimeFacetHandlerFactoryMap = new HashMap<String, RuntimeFacetHandlerFactory< ? , ? >>();
+ if (_runtimeFacetHandlerFactories != null)
+ {
+ for (RuntimeFacetHandlerFactory< ? , ? > factory : _runtimeFacetHandlerFactories)
+ {
+ _runtimeFacetHandlerFactoryMap.put(factory.getName(), factory);
+ }
+ }
+ _facetHandlers = facetHandlers;
+ _workArea = workArea;
+ }
+
+ protected void facetInit() throws IOException
+ {
+ facetInit(new HashSet<String>());
+ }
+
+ protected void facetInit(Set<String> toBeRemoved) throws IOException
+ {
+ initialize(_facetHandlers);
+ if (_subReaders == null)
+ {
+ loadFacetHandlers(_workArea, toBeRemoved);
+ }
+ else
+ {
+ for (BoboIndexReader r : _subReaders)
+ {
+ r.facetInit(toBeRemoved);
+ }
+
+ for (String name : toBeRemoved)
+ {
+ _facetHandlerMap.remove(name);
+ }
+ }
+ }
+
+ protected void setFacetHandlers(Collection<FacetHandler< ? >> facetHandlers)
+ {
+ _facetHandlers = facetHandlers;
+ }
+
+ /**
+ * @deprecated use {@link org.apache.lucene.search.MatchAllDocsQuery} instead.
+ * @return query that matches all docs in the index
+ */
+ public Query getFastMatchAllDocsQuery()
+ {
+ return new MatchAllDocsQuery();
+ }
+
+ /**
+ * Utility method to dump out all fields (name and terms) for a given index.
+ * @param outFile File to dump to.
+ * @throws IOException
+ */
+ public void dumpFields(File outFile) throws IOException
+ {
+ FileWriter writer = null;
+ try
+ {
+ writer = new FileWriter(outFile);
+ PrintWriter out = new PrintWriter(writer);
+ Set<String> fieldNames = getFacetNames();
+ for (String fieldName : fieldNames)
+ {
+ TermEnum te = terms(new Term(fieldName, ""));
+ out.write(fieldName + ":\n");
+ while (te.next())
+ {
+ Term term = te.term();
+ if (!fieldName.equals(term.field()))
+ {
+ break;
+ }
+ out.write(term.text() + "\n");
+ }
+ out.write("\n\n");
+ }
+ }
+ finally
+ {
+ if (writer != null)
+ ...
[truncated message content] |
|
From: <fg...@us...> - 2013-04-05 20:50:48
|
Revision: 4217
http://openutils.svn.sourceforge.net/openutils/?rev=4217&view=rev
Author: fgiust
Date: 2013-04-05 20:50:34 +0000 (Fri, 05 Apr 2013)
Log Message:
-----------
TAGCLOUD-20 fix component instantiations on magnolia 4.5 + update samples
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/website.sample-tagcloud.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-files/templates/samples-tagcloud/template.jsp
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnltagcloud/src/lucene36-patch/
magnoliamodules/trunk/openutils-mgnltagcloud/src/lucene36-patch/BoboIndexReader.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.pages.sampleTagcloud.xml
Removed Paths:
-------------
magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-02 21:52:23 UTC (rev 4216)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-04-05 20:50:34 UTC (rev 4217)
@@ -145,7 +145,7 @@
<dependency>
<groupId>com.browseengine.bobo</groupId>
<artifactId>bobo-browse</artifactId>
- <version>3.2.0</version>
+ <version>2.5.1</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
@@ -201,11 +201,13 @@
</exclusion>
</exclusions>
</dependency>
+ <!--
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
- <version>3.6.0</version><!-- forces version 3.6, used in jackrabbit 2.6 (bobo-browse 3.2.0 actually depends on lucene 3.5) -->
+ <version>3.6.0</version>
</dependency>
+ -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
@@ -227,6 +229,6 @@
</dependencies>
<properties>
<magnolia.version>4.5.6</magnolia.version>
- <jackrabbit.version>2.6.0</jackrabbit.version>
+ <jackrabbit.version>2.4.0</jackrabbit.version>
</properties>
</project>
\ No newline at end of file
Copied: magnoliamodules/trunk/openutils-mgnltagcloud/src/lucene36-patch/BoboIndexReader.java (from rev 4216, magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java)
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/lucene36-patch/BoboIndexReader.java (rev 0)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/lucene36-patch/BoboIndexReader.java 2013-04-05 20:50:34 UTC (rev 4217)
@@ -0,0 +1,895 @@
+// lucene 3.6 compatibility patch for bobo-browse 3.2.0, see https://github.com/senseidb/bobo/commit/e78d91ef8a00965d8d55c819f967cac172c23d17
+/**
+ * Bobo Browse Engine - High performance faceted/parametric search implementation
+ * that handles various types of semi-structured data. Written in Java.
+ *
+ * Copyright (C) 2005-2006 John Wang
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * To contact the project administrators for the bobo-browse project,
+ * please go to https://sourceforge.net/projects/bobo-browse/, or
+ * send mail to ow...@br....
+ */
+
+package com.browseengine.bobo.api;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import org.apache.log4j.Logger;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.FilterIndexReader;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.MultiReader;
+import org.apache.lucene.index.SegmentInfo;
+import org.apache.lucene.index.SegmentInfos;
+import org.apache.lucene.index.SegmentReader;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.index.TermEnum;
+import org.apache.lucene.search.MatchAllDocsQuery;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.ReaderUtil;
+import org.springframework.context.support.FileSystemXmlApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+
+import com.browseengine.bobo.facets.FacetHandler;
+import com.browseengine.bobo.facets.RuntimeFacetHandler;
+import com.browseengine.bobo.facets.RuntimeFacetHandlerFactory;
+
+
+/**
+ * bobo browse index reader
+ */
+public class BoboIndexReader extends FilterIndexReader
+{
+
+ private static final String SPRING_CONFIG = "bobo.spring";
+
+ private static Logger logger = Logger.getLogger(BoboIndexReader.class);
+
+ protected Map<String, FacetHandler< ? >> _facetHandlerMap;
+
+ protected Collection<FacetHandler< ? >> _facetHandlers;
+
+ protected Collection<RuntimeFacetHandlerFactory< ? , ? >> _runtimeFacetHandlerFactories;
+
+ protected Map<String, RuntimeFacetHandlerFactory< ? , ? >> _runtimeFacetHandlerFactoryMap;
+
+ protected WorkArea _workArea;
+
+ protected IndexReader _srcReader;
+
+ protected BoboIndexReader[] _subReaders = null;
+
+ protected int[] _starts = null;
+
+ private Directory _dir = null;
+
+ private final Map<String, Object> _facetDataMap = new HashMap<String, Object>();
+
+ private final ThreadLocal<Map<String, Object>> _runtimeFacetDataMap = new ThreadLocal<Map<String, Object>>()
+ {
+
+ protected Map<String, Object> initialValue()
+ {
+ return new HashMap<String, Object>();
+ }
+ };
+
+ private final ThreadLocal<Map<String, RuntimeFacetHandler< ? >>> _runtimeFacetHandlerMap = new ThreadLocal<Map<String, RuntimeFacetHandler< ? >>>()
+ {
+
+ protected Map<String, RuntimeFacetHandler< ? >> initialValue()
+ {
+ return new HashMap<String, RuntimeFacetHandler< ? >>();
+ }
+ };
+
+ /**
+ * Constructor
+ * @param reader Index reader
+ * @throws IOException
+ */
+ public static BoboIndexReader getInstance(IndexReader reader) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, null, null, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, WorkArea workArea) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, null, null, workArea);
+ }
+
+ /**
+ * Constructor.
+ * @param reader index reader
+ * @param facetHandlers List of facet handlers
+ * @throws IOException
+ */
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories) throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, facetHandlers, facetHandlerFactories, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers)
+ throws IOException
+ {
+ return BoboIndexReader.getInstance(reader, facetHandlers, Collections.EMPTY_LIST, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstance(IndexReader reader, Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories, WorkArea workArea) throws IOException
+ {
+ BoboIndexReader boboReader = new BoboIndexReader(reader, facetHandlers, facetHandlerFactories, workArea);
+ boboReader.facetInit();
+ return boboReader;
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader) throws IOException
+ {
+ return getInstanceAsSubReader(reader, null, null, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories) throws IOException
+ {
+ return getInstanceAsSubReader(reader, facetHandlers, facetHandlerFactories, new WorkArea());
+ }
+
+ public static BoboIndexReader getInstanceAsSubReader(IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories, WorkArea workArea) throws IOException
+ {
+ BoboIndexReader boboReader = new BoboIndexReader(reader, facetHandlers, facetHandlerFactories, workArea, false);
+ boboReader.facetInit();
+ return boboReader;
+ }
+
+ @Override
+ public long getVersion()
+ {
+ try
+ {
+ SegmentInfos sinfos = new SegmentInfos();
+ sinfos.read(_dir);
+ return sinfos.getVersion();
+ }
+ catch (Exception e)
+ {
+ return 0L;
+ }
+ }
+
+ public IndexReader getInnerReader()
+ {
+ return in;
+ }
+
+ @Override
+ public synchronized IndexReader reopen() throws CorruptIndexException, IOException
+ {
+ IndexReader newInner = null;
+
+ SegmentInfos sinfos = new SegmentInfos();
+ sinfos.read(_dir);
+ int size = sinfos.size();
+
+ if (in instanceof MultiReader)
+ {
+ // setup current reader list
+ List<IndexReader> boboReaderList = new LinkedList<IndexReader>();
+ ReaderUtil.gatherSubReaders((List<IndexReader>) boboReaderList, in);
+ Map<String, BoboIndexReader> readerMap = new HashMap<String, BoboIndexReader>();
+ for (IndexReader reader : boboReaderList)
+ {
+ BoboIndexReader boboReader = (BoboIndexReader) reader;
+ SegmentReader sreader = (SegmentReader) (boboReader.in);
+ readerMap.put(sreader.getSegmentName(), boboReader);
+ }
+
+ ArrayList<BoboIndexReader> currentReaders = new ArrayList<BoboIndexReader>(size);
+ boolean isNewReader = false;
+ for (int i = 0; i < size; ++i)
+ {
+ SegmentInfo sinfo = (SegmentInfo) sinfos.info(i);
+ BoboIndexReader breader = readerMap.remove(sinfo.name);
+ if (breader != null)
+ {
+ // should use SegmentReader.reopen
+ // TODO: see LUCENE-2559
+ BoboIndexReader newReader = (BoboIndexReader) breader.reopen(true);
+ if (newReader != breader)
+ {
+ isNewReader = true;
+ }
+ if (newReader != null)
+ {
+ currentReaders.add(newReader);
+ }
+ }
+ else
+ {
+ isNewReader = true;
+ SegmentReader newSreader = SegmentReader.get(true, sinfo, 1);
+ breader = BoboIndexReader.getInstanceAsSubReader(
+ newSreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ breader._dir = _dir;
+ currentReaders.add(breader);
+ }
+ }
+ isNewReader = isNewReader || (readerMap.size() != 0);
+ if (!isNewReader)
+ {
+ return this;
+ }
+ else
+ {
+ MultiReader newMreader = new MultiReader(currentReaders.toArray(new BoboIndexReader[currentReaders
+ .size()]), false);
+ BoboIndexReader newReader = BoboIndexReader.getInstanceAsSubReader(
+ newMreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ newReader._dir = _dir;
+ return newReader;
+ }
+ }
+ else if (in instanceof SegmentReader)
+ {
+ // should use SegmentReader.reopen
+ // TODO: see LUCENE-2559
+
+ SegmentReader sreader = (SegmentReader) in;
+ int numDels = sreader.numDeletedDocs();
+
+ SegmentInfo sinfo = null;
+ boolean sameSeg = false;
+ // get SegmentInfo instance
+ for (int i = 0; i < size; ++i)
+ {
+ SegmentInfo sinfoTmp = (SegmentInfo) sinfos.info(i);
+ if (sinfoTmp.name.equals(sreader.getSegmentName()))
+ {
+ int numDels2 = sinfoTmp.getDelCount();
+ sameSeg = numDels == numDels2;
+ sinfo = sinfoTmp;
+ break;
+ }
+ }
+
+ if (sinfo == null)
+ {
+ // segment no longer exists
+ return null;
+ }
+ if (sameSeg)
+ {
+ return this;
+ }
+ else
+ {
+ SegmentReader newSreader = SegmentReader.get(true, sinfo, 1);
+ return BoboIndexReader.getInstanceAsSubReader(
+ newSreader,
+ this._facetHandlers,
+ this._runtimeFacetHandlerFactories);
+ }
+ }
+ else
+ {
+ // should not reach here, a catch-all default case
+ IndexReader reader = in.reopen(true);
+ if (in != reader)
+ {
+ return BoboIndexReader.getInstance(newInner, _facetHandlers, _runtimeFacetHandlerFactories, _workArea);
+ }
+ else
+ {
+ return this;
+ }
+ }
+ }
+
+ @Override
+ public synchronized IndexReader reopen(boolean openReadOnly) throws CorruptIndexException, IOException
+ {
+
+ // bobo readers are always readonly
+ return reopen();
+ }
+
+ public Object getFacetData(String name)
+ {
+ return _facetDataMap.get(name);
+ }
+
+ public Object putFacetData(String name, Object data)
+ {
+ return _facetDataMap.put(name, data);
+ }
+
+ public Object getRuntimeFacetData(String name)
+ {
+ Map<String, Object> map = _runtimeFacetDataMap.get();
+ if (map == null)
+ return null;
+
+ return map.get(name);
+ }
+
+ public Object putRuntimeFacetData(String name, Object data)
+ {
+ Map<String, Object> map = _runtimeFacetDataMap.get();
+ if (map == null)
+ {
+ map = new HashMap<String, Object>();
+ _runtimeFacetDataMap.set(map);
+ }
+ return map.put(name, data);
+ }
+
+ public void clearRuntimeFacetData()
+ {
+ _runtimeFacetDataMap.set(null);
+ }
+
+ public RuntimeFacetHandler< ? > getRuntimeFacetHandler(String name)
+ {
+ Map<String, RuntimeFacetHandler< ? >> map = _runtimeFacetHandlerMap.get();
+ if (map == null)
+ return null;
+
+ return map.get(name);
+ }
+
+ public void putRuntimeFacetHandler(String name, RuntimeFacetHandler< ? > data)
+ {
+ Map<String, RuntimeFacetHandler< ? >> map = _runtimeFacetHandlerMap.get();
+ if (map == null)
+ {
+ map = new HashMap<String, RuntimeFacetHandler< ? >>();
+ _runtimeFacetHandlerMap.set(map);
+ }
+ map.put(name, data);
+ }
+
+ public void clearRuntimeFacetHandler()
+ {
+ _runtimeFacetHandlerMap.set(null);
+ }
+
+ @Override
+ protected void doClose() throws IOException
+ {
+ _facetDataMap.clear();
+ if (_srcReader != null)
+ _srcReader.close();
+ super.doClose();
+ }
+
+ @Override
+ protected void doCommit(Map commitUserData) throws IOException
+ {
+ if (_srcReader != null)
+ _srcReader.flush(commitUserData);
+ }
+
+ @Override
+ protected void doDelete(int n) throws CorruptIndexException, IOException
+ {
+ if (_srcReader != null)
+ _srcReader.deleteDocument(n);
+ }
+
+ private void loadFacetHandler(String name, Set<String> loaded, Set<String> visited, WorkArea workArea)
+ throws IOException
+ {
+ FacetHandler< ? > facetHandler = _facetHandlerMap.get(name);
+ if (facetHandler != null && !loaded.contains(name))
+ {
+ visited.add(name);
+ Set<String> dependsOn = facetHandler.getDependsOn();
+ if (dependsOn.size() > 0)
+ {
+ Iterator<String> iter = dependsOn.iterator();
+ while (iter.hasNext())
+ {
+ String f = iter.next();
+ if (name.equals(f))
+ continue;
+ if (!loaded.contains(f))
+ {
+ if (visited.contains(f))
+ {
+ throw new IOException("Facet handler dependency cycle detected, facet handler: "
+ + name
+ + " not loaded");
+ }
+ loadFacetHandler(f, loaded, visited, workArea);
+ }
+ if (!loaded.contains(f))
+ {
+ throw new IOException("unable to load facet handler: " + f);
+ }
+ facetHandler.putDependedFacetHandler(_facetHandlerMap.get(f));
+ }
+ }
+
+ long start = System.currentTimeMillis();
+ facetHandler.loadFacetData(this, workArea);
+ long end = System.currentTimeMillis();
+ if (logger.isDebugEnabled())
+ {
+ StringBuffer buf = new StringBuffer();
+ buf.append("facetHandler loaded: ").append(name).append(", took: ").append(end - start).append(" ms");
+ logger.debug(buf.toString());
+ }
+ loaded.add(name);
+ }
+ }
+
+ private void loadFacetHandlers(WorkArea workArea, Set<String> toBeRemoved) throws IOException
+ {
+ Set<String> loaded = new HashSet<String>();
+ Set<String> visited = new HashSet<String>();
+
+ for (String name : _facetHandlerMap.keySet())
+ {
+ loadFacetHandler(name, loaded, visited, workArea);
+ }
+
+ for (String name : toBeRemoved)
+ {
+ _facetHandlerMap.remove(name);
+ }
+ }
+
+ /**
+ * Find all the leaf sub-readers and wrap each in BoboIndexReader.
+ * @param reader
+ * @param workArea
+ * @return
+ * @throws IOException
+ */
+ private static IndexReader[] createSubReaders(IndexReader reader, WorkArea workArea) throws IOException
+ {
+ List<IndexReader> readerList = new ArrayList<IndexReader>();
+ ReaderUtil.gatherSubReaders(readerList, reader);
+ IndexReader[] subReaders = (IndexReader[]) readerList.toArray(new IndexReader[readerList.size()]);
+ BoboIndexReader[] boboReaders;
+
+ if (subReaders != null && subReaders.length > 0)
+ {
+ boboReaders = new BoboIndexReader[subReaders.length];
+ for (int i = 0; i < subReaders.length; i++)
+ {
+ boboReaders[i] = new BoboIndexReader(subReaders[i], null, null, workArea, false);
+ }
+ }
+ else
+ {
+ boboReaders = new BoboIndexReader[]{new BoboIndexReader(reader, null, null, workArea, false) };
+ }
+ return boboReaders;
+ }
+
+ @Override
+ public Directory directory()
+ {
+ return (_subReaders != null ? _subReaders[0].directory() : super.directory());
+ }
+
+ private static Collection<FacetHandler< ? >> loadFromIndex(File file, WorkArea workArea) throws IOException
+ {
+ // File springFile = new File(file, SPRING_CONFIG);
+ // FileSystemXmlApplicationContext appCtx =
+ // new FileSystemXmlApplicationContext("file:" + springFile.getAbsolutePath());
+ // return (Collection<FacetHandler<?>>) appCtx.getBean("handlers");
+
+ Set<Entry<Class< ? >, Object>> entries = workArea.map.entrySet();
+ FileSystemXmlApplicationContext appCtx = new FileSystemXmlApplicationContext();
+ for (Entry<Class< ? >, Object> entry : entries)
+ {
+ Object obj = entry.getValue();
+ if (obj instanceof ClassLoader)
+ {
+ appCtx.setClassLoader((ClassLoader) obj);
+ break;
+ }
+ }
+
+ String absolutePath = file.getAbsolutePath();
+ String partOne = absolutePath.substring(0, absolutePath.lastIndexOf(File.separator));
+ String partTwo = URLEncoder.encode(
+ absolutePath.substring(absolutePath.lastIndexOf(File.separator) + 1),
+ "UTF-8");
+ absolutePath = partOne + File.separator + partTwo;
+
+ File springFile = new File(new File(absolutePath), SPRING_CONFIG);
+ appCtx.setConfigLocation("file:" + springFile.getAbsolutePath());
+ appCtx.refresh();
+
+ return (Collection<FacetHandler< ? >>) appCtx.getBean("handlers");
+
+ }
+
+ protected void initialize(Collection<FacetHandler< ? >> facetHandlers) throws IOException
+ {
+ if (facetHandlers == null) // try to load from index
+ {
+ Directory idxDir = directory();
+ if (idxDir != null && idxDir instanceof FSDirectory)
+ {
+ FSDirectory fsDir = (FSDirectory) idxDir;
+ File file = fsDir.getFile();
+
+ if (new File(file, SPRING_CONFIG).exists())
+ {
+ facetHandlers = loadFromIndex(file, _workArea);
+ }
+ else
+ {
+ facetHandlers = new ArrayList<FacetHandler< ? >>();
+ }
+ }
+ else
+ {
+ facetHandlers = new ArrayList<FacetHandler< ? >>();
+ }
+ }
+
+ _facetHandlers = facetHandlers;
+ _facetHandlerMap = new HashMap<String, FacetHandler< ? >>();
+ for (FacetHandler< ? > facetHandler : facetHandlers)
+ {
+ _facetHandlerMap.put(facetHandler.getName(), facetHandler);
+ }
+ }
+
+ /**
+ * @param reader
+ * @param facetHandlers
+ * @param facetHandlerFactories
+ * @param workArea
+ * @throws IOException
+ */
+ protected BoboIndexReader(
+ IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories,
+ WorkArea workArea) throws IOException
+ {
+ this(reader, facetHandlers, facetHandlerFactories, workArea, true);
+ _srcReader = reader;
+ }
+
+ /**
+ * @param reader
+ * @param facetHandlers
+ * @param facetHandlerFactories
+ * @param workArea
+ * @param useSubReaders true => we create a MultiReader of all the leaf sub-readers as the inner reader. false => we
+ * use the given reader as the inner reader.
+ * @throws IOException
+ */
+ protected BoboIndexReader(
+ IndexReader reader,
+ Collection<FacetHandler< ? >> facetHandlers,
+ Collection<RuntimeFacetHandlerFactory< ? , ? >> facetHandlerFactories,
+ WorkArea workArea,
+ boolean useSubReaders) throws IOException
+ {
+ super(useSubReaders ? new MultiReader(createSubReaders(reader, workArea), false) : reader);
+ if (useSubReaders)
+ {
+ _dir = reader.directory();
+ BoboIndexReader[] subReaders = (BoboIndexReader[]) in.getSequentialSubReaders();
+ if (subReaders != null && subReaders.length > 0)
+ {
+ _subReaders = subReaders;
+
+ int maxDoc = 0;
+ _starts = new int[_subReaders.length + 1];
+ for (int i = 0; i < _subReaders.length; i++)
+ {
+ _subReaders[i]._dir = _dir;
+ if (facetHandlers != null)
+ _subReaders[i].setFacetHandlers(facetHandlers);
+ _starts[i] = maxDoc;
+ maxDoc += _subReaders[i].maxDoc();
+ }
+ _starts[_subReaders.length] = maxDoc;
+ }
+ }
+ _runtimeFacetHandlerFactories = facetHandlerFactories;
+ _runtimeFacetHandlerFactoryMap = new HashMap<String, RuntimeFacetHandlerFactory< ? , ? >>();
+ if (_runtimeFacetHandlerFactories != null)
+ {
+ for (RuntimeFacetHandlerFactory< ? , ? > factory : _runtimeFacetHandlerFactories)
+ {
+ _runtimeFacetHandlerFactoryMap.put(factory.getName(), factory);
+ }
+ }
+ _facetHandlers = facetHandlers;
+ _workArea = workArea;
+ }
+
+ protected void facetInit() throws IOException
+ {
+ facetInit(new HashSet<String>());
+ }
+
+ protected void facetInit(Set<String> toBeRemoved) throws IOException
+ {
+ initialize(_facetHandlers);
+ if (_subReaders == null)
+ {
+ loadFacetHandlers(_workArea, toBeRemoved);
+ }
+ else
+ {
+ for (BoboIndexReader r : _subReaders)
+ {
+ r.facetInit(toBeRemoved);
+ }
+
+ for (String name : toBeRemoved)
+ {
+ _facetHandlerMap.remove(name);
+ }
+ }
+ }
+
+ protected void setFacetHandlers(Collection<FacetHandler< ? >> facetHandlers)
+ {
+ _facetHandlers = facetHandlers;
+ }
+
+ /**
+ * @deprecated use {@link org.apache.lucene.search.MatchAllDocsQuery} instead.
+ * @return query that matches all docs in the index
+ */
+ public Query getFastMatchAllDocsQuery()
+ {
+ return new MatchAllDocsQuery();
+ }
+
+ /**
+ * Utility method to dump out all fields (name and terms) for a given index.
+ * @param outFile File to dump to.
+ * @throws IOException
+ */
+ public void dumpFields(File outFile) throws IOException
+ {
+ FileWriter writer = null;
+ try
+ {
+ writer = new FileWriter(outFile);
+ PrintWriter out = new PrintWriter(writer);
+ Set<String> fieldNames = getFacetNames();
+ for (String fieldName : fieldNames)
+ {
+ TermEnum te = terms(new Term(fieldName, ""));
+ out.write(fieldName + ":\n");
+ while (te.next())
+ {
+ Term term = te.term();
+ if (!fieldName.equals(term.field()))
+ {
+ break;
+ }
+ out.write(term.text() + "\n");
+ }
+ out.write("\n\n");
+ }
+ }
+ finally
+ {
+ if (writer != null)
+ {
+ writer.close();
+ }
+ }
+ }
+
+ /**
+ * Gets all the facet field names
+ * @return Set of facet field names
+ */
+ public Set<String> getFacetNames()
+ {
+ return _facetHandlerMap.keySet();
+ }
+
+ /**
+ * Gets a facet handler
+ * @param fieldname name
+ * @return facet handler
+ */
+ public FacetHandler< ? > getFacetHandler(String fieldname)
+ {
+ FacetHandler< ? > f = _facetHandlerMap.get(fieldname);
+ if (f == null)
+ f = getRuntimeFacetHandler(fieldname);
+ return f;
+ }
+
+ @Override
+ public IndexReader[] getSequentialSubReaders()
+ {
+ return _subReaders;
+ }
+
+ /**
+ * Gets the facet handler map
+ * @return facet handler map
+ */
+ public Map<String, FacetHandler< ? >> g...
[truncated message content] |
|
From: <fg...@us...> - 2013-11-01 21:49:09
|
Revision: 4443
http://openutils.svn.sourceforge.net/openutils/?rev=4443&view=rev
Author: fgiust
Date: 2013-11-01 21:49:04 +0000 (Fri, 01 Nov 2013)
Log Message:
-----------
unit tests nearly working
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-11-01 21:33:37 UTC (rev 4442)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-11-01 21:49:04 UTC (rev 4443)
@@ -187,6 +187,12 @@
<version>5.0.10-SNAPSHOT</version>
</dependency>
<dependency>
+ <groupId>net.sourceforge.openutils</groupId>
+ <artifactId>openutils-mgnltests</artifactId>
+ <version>5.0.10-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-11-01 21:33:37 UTC (rev 4442)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-11-01 21:49:04 UTC (rev 4443)
@@ -29,6 +29,7 @@
import info.magnolia.jcr.util.NodeUtil;
import info.magnolia.objectfactory.Components;
import info.magnolia.repository.RepositoryConstants;
+import info.magnolia.test.ComponentsTestUtil;
import info.magnolia.test.RepositoryTestCase;
import java.util.Map;
@@ -272,6 +273,7 @@
hmConfig.save();
+ ComponentsTestUtil.setImplementation(TagCloudManager.class, DefaultTagCloudManager.class);
DefaultTagCloudManager manager = (DefaultTagCloudManager) Components.getComponent(TagCloudManager.class);
manager.jackrabbitUtil = new JackrabbitUtil();
@@ -281,8 +283,9 @@
@Override
public void tearDown() throws Exception
{
+ ComponentsTestUtil.setImplementation(TagCloudManager.class, DefaultTagCloudManager.class);
+ Components.getComponent(TagCloudManager.class).stopObserving();
super.tearDown();
- Components.getComponent(TagCloudManager.class).stopObserving();
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <fg...@us...> - 2013-11-02 10:06:04
|
Revision: 4446
http://openutils.svn.sourceforge.net/openutils/?rev=4446&view=rev
Author: fgiust
Date: 2013-11-02 10:06:01 +0000 (Sat, 02 Nov 2013)
Log Message:
-----------
tests converted to testng
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/repo-conf/jackrabbit-memory-search.xml
Added Paths:
-----------
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.dtd
magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.xml
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-11-02 10:05:43 UTC (rev 4445)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/pom.xml 2013-11-02 10:06:01 UTC (rev 4446)
@@ -235,10 +235,16 @@
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.7</version>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>6.0.1</version>
<scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
<properties>
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-11-02 10:05:43 UTC (rev 4445)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-11-02 10:06:01 UTC (rev 4446)
@@ -19,18 +19,18 @@
package net.sourceforge.openutils.mgnltagcloud.manager;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.fail;
+import info.magnolia.cms.beans.config.ObservedManager;
import info.magnolia.cms.core.MgnlNodeType;
import info.magnolia.cms.core.Path;
-import info.magnolia.cms.util.ClasspathResourcesUtil;
+import info.magnolia.cms.util.ContentUtil;
import info.magnolia.context.MgnlContext;
import info.magnolia.jcr.util.NodeUtil;
import info.magnolia.objectfactory.Components;
import info.magnolia.repository.RepositoryConstants;
import info.magnolia.test.ComponentsTestUtil;
-import info.magnolia.test.RepositoryTestCase;
+import it.openutils.mgnlutils.test.ModuleConfiguration;
+import it.openutils.mgnlutils.test.RepositoryTestConfiguration;
+import it.openutils.mgnlutils.test.TestNgRepositoryTestcase;
import java.util.Map;
import java.util.Set;
@@ -40,24 +40,31 @@
import javax.jcr.Session;
import javax.jcr.Value;
+import net.sourceforge.openutils.mgnltagcloud.bean.TagCloud;
import net.sourceforge.openutils.mgnltagcloud.el.TagCloudElFunctions;
import net.sourceforge.openutils.mgnltagcloud.module.TagCloudModule;
import net.sourceforge.openutils.mgnltagcloud.util.JackrabbitUtil;
import org.apache.commons.lang.ArrayUtils;
import org.apache.jackrabbit.value.ValueFactoryImpl;
-import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
/**
* @author cstrappazzon
* @version $Id$
*/
-public class TagCloudManagerTest extends RepositoryTestCase
+@RepositoryTestConfiguration(repositoryConfig = "/utils-repository/test-repositories.xml", jackrabbitRepositoryConfig = "/repo-conf/jackrabbit-memory-search.xml", magnoliaProperties = "/test-magnolia.properties", startModules = {@ModuleConfiguration(name = "tagcloud", moduleclass = TagCloudModule.class) })
+public class TagCloudManagerTest extends TestNgRepositoryTestcase
{
+ private static final String ObservedManager = null;
+
/**
* Set list of tag values
*/
@@ -115,7 +122,7 @@
Map<String, Integer> tags = TagCloudElFunctions.notcached(RepositoryConstants.WEBSITE, pathList[0], "tags", 2);
log.debug("Time: " + (System.currentTimeMillis() - time));
log.debug("PathMap freq: {}", tags);
- assertEquals(nodesNumber, tags.get("tag1 tag4"));
+ Assert.assertEquals(nodesNumber, tags.get("tag1 tag4"));
}
/**
@@ -128,12 +135,12 @@
Map<String, Integer> tags = TagCloudElFunctions.cached(RepositoryConstants.WEBSITE, pathList[1], "tags", 2);
log.debug("Time: " + (System.currentTimeMillis() - time));
log.debug("tagCloud freq: {}", tags);
- assertEquals(nodesNumber, tags.get("tag2"));
+ Assert.assertEquals(nodesNumber, tags.get("tag2"));
time = System.currentTimeMillis();
tags = TagCloudElFunctions.cached(RepositoryConstants.WEBSITE, pathList[1], "tags", 2);
log.debug("Time: " + (System.currentTimeMillis() - time));
log.debug("tagCloud freq: {}", tags);
- assertEquals(nodesNumber, tags.get("tag1 tag4"));
+ Assert.assertEquals(nodesNumber, tags.get("tag1 tag4"));
}
/**
@@ -147,7 +154,7 @@
log.debug("Tags: {}", tags);
log.debug("Ordered Tags: {}", orderedTags);
- assertNotSame(tags.keySet(), orderedTags.keySet());
+ Assert.assertNotSame(tags.keySet(), orderedTags.keySet());
}
/**
@@ -161,9 +168,9 @@
Map<String, Integer> countedTags = TagCloudElFunctions.sortbycount(tags, false);
log.debug("Tags: {}", countedTags);
- assertNotSame(tags, countedTags);
+ Assert.assertNotSame(tags, countedTags);
Set<String> listOrderedTag = countedTags.keySet();
- assertEquals("tag32", listOrderedTag.iterator().next().toString());
+ Assert.assertEquals("tag32", listOrderedTag.iterator().next().toString());
}
/**
@@ -172,7 +179,15 @@
@Test
public void testNamed()
{
- Map<String, Integer> tags = TagCloudElFunctions.named("cloud1");
+ String cloudname = "cloud1";
+ TagCloud tagCloud = Components.getComponent(TagCloudManager.class).getTagCloud(cloudname);
+
+ if (tagCloud == null)
+ {
+ Assert.fail("Tagcloud " + cloudname + " not configured");
+ }
+
+ Map<String, Integer> tags = TagCloudElFunctions.named(cloudname);
log.debug("Tags: {}", tags);
try
@@ -193,13 +208,13 @@
catch (InterruptedException e)
{
log.error("Interrupt exception", e);
- fail(e.getMessage());
+ Assert.fail(e.getMessage());
}
- tags = TagCloudElFunctions.named("cloud1");
+ tags = TagCloudElFunctions.named(cloudname);
log.debug("Tags: {}", tags);
- assertEquals(true, tags.containsKey("prova"));
+ Assert.assertEquals(true, tags.containsKey("prova"));
}
/**
@@ -215,13 +230,17 @@
log.debug("Properties {}", mapProperties);
- assertEquals(new Integer(5), mapProperties.get("count"));
- assertEquals(tags.get("tag1 tag4"), mapProperties.get("max"));
+ Assert.assertEquals(new Integer(5), mapProperties.get("count"));
+ Assert.assertEquals(tags.get("tag1 tag4"), mapProperties.get("max"));
}
+ @SuppressWarnings("deprecation")
@Override
+ @BeforeClass
public void setUp() throws Exception
{
+ ComponentsTestUtil.setImplementation(TagCloudManager.class, DefaultTagCloudManager.class);
+
super.setUp();
session = MgnlContext.getInstance().getJCRSession(RepositoryConstants.WEBSITE);
@@ -254,10 +273,10 @@
}
session.save();
- Session hmConfig = MgnlContext.getInstance().getJCRSession(RepositoryConstants.CONFIG);
+ Session configsession = MgnlContext.getInstance().getJCRSession(RepositoryConstants.CONFIG);
Node contentTagcloud = NodeUtil.createPath(
session.getNode("/"),
- Path.getValidatedLabel("clouds"),
+ "/modules/tagcloud/clouds",
MgnlNodeType.NT_CONTENT);
Node contentCloud = NodeUtil.createPath(
@@ -271,35 +290,23 @@
contentCloud.setProperty("enabled", ValueFactoryImpl.getInstance().createValue(true));
contentCloud.setProperty("count", ValueFactoryImpl.getInstance().createValue(50));
- hmConfig.save();
+ configsession.save();
- ComponentsTestUtil.setImplementation(TagCloudManager.class, DefaultTagCloudManager.class);
DefaultTagCloudManager manager = (DefaultTagCloudManager) Components.getComponent(TagCloudManager.class);
manager.jackrabbitUtil = new JackrabbitUtil();
manager.onRegister(contentCloud);
+
+ ObservedManager tagCloudManager = (ObservedManager) Components.getComponent(TagCloudManager.class);
+ tagCloudManager.register(ContentUtil.asContent(contentTagcloud.getParent()));
}
@Override
+ @AfterClass
public void tearDown() throws Exception
{
- ComponentsTestUtil.setImplementation(TagCloudManager.class, DefaultTagCloudManager.class);
Components.getComponent(TagCloudManager.class).stopObserving();
super.tearDown();
}
- /**
- * {@inheritDoc}
- */
- @Override
- protected void startRepository() throws Exception
- {
- extractConfigFile(
- "magnolia.indexingConfiguration",
- ClasspathResourcesUtil.getResource("/indexing_configuration.xml").openStream(),
- "target/repositories/magnolia/indexing_configuration.xml");
-
- super.startRepository();
- }
-
}
\ No newline at end of file
Added: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.dtd
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.dtd (rev 0)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.dtd 2013-11-02 10:06:01 UTC (rev 4446)
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!-- Authors: Chris Taylor, Ceki Gulcu. -->
+
+<!-- Version: 1.2 -->
+
+<!-- A configuration element consists of optional renderer
+elements,appender elements, categories and an optional root
+element. -->
+
+<!ELEMENT log4j:configuration (renderer*, appender*,(category|logger)*,root?,
+ categoryFactory?)>
+
+<!-- The "threshold" attribute takes a level value such that all -->
+<!-- logging statements with a level equal or below this value are -->
+<!-- disabled. -->
+
+<!-- Setting the "debug" enable the printing of internal log4j logging -->
+<!-- statements. -->
+
+<!-- By default, debug attribute is "null", meaning that we not do touch -->
+<!-- internal log4j logging settings. The "null" value for the threshold -->
+<!-- attribute can be misleading. The threshold field of a repository -->
+<!-- cannot be set to null. The "null" value for the threshold attribute -->
+<!-- simply means don't touch the threshold field, the threshold field -->
+<!-- keeps its old value. -->
+
+<!ATTLIST log4j:configuration
+ xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/"
+ threshold (all|debug|info|warn|error|fatal|off|null) "null"
+ debug (true|false|null) "null"
+>
+
+<!-- renderer elements allow the user to customize the conversion of -->
+<!-- message objects to String. -->
+
+<!ELEMENT renderer EMPTY>
+<!ATTLIST renderer
+ renderedClass CDATA #REQUIRED
+ renderingClass CDATA #REQUIRED
+>
+
+<!-- Appenders must have a name and a class. -->
+<!-- Appenders may contain an error handler, a layout, optional parameters -->
+<!-- and filters. They may also reference (or include) other appenders. -->
+<!ELEMENT appender (errorHandler?, param*, layout?, filter*, appender-ref*)>
+<!ATTLIST appender
+ name ID #REQUIRED
+ class CDATA #REQUIRED
+>
+
+<!ELEMENT layout (param*)>
+<!ATTLIST layout
+ class CDATA #REQUIRED
+>
+
+<!ELEMENT filter (param*)>
+<!ATTLIST filter
+ class CDATA #REQUIRED
+>
+
+<!-- ErrorHandlers can be of any class. They can admit any number of -->
+<!-- parameters. -->
+
+<!ELEMENT errorHandler (param*, root-ref?, logger-ref*, appender-ref?)>
+<!ATTLIST errorHandler
+ class CDATA #REQUIRED
+>
+
+<!ELEMENT root-ref EMPTY>
+
+<!ELEMENT logger-ref EMPTY>
+<!ATTLIST logger-ref
+ ref IDREF #REQUIRED
+>
+
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ name CDATA #REQUIRED
+ value CDATA #REQUIRED
+>
+
+
+<!-- The priority class is org.apache.log4j.Level by default -->
+<!ELEMENT priority (param*)>
+<!ATTLIST priority
+ class CDATA #IMPLIED
+ value CDATA #REQUIRED
+>
+
+<!-- The level class is org.apache.log4j.Level by default -->
+<!ELEMENT level (param*)>
+<!ATTLIST level
+ class CDATA #IMPLIED
+ value CDATA #REQUIRED
+>
+
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named category. -->
+<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
+<!ATTLIST category
+ class CDATA #IMPLIED
+ name CDATA #REQUIRED
+ additivity (true|false) "true"
+>
+
+<!-- If no level element is specified, then the configurator MUST not -->
+<!-- touch the level of the named logger. -->
+<!ELEMENT logger (level?,appender-ref*)>
+<!ATTLIST logger
+ name ID #REQUIRED
+ additivity (true|false) "true"
+>
+
+
+<!ELEMENT categoryFactory (param*)>
+<!ATTLIST categoryFactory
+ class CDATA #REQUIRED>
+
+<!ELEMENT appender-ref EMPTY>
+<!ATTLIST appender-ref
+ ref IDREF #REQUIRED
+>
+
+<!-- If no priority element is specified, then the configurator MUST not -->
+<!-- touch the priority of root. -->
+<!-- The root category always exists and cannot be subclassed. -->
+<!ELEMENT root (param*, (priority|level)?, appender-ref*)>
+
+
+<!-- ==================================================================== -->
+<!-- A logging event -->
+<!-- ==================================================================== -->
+<!ELEMENT log4j:eventSet (log4j:event*)>
+<!ATTLIST log4j:eventSet
+ xmlns:log4j CDATA #FIXED "http://jakarta.apache.org/log4j/"
+ version (1.1|1.2) "1.2"
+ includesLocationInfo (true|false) "true"
+>
+
+
+
+<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?,
+ log4j:locationInfo?) >
+
+<!-- The timestamp format is application dependent. -->
+<!ATTLIST log4j:event
+ logger CDATA #REQUIRED
+ level CDATA #REQUIRED
+ thread CDATA #REQUIRED
+ timestamp CDATA #REQUIRED
+>
+
+<!ELEMENT log4j:message (#PCDATA)>
+<!ELEMENT log4j:NDC (#PCDATA)>
+
+<!ELEMENT log4j:throwable (#PCDATA)>
+
+<!ELEMENT log4j:locationInfo EMPTY>
+<!ATTLIST log4j:locationInfo
+ class CDATA #REQUIRED
+ method CDATA #REQUIRED
+ file CDATA #REQUIRED
+ line CDATA #REQUIRED
+>
Property changes on: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.dtd
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.xml (rev 0)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.xml 2013-11-02 10:06:01 UTC (rev 4446)
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+<log4j:configuration>
+ <!-- log4j test configuration -->
+ <appender name="test-appender" class="org.apache.log4j.ConsoleAppender">
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%-5p %c.%M(%C{1}.java:%L) %m%n" />
+ </layout>
+ </appender>
+ <category name="jdbc">
+ <priority value="WARN" />
+ </category>
+ <category name="it">
+ <priority value="INFO" />
+ </category>
+ <category name="info">
+ <priority value="INFO" />
+ </category>
+ <category name="org">
+ <priority value="WARN" />
+ </category>
+ <category name="com">
+ <priority value="WARN" />
+ </category>
+ <category name="net">
+ <priority value="WARN" />
+ </category>
+ <category name="org.dbunit">
+ <priority value="WARN" />
+ </category>
+ <category name="score">
+ <priority value="INFO" />
+ </category>
+ <category name="it">
+ <priority value="INFO" />
+ </category>
+ <category name="net.sourceforge.openutils.mgnltagcloud">
+ <priority value="DEBUG" />
+ </category>
+ <root>
+ <priority value="ALL" />
+ <appender-ref ref="test-appender" />
+ </root>
+</log4j:configuration>
\ No newline at end of file
Property changes on: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/log4j.xml
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Author Date Id Revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/repo-conf/jackrabbit-memory-search.xml
===================================================================
--- magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/repo-conf/jackrabbit-memory-search.xml 2013-11-02 10:05:43 UTC (rev 4445)
+++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/resources/repo-conf/jackrabbit-memory-search.xml 2013-11-02 10:06:01 UTC (rev 4446)
@@ -19,7 +19,7 @@
<param name="blobFSBlockSize" value="1" /><!-- store in memory -->
</PersistenceManager>
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
- <param name="indexingConfiguration" value="${rep.home}/indexing_configuration.xml" />
+ <param name="indexingConfiguration" value="/indexing_configuration.xml" />
<param name="path" value="${wsp.home}/index" />
<param name="useCompoundFile" value="true" />
<param name="minMergeDocs" value="100" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|