You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gump.apache.org by le...@apache.org on 2005/01/04 00:33:44 UTC

svn commit: r124038 - in gump/branches/Dec04MajorCleanup: metadata metadata/projects/ant.apache.org pygump/python/gump/engine

Author: leosimons
Date: Mon Jan  3 15:33:41 2005
New Revision: 124038

URL: http://svn.apache.org/viewcvs?view=rev&rev=124038
Log:
* Make a set of sort-of-okay metadata.
* Make the Model Loader work
* Start on the Model Objectifier
* Small bit of docs for the VFS
* Start to split out logging into different channels
* Documentation on the modeller and a lot of code clean up
Modified:
   gump/branches/Dec04MajorCleanup/metadata/profile.xml
   gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml
   gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py
   gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py
   gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py

Modified: gump/branches/Dec04MajorCleanup/metadata/profile.xml
Url: http://svn.apache.org/viewcvs/gump/branches/Dec04MajorCleanup/metadata/profile.xml?view=diff&rev=124038&p1=gump/branches/Dec04MajorCleanup/metadata/profile.xml&r1=124037&p2=gump/branches/Dec04MajorCleanup/metadata/profile.xml&r2=124038
==============================================================================
--- gump/branches/Dec04MajorCleanup/metadata/profile.xml	(original)
+++ gump/branches/Dec04MajorCleanup/metadata/profile.xml	Mon Jan  3 15:33:41 2005
@@ -14,502 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<profile name="gump">  
-  
-<!-- Apache.Ant -->
-
-  <module href="project/ant.xml"/>
-  <!--module href="project/ant-1.5.xml"/-->
-  <module href="project/ant-antidote.xml"/>
-
-<!-- Apache.Avalon (SVN) -->
-  <module href="project/avalon-tools.xml"/> <!-- magic bootstrap -->
-  <module href="http://svn.apache.org/repos/asf/avalon/trunk/central/system/gump/avalon-trunk.xml"/>
-
-  <!-- <module href="project/avalon-trunk.xml"/> -->
-
-<!-- Apache.Avalon (CVS) -->
-  <!-- <module href="project/avalon.xml"/> -->
-  <!-- <module href="project/avalon-components.xml"/> -->
-  <!-- <module href="project/avalon-logkit.xml"/> -->
-
-  <module href="project/avalon-sandbox.xml"/>
-  <!-- module href="project/avalon-phoenix.xml"/ -->
-
-<!-- Apache.Cocoon -->
-
-  <module href="http://svn.apache.org/repos/asf/cocoon/trunk/gump.xml"/>
-
-<!-- Apache Lenya -->
-
-  <module href="project/lenya.xml"/>  
-  <!--module href="http://svn.apache.org/repos/asf/incubator/lenya/trunk/gump.xml"/-->
-
-<!-- Apache.DB -->
-
-  <module href="project/db-commons.xml"/>
-  <module href="project/db-commons-sandbox.xml"/>
-  <module href="project/db-ojb.xml"/>
-  <module href="project/db-torque.xml"/>
-
-<!-- Apache.Excalibur -->
-
-  <module href="project/excalibur.xml"/>
-  <module href="project/excalibur-legacy.xml"/>
-
-<!-- Apache Forrest -->
-
-  <module href="project/forrest.xml"/>
-  
-<!-- Apache.Gump -->
-
-  <module href="project/gump.xml"/>
-
-<!-- Apache.Geronimo -->  
-  <module href="project/geronimo.xml"/>
-
-<!-- Apache.HTTPd -->
-
-  <module href="project/apache-httpd.xml"/>
-
-<!-- Apache.Incubator -->
-
-  <module href="project/depot.xml"/>
-  <module href="project/incubator-altrmi.xml"/>
-  <module href="project/myfaces.xml"/>
-  
-<!-- Apache.Directory -->
-  <module href="project/directory-naming.xml"/>
-  <module href="project/directory-eve.xml"/>
-  <module href="project/directory-janus.xml"/>
-  <module href="project/directory-ldap.xml"/>
-  <module href="project/directory-snickers.xml"/>
-  <module href="project/directory-kerberos.xml"/>
-  <module href="project/directory-seda.xml"/>
-
-<!-- Apache.James -->
-
-  <module href="project/james-server.xml"/>
-
-<!-- Apache.Jakarta -->
-
-  <!--module href="project/jakarta-alexandria.xml"/-->
-  <module href="project/jakarta-bcel.xml"/>
-  <module href="project/jakarta-bsf.xml"/>
-  <module href="project/jakarta-cactus.xml"/>
-  <module href="project/jakarta-commons.xml"/>
-  <module href="project/jakarta-commons-codec-11.xml"/>
-  <module href="project/jakarta-commons-configuration-10.xml"/>
-  <module href="project/commons-httpclient-2.0-branch.xml"/>
-  <module href="project/jakarta-commons-sandbox.xml"/>
-  <module href="project/jakarta-ecs.xml"/>
-  <module href="project/jakarta-hivemind.xml"/>
-  <module href="project/jakarta-jetspeed.xml"/>
-  <module href="project/jakarta-jmeter.xml"/>
-  <module href="project/jakarta-jmeter-20.xml"/>
-  <module href="project/jakarta-lucene.xml"/>
-  <module href="project/jakarta-oro.xml"/>
-  <module href="project/jakarta-poi.xml"/>
-  <module href="project/jakarta-poi3.xml"/>
-  <module href="project/jakarta-pluto.xml"/>
-  <module href="project/jakarta-regexp.xml"/>
-  <module href="project/jakarta-servletapi-4.xml"/>
-  <module href="project/jakarta-servletapi-5.xml"/>
-  <module href="project/jakarta-servletapi.xml"/>
-  <module href="project/jakarta-site2.xml"/>
-  <module href="project/jakarta-slide.xml"/>
-  <module href="project/struts.xml"/>
-  <module href="project/jakarta-tapestry.xml"/>
-  <module href="project/jakarta-taglibs.xml"/>
-  <module href="project/jstl-jsp-12.xml"/>
-  <module href="project/jakarta-turbine-2.xml"/>
-  <module href="project/jakarta-turbine-fulcrum.xml"/>
-  <module href="project/jakarta-tomcat-40.xml"/>
-  <module href="project/jakarta-tomcat-catalina.xml"/>
-  <module href="project/jakarta-tomcat-5.xml"/>
-  <module href="project/jakarta-tomcat-jasper_tc5.xml"/>
-  <module href="project/jakarta-tomcat-connectors.xml"/>
-  <module href="project/jakarta-tomcat-connectors-coyote_10.xml"/>
-  <module href="project/jakarta-tomcat-jasper_tc4.xml"/>
-  <module href="project/jakarta-tomcat-33.xml"/>
-  <module href="project/jakarta-tomcat-jasper.xml"/>
-  <module href="project/jakarta-tools.xml"/>
-
-  <!-- Turbine projects taken from cvs -->
-  <module href="project/jakarta-turbine-3.xml"/>
-  <module href="project/jakarta-turbine-jcs.xml"/>
-  <module href="project/jakarta-turbine-stratum.xml"/>
-  <module href="project/jelly-tags.xml"/>
-
-  <module href="project/jakarta-velocity.xml"/>
-  <module href="project/jakarta-velocity-tools.xml"/>
-  <module href="project/jakarta-velocity-dvsl.xml"/>
-  <module href="project/jakarta-watchdog.xml"/>
-  
-<!-- Apache.Logging -->
-  <module href="project/logging-log4j.xml"/>
-  <module href="project/logging-log4j-12.xml"/>
-
-<!-- Apache.Maven -->
-  <module href="project/maven.xml"/>
-
-<!-- Apache Portable Runtime -->
-  <module href="project/apr.xml"/>
-  <module href="project/apr-util.xml"/>
-
-<!-- Apache.WebServices -->
-
-  <module href="project/ws-axis.xml"/>
-  <module href="project/ws-fx.xml"/>
-  <module href="project/ws-jaxme.xml"/>
-  <module href="project/ws-juddi.xml"/>
-  <module href="project/ws-soap.xml"/>
-  <module href="project/ws-wsif.xml"/>
-  <module href="project/ws-wsil.xml"/>
-  <module href="project/ws-wsrp4j.xml"/>
-  <module href="project/ws-xmlrpc.xml"/>
-  <module href="project/apollo.xml"/>
-  <module href="project/muse.xml"/>
-
-
-<!-- Apache.XML -->
-
-  <module href="project/xml-batik.xml"/>
-  <module href="project/xml-commons.xml"/>
-  <module href="project/xml-crimson.xml"/>
-  <module href="project/xml-fop.xml"/>
-  <module href="project/xml-fop-maintenance.xml"/>
-  <module href="project/xml-site.xml"/>
-  <module href="project/xml-security.xml"/>
-  <module href="project/xml-stylebook.xml"/>
-  <module href="project/xml-xalan.xml"/>
-  <module href="project/xml-xerces.xml"/>
-  <module href="project/xml-xerces2.xml"/>
-  <module href="project/xml-xindice.xml"/>
-  <module href="project/xml-xmlbeans.xml"/>
-
-<!-- SourceForge -->
-
-  <module href="project/beanshell.xml"/>
-  <module href="project/beaver.xml"/>
-  <module href="project/beepcore.xml"/>
-  <module href="project/checkstyle.xml"/>
-  <module href="project/dumbster.xml"/>
-  <module href="project/dom4j.xml"/>
-  <module href="project/easymock.xml"/>
-  <module href="project/ehcache.xml"/>
-  <!-- No more needed  module href="project/findbugs.xml"/ -->
-  <!--module href="project/freemarker.xml"/-->
-  <module href="project/hsqldb.xml"/>
-  <module href="project/httpunit.xml"/>
-  <module href="project/hibernate.xml"/>
-  <module href="project/ibatis.xml"/>
-  <module href="project/iso-relax.xml"/>
-  <module href="project/invicta.xml"/>
-  <module href="project/javagroups.xml"/>
-  <module href="project/javassist.xml"/>
-  <module href="project/javassist-2.x.xml"/>
-  <!--module href="project/javasrc.xml"/-->
-  <module href="project/jaxen.xml"/>
-  <module href="project/jdbm.xml"/>
-  <module href="project/jetty.xml"/>
-  <module href="project/jetty4.xml"/>
-  <module href="project/jfor.xml"/>
-  <module href="project/jgen.xml"/>
-  <module href="project/jgroups.xml"/>
-  <!-- No more needed   module href="project/jrefactory.xml"/ -->
-  <module href="project/jtidy.xml"/>
-  <module href="project/junit.xml"/>
-  <module href="project/jython.xml"/>
-  <module href="project/mockobjects.xml"/>
-  <module href="project/mx4j.xml"/>
-  <module href="project/nant.xml"/>
-  <module href="project/picocontainer.xml"/>
-  <module href="project/qdox.xml"/>
-  <module href="project/quartz.xml"/>
-  <module href="project/relaxng.xml"/>
-  <module href="project/saxon7.xml"/>
-  <module href="project/saxon6.xml"/>
-  <module href="project/spring.xml"/>
-  <module href="project/struts-sslext.xml"/>
-  <!--module href="project/webwork.xml"/-->
-  <module href="project/wss4j.xml"/>
-  <module href="project/xdoclet.xml"/>
-  <module href="project/xjavadoc.xml"/>
-  <module href="project/xmlunit.xml"/>
-  <module href="project/xml-im-exporter.xml"/>
-  <module href="project/junit-addons.xml"/>
-  <module href="project/ant-contrib.xml"/>
-  <module href="project/ant-contrib-cpptasks.xml"/>
-  <!--module href="http://cvs.sourceforge.net/viewcvs.py/*checkout*/ant-contrib/ant-contrib/src/etc/gump-descriptor.xml?rev=HEAD"/-->  
-  <!--module href="http://cvs.sourceforge.net/viewcvs.py/*checkout*/ant-contrib/cpptasks/src/etc/gump-descriptor.xml?rev=HEAD"/-->
-  <!--module href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/ldapd/ldapd-common/gump.xml?rev=HEAD&amp;content-type=text/xml"/-->
-  <!--module href="http://cvs.werken.com/viewcvs.cgi/werkz/gump.xml?rev=HEAD&amp;cvsroot=werkz"/-->
-
-  <module href="project/smartfrog.xml"/>
- 
-  <!-- krysalis@sf -->
-
-  <!-- NOTE(SM): removing these projects because they are not used by anybody else -->
-  <!--module href="project/barcode4j.xml"/-->
-  <!--module href="project/antworks-importer.xml"/-->
-  <!--module href="project/antworks-antlets.xml"/-->
-  <module href="project/jcharts.xml"/>
-
-  <!-- misc -->
-
-  <module href="project/xpp.xml"/>
-
-  <module href="project/antlr.xml"/>
-  <module href="project/asm.xml"/>
-  <module href="project/packaged-asm.xml"/>
-  <module href="project/aspectj.xml"/>
-  <module href="project/axion.xml"/>
-  <module href="project/bouncycastle.xml"/>
-  <module href="project/bsf.xml"/>
-  <module href="project/castor.xml"/>
-  <module href="project/caucho-libs.xml"/>
-  <module href="project/commonj.xml"/>
-  <module href="project/cryptix.xml"/>
-  <module href="project/domts.xml"/>  
-  <module href="project/dougLea.xml"/>
-  <module href="project/eyebrowse.xml"/>
-  <module href="project/icu4j.xml"/>
-  <module href="project/jacorb.xml"/>
-  <module href="project/javacc.xml"/>
-  <module href="project/jce.xml"/>
-  <module href="project/jcifs.xml"/>
-  <module href="project/jdom.xml"/>
-  <!--module href="project/jena.xml"/-->
-  <module href="project/jsch.xml"/>
-  <module href="project/jdepend.xml"/>
-  <module href="project/junitperf.xml"/>
-  <module href="project/maven-javaapp-plugin.xml"/>
-  <module href="project/nekohtml.xml"/>
-  <module href="project/nekopull.xml"/>
-  <module href="project/nsuml.xml"/>
-  <module href="project/resin.xml"/>
-  <module href="project/rhino.xml"/>
-  <module href="project/rhino-cocoondev.xml"/>
-  <module href="project/scarab.xml"/>
-  <module href="project/eclipse.xml"/>
-  <module href="project/radeox.xml"/>
-  <module href="project/snacc4j.xml"/>
-  <module href="project/town.xml"/>
-  <module href="project/uddi4j.xml"/>
-  <module href="project/village.xml"/>
-  <module href="project/wsdl4j.xml"/>
-  <module href="project/cos.xml"/>
-  <module href="project/multipartrequest.xml"/>
-  <module href="project/packaged-jaxen.xml"/>
-  <module href="project/packaged-jetty.xml"/>
-  <module href="project/packaged-dom4j.xml"/>
-
-<!-- CodeHaus -->
-  <module href="project/classworlds.xml"/>
-  <module href="project/groovy.xml"/>
-  <module href="project/packaged-groovy.xml"/>
-  <module href="project/openejb.xml"/>
-
-<!-- D-Haven -->
-
-  <module href="project/d-haven.xml"/>
-  
-<!-- Sun -->
-
-  <module href="project/ejb.xml"/>
-  <module href="project/j2ee-connector.xml"/>
-  <module href="project/jaas.xml"/>
-  <module href="project/jaf.xml"/>
-  <module href="project/javamail.xml"/>
-  <module href="project/java-xml-pack.xml"/>
-  <module href="project/jdbc.xml"/>
-  <module href="project/jdo.xml"/>
-  <module href="project/jimi.xml"/>
-  <module href="project/jisp.xml"/>
-  <module href="project/jms.xml"/>
-  <module href="project/jmx.xml"/>
-  <module href="project/jndi.xml"/>
-  <module href="project/jsse.xml"/>
-  <module href="project/jta.xml"/>
-  <!--module href="project/jts.xml"/-->
-  <module href="project/ldap.xml"/>
-  <module href="project/msv.xml"/>
-  <module href="project/tranquilo.xml"/>
-  <module href="project/stax.xml"/>
-
-<!-- java.net -->
-
-  <module href="project/which4j.xml"/>
-  <module href="project/xom.xml"/>
-
-<!-- OpenSAML -->
-  <module href="project/opensaml.xml"/>
-
-
-<!-- OpenSymphony -->  
-  <module href="project/opensymphony.xml"/>  
-  
-<!-- Tagish -->  
-  <module href="project/tagish.xml"/>    
-
-<!-- Unknown -->
-  <module href="project/tagsoup.xml"/>
-
-<!-- Installed packages -->
-
-  <project name="antlr"            package="antlr-2.7.3"/>
-  <project name="aspectj"          package="aspectj-1.2.1rc1"/>
-  <!-- project name="avalon-phoenix-dependencies"             
-           package="avalon-phoenix-dependencies"/ -->
-  <project name="axion"            package="axion-1.0-M2"/>
-  <project name="bcmail"           package="bouncycastle-jdk14"/>
-  <project name="bcprov"           package="bouncycastle-jdk14"/>
-  <!--project name="beaver"           package="beaver-0.9.3.4"/-->
-  <project name="bsf"              package="bsf-2_2"/>
-  <project name="classworlds"      package="classworlds-1.0"/>
-  <project name="commonj"          package="commonj"/>
-  <project name="concurrent"       package="dougLea"/>
-  <project name="cos"              package="cos-05Nov2002"/>
-  <project name="cryptix"          package="cryptix32-20001002-r3.2.0"/>
-  <project name="commons-codec-11" package="commons-codec-1.1"/>
-  <!--project name="dumbster"         package="dumbster1.3"/-->
-  <project name="eclipse"          package="eclipse-3.0.1"/>
-  <project name="ehcache"          package="ehcache-1.0"/>
-  <project name="ejb"              package="ejb-2_0-fr"/>
-  <project name="excalibur-legacy" package="excalibur-legacy"/>
-  <project name="excalibur-configuration" package="excalibur-legacy"/>
-  <project name="excalibur-instrument-legacy" package="excalibur-legacy"/>
-  <project name="hibernate"        package="hibernate-2.1"/>
-  <project name="cglib"            package="hibernate-2.1"/>
-  <project name="geronimo-spec-jms" package="jms1.0.2"/>
-  <project name="geronimo-spec-jta" package="jta-spec1_0_1"/>
-  <project name="d-haven-event"    package="d-haven-event-1.0.3"/>
-  <project name="d-haven-managed-pool" package="d-haven-managed-pool-1.0"/>
-  <project name="hessian"          package="caucho-libs"/>
-  <project name="ibatis"           package="iBATIS_DBL-2.0.5.399"/>
-  <project name="iso-relax"        package="isorelax.20020707"/>
-  <project name="j2ee-connector"   package="j2ee_connector-1_5-fr"/>
-  <project name="jaas"             package="jaas1_0"/>
-  <project name="jaf"              package="jaf-1.0.1"/>
-  <project name="javacc"           package="javacc-3.1"/>
-  <project name="javamail"         package="javamail-1.3.2"/>
-  <project name="javassist-2.x"    package="javassist-2.6"/>
-  <project name="jaxm"             package="java_xml_pack-summer-02_01"/>
-  <project name="jaxp"             package="java_xml_pack-summer-02_01"/>
-  <project name="jaxr"             package="java_xml_pack-summer-02_01"/>
-  <project name="jaxrpc"           package="java_xml_pack-summer-02_01"/>
-  <project name="jce"              package="jce"/>
-  <project name="jcharts"          package="jCharts-0.7.5"/>
-  <project name="jcifs"            package="jcifs"/>
-  <project name="jdbc"             package="jdbc2_0"/>
-  <project name="jetty4"           package="jetty-4.2.21"/>
-  <project name="jimi"             package="Jimi"/>
-  <project name="jisp"             package="jisp-2.5.1"/>
-  <project name="jdepend"          package="jdepend-2.6"/>
-  <project name="jdo"              package="jdo-1_0_1-ri"/>
-  <project name="jgen"             package="jgenerator-2.2"/>
-  <project name="jms"              package="jms1.1"/>
-  <project name="jmx"              package="jmx-1_2-ri"/>
-  <project name="jndi"             package="jndi1_2_1"/>
-  <project name="jsch"             package="jsch-0.1.18"/>
-  <project name="jsse"             package="jsse1.0.3"/>
-  <project name="jta"              package="jta-spec1_0_1"/>
-  <!--project name="jts"              package="jts1_0"/-->
-  <project name="junitperf"        package="junitperf-1.8"/>
-  <project name="ldap"             package="ldap-1_2_4"/>
-  <project name="nekohtml"         package="nekohtml-0.9.3"/>
-  <project name="nekopull"         package="nekopull-0.2.4"/>
-  <project name="maven-javaapp-plugin"    package="maven-javaapp-plugin"/>
-  <project name="mockobjects"      package="mockobjects-0.09"/>
-  <project name="mockobjects-j2ee-13" package="mockobjects-0.09"/>
-  <project name="mockobjects-with-groovy-compatible-jar-id"
-                                   package="mockobjects-0.09"/>
-  <!--project name="mockobjects-j2ee-14" package="mockobjects-0.09"/-->
-  <!--project name="msv"              package="msv-20030225"/-->
-  <project name="multipartrequest" package="MultipartRequest-1.30rc1"/>
-  <project name="nsuml"            package="nsuml"/>
-  <project name="openejb"          package="openejb-0.9.2"/>
-  <project name="osworkflow"       package="osworkflow-2.7.0"/>
-  <project name="oscore"           package="oscore-2.2.4"/>
-  <project name="packaged-asm"     package="asm-1.4.3"/>
-  <project name="packaged-groovy"  package="groovy-1.0-beta-7"/>
-  <project name="packaged-jaxen"   package="jaxen-1.0-FCS"/>
-  <project name="packaged-jetty"   package="jetty-5.0.RC4"/>
-  <project name="packaged-jetty-all"   package="jetty-5.0.RC4"/>
-  <project name="packaged-jetty-jaas"   package="jetty-5.0.RC4"/>
-  <project name="picocontainer"    package="picocontainer-1.1"/>
-  <project name="propertyset"      package="propertyset-1.2.0"/>
-  <project name="qdox"             package="qdox-1.5"/>
-  <project name="packaged-dom4j"   package="dom4j-1.4"/>
-  <project name="radeox"           package="radeox-1.0-BETA-2"/>
-  <project name="relaxng"          package="relaxngDatatype-1.0"/>
-  <project name="resin"            package="resin-3.0.8"/>
-  <project name="saxpath"          package="jaxen-1.0-FCS"/>
-  <project name="saxon7"           package="saxon7-9"/>
-  <project name="saxon7-sql"       package="saxon7-9"/>
-  <project name="saxon7-jdom"      package="saxon7-9"/>
-  <project name="saxon6"           package="saxon6_5_3"/>
-  <project name="saxon6-jdom"      package="saxon6_5_3"/>
-  <project name="snacc"            package="snacc4j"/>
-  <project name="spring"           package="spring-framework-1.1.1"/>
-  <project name="stax"             package="stax"/>
-  <project name="tagishauth"       package="20030217.jaas-modules.1.0.3.full"/> 
-  <project name="tagsoup"          package="tagsoup-0.10.1"/> 
-  <project name="tranquilo"        package="xsdlib-20010424"/>
-
-<!-- Repository definitions -->
-
-  <repository href="repository/ant.xml"/>
-  <repository href="repository/apr.xml"/>
-  <repository href="repository/apache-httpd.xml"/>
-  <repository href="repository/apache-incubator-svn.xml"/>
-  <repository href="repository/avalon.xml"/>
-  <repository href="repository/avalon-svn.xml"/>
-  <repository href="repository/cocoon.xml"/>
-  <repository href="repository/cocoondev.xml"/>
-  <repository href="repository/lenya.xml"/>  
-  <repository href="repository/codehaus.xml"/>
-  <repository href="repository/codehaus_scm.xml"/>
-  <repository href="repository/db.xml"/>
-  <repository href="repository/dbxml.xml"/>
-  <repository href="repository/devworks.xml"/>
-  <repository href="repository/exolab.xml"/>
-  <repository href="repository/excalibur-svn.xml"/>
-  <repository href="repository/forrest.xml"/>
-  <repository href="repository/geronimo.xml"/>
-  <repository href="repository/groovy.xml"/>
-  <repository href="repository/gump.xml"/>
-  <repository href="repository/incubator.xml"/>
-  <repository href="repository/jacorb.xml"/>
-  <repository href="repository/jakarta.xml"/>
-  <repository href="repository/jakarta-svn.xml"/>
-  <repository href="repository/james.xml"/>
-  <repository href="repository/javanet.xml"/>
-  <repository href="repository/jdom.xml"/>
-  <repository href="repository/logging.xml"/>
-  <repository href="repository/maven.xml"/>
-  <repository href="repository/mozilla.xml"/>
-  <repository href="repository/objectweb.xml"/>
-  <repository href="repository/opensaml.xml"/>
-  <repository href="repository/tigris.xml"/>
-  <repository href="repository/sourceforge.xml"/>
-  <repository href="repository/struts-svn.xml"/>
-  <repository href="repository/whichever.xml"/>
-  <repository href="repository/w3c.xml"/>
-  <repository href="repository/ws.xml"/>
-  <repository href="repository/ws-fx.xml"/>
-  <repository href="repository/xml.xml"/>
-  <repository href="repository/xml-svn.xml"/>
-  <repository href="repository/xpp.xml"/>
-
-<!-- server definitions -->
-
-  <server href="server/brutus.xml"/>
-
-<!-- tracker definitions -->
-
-  <tracker href="tracker/apache-jira.xml"/>
-  
+<profile name="gump">
+  <module href="projects/ant.apache.org/module.xml"/>
 </profile>
 

