You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2010/07/02 21:29:36 UTC
svn commit: r960092 - in /incubator/lcf/trunk/modules: ./ framework/
framework/jetty-example/ framework/jetty-runner/
framework/jetty-runner/org/ framework/jetty-runner/org/apache/
framework/jetty-runner/org/apache/lcf/ framework/jetty-runner/org/apach...
Author: kwright
Date: Fri Jul 2 19:29:35 2010
New Revision: 960092
URL: http://svn.apache.org/viewvc?rev=960092&view=rev
Log:
First part of jetty integration. The jetty example is built for the framework itself, but no connectors are yet hooked into this. This will be addressed in a future checkin.
Added:
incubator/lcf/trunk/modules/framework/jetty-example/
incubator/lcf/trunk/modules/framework/jetty-example/lcf.sh
incubator/lcf/trunk/modules/framework/jetty-example/logging.ini
incubator/lcf/trunk/modules/framework/jetty-example/properties.xml
incubator/lcf/trunk/modules/framework/jetty-runner/
incubator/lcf/trunk/modules/framework/jetty-runner/org/
incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/
incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/
incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/
incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java (with props)
incubator/lcf/trunk/modules/lib/eclipse-ecj.jar (with props)
incubator/lcf/trunk/modules/lib/jasper-6.0.24.jar (with props)
incubator/lcf/trunk/modules/lib/jasper-el-6.0.24.jar (with props)
incubator/lcf/trunk/modules/lib/jetty-6.1.22.jar (with props)
incubator/lcf/trunk/modules/lib/jetty-util-6.1.22.jar (with props)
incubator/lcf/trunk/modules/lib/jsp-2.1-glassfish-9.1.1.B60.25.p2.jar (with props)
incubator/lcf/trunk/modules/lib/jsp-2.1-jetty-6.1.22.jar (with props)
incubator/lcf/trunk/modules/lib/jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar (with props)
incubator/lcf/trunk/modules/lib/servlet-api-2.5-20081211.jar (with props)
incubator/lcf/trunk/modules/lib/tomcat-juli-6.0.24.jar (with props)
Removed:
incubator/lcf/trunk/modules/lib/jasper-compiler-jdt.jar
incubator/lcf/trunk/modules/lib/jasper-compiler.jar
incubator/lcf/trunk/modules/lib/jasper-runtime.jar
incubator/lcf/trunk/modules/lib/jsp-api.jar
incubator/lcf/trunk/modules/lib/servlet-api.jar
Modified:
incubator/lcf/trunk/modules/build.xml
incubator/lcf/trunk/modules/framework/build.xml
Modified: incubator/lcf/trunk/modules/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/build.xml?rev=960092&r1=960091&r2=960092&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/build.xml (original)
+++ incubator/lcf/trunk/modules/build.xml Fri Jul 2 19:29:35 2010
@@ -51,16 +51,18 @@
<include name="commons-httpclient-lcf.jar"/>
<include name="commons-io*.jar"/>
<include name="commons-logging*.jar"/>
+ <include name="eclipse*.jar"/>
<include name="derby*.jar"/>
- <include name="jasper-compiler*.jar"/>
- <include name="jasper-compiler-jdt*.jar"/>
- <include name="jasper-runtime.jar*"/>
+ <include name="jasper*.jar"/>
+ <include name="jetty*.jar"/>
<include name="jdbcpool-0.99.jar"/>
+ <include name="jsp-2.1*.jar"/>
<include name="jsp-api*.jar"/>
<include name="junit*.jar"/>
<include name="log4j*.jar"/>
<include name="serializer*.jar"/>
<include name="servlet-api*.jar"/>
+ <include name="tomcat-juli*.jar"/>
<include name="xalan*.jar"/>
<include name="xercesImpl-lcf.jar"/>
<include name="xml-apis*.jar"/>
Modified: incubator/lcf/trunk/modules/framework/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/build.xml?rev=960092&r1=960091&r2=960092&view=diff
==============================================================================
--- incubator/lcf/trunk/modules/framework/build.xml (original)
+++ incubator/lcf/trunk/modules/framework/build.xml Fri Jul 2 19:29:35 2010
@@ -70,6 +70,19 @@
</javac>
</target>
+ <target name="compile-jetty-runner" depends="compile-core,compile-agents">
+ <mkdir dir="build/jetty-runner/classes"/>
+ <javac srcdir="jetty-runner" destdir="build/jetty-runner/classes" target="1.5" source="1.4" debug="true" debuglevel="lines,vars,source">
+ <classpath>
+ <fileset dir="lib">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="build/core/classes"/>
+ <pathelement location="build/agents/classes"/>
+ </classpath>
+ </javac>
+ </target>
+
<target name="compile-authority-service" depends="compile-core,compile-agents,compile-pull-agent">
<mkdir dir="build/authority-service/classes"/>
<javac srcdir="authority-service" destdir="build/authority-service/classes" target="1.5" source="1.4" debug="true" debuglevel="lines,vars,source">
@@ -98,7 +111,7 @@
<pathelement location="build/agents/classes"/>
<pathelement location="build/pull-agent/classes"/>
</classpath>
- </taskdef>
+ </taskdef >
<!-- Compile jsp's to java -->
<mkdir dir="build/crawler-ui/java"/>
<jasper2 validateXml="false" uriroot="crawler-ui" webXmlFragment="crawler-ui/WEB-INF/web-generated.xml" outputDir="build/crawler-ui/java" />
@@ -142,6 +155,11 @@
<jar destfile="build/jar/lcf-pull-agent.jar" basedir="build/pull-agent/classes"/>
</target>
+ <target name="jar-jetty-runner" depends="compile-jetty-runner">
+ <mkdir dir="build/jar"/>
+ <jar destfile="build/jar/lcf-jetty-runner.jar" basedir="build/jetty-runner/classes"/>
+ </target>
+
<target name="webapp-authority-service" depends="jar-core,jar-agents,jar-pull-agent,compile-authority-service">
<mkdir dir="build/webapp/authority-service/WEB-INF/lib"/>
<copy todir="build/webapp/authority-service/WEB-INF/lib">
@@ -269,6 +287,60 @@
</copy>
</target>
+ <target name="jetty-runner" depends="war-crawler-ui,war-authority-service,jar-jetty-runner,jar-core,jar-agents,jar-pull-agent">
+ <mkdir dir="dist/jetty-runner/lib"/>
+ <copy todir="dist/jetty-runner/lib">
+ <fileset dir="lib">
+ <include name="commons-codec*.jar"/>
+ <include name="commons-collections*.jar"/>
+ <include name="commons-el*.jar"/>
+ <include name="commons-fileupload*.jar"/>
+ <include name="commons-httpclient-lcf.jar"/>
+ <include name="commons-io*.jar"/>
+ <include name="commons-logging*.jar"/>
+ <include name="eclipse*.jar"/>
+ <include name="jasper*.jar"/>
+ <include name="jdbcpool-0.99.jar"/>
+ <include name="jetty*.jar"/>
+ <include name="jsp-api*.jar"/>
+ <include name="jsp-2.5*.jar"/>
+ <include name="log4j*.jar"/>
+ <include name="serializer*.jar"/>
+ <include name="servlet-api*.jar"/>
+ <include name="tomcat-juli*.jar"/>
+ <include name="xalan*.jar"/>
+ <include name="xercesImpl-lcf.jar"/>
+ <include name="xml-apis*.jar"/>
+ </fileset>
+ <fileset dir="lib">
+ <include name="postgresql*.jar"/>
+ <include name="derby*.jar"/>
+ </fileset>
+ </copy>
+ <copy todir="dist/jetty-runner/lib">
+ <fileset dir="build/jar">
+ <include name="lcf-core.jar"/>
+ <include name="lcf-ui-core.jar"/>
+ <include name="lcf-agents.jar"/>
+ <include name="lcf-pull-agent.jar"/>
+ <include name="lcf-jetty-runner.jar"/>
+ </fileset>
+ </copy>
+ <mkdir dir="dist/jetty-runner/war"/>
+ <copy todir="dist/jetty-runner/war">
+ <fileset dir="dist/web/war"/>
+ </copy>
+ <mkdir dir="dist/jetty-runner/connector-lib"/>
+ <mkdir dir="dist/jetty-runner/logs"/>
+ <copy todir="dist/jetty-runner">
+ <fileset dir="jetty-example">
+ <include name="properties.xml"/>
+ <include name="logging.ini"/>
+ <include name="executecommand.sh"/>
+ <include name="lcf.sh"/>
+ </fileset>
+ </copy>
+ </target>
<target name="compile-tests" depends="compile-core,compile-ui-core,compile-agents,compile-pull-agent,compile-authority-service">
<mkdir dir="build/tests/classes"/>
@@ -320,6 +392,6 @@
</junit>
</target>
- <target name="all" depends="processes,war-authority-service,war-crawler-ui,doc,tests,run-tests"/>
+ <target name="all" depends="processes,war-authority-service,war-crawler-ui,jetty-runner,doc,tests,run-tests"/>
</project>
Added: incubator/lcf/trunk/modules/framework/jetty-example/lcf.sh
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/jetty-example/lcf.sh?rev=960092&view=auto
==============================================================================
--- incubator/lcf/trunk/modules/framework/jetty-example/lcf.sh (added)
+++ incubator/lcf/trunk/modules/framework/jetty-example/lcf.sh Fri Jul 2 19:29:35 2010
@@ -0,0 +1,37 @@
+#!/bin/bash -e
+
+if [[ $OSTYPE == "cygwin" ]] ; then
+ PATHSEP=";"
+else
+ PATHSEP=":"
+fi
+
+#Make sure environment variables are properly set
+if [ -e "$JAVA_HOME"/bin/java ] ; then
+ if [ -f ./properties.xml ] ; then
+
+ # Build the classpath
+ CLASSPATH=""
+ for filename in $(ls -1 ./lib) ; do
+ if [ -n "$CLASSPATH" ] ; then
+ CLASSPATH="$CLASSPATH""$PATHSEP"./lib/"$filename"
+ else
+ CLASSPATH=./lib/"$filename"
+ fi
+ done
+
+ # Build the defines
+ DEFINES="-Dorg.apache.lcf.configfile=./properties.xml"
+
+ "$JAVA_HOME/bin/java" $DEFINES -cp "$CLASSPATH" org.apache.lcf.jettyrunner.LCFJettyRunner 8888 war/lcf-crawler-ui.war war/lcf-authority-service.war
+ exit $?
+
+ else
+ echo "Cannot locate properties.xml file." 1>&2
+ exit 1
+ fi
+
+else
+ echo "Environment variable JAVA_HOME is not properly set." 1>&2
+ exit 1
+fi
Added: incubator/lcf/trunk/modules/framework/jetty-example/logging.ini
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/jetty-example/logging.ini?rev=960092&view=auto
==============================================================================
--- incubator/lcf/trunk/modules/framework/jetty-example/logging.ini (added)
+++ incubator/lcf/trunk/modules/framework/jetty-example/logging.ini Fri Jul 2 19:29:35 2010
@@ -0,0 +1,4 @@
+log4j.appender.MAIN.File=logs/lcf.log
+log4j.rootLogger=WARN, MAIN
+log4j.appender.MAIN=org.apache.log4j.RollingFileAppender
+log4j.appender.MAIN.layout=org.apache.log4j.PatternLayout
Added: incubator/lcf/trunk/modules/framework/jetty-example/properties.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/jetty-example/properties.xml?rev=960092&view=auto
==============================================================================
--- incubator/lcf/trunk/modules/framework/jetty-example/properties.xml (added)
+++ incubator/lcf/trunk/modules/framework/jetty-example/properties.xml Fri Jul 2 19:29:35 2010
@@ -0,0 +1,6 @@
+<configuration>
+ <property name="org.apache.lcf.databaseimplementationclass" value="org.apache.lcf.core.database.DBInterfaceDerby"/>
+ <property name="org.apache.lcf.derbydatabasepath" value="."/>
+ <property name="org.apache.lcf.logconfigfile" value="./logging.ini"/>
+ <libdir path="./connector-lib"/>
+</configuration>
Added: incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java?rev=960092&view=auto
==============================================================================
--- incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java (added)
+++ incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java Fri Jul 2 19:29:35 2010
@@ -0,0 +1,207 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.lcf.jettyrunner;
+
+import java.io.*;
+import org.apache.lcf.core.interfaces.*;
+import org.apache.lcf.agents.interfaces.*;
+import org.apache.lcf.agents.system.*;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.webapp.WebAppContext;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.FilterHolder;
+import org.mortbay.log.Logger;
+
+/**
+ * Run LCF with jetty.
+ *
+ */
+public class LCFJettyRunner
+{
+
+ public static final String _rcsid = "@(#)$Id$";
+
+ public static final String agentShutdownSignal = org.apache.lcf.agents.AgentRun.agentShutdownSignal;
+
+ protected Server server;
+
+ public LCFJettyRunner( int port, String crawlerWarPath, String authorityServiceWarPath )
+ {
+ server = new Server( port );
+ server.setStopAtShutdown( true );
+
+ // Initialize the servlets
+ WebAppContext lcfCrawlerUI = new WebAppContext(crawlerWarPath,"/lcf-crawler-ui");
+ // This will cause jetty to ignore all of the framework and jdbc jars in the war, which is what we want.
+ lcfCrawlerUI.setParentLoaderPriority(true);
+ server.addHandler(lcfCrawlerUI);
+ WebAppContext lcfAuthorityService = new WebAppContext(authorityServiceWarPath,"/lcf-authority-service");
+ // This will cause jetty to ignore all of the framework and jdbc jars in the war, which is what we want.
+ lcfAuthorityService.setParentLoaderPriority(true);
+ server.addHandler(lcfAuthorityService);
+ }
+
+ public void start()
+ throws LCFException
+ {
+ if(!server.isRunning() )
+ {
+ try
+ {
+ server.start();
+ }
+ catch (Exception e)
+ {
+ throw new LCFException("Couldn't start: "+e.getMessage(),e);
+ }
+ }
+ }
+
+ public void stop()
+ throws LCFException
+ {
+ if( server.isRunning() )
+ {
+ try
+ {
+ server.stop();
+ }
+ catch (Exception e)
+ {
+ throw new LCFException("Couldn't stop: "+e.getMessage(),e);
+ }
+ try
+ {
+ server.join();
+ }
+ catch (InterruptedException e)
+ {
+ throw new LCFException(e.getMessage(),e,LCFException.INTERRUPTED);
+ }
+ }
+ }
+
+ /**
+ * Returns the Local Port of the first Connector found for the jetty Server.
+ * @return the port number.
+ */
+ public int getLocalPort()
+ throws LCFException
+ {
+ Connector[] conns = server.getConnectors();
+ if (0 == conns.length) {
+ throw new LCFException("Jetty Server has no Connectors");
+ }
+ return conns[0].getLocalPort();
+ }
+
+ /**
+ * A main class that starts jetty+lcf
+ */
+ public static void main( String[] args )
+ {
+ if (args.length != 3)
+ {
+ System.err.println("Usage: LCFJettyRunner <port> <crawler-war-path> <authority-service-war-path>");
+ System.exit(1);
+ }
+
+ int jettyPort = 8888;
+ try
+ {
+ jettyPort = Integer.parseInt(args[0]);
+ }
+ catch (NumberFormatException e)
+ {
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+
+ // Ready to begin in earnest...
+
+
+ try
+ {
+ LCF.initializeEnvironment();
+ IThreadContext tc = ThreadContextFactory.make();
+
+ // Clear the agents shutdown signal.
+ ILockManager lockManager = LockManagerFactory.make(tc);
+ lockManager.clearGlobalFlag(agentShutdownSignal);
+
+ // Do the basic initialization of the database and its schema
+ LCF.createSystemDatabase(tc,"","");
+ LCF.installTables(tc);
+ IAgentManager mgr = AgentManagerFactory.make(tc);
+ mgr.registerAgent("org.apache.lcf.crawler.system.CrawlerAgent");
+
+ // Other code will go here to discover and register various connectors that exist in the classpath
+ // MHL
+
+ System.err.println("Starting jetty...");
+
+ // Create a jetty instance
+ LCFJettyRunner jetty = new LCFJettyRunner(jettyPort,args[1],args[2]);
+ // This will register a shutdown hook as well.
+ jetty.start();
+
+ System.err.println("Jetty started.");
+
+ System.err.println("Starting crawler...");
+ while (true)
+ {
+ // Any shutdown signal yet?
+ if (lockManager.checkGlobalFlag(agentShutdownSignal))
+ break;
+
+ // Start whatever agents need to be started
+ LCF.startAgents(tc);
+
+ try
+ {
+ LCF.sleep(5000);
+ }
+ catch (InterruptedException e)
+ {
+ break;
+ }
+ }
+ System.err.println("Shutting down crawler...");
+ }
+ catch (LCFException e)
+ {
+ Logging.root.error("Exception: "+e.getMessage(),e);
+ e.printStackTrace(System.err);
+ System.exit(1);
+ }
+ }
+
+}
+
+
Propchange: incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/lcf/trunk/modules/framework/jetty-runner/org/apache/lcf/jettyrunner/LCFJettyRunner.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/lcf/trunk/modules/lib/eclipse-ecj.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/eclipse-ecj.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/eclipse-ecj.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jasper-6.0.24.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jasper-6.0.24.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jasper-6.0.24.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jasper-el-6.0.24.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jasper-el-6.0.24.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jasper-el-6.0.24.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jetty-6.1.22.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jetty-6.1.22.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jetty-6.1.22.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jetty-util-6.1.22.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jetty-util-6.1.22.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jetty-util-6.1.22.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jsp-2.1-glassfish-9.1.1.B60.25.p2.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jsp-2.1-glassfish-9.1.1.B60.25.p2.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jsp-2.1-glassfish-9.1.1.B60.25.p2.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jsp-2.1-jetty-6.1.22.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jsp-2.1-jetty-6.1.22.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jsp-2.1-jetty-6.1.22.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/servlet-api-2.5-20081211.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/servlet-api-2.5-20081211.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/servlet-api-2.5-20081211.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: incubator/lcf/trunk/modules/lib/tomcat-juli-6.0.24.jar
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/modules/lib/tomcat-juli-6.0.24.jar?rev=960092&view=auto
==============================================================================
Binary file - no diff available.
Propchange: incubator/lcf/trunk/modules/lib/tomcat-juli-6.0.24.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream