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) + { + 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< ? >> getFacetHandlerMap() + { + return _facetHandlerMap; + } + + /** + * @return the map of RuntimeFacetHandlerFactories + */ + public Map<String, RuntimeFacetHandlerFactory< ? , ? >> getRuntimeFacetHandlerFactoryMap() + { + return _runtimeFacetHandlerFactoryMap; + } + + public Document fillFacetData(int docid, Document doc) throws IOException + { + if (_subReaders != null) + { + int readerIndex = readerIndex(docid, _starts, _subReaders.length); + BoboIndexReader subReader = _subReaders[readerIndex]; + int subid = docid - _starts[readerIndex]; + return subReader.fillFacetData(subid, doc); + } + else + { + if (doc == null) + { + doc = new Document(); + } + Collection<FacetHandler< ? >> facetHandlers = _facetHandlerMap.values(); + for (FacetHandler< ? > facetHandler : facetHandlers) + { + String[] vals = facetHandler.getFieldValues(this, docid); + if (vals != null) + { + String[] values = doc.getValues(facetHandler.getName()); + Set<String> storedVals = new HashSet<String>(Arrays.asList(values)); + + for (String val : vals) + { + storedVals.add(val); + } + doc.removeField(facetHandler.getName()); + + for (String val : storedVals) + { + doc.add(new Field(facetHandler.getName(), val, Field.Store.NO, Field.Index.NOT_ANALYZED)); + } + } + } + return doc; + } + } + + private static int readerIndex(int n, int[] starts, int numSubReaders) + { + int lo = 0; + int hi = numSubReaders - 1; + + while (hi >= lo) + { + int mid = (lo + hi) >>> 1; + int midValue = starts[mid]; + if (n < midValue) + hi = mid - 1; + else if (n > midValue) + lo = mid + 1; + else + { + while (mid + 1 < numSubReaders && starts[mid + 1] == midValue) + { + mid++; + } + return mid; + } + } + return hi; + } + + /** + * Work area for loading + */ + public static class WorkArea + { + + HashMap<Class< ? >, Object> map = new HashMap<Class< ? >, Object>(); + + @SuppressWarnings("unchecked") + public <T> T get(Class<T> cls) + { + T obj = (T) map.get(cls); + return obj; + } + + public void put(Object obj) + { + map.put(obj.getClass(), obj); + } + + public void clear() + { + map.clear(); + } + + @Override + public String toString() + { + return map.toString(); + } + } + + private BoboIndexReader(IndexReader in) + { + super(in); + } + + public BoboIndexReader copy(IndexReader in) + { + if (_subReaders != null) + { + throw new IllegalStateException("this BoboIndexReader has subreaders"); + } + BoboIndexReader copy = new BoboIndexReader(in); + copy._facetHandlerMap = this._facetHandlerMap; + copy._facetHandlers = this._facetHandlers; + copy._runtimeFacetHandlerFactories = this._runtimeFacetHandlerFactories; + copy._runtimeFacetHandlerFactoryMap = this._runtimeFacetHandlerFactoryMap; + copy._workArea = this._workArea; + copy._facetDataMap.putAll(this._facetDataMap); + copy._srcReader = in; + copy._starts = this._starts; + return copy; + } +} Property changes on: magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/com/browseengine/bobo/api/BoboIndexReader.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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< ? >> getFacetHandlerMap() + { + return _facetHandlerMap; + } + + /** + * @return the map of RuntimeFacetHandlerFactories + */ + public Map<String, RuntimeFacetHandlerFactory< ? , ? >> getRuntimeFacetHandlerFactoryMap() + { + return _runtimeFacetHandlerFactoryMap; + } + + public Document fillFacetData(int docid, Document doc) throws IOException + { + if (_subReaders != null) + { + int readerIndex = readerIndex(docid, _starts, _subReaders.length); + BoboIndexReader subReader = _subReaders[readerIndex]; + int subid = docid - _starts[readerIndex]; + return subReader.fillFacetData(subid, doc); + } + else + { + if (doc == null) + { + doc = new Document(); + } + Collection<FacetHandler< ? >> facetHandlers = _facetHandlerMap.values(); + for (FacetHandler< ? > facetHandler : facetHandlers) + { + String[] vals = facetHandler.getFieldValues(this, docid); + if (vals != null) + { + String[] values = doc.getValues(facetHandler.getName()); + Set<String> storedVals = new HashSet<String>(Arrays.asList(values)); + + for (String val : vals) + { + storedVals.add(val); + } + doc.removeField(facetHandler.getName()); + + for (String val : storedVals) + { + doc.add(new Field(facetHandler.getName(), val, Field.Store.NO, Field.Index.NOT_ANALYZED)); + } + } + } + return doc; + } + } + + private static int readerIndex(int n, int[] starts, int numSubReaders) + { + int lo = 0; + int hi = numSubReaders - 1; + + while (hi >= lo) + { + int mid = (lo + hi) >>> 1; + int midValue = starts[mid]; + if (n < midValue) + hi = mid - 1; + else if (n > midValue) + lo = mid + 1; + else + { + while (mid + 1 < numSubReaders && starts[mid + 1] == midValue) + { + mid++; + } + return mid; + } + } + return hi; + } + + /** + * Work area for loading + */ + public static class WorkArea + { + + HashMap<Class< ? >, Object> map = new HashMap<Class< ? >, Object>(); + + @SuppressWarnings("unchecked") + public <T> T get(Class<T> cls) + { + T obj = (T) map.get(cls); + return obj; + } + + public void put(Object obj) + { + map.put(obj.getClass(), obj); + } + + public void clear() + { + map.clear(); + } + + @Override + public String toString() + { + return map.toString(); + } + } + + private BoboIndexReader(IndexReader in) + { + super(in); + } + + public BoboIndexReader copy(IndexReader in) + { + if (_subReaders != null) + { + throw new IllegalStateException("this BoboIndexReader has subreaders"); + } + BoboIndexReader copy = new BoboIndexReader(in); + copy._facetHandlerMap = this._facetHandlerMap; + copy._facetHandlers = this._facetHandlers; + copy._runtimeFacetHandlerFactories = this._runtimeFacetHandlerFactories; + copy._runtimeFacetHandlerFactoryMap = this._runtimeFacetHandlerFactoryMap; + copy._workArea = this._workArea; + copy._facetDataMap.putAll(this._facetDataMap); + copy._srcReader = in; + copy._starts = this._starts; + return copy; + } +} 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/dialog/TagCloudDialog.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -23,6 +23,7 @@ import info.magnolia.cms.i18n.I18nContentSupportFactory; import info.magnolia.cms.security.AccessDeniedException; import info.magnolia.module.admininterface.dialogs.ConfiguredDialog; +import info.magnolia.objectfactory.Components; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -210,7 +211,7 @@ if (StringUtils.isNotBlank(tagCloudName)) { - TagCloud tagCloudOriginal = TagCloudManager.getInstance().getTagCloud(tagCloudName); + TagCloud tagCloudOriginal = Components.getComponent(TagCloudManager.class).getTagCloud(tagCloudName); if (tagCloudOriginal != null) { try @@ -264,9 +265,8 @@ } tagCloud.setCount(10000); - TagCloudManager.getInstance().calculateTagCloud(tagCloud); + Components.getComponent(TagCloudManager.class).calculateTagCloud(tagCloud); } return tagCloud; } } - 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/el/TagCloudElFunctions.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -19,6 +19,8 @@ package net.sourceforge.openutils.mgnltagcloud.el; +import info.magnolia.objectfactory.Components; + import java.util.Comparator; import java.util.HashMap; import java.util.Map; @@ -50,7 +52,7 @@ */ public static Map<String, Integer> named(String name) { - TagCloud tagCloud = TagCloudManager.getInstance().getTagCloud(name); + TagCloud tagCloud = Components.getComponent(TagCloudManager.class).getTagCloud(name); return tagCloud != null ? tagCloud.getTags() : new HashMap<String, Integer>(); } @@ -102,11 +104,11 @@ if (cacheAndObserve) { - tagCloud = TagCloudManager.getInstance().checkForTagCloud(tagCloud); + tagCloud = Components.getComponent(TagCloudManager.class).checkForTagCloud(tagCloud); } else { - TagCloudManager.getInstance().calculateTagCloud(tagCloud); + Components.getComponent(TagCloudManager.class).calculateTagCloud(tagCloud); } return tagCloud != null ? sortbyname(tagCloud.getTags(), true) : new HashMap<String, Integer>(); 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManager.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -22,10 +22,10 @@ import info.magnolia.cms.beans.config.ObservedManager; import info.magnolia.cms.core.Content; import info.magnolia.cms.util.ContentUtil; -import info.magnolia.cms.util.FactoryUtil; import info.magnolia.cms.util.ObservationUtil; import info.magnolia.content2bean.Content2BeanException; import info.magnolia.content2bean.Content2BeanUtil; +import info.magnolia.objectfactory.Components; import java.io.IOException; import java.util.Arrays; @@ -33,6 +33,7 @@ import java.util.List; import java.util.Map; +import javax.inject.Inject; import javax.inject.Singleton; import javax.jcr.RepositoryException; import javax.jcr.Session; @@ -87,13 +88,8 @@ */ private Map<String, EventListener> repositoryListeners = new HashMap<String, EventListener>(); - /** - * @return tagcloud manager singleton instance - */ - public static TagCloudManager getInstance() - { - return (TagCloudManager) FactoryUtil.getSingleton(TagCloudManager.class); - } + @Inject + protected JackrabbitUtil jackrabbitUtil; /** * {@inheritDoc} @@ -178,8 +174,8 @@ try { // get index reader - Session session = JackrabbitUtil.getSession(tagCloud.getRepository()); - SearchIndex si = JackrabbitUtil.getSearchIndex(tagCloud.getRepository(), session); + Session session = jackrabbitUtil.getSession(tagCloud.getRepository()); + SearchIndex si = jackrabbitUtil.getSearchIndex(tagCloud.getRepository(), session); ir = si.getIndexReader(); NamespaceMappings namespaceMappings = si.getNamespaceMappings(); @@ -189,14 +185,14 @@ // configure bobo for faceted search MultiValueFacetHandler tagsHandler = new MultiValueFacetHandler(propertyName); - List<FacetHandler<?>> handlerList = Arrays.asList(new FacetHandler<?>[]{tagsHandler }); + List<FacetHandler< ? >> handlerList = Arrays.asList(new FacetHandler< ? >[]{tagsHandler }); BoboIndexReader boboReader = HierarchyBoboIndexReader.getInstance(ir, handlerList); // get query Query q = boboReader.getFastMatchAllDocsQuery(); if (StringUtils.isNotBlank(tagCloud.getPath()) && !"/".equals(tagCloud.getPath())) { - q = JackrabbitUtil.getQuery(tagCloud.getPath(), session, si); + q = jackrabbitUtil.getQuery(tagCloud.getPath(), session, si); } // build request for bobo @@ -236,7 +232,6 @@ { browser.close(); } - } catch (RepositoryException ex) 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudRepositoryObserver.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -19,6 +19,8 @@ package net.sourceforge.openutils.mgnltagcloud.manager; +import info.magnolia.objectfactory.Components; + import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -84,8 +86,8 @@ List<TagCloud> tagCloudsToRefresh = new ArrayList<TagCloud>(); for (String path : paths) { - for (Map.Entry<String, TagCloud> entry : TagCloudManager - .getInstance() + for (Map.Entry<String, TagCloud> entry : Components + .getComponent(TagCloudManager.class) .getTagClouds(this.repository) .entrySet()) { @@ -102,7 +104,7 @@ // refresh tagClouds for (TagCloud tc : tagCloudsToRefresh) { - TagCloudManager.getInstance().calculateTagCloud(tc); + Components.getComponent(TagCloudManager.class).calculateTagCloud(tc); } } 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/module/TagCloudModule.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -21,6 +21,7 @@ import info.magnolia.module.ModuleLifecycle; import info.magnolia.module.ModuleLifecycleContext; +import info.magnolia.objectfactory.Components; import net.sourceforge.openutils.mgnltagcloud.manager.TagCloudManager; import org.slf4j.Logger; @@ -46,7 +47,9 @@ { log.info("Starting module tagcloud"); - moduleLifecycleContext.registerModuleObservingComponent("clouds", TagCloudManager.getInstance()); + moduleLifecycleContext.registerModuleObservingComponent( + "clouds", + Components.getComponent(TagCloudManager.class)); } /** @@ -55,7 +58,7 @@ public void stop(ModuleLifecycleContext moduleLifecycleContext) { log.info("Stopping module tagcloud"); - TagCloudManager.getInstance().stopObserving(); + Components.getComponent(TagCloudManager.class).stopObserving(); } } 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/java/net/sourceforge/openutils/mgnltagcloud/util/JackrabbitUtil.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -19,9 +19,10 @@ package net.sourceforge.openutils.mgnltagcloud.util; -import info.magnolia.cms.util.FactoryUtil; -import info.magnolia.cms.util.FactoryUtil.InstanceFactory; import info.magnolia.context.MgnlContext; +import info.magnolia.objectfactory.ComponentFactory; +import info.magnolia.objectfactory.ComponentProvider; +import info.magnolia.objectfactory.Components; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -32,6 +33,7 @@ import javax.jcr.RepositoryException; import javax.jcr.Session; import javax.jcr.query.InvalidQueryException; +import javax.jws.Oneway; import org.apache.commons.lang.UnhandledException; import org.apache.jackrabbit.core.RepositoryImpl; @@ -54,7 +56,7 @@ * @version $Id$ */ @Singleton -public class JackrabbitUtil implements InstanceFactory +public class JackrabbitUtil { private static final String LANG_SQL = "sql"; @@ -71,16 +73,15 @@ /** * {@inheritDoc} */ - public Object newInstance() + public JackrabbitUtil() { - JackrabbitUtil util = new JackrabbitUtil(); try { - util.getSearchManager = RepositoryImpl.class.getDeclaredMethod("getSearchManager", String.class); - util.getQueryNodeFactory = SearchIndex.class.getDeclaredMethod("getQueryNodeFactory"); + getSearchManager = RepositoryImpl.class.getDeclaredMethod("getSearchManager", String.class); + getQueryNodeFactory = SearchIndex.class.getDeclaredMethod("getQueryNodeFactory"); - util.getSearchManager.setAccessible(true); - util.getQueryNodeFactory.setAccessible(true); + getSearchManager.setAccessible(true); + getQueryNodeFactory.setAccessible(true); } catch (SecurityException e) { @@ -90,7 +91,6 @@ { log.error("Exception getting SearchManager", e); } - return util; } /** @@ -98,7 +98,7 @@ * @param repository repository * @return jcr session */ - public static Session getSession(String repository) + public Session getSession(String repository) { return MgnlContext.getSystemContext().getHierarchyManager(repository).getWorkspace().getSession(); } @@ -110,18 +110,18 @@ * @return {@link SearchIndex} * @throws RepositoryException exception getting searchindex */ - public static SearchIndex getSearchIndex(String repository, Session session) throws RepositoryException + public SearchIndex getSearchIndex(String repository, Session session) throws RepositoryException { RepositoryImpl repImpl = (RepositoryImpl) session.getRepository(); - JackrabbitUtil util = (JackrabbitUtil) FactoryUtil.getSingleton(JackrabbitUtil.class); + try { - SearchManager searchManager = (SearchManager) util.getSearchManager.invoke(repImpl, repository); + SearchManager searchManager = (SearchManager) getSearchManager.invoke(repImpl, repository); return (SearchIndex) searchManager.getQueryHandler(); } catch (Throwable e) { - util.log.error("Error retrieving SearchIndex", e); + log.error("Error retrieving SearchIndex", e); } return null; } @@ -133,17 +133,16 @@ * @param si jackr search index * @return lucene query */ - public static Query getQuery(String path, Session session, SearchIndex si) + public Query getQuery(String path, Session session, SearchIndex si) { - JackrabbitUtil util = (JackrabbitUtil) FactoryUtil.getSingleton(JackrabbitUtil.class); QueryNodeFactory factory; try { - factory = (QueryNodeFactory) util.getQueryNodeFactory.invoke(si); + factory = (QueryNodeFactory) getQueryNodeFactory.invoke(si); } catch (Throwable e) { - util.log.error("Error qetting query node factory", e); + log.error("Error qetting query node factory", e); return null; } try @@ -170,16 +169,16 @@ } catch (InvalidQueryException e) { - util.log.error("Invalid query", e); + log.error("Invalid query", e); } catch (RepositoryException e) { - util.log.error("Repository Exception", e); + log.error("Repository Exception", e); } return null; } - private static Query createQuery(QueryRootNode root, Session session, SearchIndex si) throws RepositoryException + private Query createQuery(QueryRootNode root, Session session, SearchIndex si) throws RepositoryException { // LuceneQueryBuilder.createQuery() signature has changed in 2.2.1 (one more parameter added) so we are forced @@ -199,7 +198,7 @@ if (createQuery == null) { throw new UnhandledException( - "Unsupported version of jackrabbit detected (not in the range 1.6 - 2.0.5?)", + "Unsupported version of jackrabbit detected (not in the range 1.6 - 2.6.?)", null); } Added: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.pages.sampleTagcloud.xml =================================================================== --- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.pages.sampleTagcloud.xml (rev 0) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.pages.sampleTagcloud.xml 2013-04-05 20:50:34 UTC (rev 4217) @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="sampleTagcloud" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name" sv:multiple="true"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>754da397-37d2-4c01-9c14-7402a388517b</sv:value> + </sv:property> + <sv:property sv:name="dialog" sv:type="String"> + <sv:value>tagcloud:sample-tagcloud</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="renderType" sv:type="String"> + <sv:value>jsp</sv:value> + </sv:property> + <sv:property sv:name="templateScript" sv:type="String"> + <sv:value>/templates/samples-tagcloud/template.jsp</sv:value> + </sv:property> + <sv:property sv:name="title" sv:type="String"> + <sv:value>Tagcloud sample template</sv:value> + </sv:property> + <sv:property sv:name="visible" sv:type="String"> + <sv:value>true</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>false</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2008-09-23T16:56:46.344+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2013-04-05T22:45:26.578+02:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.pages.sampleTagcloud.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.xml =================================================================== --- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.xml 2013-04-02 21:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/config.modules.tagcloud.templates.xml 2013-04-05 20:50:34 UTC (rev 4217) @@ -1,69 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<sv:node sv:name="templates" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>mgnl:content</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> - <sv:value>mix:lockable</sv:value> - </sv:property> - <sv:property sv:name="jcr:uuid" sv:type="String"> - <sv:value>72d57f56-7ace-4202-9dea-0d342c08723b</sv:value> - </sv:property> - <sv:node sv:name="MetaData"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>mgnl:metaData</sv:value> - </sv:property> - <sv:property sv:name="mgnl:activated" sv:type="Boolean"> - <sv:value>false</sv:value> - </sv:property> - <sv:property sv:name="mgnl:authorid" sv:type="String"> - <sv:value>superuser</sv:value> - </sv:property> - <sv:property sv:name="mgnl:creationdate" sv:type="Date"> - <sv:value>2010-03-09T16:26:39.077+01:00</sv:value> - </sv:property> - <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> - <sv:value>2010-03-09T16:32:13.932+01:00</sv:value> - </sv:property> - </sv:node> - <sv:node sv:name="sampleTagcloud"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>mgnl:contentNode</sv:value> - </sv:property> - <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> - <sv:value>mix:lockable</sv:value> - </sv:property> - <sv:property sv:name="jcr:uuid" sv:type="String"> - <sv:value>35e87ec7-0f73-4d3c-a723-b3821936996e</sv:value> - </sv:property> - <sv:property sv:name="templatePath" sv:type="String"> - <sv:value>/templates/samples-tagcloud/template.jsp</sv:value> - </sv:property> - <sv:property sv:name="title" sv:type="String"> - <sv:value>Tagcloud sample template</sv:value> - </sv:property> - <sv:property sv:name="type" sv:type="String"> - <sv:value>jsp</sv:value> - </sv:property> - <sv:property sv:name="visible" sv:type="String"> - <sv:value>true</sv:value> - </sv:property> - <sv:node sv:name="MetaData"> - <sv:property sv:name="jcr:primaryType" sv:type="Name"> - <sv:value>mgnl:metaData</sv:value> - </sv:property> - <sv:property sv:name="mgnl:activated" sv:type="Boolean"> - <sv:value>false</sv:value> - </sv:property> - <sv:property sv:name="mgnl:authorid" sv:type="String"> - <sv:value>superuser</sv:value> - </sv:property> - <sv:property sv:name="mgnl:creationdate" sv:type="Date"> - <sv:value>2008-09-23T16:56:46.344+02:00</sv:value> - </sv:property> - <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> - <sv:value>2010-03-09T16:32:49.373+01:00</sv:value> - </sv:property> - </sv:node> - </sv:node> -</sv:node> Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/website.sample-tagcloud.xml =================================================================== --- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/website.sample-tagcloud.xml 2013-04-02 21:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-bootstrap-samples/tagcloud/website.sample-tagcloud.xml 2013-04-05 20:50:34 UTC (rev 4217) @@ -31,7 +31,7 @@ <sv:value>2010-05-11T17:25:11.508+02:00</sv:value> </sv:property> <sv:property sv:name="mgnl:template" sv:type="String"> - <sv:value>sampleTagcloud</sv:value> + <sv:value>tagcloud:pages/sampleTagcloud</sv:value> </sv:property> </sv:node> <sv:node sv:name="sample-inner-tagcloud-page"> @@ -68,7 +68,7 @@ <sv:value>2010-05-11T17:36:17.548+02:00</sv:value> </sv:property> <sv:property sv:name="mgnl:template" sv:type="String"> - <sv:value>sampleTagcloud</sv:value> + <sv:value>tagcloud:pages/sampleTagcloud</sv:value> </sv:property> </sv:node> </sv:node> @@ -107,7 +107,7 @@ <sv:value>2010-05-11T17:36:35.895+02:00</sv:value> </sv:property> <sv:property sv:name="mgnl:template" sv:type="String"> - <sv:value>sampleTagcloud</sv:value> + <sv:value>tagcloud:pages/sampleTagcloud</sv:value> </sv:property> </sv:node> </sv:node> Modified: magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-files/templates/samples-tagcloud/template.jsp =================================================================== --- magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-files/templates/samples-tagcloud/template.jsp 2013-04-02 21:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/main/resources/mgnl-files/templates/samples-tagcloud/template.jsp 2013-04-05 20:50:34 UTC (rev 4217) @@ -1,6 +1,6 @@ <jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="urn:jsptld:http://java.sun.com/jsp/jstl/core" - xmlns:fmt="urn:jsptld:http://java.sun.com/jsp/jstl/fmt" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:cms="urn:jsptld:cms-taglib" - xmlns:cmsfn="http://www.magnolia.info/tlds/cmsfn-taglib.tld" xmlns:cmsu="urn:jsptld:cms-util-taglib" + xmlns:fmt="urn:jsptld:http://java.sun.com/jsp/jstl/fmt" xmlns:fn="http://java.sun.com/jsp/jstl/functions" + xmlns:cms="http://magnolia-cms.com/taglib/templating-components/cms" xmlns:tagcloud="http://net.sourceforge.openutils/mgnlTagCloud" xmlns:su="http://openutils.sf.net/openutils-stringutils"> <jsp:directive.page contentType="text/html; charset=UTF-8" session="false" /> <jsp:text> @@ -8,9 +8,9 @@ </jsp:text> <html> <head> + <cms:init /> <title>${actpage.title}</title> </head> - <cms:mainBar paragraph="sample-tagcloud" /> <body> <h1>${actpage.title}</h1> <h2>Samples:</h2> 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:52:23 UTC (rev 4216) +++ magnoliamodules/trunk/openutils-mgnltagcloud/src/test/java/net/sourceforge/openutils/mgnltagcloud/manager/TagCloudManagerTest.java 2013-04-05 20:50:34 UTC (rev 4217) @@ -27,8 +27,10 @@ import info.magnolia.cms.util.ClasspathResourcesUtil; import info.magnolia.cms.util.ContentUtil; import info.magnolia.context.MgnlContext; +import info.magnolia.objectfactory.Components; import info.magnolia.repository.RepositoryConstants; import info.magnolia.test.RepositoryTestCase; +import info.magnolia.test.mock.MockSimpleComponentProvider; import java.util.Map; import java.util.Set; @@ -38,6 +40,7 @@ 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; @@ -269,14 +272,17 @@ hmConfig.save(); - TagCloudManager.getInstance().onRegister(contentTagcloud); + TagCloudManager manager = Components.getComponent(TagCloudManager.class); + manager.jackrabbitUtil = new JackrabbitUtil(); + + manager.onRegister(contentTagcloud); } @Override public void tearDown() throws Exception { super.tearDown(); - TagCloudManager.getInstance().stopObserving(); + Components.getComponent(TagCloudManager.class).stopObserving(); ... [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. |