Modified: gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml
Url: http://svn.apache.org/viewcvs/gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml?view=diff&rev=124038&p1=gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml&r1=124037&p2=gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml&r2=124038
==============================================================================
--- gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml	(original)
+++ gump/branches/Dec04MajorCleanup/metadata/projects/ant.apache.org/module.xml	Mon Jan  3 15:33:41 2005
@@ -23,8 +23,9 @@
 
   <cvs repository="ant"/>
 
-  <project href="ant.xml"/>
-  <project href="bootstap-ant.xml"/>
+  <project href="projects/ant.apache.org/ant.xml"/>
+  <project href="projects/ant.apache.org/bootstrap-ant.xml"/>
+  <project href="failure"/>
 
 </module>
 

Modified: gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py
Url: http://svn.apache.org/viewcvs/gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py?view=diff&rev=124038&p1=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py&r1=124037&p2=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py&r2=124038
==============================================================================
--- gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py	(original)
+++ gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/__init__.py	Mon Jan  3 15:33:41 2005
@@ -66,12 +66,17 @@
     # get engine dependencies
     log = get_logger(config.log_level, "engine")
     db  = get_db(config)
-    vfsdir = os.path.join(config.paths_work, "vfs-cache" )
+    
+    vfsdir = os.path.join(config.paths_work, "vfs-cache")
     if not os.path.isdir(vfsdir):
         os.mkdir(vfsdir);
     vfs = get_vfs(config.paths_metadata, vfsdir)
-    modeller_loader = get_modeller_loader(vfs, log)
-    modeller_objectifier = get_modeller_objectifier()
+    
+    modeller_log = get_logger(config.log_level, "modeller")
+    mergefile = os.path.join(config.paths_work, "merge.xml")
+    dropfile = os.path.join(config.paths_work, "dropped.xml")
+    modeller_loader = get_modeller_loader(modeller_log, vfs, mergefile, dropfile)
+    modeller_objectifier = get_modeller_objectifier(modeller_log)
     
     # create engine
     engine = Engine(config, log, db, modeller_loader, modeller_objectifier)
@@ -158,13 +163,13 @@
     from gump.engine.vfs import VFS
     return VFS(filesystem_root, cache_dir)
 
-def get_modeller_loader(vfs, log):
+def get_modeller_loader(log, vfs=None, mergefile=None, dropfile=None):
     from gump.engine.modeller import Loader
-    return Loader(vfs, log)
+    return Loader(log, vfs, mergefile, dropfile)
 
-def get_modeller_objectifier():
+def get_modeller_objectifier(log):
     from gump.engine.modeller import Objectifier
-    return Objectifier()
+    return Objectifier(log)
 
 ###
 ### Classes

Modified: gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py
Url: http://svn.apache.org/viewcvs/gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py?view=diff&rev=124038&p1=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py&r1=124037&p2=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py&r2=124038
==============================================================================
--- gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py	(original)
+++ gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/modeller.py	Mon Jan  3 15:33:41 2005
@@ -25,167 +25,412 @@
 from xml import dom
 from xml.dom import minidom
 
-from gump.model import Workspace
+from gump.model import *
 
 class ModellerError(Exception):
+    """Generic error thrown for all internal Modeller module exceptions."""
     pass
 
 class Loader:
+    """Parses and resolves Gump XML metadata.
+
+    The only "public" method of this class is get_workspace_tree. This method
+    reads in a gump workspace. It then looks for any elements in that workspace
+    that have a "href" attribute. This href attribute is resolved to a new XML
+    file using the provided Virtual File System, which is then merged with the
+    Element that has the attribute. That resolution process is continued until
+    the entire workspace no longer contains any hrefs. At that point, the entire
+    Workspace is returned as a DOM Element.
+
+    If any HREFs fail to resolve properly, the associated projects (or if there
+    are no associated projects, the associated modules) are removed from the
+    workspace completely. If no associated project or module exists, the Loader
+    will give up and raise an exception.
+    
+    Note that the loader does *not* do any verification of the XML it loads.
+    The only thing it assumes is the existence of <project/> elements contained
+    within <module/> elements, and that these elements have name attributes. So,
+    for example, the following would be parsed without complaints by the loader:
+        
+        <bogus>
+          <imagine>
+            <any>
+              <xml-data>
+                <with>
+                  <module name="foo">
+                    <project name="bar">
+                      <build href="somefile.xml"/>
+                    </project>
+                    <project href="otherfile.xml"/>
+                  </module>
+                  <module href="jo.xml"/>
+                </with>
+              </xml-data>
+        </bogus>
+    
+    Of course, other parts of the modeller package are not so tolerant!
     """
-    Parses XML, resolves HREFs, creates a big DOM tree.
-    """
-    def __init__(self,vfs,log):
+    def __init__(self, log, vfs=None, mergefile=None, dropfile=None):
+        """
+        Create a new Loader.
+
+        Arguments:
+            
+            - log -- the log to write debug and error messages to.
+            - vfs -- the virtual file system to use for resolving hrefs. May
+                     be None only if the workspace to load does not contain
+                     any hrefs.
+            - mergefile -- the full path to the file to write the merged
+                           workspace xml to. If None, no such file will be
+                           written.
+            - dropfile -- the full path to the file to write the xml
+                           describing dropped projects to. If None, no such
+                           file will be written.
+        """
         self.log = log
         self.vfs = vfs
+        self.mergefile = mergefile
+        self.dropfile = dropfile
 
-    def get_workspace_tree(self,workspace):
-        """
-        Parse the workspace, then resolve all hrefs.
+    def get_workspace_tree(self, workspace):
+        """Parse the provided workspace, then resolve all hrefs.
         
-        Returns a tuple with the parsed dom and the nodes that were dropped
-        because of problems.
-        """
-        dom = minidom.parse(workspace)
-        dom.normalize()
-        
-        dropped_nodes = []
-        self._resolve_hrefs_in_workspace(dom, dropped_nodes)
+        Returns a tuple with the parsed workspace as a dom Element, and all
+        the Nodes that were dropped because of problems as a list.
         
