<?xml version="1.0"?>

<!--

   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.
-->

<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#">
  <Project rdf:about="http://httpd.apache.org/">
    <created>2006-01-19</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache Commons BSF</name>
    <homepage rdf:resource="http://commons.apache.org/bsf/" />
    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
    <shortdesc>Framework that provides scripting language support within Java applications</shortdesc>
    <description>Bean Scripting Framework (BSF) is a set of Java classes which provides scripting language support within Java applications, and access to Java objects and methods from scripting languages. BSF allows one to write JSPs in languages other than Java while providing access to the Java class library. In addition, BSF permits any Java application to be implemented in part (or dynamically extended) by a language that is embedded within it. This is achieved by providing an API that permits calling scripting language engines from within Java, as well as an object registry that exposes Java objects to these scripting language engines.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/BSF" />
    <mailing-list rdf:resource="http://commons.apache.org/bsf/mail-lists.html" />
    <download-page rdf:resource="http://commons.apache.org/bsf/download_bsf.cgi" />
    <category rdf:resource="http://projects.apache.org/category/library"/>
    <programming-language>Java</programming-language>
    <release>
      <revision>
        <name>bsf</name>
        <created>2002-11-12</created>
        <version>2.3.0-rc1</version>
      </revision>
      <revision>
        <name>bsf</name>
        <created>2006-10-6</created>
        <version>2.4</version>
      </revision>
      <revision>
        <name>bsf</name>
        <created>2009-04-05</created>
        <version>3.0-beta3</version>
      </revision>
      <revision>
        <name>bsf</name>
        <created>2009-10-1</created>
        <version>3.0</version>
      </revision>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/bsf/trunk/"/>
        <browse rdf:resource="http://http://svn.apache.org/viewcvs.cgi/commons/proper/bsf/"/>
      </SVNRepository>
    </repository>
  </Project>
</rdf:RDF>
