From: <fg...@us...> - 2009-07-28 15:06:01
|
Revision: 1241 http://openutils.svn.sourceforge.net/openutils/?rev=1241&view=rev Author: fgiust Date: 2009-07-28 15:05:47 +0000 (Tue, 28 Jul 2009) Log Message: ----------- new repoutils module Added Paths: ----------- trunk/openutils-mgnlrepoutils/ trunk/openutils-mgnlrepoutils/pom.xml trunk/openutils-mgnlrepoutils/src/ trunk/openutils-mgnlrepoutils/src/main/ trunk/openutils-mgnlrepoutils/src/main/java/ trunk/openutils-mgnlrepoutils/src/main/java/net/ trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/ trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/ trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/ trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/RepositoryUtilsPage.java trunk/openutils-mgnlrepoutils/src/main/java/org/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexUtils.java trunk/openutils-mgnlrepoutils/src/main/resources/ trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/ trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/ trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/repoutils.xml trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/ trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/ trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.adminInterface.config.menu.tools.repoutils.xml trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.repoutils.pages.repoutils.xml trunk/openutils-mgnlrepoutils/src/main/resources/net/ trunk/openutils-mgnlrepoutils/src/main/resources/net/sourceforge/ trunk/openutils-mgnlrepoutils/src/main/resources/net/sourceforge/openutils/ trunk/openutils-mgnlrepoutils/src/site/ trunk/openutils-mgnlrepoutils/src/site/apt/ trunk/openutils-mgnlrepoutils/src/site/apt/index.apt trunk/openutils-mgnlrepoutils/src/site/changes/ trunk/openutils-mgnlrepoutils/src/site/changes/changes.xml trunk/openutils-mgnlrepoutils/src/site/site.xml Property changes on: trunk/openutils-mgnlrepoutils ___________________________________________________________________ Added: svn:ignore + .checkstyle .classpath .project target .settings Added: trunk/openutils-mgnlrepoutils/pom.xml =================================================================== --- trunk/openutils-mgnlrepoutils/pom.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/pom.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,71 @@ +<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</artifactId> + <version>11</version> + <relativePath>..</relativePath> + </parent> + <modelVersion>4.0.0</modelVersion> + <packaging>jar</packaging> + <artifactId>openutils-mgnlrepoutils</artifactId> + <name>openutils-mgnlrepoutils</name> + <version>4.0-SNAPSHOT</version> + <licenses> + <license> + <name>GPLv3</name> + <url>http://www.gnu.org/licenses/gpl-3.0.txt</url> + </license> + </licenses> + <build> + <resources> + <resource> + <filtering>false</filtering> + <directory>src/main/resources</directory> + <includes> + <include>**/*</include> + </includes> + </resource> + <resource> + <filtering>true</filtering> + <directory>src/main/resources</directory> + <includes> + <include>META-INF/magnolia/*</include> + </includes> + </resource> + </resources> + </build> + <dependencies> + <dependency> + <groupId>info.magnolia</groupId> + <artifactId>magnolia-module-admininterface</artifactId> + <version>4.0.1</version> + </dependency> + <dependency> + <groupId>org.testng</groupId> + <artifactId>testng</artifactId> + <classifier>jdk15</classifier> + <version>5.1</version> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> + <repositories> + <repository> + <id>repository.magnolia.info</id> + <name>magnolia repository</name> + <url>http://repository.magnolia-cms.com/m2</url> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>false</enabled> + </snapshots> + </repository> + </repositories> +</project> \ No newline at end of file Property changes on: trunk/openutils-mgnlrepoutils/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/RepositoryUtilsPage.java =================================================================== --- trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/RepositoryUtilsPage.java (rev 0) +++ trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/RepositoryUtilsPage.java 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,171 @@ +/** + * Copyright Openmind 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package net.sourceforge.openutils.mgnlrepoutils; + +import info.magnolia.cms.beans.config.ContentRepository; +import info.magnolia.cms.util.AlertUtil; +import info.magnolia.context.MgnlContext; +import info.magnolia.module.admininterface.TemplatedMVCHandler; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Iterator; + +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.ArrayUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.jackrabbit.core.WorkspaceImpl; +import org.apache.jackrabbit.core.persistence.PersistenceManager; +import org.apache.jackrabbit.core.query.QueryManagerImpl; +import org.apache.jackrabbit.core.query.lucene.IndexUtils; +import org.apache.jackrabbit.core.query.lucene.SearchIndex; + + +/** + * @author fgiust + * @version $Id$ + */ +public class RepositoryUtilsPage extends TemplatedMVCHandler +{ + + private String[] repos; + + /** + * @param name + * @param request + * @param response + */ + public RepositoryUtilsPage(String name, HttpServletRequest request, HttpServletResponse response) + { + super(name, request, response); + } + + /** + * Returns the repos. + * @return the repos + */ + public String[] getRepos() + { + return repos; + } + + /** + * Sets the repos. + * @param repos the repos to set + */ + public void setRepos(String[] repos) + { + this.repos = repos; + } + + public Iterator<String> getRepositories() + { + return ContentRepository.getAllRepositoryNames(); + } + + public String doIndexConsistencyFix() throws Exception + { + + for (String repo : repos) + { + IndexUtils iu = new IndexUtils(getSearchIndex(repo)); + iu.runConsistencyCheck(true); + } + AlertUtil.setMessage("Index consistency fix done on " + ArrayUtils.toString(repos)); + return this.show(); + } + + public String doPmCheck() throws Exception + { + for (String repo : repos) + { + PersistenceManager pm = getPersistenceManager(repo); + pm.checkConsistency(null, true, true); + } + AlertUtil.setMessage("Persistence manager check done on " + ArrayUtils.toString(repos)); + return this.show(); + } + + private Object getPropertyUsingReflection(Object object, String property) throws NoSuchMethodException, + IllegalAccessException, InvocationTargetException + { + Method method = object + .getClass() + .getDeclaredMethod("get" + StringUtils.capitalize(property), new Class< ? >[0]); + method.setAccessible(true); + return method.invoke(object, new Object[0]); + } + + private SearchIndex getSearchIndex(String repo) throws RepositoryException, NoSuchMethodException, + IllegalAccessException, InvocationTargetException + { + WorkspaceImpl workspace = (WorkspaceImpl) MgnlContext.getHierarchyManager(repo).getWorkspace(); + + QueryManagerImpl queryManager = (QueryManagerImpl) workspace.getQueryManager(); + + SearchIndex searchIndex = (SearchIndex) getPropertyUsingReflection(queryManager, "queryHandler"); + return searchIndex; + } + + private PersistenceManager getPersistenceManager(String repo) throws Exception + { + WorkspaceImpl workspace = (WorkspaceImpl) MgnlContext.getHierarchyManager(repo).getWorkspace(); + Repository repository = workspace.getSession().getRepository(); + + String workspaceName = ContentRepository.getMappedWorkspaceName(repo); + return getPM(repository, workspaceName); + } + + private PersistenceManager getPM(Repository repository, String workspaceName) throws Exception + { + if (workspaceName == null || workspaceName.equals("version")) + { + Object versionManager = findMethodByName(repository, "getVersionManager", null); + + Field f = versionManager.getClass().getDeclaredField("pMgr"); + f.setAccessible(true); + return (PersistenceManager) f.get(versionManager); + } + + Object workspaceInfo = findMethodByName(repository, "getWorkspaceInfo", new Object[]{workspaceName }); + return (PersistenceManager) findMethodByName(workspaceInfo, "getPersistenceManager", null); + } + + private Object findMethodByName(Object obj, String name, Object[] parameters) throws Exception + { + Method m = null; + Method[] ms = obj.getClass().getDeclaredMethods(); + for (int i = 0; i < ms.length; i++) + { + final Method x = ms[i]; + if (x.getName().equals(name)) + { + m = x; + break; + } + } + m.setAccessible(true); + return m.invoke(obj, parameters); + } + +} Property changes on: trunk/openutils-mgnlrepoutils/src/main/java/net/sourceforge/openutils/mgnlrepoutils/RepositoryUtilsPage.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexUtils.java =================================================================== --- trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexUtils.java (rev 0) +++ trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexUtils.java 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,68 @@ +/** + * Copyright Openmind 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package org.apache.jackrabbit.core.query.lucene; + +import java.io.IOException; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * Utility class used to run a consistency check on the jackrabbit index. This class needs to be in the + * org.apache.jackrabbit.core.query.lucene package due to the usage of protected members. + * @author fgiust + * @version $Id$ + */ +public class IndexUtils +{ + + private final SearchIndex searchIndex; + + /** + * + */ + public IndexUtils(SearchIndex searchIndex) + { + this.searchIndex = searchIndex; + } + + /** + * Logger. + */ + private static Logger log = LoggerFactory.getLogger(IndexUtils.class); + + public void runConsistencyCheck(boolean fix) throws IOException + { + + MultiIndex index = searchIndex.getIndex(); + + ConsistencyCheck check = ConsistencyCheck.run(index, searchIndex.getContext().getItemStateManager()); + + List<ConsistencyCheckError> errors = check.getErrors(); + + log.info("Error detected: {}", errors.size()); + + if (fix) + { + check.repair(true); + } + } + +} Property changes on: trunk/openutils-mgnlrepoutils/src/main/java/org/apache/jackrabbit/core/query/lucene/IndexUtils.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/repoutils.xml =================================================================== --- trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/repoutils.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/repoutils.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module SYSTEM "module.dtd"> +<module> + <name>repoutils</name> + <displayName>Magnolia repository utils</displayName> + <description>Magnolia repository utils</description> + <version>${project.version}</version> + <dependencies> + <dependency> + <name>adminInterface</name> + <version>3.0/*</version> + </dependency> + </dependencies> +</module> \ No newline at end of file Property changes on: trunk/openutils-mgnlrepoutils/src/main/resources/META-INF/magnolia/repoutils.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.adminInterface.config.menu.tools.repoutils.xml =================================================================== --- trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.adminInterface.config.menu.tools.repoutils.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.adminInterface.config.menu.tools.repoutils.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="repoutils" xmlns:sv="http://www.jcp.org/jcr/sv/1.0"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>0c3575e6-8066-4ad7-ad9a-310ced5f914f</sv:value> + </sv:property> + <sv:property sv:name="icon" sv:type="String"> + <sv:value>/.resources/icons/16/dot.gif</sv:value> + </sv:property> + <sv:property sv:name="label" sv:type="String"> + <sv:value>Repository tools</sv:value> + </sv:property> + <sv:property sv:name="onclick" sv:type="String"> + <sv:value>MgnlAdminCentral.showContent('/.magnolia/pages/repoutils.html');</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:Data" sv:type="String"> + <sv:value>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:activatorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2005-05-16T20:46:43.549+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastaction" sv:type="Date"> + <sv:value>2006-05-21T08:38:57.164+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2009-06-07T21:40:22.109+02:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.adminInterface.config.menu.tools.repoutils.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.repoutils.pages.repoutils.xml =================================================================== --- trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.repoutils.pages.repoutils.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.repoutils.pages.repoutils.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="repoutils" xmlns:sv="http://www.jcp.org/jcr/sv/1.0"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>f5665eeb-9da9-4b77-9817-453e4e9a4f83</sv:value> + </sv:property> + <sv:property sv:name="class" sv:type="String"> + <sv:value>net.sourceforge.openutils.mgnlcheck.RepositoryUtilsPage</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:Data" sv:type="String"> + <sv:value>MetaData</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activated" sv:type="Boolean"> + <sv:value>true</sv:value> + </sv:property> + <sv:property sv:name="mgnl:activatorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2005-07-15T14:26:11.205+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastaction" sv:type="Date"> + <sv:value>2006-05-07T10:04:20.253+02:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2009-06-07T21:39:13.846+02:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Property changes on: trunk/openutils-mgnlrepoutils/src/main/resources/mgnl-bootstrap/repoutils/config.modules.repoutils.pages.repoutils.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/site/apt/index.apt =================================================================== --- trunk/openutils-mgnlrepoutils/src/site/apt/index.apt (rev 0) +++ trunk/openutils-mgnlrepoutils/src/site/apt/index.apt 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,25 @@ + -------------------------- + openutils-mgnlrepoutils + -------------------------- + Fabrizio Giustina + -------------------------- + +About openutils-mgnlrepoutils + + openutils-mgnlrepoutils is a simple {{{http://www.magnolia.info}magnolia}} module which let you run consistency checks + on jackrabbit repository from the admin interface + + +Configuration + + Drop the openutils-mgnlrepoutils jar into WEB-INF/lib, or if you are using maven just declare the following dependency: + ++----------------------------------------------+ + <dependency> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-mgnlrepoutils</artifactId> + <version>4.0</version> + </dependency> ++----------------------------------------------+ + + A new page named "Repository utils" will show up in the tools section in the magnolia admin central. Property changes on: trunk/openutils-mgnlrepoutils/src/site/apt/index.apt ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/site/changes/changes.xml =================================================================== --- trunk/openutils-mgnlrepoutils/src/site/changes/changes.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/src/site/changes/changes.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,15 @@ +<?xml version="1.0"?> + <!-- + "type" attribute can be: add, remove, update or fix. +--> +<document> + <properties> + <title>Changes</title> + <author email="fgiust(at)users.sourceforge.net">Fabrizio Giustina</author> + </properties> + <body> + <release version="4.0" date="2009-07-28" description=""> + <action type="add" dev="fgiust">First release (marked as 4.0 to align with supported magnolia versions)</action> + </release> + </body> +</document> \ No newline at end of file Property changes on: trunk/openutils-mgnlrepoutils/src/site/changes/changes.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/openutils-mgnlrepoutils/src/site/site.xml =================================================================== --- trunk/openutils-mgnlrepoutils/src/site/site.xml (rev 0) +++ trunk/openutils-mgnlrepoutils/src/site/site.xml 2009-07-28 15:05:47 UTC (rev 1241) @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project name="Openutils mgnlrepoutils"> + <publishDate position="navigation-bottom" format="yyyy-MM-dd" /> + <version position="navigation-bottom" /> + <bannerRight> + <name>Openutils</name> + <src>http://openutils.sourceforge.net/images/openutils-logo.png</src> + <href>http://openutils.sourceforge.net</href> + </bannerRight> + <bannerLeft> + <name>Sourceforge</name> + <src>http://sourceforge.net/sflogo.php?group_id=150467&amp;type=2</src> + <href>http://www.sourceforge.net/projects/openutils</href> + </bannerLeft> + <body> + <head> + <link rel="icon" href="images/favicon.ico" /> + </head> + <breadcrumbs> + <item name="openutils" href="http://openutils.sourceforge.net/" /> + <item name="openutils-mgnlrepoutils" href="http://openutils.sourceforge.net/openutils-mgnlrepoutils" /> + </breadcrumbs> + <menu name="openutils mgnlrepoutils"> + <item name="Usage" href="index.html"></item> + </menu> + <menu ref="modules" inherit="bottom" /> + <menu ref="reports" inherit="bottom" /> + </body> + <skin> + <groupId>net.sourceforge.openutils</groupId> + <artifactId>openutils-maven-skin</artifactId> + <version>1.1</version> + </skin> +</project> \ No newline at end of file Property changes on: trunk/openutils-mgnlrepoutils/src/site/site.xml ___________________________________________________________________ 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. |