-        pretty = dom.toprettyxml()
-        self.log.debug("Merged XML:")
-        self.log.debug("----------------------------------------------------")
-        self.log.debug(pretty)
-        self.log.debug("----------------------------------------------------")
+        The provided workspace argument can either be a stream or a path to
+        a file.
+        """
+        # get root <workspace/> element
+        wsdom = minidom.parse(workspace)
+        wsdom.normalize()
+        ws = wsdom.documentElement
+        
+        dropped_nodes = [] # will be used for storing projects we drop...
+        
+        # resolve all hrefs in all elements, for example
+        # <project href="blah.xml"/>; replaces that element with the
+        # contents of blah.xml
+        self._resolve_hrefs_in_workspace(ws, dropped_nodes)
         
+        # write the merged xml tree to a file
+        self._write_merge_files(wsdom, dropped_nodes)
         
-        return (dom, dropped_nodes)
+        # the combined results
+        return (ws, dropped_nodes)
     
-    def _resolve_hrefs_in_workspace(self, dom, dropped_nodes):
-        self._resolve_hrefs_in_children(dom, dropped_nodes)
+    def _resolve_hrefs_in_workspace(self, ws, dropped_nodes):
+        """Redirects to _resolve_hrefs_in_children."""
+        self._resolve_hrefs_in_children(ws, dropped_nodes)
     
-    def _resolve_hrefs_in_children(self, node, dropped_nodes):
-        """
-        Recursively resolve all hrefs in all the children for a DOM node.
+    def _resolve_hrefs_in_children(self, element, dropped_nodes):
+        """Recursively resolve all hrefs in all the children for a DOM node.
         
         The resolution is done in a resolve-then-recurse manner, so the end
-        result is a dom tree without hrefs.
+        result is a dom tree without hrefs. Note that this method expects to
+        be passed in a dom Element or something else which actually has children;
+        passing in an Attr for example makes no sense and results in problems.
+        
+        The dropped_nodes arguments should be a list that will be populated with
+        nodes for which href resolution fails.
         """
-        for child in node.childNodes:
-            # retrieve the referenced document and merge it in
-            if child.nodeType == dom.Node.ELEMENT_NODE:
-                if child.hasAttribute('href'):
-                    if not 'url' == child.tagName: # make exception for the <url/> tag, which
-                                                   # documents an url for a project
-                        self._resolve_href(child, dropped_nodes)
+        for child in element.childNodes:
+            # only resolve hrefs for elements
+            if not child.nodeType == dom.Node.ELEMENT_NODE: continue
+            # there's a <url href=""/> element which is descriptive and should
+            # not be resolved
+            if child.tagName == 'url': continue
+            if child.hasAttribute('href'):
+                # yep, this is one to load...
+                self._resolve_href(child, dropped_nodes)
 
-                # now recurse to resolve any hrefs within this child
-                self._resolve_hrefs_in_children(child, dropped_nodes)
-                
-                if child.tagName == 'repository' and child.getAttribute('name'):
-                    self.log.debug( "Processed repository %s" % child.getAttribute('name') )
-                if child.tagName == 'module' and child.getAttribute('name'):
-                    self.log.debug( "Processed module %s" % child.getAttribute('name') )
-                if child.tagName == 'project' and child.getAttribute('name'):
-                    self.log.debug( "Processed project %s" % child.getAttribute('name') )
+            # now recurse to resolve any hrefs within this child
+            self._resolve_hrefs_in_children(child, dropped_nodes)
         
-        return node
+        # we're now done with resolution
+        #return node
     
     def _resolve_href(self, node, dropped_nodes):
-        """
-        Resolve a href for the current node by merging the referenced xml
-        document with the provided node. The href attribute on the provided
-        node will be removed. The modified node is then returned.
+        """Resolve a href for the provided node.
+
+        We merge in the referenced xml document into the provided node.
+        The href attribute on the provided node will be removed if the merge
+        succeeds. If the merge fails the provided node will be removed from
+        its parent and appended to the dropped_nodes list.
         """
         href = node.getAttribute('href')
-        self.log.debug("Resolving HREF: %s" % href)
+        self.log.debug( "Resolving HREF: %s" % href )
+        
         try:
             stream = self.vfs.get_as_stream(href)
         except Exception, details:
-            self.log.exception("VFS error while merging in a node!")
+            # swallow this in interest of log readability
             self._drop_module_or_project(node, dropped_nodes)
-            return
-            
-        new_node = minidom.parse(stream)
-        new_node.normalize()
-        stream.close()
-        new_node = new_node.getElementsByTagName(node.tagName).item(0)
+            return # make sure to stop processing...
+        
+        new_dom = minidom.parse(stream)
+        new_dom.normalize()
+        stream.close() # close file immediately, we're done!
+        new_root = new_dom.documentElement
         
+        # we succeeded loading the new document, get rid of the href
         node.removeAttribute('href')
-        return self._merge_nodes(node, new_node)
+        
+        self._import_node(node, new_root)
+        
+        # we're done with the file now, allow GC
+        new_root.unlink()
     
-    def _merge_nodes(self, target_node, new_node):
-        """
-        Combines two DOM trees together. The second argument is merged into
-        the first argument, which is then returned.
+    def _import_node(self, target_node, new_node):
+        """Combines two DOM trees together.
+
+        The second argument is merged into the first argument, which is then
+        returned.
         """
+        self._import_attributes(target_node, new_node)
+        self._import_children(target_node, new_node)
+    
+    def _import_attributes(self, target_node, new_node):
+        """Copy all attributes from the new node to the target node."""
         
-        # copy attributes from the new node to the target node
         new_attributes = new_node.attributes
         if new_attributes:
-            length = len(new_attributes)
+            #if new_attributes.length > 0:
             i = 0
-            while i < length:
-                attribute = new_attributes.item(i)
-                attname = attribute.name
-                attvalue = new_node.getAttribute(attname)
-                #if target_node.getAttributeNode(attname):
-                #    target_node.removeAttribute(attname)
-                target_node.setAttribute(attname, attvalue)
-        
-        # copy elements from the new node to the target node
+            while i < new_attributes.length: # for loops gives a KeyError,
+                att = new_attributes.item(i) #   seems like a minidom bug!
+                i = i + 1
+                if not att: continue
+
+                name = att.name.__str__()
+                value = new_node.getAttribute(name).__str__()
+                target_node.setAttribute(name, value)
+    
+    def _import_children(self, target_node, new_node):
+        """Copy all children from the new node to the target node."""
         new_elements = new_node.childNodes
-        if new_elements:
+        if new_elements and new_elements.length > 0:
             for child in new_elements:
-                self.log.debug( "Appending child:\n%s" % child.toprettyxml() )
-                target_node.appendChild( child )
-        
-        return target_node
+                clone = child.cloneNode(True)
+                target_node.appendChild( clone )
     
     def _drop_module_or_project(self, node, dropped_nodes):
-        """
-        Finds the project associated with this node and removes it from the dom tree.
-        If there is no associated project, the associated module is removed instead. If
-        there is no module either, an exception is raised.
+        """Finds the project associated with this node and removes it.
+        
+        If there is no associated project, the associated module is removed
+        instead. If there is no module either, an exception is raised.
         """
         
-        # find the offending project or module
-        parent = None
-        if node.tagName == "project" or node.tagName == "module":
-            parent = node # remove ourself
+        project = self._find_project_containing_node(node)
+        if project:
+            doc = self._find_document_containing_node(project)
+            module = self._find_module_containing_node(project)
+            modulename = module.getAttribute("name")
+            comment = doc.createComment(" Part of module: %s " % modulename)
+            project.appendChild(comment)
+            name = project.getAttribute("name")
+            self.log.warning("Dropping project '%s' from module '%s' because of href resolution error!" % (name , modulename))
+
+            self._do_drop(project, dropped_nodes)
         else:
-            parent = node.parentNode
-            while parent and not node.tagName == "project":
-                parent = parent.parentNode
-            
-            if not parent: # no <project/>, look for <module/>
-                parent = node.parentNode
-                while parent and not node.tagName == "module":
-                    parent = parent.parentNode
-
-        if not parent:
-            # TODO provide more info
-            raise ModellerError, "Unresolvable HREF found outside a <project/> or <module/>: %s." % (node.toprettyxml())
-        
-        # remove that project or module from its parent
-        node_to_remove_element_from = parent.parentNode
-        if not node_to_remove_element_from:
-            # TODO provide more info
-            raise ModellerError, "Rogue <project/> or <module/> (without a parent): %s." % (parent.toprettyxml())
-        node_to_remove_element_from.removeChild(parent)
-        
-        # but save it off for error reporting
-        self.log.warning("Dropping because of href resolution error:\n%s" % (parent.toprettyxml()))
-        dropped_nodes.append(parent)
+            module = self._find_module_containing_node(node)
+            if module:
+                doc = self._find_document_containing_node(module)
+                name = module.getAttribute("name")
+                self.log.warning("Dropping module '%s' because of href resolution error!" % name)
+
+                self._do_drop(project, dropped_nodes)
+            else:
+                raise ModellerError, \
+                      "Problematic node has no parent <project/> or " + \
+                      "<module/>, unable to recover! Node:\n%s" \
+                      % node.toprettyxml()
+    
+    def _do_drop(self, to_remove, dropped_nodes):
+        """Remove node from its parent and add to dropped_nodes list."""
+        
+        node_to_remove_element_from = to_remove.parentNode
+        node_to_remove_element_from.removeChild(to_remove)
+        dropped_nodes.append(to_remove)
+    
+    def _find_document_containing_node(self, node):
+        """Walk up the DOM hierarchy to locate a Document node."""
+        parent = node
+        while not parent.nodeType == dom.Node.DOCUMENT_NODE:
+            parent = parent.parentNode
+            if not parent: # really ought not happen I think...
+                raise ModellerError, "Cannot find document containing this node!"
+        
+        return parent
+    
+    def _find_project_containing_node(self, node):
+        """Walk up the DOM hierarchy to locate a <project> Element."""
+        
+        parent = node
+        while parent.nodeType == dom.Node.ELEMENT_NODE:
+            if parent.tagName == "project":
+                return parent
+            parent = parent.parentNode
+            if not parent:
+                return None
+    
+    def _find_module_containing_node(self, node):
+        """Walk up the DOM hierarchy to locate a <module> Element."""
+        parent = node
+        while parent.nodeType == dom.Node.ELEMENT_NODE:
+            if parent.tagName == "module":
+                return parent
+            parent = parent.parentNode
+            if not parent:
+                return None
+    
+    def _write_merge_files(self, wsdom, dropped_nodes):
+        """Write the fully resolved DOM tree to a file.
+        
+        Also writes an XML file detailing any projects and modules that were
+        dropped because of a HREF resolution issue.
+        """
+        if self.mergefile:
+            merged = open(self.mergefile, 'w')
+            merged.write( wsdom.toprettyxml() )
+            merged.close()
+        
+        if self.dropfile and len(dropped_nodes) > 0:
+            impl = dom.getDOMImplementation()
+            dropdoc = impl.createDocument(None, "dropped-projects-and-modules", None)
+            dropdocroot = dropdoc.documentElement
+            for node in dropped_nodes:
+                dropdocroot.appendChild(node)
+            dropped = open(self.dropfile, 'w')
+            dropped.write( dropdoc.toprettyxml() )
+            dropped.close()        
 
 class Objectifier:
-    """
-    Turns DOM workspace into Pythonified workspace.
-    """
+    """Turns DOM workspace into Pythonified workspace."""
+    
+    def __init__(self, log):
+        self.log = log
+
     def get_workspace(self, dom):
+        raise RuntimeError, "not implemented!" # TODO
+
         workspace = self._create_workspace(dom)
+        self._create_repositories(workspace, dom)
+        self._create_modules(workspace, dom)
+        self._create_projects(workspace, dom)
         
-        raise RuntimeError, "not implemented!" # TODO
     
-    def _create_workspace(self, dom):
-        root = dom.getElementsByTagName('workspace').item(0)
-        workspace = Workspace(root.getAttribute('name'))
\ No newline at end of file
+    def _create_workspace(self, root):
+        workspace = Workspace(root.getAttribute('name'))
+        
+        
+    def _create_repositories(self, workspace, root):
+        repository_definitions = self._find_repository_definitions(root)
+        
+        undefined = []
+        
+        for repository_definition in repository_definitions:
+            if not repository_definition.hasChildNodes(): # hope it gets defined later
+                if not repository.getAttribute("name"):
+                    raise ModellerError, "Encountered a repository without a name!"
+                undefined.append(repository_definition)
+                continue
+            
+            name = repository_definition.getAttribute("name")
+            title = None
+            try: title = self._find_element_text(repository_definition, "title")
+            except: pass
+            
+            home_page = None
+            try: home_page = self._find_element_text(repository_definition, "home-page")
+            except: pass
+            
+            cvsweb = None
+            try: cvsweb = self._find_element_text(repository_definition, "cvsweb")
+            except:
+                try: cvsweb = self._find_element_text(repository_definition, "web")
+                except: pass
+            
+            redistributable = False
+            if repository_definition.getElementsByTagName("redistributable").length > 0:
+                redistributable = True
+                
+            repository = None
+            
+            type = repository_definition.getAttribute("type").upper()
+            if type == "CVS":
+                repository = _create_cvs_repository(workspace, name, title, home_page, cvsweb, redistributable, repository_definition)
+            elif type == "SVN":
+                repository = _create_svn_repository(workspace, name, title, home_page, cvsweb, redistributable, repository_definition)
+            else:
+                raise ModellerError, "Unknown repository type '%s' for repository '%s'" % (type, name)
+
+            workspace.repositories[name] = repository
+        
+        # TODO: add support for maven repository definitions here as found
+        # inside maven project.xml files...
+        
+        # walk the undefined repository list to make sure they're all defined
+        # now. If that's not the case, we'll complain about it right here.
+        for repository_definition in undefined:
+            name = repository_definition.getAttribute("name")
+            if not workspace.repositories.has_key(name):
+                # TODO: drop associated modules and projects instead
+                raise ModellerError, "Repository '%s' is referenced but never defined!" % name
+        
+        undefined = None # clean up just to be sure...
+    
+    def _create_cvs_repository(self, workspace, name, title, home_page, cvsweb, redistributable, repository_definition):
+        hostname = self._find_element_text(repository_definition, "hostname")
+        path = self._find_element_text(repository_definition, "path")
+
+        method = CVS_METHOD_PSERVER
+        try: method = self._find_element_text(repository_definition, "method")
+        except: pass
+        
+        user = None
+        try: user = self._find_element_text(repository_definition, "user")
+        except: pass
+
+        password = None
+        try: password = self._find_element_text(repository_definition, "password")
+        except: pass
+        
+        repository = CvsRepository(workspace,
+                                   name,
+                                   hostname,
+                                   path,
+                                   title = title,
+                                   home_page = home_page,
+                                   cvsweb = cvsweb,
+                                   redistributable = False,
+                                   method = CVS_METHOD_PSERVER,
+                                   user = user,
+                                   password = password)
+        return repository
+
+    def _find_repository_definitions(self, root):
+        return root.getElementsByTagName("repository")
+
+    def _find_element_text(self, parent, element_name):
+        return parent.getElementsByTagName(element_name).item(0).firstChild.data
+    
+    def _create_modules(self, repositories, root):
+        module_definitions = self._find_module_definitions(root)
+        
+        for module_definition in module_definitions:
+            name = module_definition.getAttribute("name")
+            repository = self._find_repository_for_module(repositories, module_definition)
+            module = Module(repository)
+            if repository:
+                repository.modules[name] = module
+    
+    def _create_projects(self, modules, root):
+        project_definitions = self._find_project_definitions(root)
+        
+        for project_definition in project_definitions:
+            name = project_definition.getAttribute("name")
+            module = self._find_module_for_project(modules, project_definition)
+            project = Project(module)
+            if module:
+                module.projects[name] = project
\ No newline at end of file

Modified: gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py
Url: http://svn.apache.org/viewcvs/gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py?view=diff&rev=124038&p1=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py&r1=124037&p2=gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py&r2=124038
==============================================================================
--- gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py	(original)
+++ gump/branches/Dec04MajorCleanup/pygump/python/gump/engine/vfs.py	Mon Jan  3 15:33:41 2005
@@ -60,7 +60,7 @@
                                  it is not possible to "escape" from this
                                  root.
             - cachedir -- path to the directory on this machine that should
-                          be used as the 
+                          be used as the cache for downloaded files.
         """
         if filesystem_root:
             self.filesystem_root = os.path.abspath(filesystem_root)
@@ -86,7 +86,7 @@
         """
         
         if not url_or_path:
-            raise Error, "Bad url or path requested: %s" % url_or_path
+            raise Error, "Bad url or path requested: '%s'" % url_or_path
         
         if string.find(url_or_path, ':') != -1:
             return self._get_url_as_stream(url_or_path)
@@ -113,19 +113,19 @@
         a Error will be thrown.
         """
         if not self.filesystem_root:
-            raise Error, "This VFS does not support retrieving local files (%s was requested)!" % path
+            raise Error, "This VFS does not support retrieving local files ('%s' was requested)!" % path
         
         relpath = path.lstrip('/') # transform absolute paths into paths
                                    # relative to the VFS filesystem "root"
         fullpath = os.path.abspath(os.path.join( self.filesystem_root, relpath ))
         
         if not fullpath.startswith(self.filesystem_root):
-            raise Error, "The requested resource %s is not part of the VFS!" % path
+            raise Error, "The requested resource '%s' is not part of the VFS!" % path
         
         if not os.path.exists(fullpath):
-            raise Error, "No resource %s found in VFS!" % path
+            raise Error, "No resource '%s' found in VFS!" % path
         if not os.path.isfile(fullpath):
-            raise Error, "Requested resource %s is not a stream!" % path
+            raise Error, "Requested resource '%s' is not a stream!" % path
         
         return open(fullpath)