Re: svn commit: r753081 - in /ofbiz/trunk/framework/webslinger: ./ config/ data/ entitydef/ lib/ modules/ modules/ofbiz/ modules/ofbiz/Classes/ modules/ofbiz/Classes/org/ modules/ofbiz/Classes/org/webslinger/ modules/ofbiz/www/ modules/ofbiz/www/WEB-INF/ m

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r753081 - in /ofbiz/trunk/framework/webslinger: ./ config/ data/ entitydef/ lib/ modules/ modules/ofbiz/ modules/ofbiz/Classes/ modules/ofbiz/Classes/org/ modules/ofbiz/Classes/org/webslinger/ modules/ofbiz/www/ modules/ofbiz/www/WEB-INF/ m

Jacques Le Roux
Administrator
I found
<author>Adam Heath</author> by chance.
I wonder if we should keep it in Apache OFBiz...
Also I understand that it's good for BrainFood to have Webslinger in OFBiz repo, but for OFBiz?
What Webslinger is bringing to the project?

Thanks to clarify please

Jacques

From: <[hidden email]>

> Author: doogie
> Date: Fri Mar 13 01:12:11 2009
> New Revision: 753081
>
> URL: http://svn.apache.org/viewvc?rev=753081&view=rev
> Log:
> New webslinger component.  This is being added to framework, based
> on the desire to make use of it in a support role.
>
> It is *not* enabled yet, not part of the build, nor used at runtime
> by the server.  That will come shortly.
>
> Added:
>    ofbiz/trunk/framework/webslinger/   (with props)
>    ofbiz/trunk/framework/webslinger/build.xml
>    ofbiz/trunk/framework/webslinger/config/
>    ofbiz/trunk/framework/webslinger/config/webslinger.properties
>    ofbiz/trunk/framework/webslinger/data/
>    ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml
>    ofbiz/trunk/framework/webslinger/entitydef/
>    ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml
>    ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml
>    ofbiz/trunk/framework/webslinger/lib/
>    ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar   (with props)
>    ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar   (with props)
>    ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar   (with props)
>    ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar   (with props)
>    ofbiz/trunk/framework/webslinger/modules/
>    ofbiz/trunk/framework/webslinger/modules/defaults.zip   (with props)
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/
>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy
>    ofbiz/trunk/framework/webslinger/ofbiz-component.xml
>    ofbiz/trunk/framework/webslinger/src/
>    ofbiz/trunk/framework/webslinger/src/META-INF/
>    ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml
>    ofbiz/trunk/framework/webslinger/src/org/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java
>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java
>    ofbiz/trunk/framework/webslinger/webapp/
>    ofbiz/trunk/framework/webslinger/webapp/webslinger/
>    ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/
>    ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml
>    ofbiz/trunk/framework/webslinger/websites/
>    ofbiz/trunk/framework/webslinger/websites/webslinger/
>    ofbiz/trunk/framework/webslinger/websites/webslinger/Config/
>    ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml
>    ofbiz/trunk/framework/webslinger/websites/webslinger/Var/   (with props)
>    ofbiz/trunk/framework/webslinger/websites/webslinger/www/
>    ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml
>
> Propchange: ofbiz/trunk/framework/webslinger/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Fri Mar 13 01:12:11 2009
> @@ -0,0 +1 @@
> +build
>
> Added: ofbiz/trunk/framework/webslinger/build.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/build.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/build.xml (added)
> +++ ofbiz/trunk/framework/webslinger/build.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,69 @@
> +<?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.
> +-->
> +
> +<project name="OFBiz - Webslinger" default="jar" basedir=".">
> +    <import file="../../common.xml"/>
> +
> +    <!-- ================================================================== -->
> +    <!-- Initialization of all property settings                            -->
> +    <!-- ================================================================== -->
> +
> +    <property name="desc" value="Webslinger Component"/>
> +    <property name="name" value="ofbiz-webslinger"/>
> +    <property name="ofbiz.home.dir" value="../.."/>
> +
> +    <path id="local.class.path">
> +        <fileset dir="lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/entity/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/entity/build/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/j2eespecs" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/commons" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/scripting" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/base/build/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/security/build/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/service/build/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/catalina/build/lib" includes="*.jar"/>
> +        <fileset dir="${ofbiz.home.dir}/framework/catalina/lib" includes="*.jar"/>
> +        <pathelement location="${ofbiz.home.dir}/framework/catalina/build/classes"/>
> +    </path>
> +
> +    <!-- ================================================================== -->
> +    <!-- Compilation of the source
>       -->
> +    <!-- ================================================================== -->
> +
> +    <target name="classes" depends="prepare">
> +    <javac15/>
> +    </target>
> +
> +    <!-- ================================================================== -->
> +    <!-- Build JavaDoc                                                      -->
> +    <!-- ================================================================== -->
> +
> +    <target name="docs" depends="prepare-docs">
> +        <mkdir dir="${build.dir}/javadocs"/>
> +        <javadoc packagenames="org.ofbiz.webslinger.*"
> +                 classpathref="local.class.path"
> +                 destdir="${build.dir}/javadocs"
> +                 Windowtitle="Open for Business - ${desc}">
> +            <sourcepath path="${src.dir}"/>
> +        </javadoc>
> +    </target>
> +</project>
>
> Added: ofbiz/trunk/framework/webslinger/config/webslinger.properties
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/config/webslinger.properties?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/config/webslinger.properties (added)
> +++ ofbiz/trunk/framework/webslinger/config/webslinger.properties Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,17 @@
> +# 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.
> +moduleBase=ofbiz-component://webslinger/modules
>
> Added: ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml (added)
> +++ ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,28 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +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.
> +-->
> +<entity-engine-xml>
> + <WebslingerServer webslingerServerId="WEBSLINGER" delegatorName="default" dispatcherName="webslinger" serverName="webslinger"
> target="ofbiz-component://webslinger/websites/webslinger"/>
> +
> + <WebslingerHostMapping hostName="*" contextPath="/webslinger" webslingerServerId="WEBSLINGER"/>
> +
> + <WebslingerHostSuffix hostSuffixId="PREVIEW" hostSuffix=".preview"/>
> + <WebslingerHostSuffix hostSuffixId="LOCALHOST" hostSuffix=".localhost"/>
> +
> +</entity-engine-xml>
>
> Added: ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml (added)
> +++ ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,32 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +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.
> +-->
> +<entitygroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> +        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitygroup.xsd">
> +    <entity-group group="org.ofbiz" entity="WebslingerServer" />
> +    <entity-group group="org.ofbiz" entity="WebslingerServerBase" />
> +    <entity-group group="org.ofbiz" entity="WebslingerHostMapping" />
> +    <entity-group group="org.ofbiz" entity="WebslingerLayout" />
> +    <entity-group group="org.ofbiz" entity="WebslingerHostSuffix" />
> +    <!--
> +    <entity-group group="org.ofbiz" entity="WebslingerModule" />
> +    <entity-group group="org.ofbiz" entity="WebslingerServerModule" />
> +    <entity-group group="org.ofbiz" entity="WebslingerServerModuleLayout" />
> +    -->
> +</entitygroup>
>
> Added: ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml (added)
> +++ ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,146 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +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.
> +-->
> +<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> +    xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitymodel.xsd">
> +    <title></title>
> +    <description></description>
> +    <copyright></copyright>
> +    <author>Adam Heath</author>
> +    <version>0.0</version>
> +
> +    <entity entity-name="WebslingerServer"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Server">
> +      <field name="webslingerServerId" type="id-ne"></field>
> +      <field name="delegatorName" type="name"></field>
>+      <field name="dispatcherName" type="name"></field>
> +      <field name="serverName" type="name"></field>
> +      <field name="webSiteId" type="id"></field>
> +      <field name="target" type="name"></field>
> +      <field name="loadAtStart" type="indicator"></field>
> +      <prim-key field="webslingerServerId"/>
> +      <relation type="one" fk-name="WSS_WS" rel-entity-name="WebSite">
> +          <key-map field-name="webSiteId"/>
> +      </relation>
> +    </entity>
> +
> +    <entity entity-name="WebslingerServerBase"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Server">
> +      <field name="webslingerServerId" type="id-ne"></field>
> +      <field name="baseName" type="name"></field>
> +      <field name="seqNum" type="numeric"></field>
> +      <prim-key field="webslingerServerId"/>
> +      <prim-key field="baseName"/>
> +      <relation type="one" fk-name="WSB_WS" rel-entity-name="WebslingerServer">
> +          <key-map field-name="webslingerServerId"/>
> +      </relation>
> +    </entity>
> +
> +    <entity entity-name="WebslingerHostMapping"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Server">
> +      <field name="hostName" type="name"></field>
> +      <field name="contextPath" type="value"></field>
> +      <field name="webslingerServerId" type="id-ne"></field>
> +      <prim-key field="hostName"/>
> +      <prim-key field="contextPath"/>
> +      <relation type="one" fk-name="WHM_WS" rel-entity-name="WebslingerServer">
> +          <key-map field-name="webslingerServerId"/>
> +      </relation>
> +    </entity>
> +
> +    <entity entity-name="WebslingerHostSuffix"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Server">
> +      <field name="hostSuffixId" type="id-ne"></field>
> +      <field name="hostSuffix" type="name"></field>
> +      <prim-key field="hostSuffixId"/>
> +    </entity>
> +
> +    <view-entity entity-name="WebslingerLayout"
> +            package-name="org.ofbiz.webslinger"
> +            title="WebslingerServer and WebslingerHostMapping View Entity">
> +      <member-entity entity-alias="WS" entity-name="WebslingerServer"/>
> +      <member-entity entity-alias="WHM" entity-name="WebslingerHostMapping"/>
> +      <alias-all entity-alias="WS"/>
> +      <alias-all entity-alias="WHM">
> +       <exclude field="webslingerServerId"/>
> +      </alias-all>
> +      <view-link entity-alias="WS" rel-entity-alias="WHM">
> +        <key-map field-name="webslingerServerId"/>
> +      </view-link>
> +      <relation type="one" rel-entity-name="WebslingerServer">
> +        <key-map field-name="webslingerServerId"/>
> +      </relation>
> +      <relation type="many" rel-entity-name="WebslingerServerBase">
> +        <key-map field-name="webslingerServerId"/>
> +      </relation>
> +      <relation type="one" rel-entity-name="WebslingerHostMapping">
> +        <key-map field-name="hostName"/>
> +        <key-map field-name="contextPath"/>
> +      </relation>
> +    </view-entity>
> +    <!--
> +    <entity entity-name="WebslingerModule"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Module">
> +      <field name="moduleId" type="id-ne"></field>
> +      <field name="target" type="name"></field>
> +      <prim-key field="moduleId"/>
> +    </entity>
> +
> +    <entity entity-name="WebslingerServerModule"
> +            package-name="org.ofbiz.webslinger"
> +            title="Webslinger Server">
> +      <field name="webslingerServerId" type="id-ne"></field>
> +      <field name="moduleId" type="id-ne"></field>
> +      <prim-key field="webslingerServerId"/>
> +      <prim-key field="moduleId"/>
> +      <relation type="one" fk-name="WSM_WM" rel-entity-name="WebslingerModule">
> +          <key-map field-name="moduleId"/>
> +      </relation>
> +      <relation type="one" fk-name="WSM_WW" rel-entity-name="WebslingerServer">
> +          <key-map field-name="webslingerServerId"/>
> +      </relation>
> +    </entity>
> +
> +    <view-entity entity-name="WebslingerServerModuleLayout"
> +            package-name="org.ofbiz.webslinger"
> +            title="WebslingerModule and WebslingerServerModule View Entity">
> +      <member-entity entity-alias="WM" entity-name="WebslingerModule"/>
> +      <member-entity entity-alias="WSM" entity-name="WebslingerServerModule"/>
> +      <alias-all entity-alias="WM"/>
> +      <alias-all entity-alias="WSM">
> +       <exclude field="moduleId"/>
> +      </alias-all>
> +      <view-link entity-alias="WM" rel-entity-alias="WSM">
> +        <key-map field-name="moduleId"/>
> +      </view-link>
> +      <relation type="one" rel-entity-name="WebslingerModule">
> +        <key-map field-name="moduleId"/>
> +      </relation>
> +      <relation type="one" rel-entity-name="WebslingerServerModule">
> +        <key-map field-name="webslingerServerId"/>
> +        <key-map field-name="moduleId"/>
> +      </relation>
> +    </view-entity>
> +    -->
> +</entitymodel>
>
> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar?rev=753081&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar?rev=753081&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar?rev=753081&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar?rev=753081&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: ofbiz/trunk/framework/webslinger/modules/defaults.zip
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/defaults.zip?rev=753081&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: ofbiz/trunk/framework/webslinger/modules/defaults.zip
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types (added)
> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types Fri Mar 13 01:12:11 2009
>@@ -0,0 +1,17 @@
> +# 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.
> +application/x-ofbiz-condition ofbiz-condition
>
> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition?rev=753081&view=auto
> ==============================================================================
>    (empty)
>
> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition%40/data-filter?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
> (added)
> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
> Fri Mar 13 01:12:11 2009
> @@ -0,0 +1 @@
> +java.lang.String:/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData
>
> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition%40/type?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type (added)
> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type Fri Mar
> 13 01:12:11 2009
> @@ -0,0 +1 @@
> +java.lang.String:data
>
> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy (added)
> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy Fri Mar 13
> 01:12:11 2009
> @@ -0,0 +1,46 @@
> +/*******************************************************************************
> + * 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.
> + *******************************************************************************/
> +import org.ofbiz.entity.condition.EntityCondition
> +import org.ofbiz.entity.condition.EntityConditionList
> +import org.ofbiz.entity.condition.EntityExpr
> +import org.ofbiz.entity.condition.EntityOperator
> +
> +def buildCondition
> +def getValue = { item ->
> + if (item instanceof Map) return buildCondition(item)
> + return item
> +}
> +buildCondition = { item ->
> + switch (item.name) {
> + case "EntityConditionList":
> + def conditions = []
> + for (conditionDef in item.list) {
> + conditions.add(buildCondition(conditionDef))
> + }
> + return new EntityConditionList(conditions, EntityOperator.lookup(item.operator))
> + case "EntityExpr":
> + return new EntityExpr(getValue(item.left), EntityOperator.lookup(item.operator), getValue(item.right))
> + case "Include":
> + return webslinger.event(item.path)
> + default:
> + throw new InternalError(item.toString())
> + }
> +}
> +
> +return buildCondition(webslinger.payload)
>
> Added: ofbiz/trunk/framework/webslinger/ofbiz-component.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/ofbiz-component.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/ofbiz-component.xml (added)
> +++ ofbiz/trunk/framework/webslinger/ofbiz-component.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,35 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +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.
> +-->
> +<ofbiz-component name="webslinger"
> +        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> +        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
> +    <resource-loader name="main" type="component"/>
> +    <classpath type="dir" location="config"/>
> +    <classpath type="jar" location="lib/*"/>
> +    <classpath type="jar" location="build/lib/*"/>
> +
> +    <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
> +    <entity-resource type="group" reader-name="main" loader="main" location="entitydef/entitygroup.xml"/>
> +    <entity-resource type="data" reader-name="seed" loader="main" location="data/WebslingerSeedData.xml"/>
> +
> +    <webapp name="webslinger" title="Webslinger" server="default-server" location="webapp/webslinger"
> +        base-permission="OFBTOOLS,WEBSLINGER" mount-point="/webslinger"/>
> +</ofbiz-component>
> +
>
> Added: ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml (added)
> +++ ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,27 @@
> +<?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.
> +-->
> +<providers>
> + <provider class-name="org.ofbiz.commons.vfs.ofbiz.OfbizHomeProvider">
> +  <scheme name="ofbiz-home"/>
> + </provider>
> + <provider class-name="org.ofbiz.commons.vfs.ofbiz.OfbizComponentProvider">
> +  <scheme name="ofbiz-component"/>
> + </provider>
> +</providers>
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,67 @@
> +/*******************************************************************************
> + * 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.ofbiz.commons.vfs;
> +
> +import java.io.File;
> +import java.io.IOException;
> +import java.net.MalformedURLException;
> +
> +import org.apache.commons.vfs.CacheStrategy;
> +import org.apache.commons.vfs.FileObject;
> +import org.apache.commons.vfs.FileSystemException;
> +import org.apache.commons.vfs.FileSystemManager;
> +import org.apache.commons.vfs.impl.StandardFileSystemManager;
> +
> +import org.ofbiz.base.container.Container;
> +import org.ofbiz.base.container.ContainerException;
> +import org.webslinger.commons.vfs.VFSUtil;
> +
> +public class CommonsVfsContainer implements Container {
> +    private static StandardFileSystemManager sfsm;
> +
> +    public void init(String[] args, String configFile) throws ContainerException {
> +    }
> +
> +    public boolean start() throws ContainerException {
> +        try {
> +            StandardFileSystemManager sfsm = VFSUtil.createStandardFileSystemManager();
> +            FileObject currentDir = sfsm.resolveFile(new File(".").toURI().toURL().toString());
> +            sfsm.setBaseFile(currentDir);
> +            CommonsVfsContainer.sfsm = sfsm;
> +        } catch (FileSystemException e) {
> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
> +        } catch (MalformedURLException e) {
> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
> +        }
> +        return true;
> +    }
> +
> +    public void stop() throws ContainerException {
> +        sfsm.close();
> +        sfsm = null;
> +    }
> +
> +    public static FileObject resolveFile(String uri) throws IOException {
> +        return sfsm.resolveFile(uri);
> +    }
> +
> +    public static FileSystemManager getFileSystemManager() {
> +        return sfsm;
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,59 @@
> +/*******************************************************************************
> + * 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.ofbiz.commons.vfs.ofbiz;
> +
> +import java.net.URL;
> +import java.util.Collection;
> +import org.apache.commons.vfs.FileObject;
> +import org.apache.commons.vfs.FileSystemException;
> +import org.apache.commons.vfs.FileSystemOptions;
> +import org.apache.commons.vfs.provider.AbstractFileProvider;
> +import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
> +import org.ofbiz.base.location.FlexibleLocation;
> +import org.webslinger.commons.vfs.VFSUtil;
> +
> +public class OfbizComponentProvider extends AbstractFileProvider {
> +    public Collection getCapabilities() {
> +        return DefaultLocalFileProvider.capabilities;
> +    }
> +
> +    public FileObject findFile(FileObject base, String name, FileSystemOptions properties) throws FileSystemException {
> +        try {
> +            //name = name.replaceAll("^ofbiz-component://", "");
> +            int nameLength = name.length();
> +            int componentNameStart = 16;
> +            while (componentNameStart < nameLength && name.charAt(componentNameStart) == '/') componentNameStart++;
> +            if (componentNameStart == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
> +            int componentNameEnd = componentNameStart;
> +            while (componentNameEnd < nameLength && name.charAt(componentNameEnd) != '/') componentNameEnd++;
> +            if (componentNameEnd == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
> +            int restStart = componentNameEnd;
> +            while (restStart < nameLength && name.charAt(restStart) == '/') restStart++;
> +            if (restStart == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
> +            String componentName = name.substring(componentNameStart, componentNameEnd);
> +            URL location = FlexibleLocation.resolveLocation("component://" + componentName + "/.");
> +            FileObject ofbizBase = getContext().resolveFile(location.toString(), properties);
> +            return VFSUtil.toFileObject(ofbizBase.getFileSystem().getFileSystemManager(),
> ofbizBase.resolveFile(name.substring(restStart)).getURL().toString(), properties);
> +        } catch (Exception e) {
> +            FileSystemException fse = new FileSystemException(e.getMessage(), null, e);
> +            fse.initCause(e);
> +            throw fse;
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,51 @@
> +/*******************************************************************************
> + * 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.ofbiz.commons.vfs.ofbiz;
> +
> +import java.net.URL;
> +import java.util.Collection;
> +
> +import org.apache.commons.vfs.FileObject;
> +import org.apache.commons.vfs.FileSystemException;
> +import org.apache.commons.vfs.FileSystemOptions;
> +import org.apache.commons.vfs.provider.AbstractFileProvider;
> +import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
> +
> +import org.ofbiz.base.location.FlexibleLocation;
> +
> +import org.webslinger.commons.vfs.VFSUtil;
> +
> +public class OfbizHomeProvider extends AbstractFileProvider {
> +    public Collection getCapabilities() {
> +        return DefaultLocalFileProvider.capabilities;
> +    }
> +
> +    public FileObject findFile(FileObject base, String name, FileSystemOptions properties) throws FileSystemException {
> +        //new Exception("findFile(" + base + ", " + name + ")").printStackTrace();
> +        try {
> +            URL location = FlexibleLocation.resolveLocation("ofbizhome://.");
> +            FileObject ofbizBase = getContext().resolveFile(location.toString(), properties);
> +            return VFSUtil.toFileObject(ofbizBase.getFileSystem().getFileSystemManager(),
> ofbizBase.resolveFile(name.substring(13)).getURL().toString(), properties);
> +        } catch (Exception e) {
> +            FileSystemException fse = new FileSystemException(e.getMessage(), null, e);
> +            fse.initCause(e);
> +            throw fse;
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,78 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.util.HashMap;
> +import java.util.Iterator;
> +import java.util.Locale;
> +import java.util.Map;
> +
> +import javax.servlet.ServletRequest;
> +import javax.servlet.http.HttpServletRequest;
> +
> +import org.ofbiz.base.util.GeneralException;
> +import org.ofbiz.base.util.ObjectType;
> +import org.ofbiz.base.util.UtilHttp;
> +import org.ofbiz.base.util.UtilMisc;
> +import org.ofbiz.base.util.UtilValidate;
> +import org.ofbiz.entity.GenericDelegator;
> +import org.ofbiz.entity.GenericValue;
> +import org.ofbiz.entity.jdbc.SqlJdbcUtil;
> +import org.ofbiz.entity.model.ModelEntity;
> +import org.ofbiz.entity.model.ModelField;
> +import org.ofbiz.entity.model.ModelFieldType;
> +
> +public class EntityHttpUtil {
> +    public static GenericValue makeValidValue(String entityName, ServletRequest request) throws GeneralException {
> +        return makeValidValue(entityName, false, request);
> +    }
> +
> +    public static GenericValue makeValidValue(String entityName, boolean includePks, ServletRequest request) throws
> GeneralException {
> +        if (request instanceof HttpServletRequest) return makeValidValue(entityName, includePks, (HttpServletRequest) request);
> +        throw new IllegalArgumentException("Not an HttpServletRequest");
> +    }
> +
> +    public static GenericValue makeValidValue(String entityName, HttpServletRequest request) throws GeneralException {
> +        return makeValidValue(entityName, false, request);
> +    }
> +
> +    public static GenericValue makeValidValue(String entityName, boolean includePks, HttpServletRequest request) throws
> GeneralException {
> +        GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator");
> +        GenericValue value = delegator.makeValue(entityName, (Map) null);
> +        ModelEntity model = value.getModelEntity();
> +        Iterator<ModelField> it = includePks ? model.getFieldsIterator() : model.getNopksIterator();
> +        Locale locale = UtilHttp.getLocale(request);
> +        while (it.hasNext()) {
> +            ModelField field = it.next();
> +            String fieldName = field.getName();
> +            String parameterValue = request.getParameter(fieldName);
> +            Object fieldValue;
> +            if (parameterValue == null) {
> +                fieldValue = null;
> +            } else {
> +                ModelFieldType fieldType = delegator.getEntityFieldType(model, field.getType());
> +                String wantedType = fieldType.getJavaType();
> +                fieldValue = ObjectType.simpleTypeConvert(parameterValue, wantedType, null, locale, true);
> +            }
> +            value.put(fieldName, fieldValue);
> +        }
> +        return value;
> +    }
> +}
> +
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,66 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import javax.transaction.Transaction;
> +
> +import org.ofbiz.entity.transaction.TransactionUtil;
> +import java.util.concurrent.Callable;
> +
> +public class EntityTransactionUtil {
> +    public static <V> V doNewTransaction(String ifErrorMessage, Callable<V> callable) throws Throwable {
> +        Transaction tx = TransactionUtil.suspend();
> +        try {
> +            return doTransaction(ifErrorMessage, callable);
> +        } finally {
> +            TransactionUtil.resume(tx);
> +        }
> +    }
> +
> +    public static <V> V doTransaction(String ifErrorMessage, Callable<V> callable) throws Throwable {
> +        boolean tx = TransactionUtil.begin();
> +        Throwable transactionAbortCause = null;
> +        try {
> +            try {
> +                return callable.call();
> +            } catch (Throwable t) {
> +                while (t.getCause() != null) {
> +                    t = t.getCause();
> +                }
> +                throw t;
> +            }
> +        } catch (Error e) {
> +            transactionAbortCause = e;
> +            throw e;
> +        } catch (RuntimeException e) {
> +            transactionAbortCause = e;
> +            throw e;
> +        } catch (Throwable t) {
> +            transactionAbortCause = t;
> +            throw t;
> +        } finally {
> +            if (transactionAbortCause == null) {
> +                TransactionUtil.commit(tx);
> +            } else {
> +                transactionAbortCause.printStackTrace();
> +                TransactionUtil.rollback(tx, ifErrorMessage, transactionAbortCause);
> +            }
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,119 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.util.HashMap;
> +import java.util.Iterator;
> +import java.util.Map;
> +import java.util.concurrent.Callable;
> +import java.util.concurrent.ConcurrentHashMap;
> +import java.util.concurrent.ScheduledFuture;
> +import java.util.concurrent.TimeUnit;
> +import java.util.concurrent.atomic.AtomicReference;
> +
> +import org.ofbiz.entity.GenericDelegator;
> +import org.ofbiz.entity.GenericEntityException;
> +import org.ofbiz.entity.GenericPK;
> +import org.ofbiz.entity.GenericValue;
> +
> +import org.webslinger.lang.ConcurrentCache;
> +import org.webslinger.lang.ExecutionPool;
> +
> +public class StatsUpdater {
> +    private static final Updater UPDATER = new Updater();
> +
> +    public static void updateStats(GenericDelegator delegator, String entityName, Map<String, ? extends Object> keyFields,
> Map<String, ? extends Long> updateCountFields) throws GenericEntityException {
> +        GenericPK pk = delegator.makePK(entityName, keyFields);
> +        Map<String, Long> value = UPDATER.getValue(pk);
> +        synchronized (value) {
> +            for (Map.Entry<String, ? extends Long> entry: updateCountFields.entrySet()) {
> +                Long oldValue = value.get(entry.getKey());
> +                if (oldValue != null) {
> +                    value.put(entry.getKey(), Long.valueOf(oldValue.longValue() + entry.getValue()));
> +                } else {
> +                    value.put(entry.getKey(), entry.getValue());
> +                }
> +            }
> +        }
> +    }
> +
> +    private static final class Updater implements Callable<Void> {
> +        protected AtomicReference<EntityHolder> entities = new AtomicReference<EntityHolder>(new EntityHolder(Updater.class,
> "entities", null));
> +        protected ScheduledFuture<Void> future;
> +
> +        protected Map<String, Long> getValue(GenericPK pk) throws GenericEntityException {
> +            synchronized (this) {
> +                if (future == null || future.isDone()) {
> +                    future = ExecutionPool.schedule(this, 1, TimeUnit.SECONDS);
> +                }
> +            }
> +            try {
> +                return entities.get().get(pk);
> +            } catch (RuntimeException e) {
> +                throw e;
> +            } catch (GenericEntityException e) {
> +                throw e;
> +            } catch (Exception e) {
> +                throw (GenericEntityException) new GenericEntityException(e.getMessage()).initCause(e);
> +            }
> +        }
> +
> +        public Void call() {
> +            EntityHolder oldEntities;
> +            EntityHolder newEntities = new EntityHolder(Updater.class, "entities", null);
> +            do {
> +                oldEntities = entities.get();
> +            } while (!entities.compareAndSet(oldEntities, newEntities));
> +            synchronized (Updater.class) {
> +                for (GenericPK pk: oldEntities.keys()) {
> +                    try {
> +                        Map<String, Long> add = oldEntities.get(pk);
> +                        GenericValue existing = pk.getDelegator().findOne(pk.getEntityName(), pk, false);
> +                        if (existing == null) {
> +                            existing = pk.getDelegator().create(pk.getEntityName(), pk);
> +                        }
> +                        for (Map.Entry<String, Long> entry: add.entrySet()) {
> +                            Long value = entry.getValue();
> +                            Long oldValue = existing.getLong(entry.getKey());
> +                            if (oldValue != null) {
> +                                existing.put(entry.getKey(), Long.valueOf(value.longValue() + oldValue.longValue()));
> +                            } else {
> +                                existing.put(entry.getKey(), value);
> +                            }
> +                        }
> +                        existing.store();
> +                    } catch (Exception e) {
> +                        e.printStackTrace();
> +                    }
> +                }
> +            }
> +            return null;
> +        }
> +    }
> +
> +    private static final class EntityHolder extends ConcurrentCache<GenericPK, Map<String, Long>> {
> +        protected EntityHolder(Class<?> owner, String field, String label) {
> +            super(owner, field, label, HARD);
> +        }
> +
> +        protected Map<String, Long> createValue(GenericPK pk) throws Exception {
> +            return new HashMap<String, Long>();
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,58 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.io.IOException;
> +import java.util.Map;
> +
> +import org.apache.bsf.BSFException;
> +
> +import org.ofbiz.service.DispatchContext;
> +import org.ofbiz.service.GenericServiceException;
> +import org.ofbiz.service.ModelService;
> +import org.ofbiz.service.ServiceDispatcher;
> +import org.ofbiz.service.engine.GenericAsyncEngine;
> +
> +public class WebslingerBSFServiceEngine extends GenericAsyncEngine {
> +    private static final String[] paramNames;
> +    private static final Class<?>[] paramTypes;
> +    static {
> +        paramNames = new String[] { "dispatcher", "context" };
> +        paramTypes = new Class<?>[] { DispatchContext.class, Map.class };
> +    }
> +
> +    public WebslingerBSFServiceEngine(ServiceDispatcher dispatcher) {
> +        super(dispatcher);
> +    }
> +
> +    public void runSyncIgnore(String localName, ModelService modelService, Map<String, Object> context) throws
> GenericServiceException {
> +        runSync(localName, modelService, context);
> +    }
> +
> +    public Map<String, Object> runSync(String localName, ModelService modelService, Map<String, Object> context) throws
> GenericServiceException {
> +        Object[] params = new Object[] { dispatcher.getLocalContext(localName), context };
> +        try {
> +            return (Map) WebslingerContainer.runEvent(modelService.engineName, modelService.location, paramNames, paramTypes,
> params);
> +        } catch (IOException e) {
> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
> +        } catch (BSFException e) {
> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,52 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.io.File;
> +
> +import org.apache.catalina.Engine;
> +import org.apache.catalina.core.StandardEngine;
> +
> +import org.ofbiz.base.util.UtilValidate;
> +import org.ofbiz.base.container.ContainerConfig;
> +import org.ofbiz.base.container.ContainerException;
> +import org.ofbiz.catalina.container.CatalinaContainer;
> +
> +import org.webslinger.catalina.WebslingerAccessLogValve;
> +
> +public class WebslingerCatalinaContainer extends CatalinaContainer {
> +    protected Engine createEngine(ContainerConfig.Container.Property engineConfig) throws ContainerException {
> +        Engine engine = super.createEngine(engineConfig);
> +        String logDir = ContainerConfig.getPropertyValue(engineConfig, "access-log-dir", null);
> +        if (logDir == null) return engine;
> +        WebslingerAccessLogValve al = new WebslingerAccessLogValve();
> +        if (!logDir.startsWith("/")) logDir = System.getProperty("ofbiz.home") + "/" + logDir;
> +        File logFile = new File(logDir);
> +        if (!logFile.isDirectory()) throw new ContainerException("Log directory [" + logDir + "] is not available; make sure the
> directory is created");
> +        al.setDirectory(logFile.getAbsolutePath());
> +        String alp2 = ContainerConfig.getPropertyValue(engineConfig, "access-log-pattern", null);
> +        if (!UtilValidate.isEmpty(alp2)) al.setPattern(alp2);
> +        String alp3 = ContainerConfig.getPropertyValue(engineConfig, "access-log-prefix", null);
> +        if (!UtilValidate.isEmpty(alp3)) al.setPrefix(alp3);
> +        al.setResolveHosts(ContainerConfig.getPropertyValue(engineConfig, "access-log-resolve", true));
> +        al.setRotatable(ContainerConfig.getPropertyValue(engineConfig, "access-log-rotate", false));
> +        ((StandardEngine) engine).addValve(al);
> +        return engine;
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,100 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.io.IOException;
> +import java.io.StringWriter;
> +import java.io.Writer;
> +import java.util.Map;
> +
> +import org.apache.bsf.BSFException;
> +import org.apache.commons.vfs.FileName;
> +import org.apache.commons.vfs.FileObject;
> +
> +import org.ofbiz.base.container.Container;
> +import org.ofbiz.base.container.ContainerException;
> +import org.ofbiz.commons.vfs.CommonsVfsContainer;
> +
> +import org.webslinger.bsf.LanguageManager;
> +import org.webslinger.template.CompiledTemplate;
> +import org.webslinger.template.TemplateManager;
> +import org.webslinger.vfs.CommonsVfsFileNameVFSDelegate;
> +import org.webslinger.vfs.TypeVFSDelegate;
> +
> +public class WebslingerContainer implements Container {
> +    private static TypeVFSDelegate vfsDelegate;
> +    private static LanguageManager languageManager;
> +    private static TemplateManager templateManager;
> +    private static final String[] templateParamNames = new String[] {"writer", "context"};
> +    private static final Class<?>[] templateParamTypes = new Class<?>[] {Writer.class, Map.class};
> +
> +    public void init(String[] args, String configFile) throws ContainerException {
> +    }
> +
> +    public boolean start() throws ContainerException {
> +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
> +        TypeVFSDelegate.Resolver resolver = new TypeVFSDelegate.Resolver() {
> +            public Object resolve(String name) throws IOException {
> +                return CommonsVfsContainer.resolveFile(name);
> +            }
> +        };
> +        try {
> +            vfsDelegate = new TypeVFSDelegate(resolver);
> +            vfsDelegate.addVFSDelegate(FileName.class, new CommonsVfsFileNameVFSDelegate(vfsDelegate,
> CommonsVfsContainer.getFileSystemManager()));
> +            languageManager = new LanguageManager(vfsDelegate, null);
> +            languageManager.setClassLoader(loader);
> +            templateManager = new TemplateManager(vfsDelegate, null);
> +            templateManager.setClassLoader(loader);
> +        } catch (BSFException e) {
> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
> +        }
> +        return true;
> +    }
> +
> +    public void stop() throws ContainerException {
> +    }
> +
> +    public static LanguageManager getLanguageManager() {
> +        return languageManager;
> +    }
> +
> +    public static TemplateManager getTemplateManager() {
> +        return templateManager;
> +    }
> +
> +    public static Object runEvent(String language, String name, String[] paramNames, Class<?>[] paramTypes, Object[] params)
> throws BSFException, IOException {
> +        return getLanguageManager().apply(language, "top", 0, 0, CommonsVfsContainer.resolveFile(name), paramNames, params,
> paramTypes);
> +    }
> +
> +    public static String runTemplate(String language, String name, Map<String, Object> context) throws IOException {
> +        StringWriter writer = new StringWriter();
> +        runTemplate(language, name, writer, context);
> +        return writer.toString();
> +    }
> +
> +    public static void runTemplate(String language, String name, Writer writer, Map<String, Object> context) throws IOException {
> +        FileObject file = CommonsVfsContainer.resolveFile(name);
> +        CompiledTemplate template = getTemplate(language, file);
> +        template.run(file, writer, context);
> +    }
> +
> +    public static CompiledTemplate getTemplate(String language, FileObject file) throws IOException {
> +        return getTemplateManager().compileTemplate(language, "top", 0, 0, file);
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,206 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.io.File;
> +import java.io.IOException;
> +import java.lang.ref.SoftReference;
> +import java.net.URL;
> +import java.util.ArrayList;
> +import java.util.HashMap;
> +import java.util.HashSet;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Set;
> +
> +import javax.management.JMException;
> +import javax.naming.NamingException;
> +import javax.servlet.ServletConfig;
> +import javax.servlet.ServletContext;
> +import javax.servlet.ServletException;
> +import javax.servlet.http.HttpServletRequest;
> +import javax.servlet.http.HttpServletResponse;
> +import javax.xml.parsers.ParserConfigurationException;
> +
> +import org.xml.sax.SAXException;
> +
> +import org.apache.commons.vfs.FileObject;
> +import org.apache.commons.vfs.FileSystemException;
> +import org.apache.commons.vfs.FileSystemManager;
> +import org.apache.commons.vfs.NameScope;
> +
> +import org.ofbiz.base.util.UtilFormatOut;
> +import org.ofbiz.base.util.UtilMisc;
> +import org.ofbiz.base.util.UtilProperties;
> +import org.ofbiz.base.util.UtilValidate;
> +import org.ofbiz.entity.GenericEntity;
> +import org.ofbiz.entity.GenericEntityException;
> +import org.ofbiz.entity.GenericDelegator;
> +import org.ofbiz.entity.GenericValue;
> +import org.ofbiz.entity.transaction.TransactionFactory;
> +import org.ofbiz.entity.cache.Cache;
> +import org.ofbiz.entity.util.EntityUtil;
> +import org.ofbiz.security.SecurityFactory;
> +import org.ofbiz.service.LocalDispatcher;
> +import org.ofbiz.service.WebAppDispatcher;
> +
> +import org.webslinger.AbstractMappingWebslingerServletContextFactory;
> +import org.webslinger.WebslingerServletContext;
> +import org.webslinger.container.WebslingerContainer;
> +import org.webslinger.lang.ObjectUtil;
> +import org.webslinger.servlet.WebslingerServlet;
> +import org.webslinger.util.TTLObject;
> +import org.webslinger.collections.ArrayUtil;
> +import org.webslinger.collections.CollectionUtil;
> +
> +public class WebslingerContextMapper extends AbstractMappingWebslingerServletContextFactory {
> +    protected ServletContext servletContext;
> +    protected GenericDelegator delegator;
> +    protected final ArrayList<URL> globalReaderURLs = new ArrayList<URL>();
> +
> +    public void init(ServletConfig config) throws ServletException, IOException {
> +        System.err.println(org.webslinger.commons.vfs.flat.FlatFileProvider.class);
> +        servletContext = config.getServletContext();
> +        String delegatorName = servletContext.getInitParameter("entityDelegatorName");
> +        delegator = GenericDelegator.getGenericDelegator(delegatorName);
> +        String readerFiles = servletContext.getInitParameter("serviceReaderUrls");
> +        if (readerFiles != null) {
> +            for (String reader: CollectionUtil.split(readerFiles, ";")) {
> +                URL url =  config.getServletContext().getResource(reader);
> +                if (url != null) globalReaderURLs.add(url);
> +            }
> +        }
> +        super.init(config, UtilProperties.getPropertyValue("webslinger.properties", "moduleBase"));
> +    }
> +
> +    protected Layout[] getStartLayouts() throws Exception {
> +        ArrayList<Layout> layouts = new ArrayList<Layout>();
> +        try {
> +            for (GenericValue value: delegator.findByAnd("WebslingerServer", UtilMisc.toMap("loadAtStart", "Y"))) {
> +                layouts.add(new OfbizLayout(value));
> +            }
> +        } catch (GenericEntityException e) {
> +        }
> +        return layouts.toArray(new Layout[layouts.size()]);
> +    }
> +
> +    public void initializeRequest(WebslingerServletContext context, HttpServletRequest request) {
> +        request.setAttribute("servletContext", context);
> +        Object delegator = context.getAttribute("delegator");
> +        Object dispatcher = context.getAttribute("dispatcher");
> +        Object security = context.getAttribute("security");
> +        request.setAttribute("delegator", delegator);
> +        request.setAttribute("dispatcher", dispatcher);
> +        request.setAttribute("security", security);
> +        // FIXME!!! These next two are a hack until proper fake/wrapped session support is done in webslinger
> +        servletContext.setAttribute("delegator", delegator);
> +        servletContext.setAttribute("dispatcher", dispatcher);
> +        servletContext.setAttribute("security", security);
> +    }
> +
> +    protected void initializeContext(WebslingerServletContext context, Layout layout) throws Exception {
> +        OfbizLayout ofbizLayout = (OfbizLayout) layout;
> +        GenericDelegator delegator = GenericDelegator.getGenericDelegator(ofbizLayout.delegatorName);
> +        context.setAttribute("delegator", delegator);
> +        context.setAttribute("dispatcher", createLocalDispatcher(context, layout.getTarget(), delegator));
> +        context.setAttribute("security", SecurityFactory.getInstance(delegator));
> +    }
> +
> +    protected LocalDispatcher createLocalDispatcher(WebslingerServletContext context, String name, GenericDelegator delegator)
> throws IOException {
> +        ArrayList<URL> readerURLs = new ArrayList<URL>(globalReaderURLs);
> +        String readerFiles = context.getInitParameter("serviceReaderUrls");
> +        if (readerFiles != null) {
> +            for (String reader: CollectionUtil.split(readerFiles, ";")) {
> +                URL url =  context.getResource(reader);
> +                if (url != null) readerURLs.add(url);
> +            }
> +        }
> +        System.err.println(readerURLs);
> +        return new WebAppDispatcher(name, delegator, readerURLs);
> +    }
> +
> +    protected Set<String> getSuffixes() throws Exception {
> +        Cache cache = delegator.getCache();
> +        Set<String> suffixes;
> +        synchronized (WebslingerContextMapper.class) {
> +            suffixes = (Set<String>) cache.get("WebslingerHostSuffix", null, "WebslingerContextMapper.Suffixes");
> +            if (suffixes == null) {
> +                suffixes = new HashSet<String>();
> +                for (GenericValue value: delegator.findList("WebslingerHostSuffix", null, null, null, null, false)) {
> +                    suffixes.add(value.getString("hostSuffix"));
> +                }
> +                cache.put("WebslingerHostSuffix", null, "WebslingerContextMapper.Suffixes", suffixes);
> +            }
> +        }
> +        return suffixes;
> +    }
> +
> +    protected Layout lookupLayout(String hostName, String contextPath) throws Exception {
> +        GenericValue layout = EntityUtil.getOnly(delegator.findByAndCache("WebslingerLayout", UtilMisc.toMap("hostName",
> hostName, "contextPath", contextPath)));
> +        if (layout == null) return null;
> +        return new OfbizLayout(layout);
> +    }
> +
> +    protected class OfbizLayout implements Layout {
> +        private final String id;
> +        private final String target;
> +        private final String[] bases;
> +        private final int hashCode;
> +        protected final String delegatorName;
> +        protected final String dispatcherName;
> +
> +        protected OfbizLayout(GenericValue server) throws GenericEntityException {
> +            id = server.getString("webslingerServerId");
> +            target = server.getString("target");
> +            List<GenericValue> baseValues = server.getRelatedCache("WebslingerServerBase", UtilMisc.toList("seqNum"));
> +            bases = new String[baseValues.size()];
> +            for (int i = 0; i < bases.length; i++) {
> +                GenericValue baseValue = baseValues.get(i);
> +                bases[i] = baseValue.getString("baseName");
> +            }
> +            delegatorName = server.getString("delegatorName");
> +            dispatcherName = server.getString("dispatcherName");
> +            hashCode = target.hashCode() ^ ObjectUtil.hashCodeHelper(delegatorName) ^ ArrayUtil.hashCodeHelper(bases);
> +        }
> +
> +        public String getId() {
> +            return id;
> +        }
> +
> +        public String getTarget() {
> +            return target;
> +        }
> +
> +        public String[] getBases() {
> +            return bases;
> +        }
> +
> +        public int hashCode() {
> +            return hashCode;
> +        }
> +
> +        public boolean equals(Object o) {
> +            if (!(o instanceof OfbizLayout)) return false;
> +            OfbizLayout other = (OfbizLayout) o;
> +            if (!target.equals(other.target)) return false;
> +            if (!ObjectUtil.equalsHelper(delegatorName, other.delegatorName)) return false;
> +            return ArrayUtil.equalsHelper(bases, other.bases);
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java (added)
> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,61 @@
> +/*******************************************************************************
> + * 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.ofbiz.webslinger;
> +
> +import java.io.IOException;
> +import java.io.StringReader;
> +import java.io.StringWriter;
> +import java.util.Collections;
> +import java.util.Map;
> +
> +import org.ofbiz.base.util.UtilMisc;
> +import org.ofbiz.entity.GenericDelegator;
> +import org.ofbiz.entity.GenericValue;
> +import org.ofbiz.entity.util.EntityUtil;
> +import org.ofbiz.service.GenericServiceException;
> +import org.ofbiz.service.ModelService;
> +import org.ofbiz.service.ServiceDispatcher;
> +import org.ofbiz.service.engine.GenericAsyncEngine;
> +
> +import org.webslinger.WebslingerServletContext;
> +
> +public class WebslingerServerEngine extends GenericAsyncEngine {
> +    public WebslingerServerEngine(ServiceDispatcher dispatcher) {
> +        super(dispatcher);
> +    }
> +
> +    public void runSyncIgnore(String localName, ModelService modelService, Map<String, Object> context) throws
> GenericServiceException {
> +        runSync(localName, modelService, context);
> +    }
> +
> +    public Map<String, Object> runSync(String localName, ModelService modelService, Map<String, Object> context) throws
> GenericServiceException {
> +        GenericDelegator delegator = dispatcher.getDelegator();
> +        try {
> +            GenericValue found = EntityUtil.getFirst(delegator.findByAndCache("WebslingerLayout",
> UtilMisc.toMap("webslingerServerId", modelService.location)));
> +            if (found == null) throw new GenericServiceException("Couldn't find server mapping for(" + modelService.location +
> ")");
> +            return (Map<String, Object>) WebslingerServletContext.invokeInVM(found.getString("hostName"), 8080,
> modelService.invoke, context);
> +        } catch (RuntimeException e) {
> +            throw e;
> +        } catch (GenericServiceException e) {
> +            throw e;
> +        } catch (Exception e) {
> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
> +        }
> +    }
> +}
>
> Added: ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml (added)
> +++ ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,74 @@
> +<?xml version="1.0"?>
> +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
> +
> +<!--
> + *  Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org
> + *
> + *  Permission is hereby granted, free of charge, to any person obtaining a
> + *  copy of this software and associated documentation files (the "Software"),
> + *  to deal in the Software without restriction, including without limitation
> + *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + *  and/or sell copies of the Software, and to permit persons to whom the
> + *  Software is furnished to do so, subject to the following conditions:
> + *
> + *  The above copyright notice and this permission notice shall be included
> + *  in all copies or substantial portions of the Software.
> + *
> + *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
> + *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> + *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> + *  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> + *  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
> + *  OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
> + *  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
> +-->
> +
> +<web-app>
> +    <display-name>Open For Business - Catalog</display-name>
> +    <description>Catalog Module of the Open For Business Project</description>
> +
> +    <context-param>
> +        <param-name>entityDelegatorName</param-name>
> +        <param-value>default</param-value>
> +        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
> +    </context-param>
> +
> +    <context-param>
> +        <param-name>ofbiz.webslinger.baseLocation</param-name>
> +        <param-value>ofbiz-component://webslinger/webapp/bases</param-value>
> +    </context-param>
> +
> +    <servlet>
> +        <servlet-name>WebslingerServlet</servlet-name>
> +        <display-name>WebslingerServlet</display-name>
> +        <description>Webslinger Servlet</description>
> +        <servlet-class>org.webslinger.servlet.WebslingerServlet</servlet-class>
> +        <init-param>
> +            <param-name>ofbiz.mapping.ttl</param-name>
> +            <param-value>60000</param-value>
> +        </init-param>
> +        <init-param>
> +            <param-name>ofbiz.mapping.default-file-system-id</param-name>
> +            <param-value>1</param-value>
> +        </init-param>
> +        <init-param>
> +            <param-name>org.webslinger.servlet.WebslingerServlet.WebslingerServletContextFactory</param-name>
> +            <param-value>org.ofbiz.webslinger.WebslingerContextMapper</param-value>
> +        </init-param>
> +        <load-on-startup>1</load-on-startup>
> +    </servlet>
> +    <servlet-mapping>
> +        <servlet-name>WebslingerServlet</servlet-name>
> +        <url-pattern>/*</url-pattern>
> +    </servlet-mapping>
> +
> +    <session-config>
> +        <session-timeout>60</session-timeout> <!-- in minutes -->
> +    </session-config>
> +
> +    <welcome-file-list>
> +        <welcome-file>index.jsp</welcome-file>
> +        <welcome-file>index.html</welcome-file>
> +        <welcome-file>index.htm</welcome-file>
> +    </welcome-file-list>
> +</web-app>
>
> Added: ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml (added)
> +++ ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,22 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<!--
> +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.
> +-->
> +<module-state>
> + <module name="defaults" url="ofbiz-component://webslinger/modules/defaults.zip" enabled="true"/>
> +</module-state>
>
> Propchange: ofbiz/trunk/framework/webslinger/websites/webslinger/Var/
> ------------------------------------------------------------------------------
> --- svn:ignore (added)
> +++ svn:ignore Fri Mar 13 01:12:11 2009
> @@ -0,0 +1 @@
> +*
>
> Added: ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml
> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml?rev=753081&view=auto
> ==============================================================================
> --- ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml (added)
> +++ ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml Fri Mar 13 01:12:11 2009
> @@ -0,0 +1,12 @@
> +<p>
> +This page is brought to you by Webslinger!
> +</p>
> +<p>
> +It doesn't do a whole lot yet, but if you've gotten this far, here are the features that are available:
> +</p>
> +<ul>
> + <li>Extension mapper</li>
> + <li>janino/groovy event handler</li>
> + <li>velocity template markup</li>
> + <li>template/wrapper/section content split</li>
> +</ul>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: svn commit: r753081 - in /ofbiz/trunk/framework/webslinger: ./ config/ data/ entitydef/ lib/ modules/ modules/ofbiz/ modules/ofbiz/Classes/ modules/ofbiz/Classes/org/ modules/ofbiz/Classes/org/webslinger/ modules/ofbiz/www/ modules/ofbiz/www/WEB-INF/ m

Jacques Le Roux
Administrator
I removed <author>Adam Heath</author> at r992768
I'm still waiting an explanation about Webslinger, is there someting else than the code?

Thanks

Jacques

Jacques Le Roux wrote:

> I found
> <author>Adam Heath</author> by chance.
> I wonder if we should keep it in Apache OFBiz...
> Also I understand that it's good for BrainFood to have Webslinger in OFBiz repo, but for OFBiz?
> What Webslinger is bringing to the project?
>
> Thanks to clarify please
>
> Jacques
>
> From: <[hidden email]>
>> Author: doogie
>> Date: Fri Mar 13 01:12:11 2009
>> New Revision: 753081
>>
>> URL: http://svn.apache.org/viewvc?rev=753081&view=rev
>> Log:
>> New webslinger component.  This is being added to framework, based
>> on the desire to make use of it in a support role.
>>
>> It is *not* enabled yet, not part of the build, nor used at runtime
>> by the server.  That will come shortly.
>>
>> Added:
>>    ofbiz/trunk/framework/webslinger/   (with props)
>>    ofbiz/trunk/framework/webslinger/build.xml
>>    ofbiz/trunk/framework/webslinger/config/
>>    ofbiz/trunk/framework/webslinger/config/webslinger.properties
>>    ofbiz/trunk/framework/webslinger/data/
>>    ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml
>>    ofbiz/trunk/framework/webslinger/entitydef/
>>    ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml
>>    ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml
>>    ofbiz/trunk/framework/webslinger/lib/
>>    ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar   (with props)
>>    ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar   (with props)
>>    ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar   (with props)
>>    ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar   (with props)
>>    ofbiz/trunk/framework/webslinger/modules/
>>    ofbiz/trunk/framework/webslinger/modules/defaults.zip   (with props)
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/
>>    ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy
>>    ofbiz/trunk/framework/webslinger/ofbiz-component.xml
>>    ofbiz/trunk/framework/webslinger/src/
>>    ofbiz/trunk/framework/webslinger/src/META-INF/
>>    ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml
>>    ofbiz/trunk/framework/webslinger/src/org/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java
>>    ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java
>>    ofbiz/trunk/framework/webslinger/webapp/
>>    ofbiz/trunk/framework/webslinger/webapp/webslinger/
>>    ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/
>>    ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml
>>    ofbiz/trunk/framework/webslinger/websites/
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/Config/
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/Var/   (with props)
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/www/
>>    ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml
>>
>> Propchange: ofbiz/trunk/framework/webslinger/
>> ------------------------------------------------------------------------------
>> --- svn:ignore (added)
>> +++ svn:ignore Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1 @@
>> +build
>>
>> Added: ofbiz/trunk/framework/webslinger/build.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/build.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/build.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/build.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,69 @@
>> +<?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.
>> +-->
>> +
>> +<project name="OFBiz - Webslinger" default="jar" basedir=".">
>> +    <import file="../../common.xml"/>
>> +
>> +    <!-- ================================================================== -->
>> +    <!-- Initialization of all property settings                            -->
>> +    <!-- ================================================================== -->
>> +
>> +    <property name="desc" value="Webslinger Component"/>
>> +    <property name="name" value="ofbiz-webslinger"/>
>> +    <property name="ofbiz.home.dir" value="../.."/>
>> +
>> +    <path id="local.class.path">
>> +        <fileset dir="lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/entity/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/entity/build/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/j2eespecs" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/commons" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/base/lib/scripting" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/base/build/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/security/build/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/service/build/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/catalina/build/lib" includes="*.jar"/>
>> +        <fileset dir="${ofbiz.home.dir}/framework/catalina/lib" includes="*.jar"/>
>> +        <pathelement location="${ofbiz.home.dir}/framework/catalina/build/classes"/>
>> +    </path>
>> +
>> +    <!-- ================================================================== -->
>> +    <!-- Compilation of the source
>>       -->
>> +    <!-- ================================================================== -->
>> +
>> +    <target name="classes" depends="prepare">
>> +    <javac15/>
>> +    </target>
>> +
>> +    <!-- ================================================================== -->
>> +    <!-- Build JavaDoc                                                      -->
>> +    <!-- ================================================================== -->
>> +
>> +    <target name="docs" depends="prepare-docs">
>> +        <mkdir dir="${build.dir}/javadocs"/>
>> +        <javadoc packagenames="org.ofbiz.webslinger.*"
>> +                 classpathref="local.class.path"
>> +                 destdir="${build.dir}/javadocs"
>> +                 Windowtitle="Open for Business - ${desc}">
>> +            <sourcepath path="${src.dir}"/>
>> +        </javadoc>
>> +    </target>
>> +</project>
>>
>> Added: ofbiz/trunk/framework/webslinger/config/webslinger.properties
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/config/webslinger.properties?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/config/webslinger.properties (added)
>> +++ ofbiz/trunk/framework/webslinger/config/webslinger.properties Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,17 @@
>> +# 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.
>> +moduleBase=ofbiz-component://webslinger/modules
>>
>> Added: ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/data/WebslingerSeedData.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,28 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +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.
>> +-->
>> +<entity-engine-xml>
>> + <WebslingerServer webslingerServerId="WEBSLINGER" delegatorName="default" dispatcherName="webslinger" serverName="webslinger"
>> target="ofbiz-component://webslinger/websites/webslinger"/>
>> +
>> + <WebslingerHostMapping hostName="*" contextPath="/webslinger" webslingerServerId="WEBSLINGER"/>
>> +
>> + <WebslingerHostSuffix hostSuffixId="PREVIEW" hostSuffix=".preview"/>
>> + <WebslingerHostSuffix hostSuffixId="LOCALHOST" hostSuffix=".localhost"/>
>> +
>> +</entity-engine-xml>
>>
>> Added: ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/entitydef/entitygroup.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,32 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +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.
>> +-->
>> +<entitygroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> +        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitygroup.xsd">
>> +    <entity-group group="org.ofbiz" entity="WebslingerServer" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerServerBase" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerHostMapping" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerLayout" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerHostSuffix" />
>> +    <!--
>> +    <entity-group group="org.ofbiz" entity="WebslingerModule" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerServerModule" />
>> +    <entity-group group="org.ofbiz" entity="WebslingerServerModuleLayout" />
>> +    -->
>> +</entitygroup>
>>
>> Added: ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/entitydef/entitymodel.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,146 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +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.
>> +-->
>> +<entitymodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> +    xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/entitymodel.xsd">
>> +    <title></title>
>> +    <description></description>
>> +    <copyright></copyright>
>> +    <author>Adam Heath</author>
>> +    <version>0.0</version>
>> +
>> +    <entity entity-name="WebslingerServer"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Server">
>> +      <field name="webslingerServerId" type="id-ne"></field>
>> +      <field name="delegatorName" type="name"></field>
>> +      <field name="dispatcherName" type="name"></field>
>> +      <field name="serverName" type="name"></field>
>> +      <field name="webSiteId" type="id"></field>
>> +      <field name="target" type="name"></field>
>> +      <field name="loadAtStart" type="indicator"></field>
>> +      <prim-key field="webslingerServerId"/>
>> +      <relation type="one" fk-name="WSS_WS" rel-entity-name="WebSite">
>> +          <key-map field-name="webSiteId"/>
>> +      </relation>
>> +    </entity>
>> +
>> +    <entity entity-name="WebslingerServerBase"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Server">
>> +      <field name="webslingerServerId" type="id-ne"></field>
>> +      <field name="baseName" type="name"></field>
>> +      <field name="seqNum" type="numeric"></field>
>> +      <prim-key field="webslingerServerId"/>
>> +      <prim-key field="baseName"/>
>> +      <relation type="one" fk-name="WSB_WS" rel-entity-name="WebslingerServer">
>> +          <key-map field-name="webslingerServerId"/>
>> +      </relation>
>> +    </entity>
>> +
>> +    <entity entity-name="WebslingerHostMapping"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Server">
>> +      <field name="hostName" type="name"></field>
>> +      <field name="contextPath" type="value"></field>
>> +      <field name="webslingerServerId" type="id-ne"></field>
>> +      <prim-key field="hostName"/>
>> +      <prim-key field="contextPath"/>
>> +      <relation type="one" fk-name="WHM_WS" rel-entity-name="WebslingerServer">
>> +          <key-map field-name="webslingerServerId"/>
>> +      </relation>
>> +    </entity>
>> +
>> +    <entity entity-name="WebslingerHostSuffix"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Server">
>> +      <field name="hostSuffixId" type="id-ne"></field>
>> +      <field name="hostSuffix" type="name"></field>
>> +      <prim-key field="hostSuffixId"/>
>> +    </entity>
>> +
>> +    <view-entity entity-name="WebslingerLayout"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="WebslingerServer and WebslingerHostMapping View Entity">
>> +      <member-entity entity-alias="WS" entity-name="WebslingerServer"/>
>> +      <member-entity entity-alias="WHM" entity-name="WebslingerHostMapping"/>
>> +      <alias-all entity-alias="WS"/>
>> +      <alias-all entity-alias="WHM">
>> +       <exclude field="webslingerServerId"/>
>> +      </alias-all>
>> +      <view-link entity-alias="WS" rel-entity-alias="WHM">
>> +        <key-map field-name="webslingerServerId"/>
>> +      </view-link>
>> +      <relation type="one" rel-entity-name="WebslingerServer">
>> +        <key-map field-name="webslingerServerId"/>
>> +      </relation>
>> +      <relation type="many" rel-entity-name="WebslingerServerBase">
>> +        <key-map field-name="webslingerServerId"/>
>> +      </relation>
>> +      <relation type="one" rel-entity-name="WebslingerHostMapping">
>> +        <key-map field-name="hostName"/>
>> +        <key-map field-name="contextPath"/>
>> +      </relation>
>> +    </view-entity>
>> +    <!--
>> +    <entity entity-name="WebslingerModule"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Module">
>> +      <field name="moduleId" type="id-ne"></field>
>> +      <field name="target" type="name"></field>
>> +      <prim-key field="moduleId"/>
>> +    </entity>
>> +
>> +    <entity entity-name="WebslingerServerModule"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="Webslinger Server">
>> +      <field name="webslingerServerId" type="id-ne"></field>
>> +      <field name="moduleId" type="id-ne"></field>
>> +      <prim-key field="webslingerServerId"/>
>> +      <prim-key field="moduleId"/>
>> +      <relation type="one" fk-name="WSM_WM" rel-entity-name="WebslingerModule">
>> +          <key-map field-name="moduleId"/>
>> +      </relation>
>> +      <relation type="one" fk-name="WSM_WW" rel-entity-name="WebslingerServer">
>> +          <key-map field-name="webslingerServerId"/>
>> +      </relation>
>> +    </entity>
>> +
>> +    <view-entity entity-name="WebslingerServerModuleLayout"
>> +            package-name="org.ofbiz.webslinger"
>> +            title="WebslingerModule and WebslingerServerModule View Entity">
>> +      <member-entity entity-alias="WM" entity-name="WebslingerModule"/>
>> +      <member-entity entity-alias="WSM" entity-name="WebslingerServerModule"/>
>> +      <alias-all entity-alias="WM"/>
>> +      <alias-all entity-alias="WSM">
>> +       <exclude field="moduleId"/>
>> +      </alias-all>
>> +      <view-link entity-alias="WM" rel-entity-alias="WSM">
>> +        <key-map field-name="moduleId"/>
>> +      </view-link>
>> +      <relation type="one" rel-entity-name="WebslingerModule">
>> +        <key-map field-name="moduleId"/>
>> +      </relation>
>> +      <relation type="one" rel-entity-name="WebslingerServerModule">
>> +        <key-map field-name="webslingerServerId"/>
>> +        <key-map field-name="moduleId"/>
>> +      </relation>
>> +    </view-entity>
>> +    -->
>> +</entitymodel>
>>
>> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar?rev=753081&view=auto
>> ==============================================================================
>> Binary file - no diff available.
>>
>> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-20090312-2018a822aa51.jar
>> ------------------------------------------------------------------------------
>>    svn:mime-type = application/octet-stream
>>
>> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar?rev=753081&view=auto
>> ==============================================================================
>> Binary file - no diff available.
>>
>> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-catalina-20090312-2018a822aa51.jar
>> ------------------------------------------------------------------------------
>>    svn:mime-type = application/octet-stream
>>
>> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar?rev=753081&view=auto
>> ==============================================================================
>> Binary file - no diff available.
>>
>> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-ext-20090312-2018a822aa51.jar
>> ------------------------------------------------------------------------------
>>    svn:mime-type = application/octet-stream
>>
>> Added: ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar?rev=753081&view=auto
>> ==============================================================================
>> Binary file - no diff available.
>>
>> Propchange: ofbiz/trunk/framework/webslinger/lib/webslinger-launcher-20090312-2018a822aa51.jar
>> ------------------------------------------------------------------------------
>>    svn:mime-type = application/octet-stream
>>
>> Added: ofbiz/trunk/framework/webslinger/modules/defaults.zip
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/defaults.zip?rev=753081&view=auto
>> ==============================================================================
>> Binary file - no diff available.
>>
>> Propchange: ofbiz/trunk/framework/webslinger/modules/defaults.zip
>> ------------------------------------------------------------------------------
>>    svn:mime-type = application/octet-stream
>>
>> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types (added)
>> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/Classes/org/webslinger/mime.types Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,17 @@
>> +# 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.
>> +application/x-ofbiz-condition ofbiz-condition
>>
>> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition?rev=753081&view=auto
>> ==============================================================================
>>    (empty)
>>
>> Added:
>> ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition%40/data-filter?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
>> (added)
>> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/data-filter
>> Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1 @@
>> +java.lang.String:/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData
>>
>> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition%40/type?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type (added)
>> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/DefaultMimeAttributes/application/x-ofbiz-condition@/type Fri Mar
>> 13 01:12:11 2009
>> @@ -0,0 +1 @@
>> +java.lang.String:data
>>
>> Added: ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy (added)
>> +++ ofbiz/trunk/framework/webslinger/modules/ofbiz/www/WEB-INF/Events/System/Ofbiz/FilterOfbizConditionData.groovy Fri Mar 13
>> 01:12:11 2009
>> @@ -0,0 +1,46 @@
>> +/*******************************************************************************
>> + * 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.
>> + *******************************************************************************/
>> +import org.ofbiz.entity.condition.EntityCondition
>> +import org.ofbiz.entity.condition.EntityConditionList
>> +import org.ofbiz.entity.condition.EntityExpr
>> +import org.ofbiz.entity.condition.EntityOperator
>> +
>> +def buildCondition
>> +def getValue = { item ->
>> + if (item instanceof Map) return buildCondition(item)
>> + return item
>> +}
>> +buildCondition = { item ->
>> + switch (item.name) {
>> + case "EntityConditionList":
>> + def conditions = []
>> + for (conditionDef in item.list) {
>> + conditions.add(buildCondition(conditionDef))
>> + }
>> + return new EntityConditionList(conditions, EntityOperator.lookup(item.operator))
>> + case "EntityExpr":
>> + return new EntityExpr(getValue(item.left), EntityOperator.lookup(item.operator), getValue(item.right))
>> + case "Include":
>> + return webslinger.event(item.path)
>> + default:
>> + throw new InternalError(item.toString())
>> + }
>> +}
>> +
>> +return buildCondition(webslinger.payload)
>>
>> Added: ofbiz/trunk/framework/webslinger/ofbiz-component.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/ofbiz-component.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/ofbiz-component.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/ofbiz-component.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,35 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +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.
>> +-->
>> +<ofbiz-component name="webslinger"
>> +        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> +        xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/ofbiz-component.xsd">
>> +    <resource-loader name="main" type="component"/>
>> +    <classpath type="dir" location="config"/>
>> +    <classpath type="jar" location="lib/*"/>
>> +    <classpath type="jar" location="build/lib/*"/>
>> +
>> +    <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/>
>> +    <entity-resource type="group" reader-name="main" loader="main" location="entitydef/entitygroup.xml"/>
>> +    <entity-resource type="data" reader-name="seed" loader="main" location="data/WebslingerSeedData.xml"/>
>> +
>> +    <webapp name="webslinger" title="Webslinger" server="default-server" location="webapp/webslinger"
>> +        base-permission="OFBTOOLS,WEBSLINGER" mount-point="/webslinger"/>
>> +</ofbiz-component>
>> +
>>
>> Added: ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/src/META-INF/vfs-providers.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,27 @@
>> +<?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.
>> +-->
>> +<providers>
>> + <provider class-name="org.ofbiz.commons.vfs.ofbiz.OfbizHomeProvider">
>> +  <scheme name="ofbiz-home"/>
>> + </provider>
>> + <provider class-name="org.ofbiz.commons.vfs.ofbiz.OfbizComponentProvider">
>> +  <scheme name="ofbiz-component"/>
>> + </provider>
>> +</providers>
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/CommonsVfsContainer.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,67 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.commons.vfs;
>> +
>> +import java.io.File;
>> +import java.io.IOException;
>> +import java.net.MalformedURLException;
>> +
>> +import org.apache.commons.vfs.CacheStrategy;
>> +import org.apache.commons.vfs.FileObject;
>> +import org.apache.commons.vfs.FileSystemException;
>> +import org.apache.commons.vfs.FileSystemManager;
>> +import org.apache.commons.vfs.impl.StandardFileSystemManager;
>> +
>> +import org.ofbiz.base.container.Container;
>> +import org.ofbiz.base.container.ContainerException;
>> +import org.webslinger.commons.vfs.VFSUtil;
>> +
>> +public class CommonsVfsContainer implements Container {
>> +    private static StandardFileSystemManager sfsm;
>> +
>> +    public void init(String[] args, String configFile) throws ContainerException {
>> +    }
>> +
>> +    public boolean start() throws ContainerException {
>> +        try {
>> +            StandardFileSystemManager sfsm = VFSUtil.createStandardFileSystemManager();
>> +            FileObject currentDir = sfsm.resolveFile(new File(".").toURI().toURL().toString());
>> +            sfsm.setBaseFile(currentDir);
>> +            CommonsVfsContainer.sfsm = sfsm;
>> +        } catch (FileSystemException e) {
>> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
>> +        } catch (MalformedURLException e) {
>> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
>> +        }
>> +        return true;
>> +    }
>> +
>> +    public void stop() throws ContainerException {
>> +        sfsm.close();
>> +        sfsm = null;
>> +    }
>> +
>> +    public static FileObject resolveFile(String uri) throws IOException {
>> +        return sfsm.resolveFile(uri);
>> +    }
>> +
>> +    public static FileSystemManager getFileSystemManager() {
>> +        return sfsm;
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizComponentProvider.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,59 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.commons.vfs.ofbiz;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +import org.apache.commons.vfs.FileObject;
>> +import org.apache.commons.vfs.FileSystemException;
>> +import org.apache.commons.vfs.FileSystemOptions;
>> +import org.apache.commons.vfs.provider.AbstractFileProvider;
>> +import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
>> +import org.ofbiz.base.location.FlexibleLocation;
>> +import org.webslinger.commons.vfs.VFSUtil;
>> +
>> +public class OfbizComponentProvider extends AbstractFileProvider {
>> +    public Collection getCapabilities() {
>> +        return DefaultLocalFileProvider.capabilities;
>> +    }
>> +
>> +    public FileObject findFile(FileObject base, String name, FileSystemOptions properties) throws FileSystemException {
>> +        try {
>> +            //name = name.replaceAll("^ofbiz-component://", "");
>> +            int nameLength = name.length();
>> +            int componentNameStart = 16;
>> +            while (componentNameStart < nameLength && name.charAt(componentNameStart) == '/') componentNameStart++;
>> +            if (componentNameStart == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
>> +            int componentNameEnd = componentNameStart;
>> +            while (componentNameEnd < nameLength && name.charAt(componentNameEnd) != '/') componentNameEnd++;
>> +            if (componentNameEnd == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
>> +            int restStart = componentNameEnd;
>> +            while (restStart < nameLength && name.charAt(restStart) == '/') restStart++;
>> +            if (restStart == nameLength) throw new IllegalArgumentException("Invalid name(" + name + ")");
>> +            String componentName = name.substring(componentNameStart, componentNameEnd);
>> +            URL location = FlexibleLocation.resolveLocation("component://" + componentName + "/.");
>> +            FileObject ofbizBase = getContext().resolveFile(location.toString(), properties);
>> +            return VFSUtil.toFileObject(ofbizBase.getFileSystem().getFileSystemManager(),
>> ofbizBase.resolveFile(name.substring(restStart)).getURL().toString(), properties);
>> +        } catch (Exception e) {
>> +            FileSystemException fse = new FileSystemException(e.getMessage(), null, e);
>> +            fse.initCause(e);
>> +            throw fse;
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/commons/vfs/ofbiz/OfbizHomeProvider.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,51 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.commons.vfs.ofbiz;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +
>> +import org.apache.commons.vfs.FileObject;
>> +import org.apache.commons.vfs.FileSystemException;
>> +import org.apache.commons.vfs.FileSystemOptions;
>> +import org.apache.commons.vfs.provider.AbstractFileProvider;
>> +import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider;
>> +
>> +import org.ofbiz.base.location.FlexibleLocation;
>> +
>> +import org.webslinger.commons.vfs.VFSUtil;
>> +
>> +public class OfbizHomeProvider extends AbstractFileProvider {
>> +    public Collection getCapabilities() {
>> +        return DefaultLocalFileProvider.capabilities;
>> +    }
>> +
>> +    public FileObject findFile(FileObject base, String name, FileSystemOptions properties) throws FileSystemException {
>> +        //new Exception("findFile(" + base + ", " + name + ")").printStackTrace();
>> +        try {
>> +            URL location = FlexibleLocation.resolveLocation("ofbizhome://.");
>> +            FileObject ofbizBase = getContext().resolveFile(location.toString(), properties);
>> +            return VFSUtil.toFileObject(ofbizBase.getFileSystem().getFileSystemManager(),
>> ofbizBase.resolveFile(name.substring(13)).getURL().toString(), properties);
>> +        } catch (Exception e) {
>> +            FileSystemException fse = new FileSystemException(e.getMessage(), null, e);
>> +            fse.initCause(e);
>> +            throw fse;
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityHttpUtil.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,78 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.util.HashMap;
>> +import java.util.Iterator;
>> +import java.util.Locale;
>> +import java.util.Map;
>> +
>> +import javax.servlet.ServletRequest;
>> +import javax.servlet.http.HttpServletRequest;
>> +
>> +import org.ofbiz.base.util.GeneralException;
>> +import org.ofbiz.base.util.ObjectType;
>> +import org.ofbiz.base.util.UtilHttp;
>> +import org.ofbiz.base.util.UtilMisc;
>> +import org.ofbiz.base.util.UtilValidate;
>> +import org.ofbiz.entity.GenericDelegator;
>> +import org.ofbiz.entity.GenericValue;
>> +import org.ofbiz.entity.jdbc.SqlJdbcUtil;
>> +import org.ofbiz.entity.model.ModelEntity;
>> +import org.ofbiz.entity.model.ModelField;
>> +import org.ofbiz.entity.model.ModelFieldType;
>> +
>> +public class EntityHttpUtil {
>> +    public static GenericValue makeValidValue(String entityName, ServletRequest request) throws GeneralException {
>> +        return makeValidValue(entityName, false, request);
>> +    }
>> +
>> +    public static GenericValue makeValidValue(String entityName, boolean includePks, ServletRequest request) throws
>> GeneralException {
>> +        if (request instanceof HttpServletRequest) return makeValidValue(entityName, includePks, (HttpServletRequest) request);
>> +        throw new IllegalArgumentException("Not an HttpServletRequest");
>> +    }
>> +
>> +    public static GenericValue makeValidValue(String entityName, HttpServletRequest request) throws GeneralException {
>> +        return makeValidValue(entityName, false, request);
>> +    }
>> +
>> +    public static GenericValue makeValidValue(String entityName, boolean includePks, HttpServletRequest request) throws
>> GeneralException {
>> +        GenericDelegator delegator = (GenericDelegator) request.getAttribute("delegator");
>> +        GenericValue value = delegator.makeValue(entityName, (Map) null);
>> +        ModelEntity model = value.getModelEntity();
>> +        Iterator<ModelField> it = includePks ? model.getFieldsIterator() : model.getNopksIterator();
>> +        Locale locale = UtilHttp.getLocale(request);
>> +        while (it.hasNext()) {
>> +            ModelField field = it.next();
>> +            String fieldName = field.getName();
>> +            String parameterValue = request.getParameter(fieldName);
>> +            Object fieldValue;
>> +            if (parameterValue == null) {
>> +                fieldValue = null;
>> +            } else {
>> +                ModelFieldType fieldType = delegator.getEntityFieldType(model, field.getType());
>> +                String wantedType = fieldType.getJavaType();
>> +                fieldValue = ObjectType.simpleTypeConvert(parameterValue, wantedType, null, locale, true);
>> +            }
>> +            value.put(fieldName, fieldValue);
>> +        }
>> +        return value;
>> +    }
>> +}
>> +
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/EntityTransactionUtil.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,66 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import javax.transaction.Transaction;
>> +
>> +import org.ofbiz.entity.transaction.TransactionUtil;
>> +import java.util.concurrent.Callable;
>> +
>> +public class EntityTransactionUtil {
>> +    public static <V> V doNewTransaction(String ifErrorMessage, Callable<V> callable) throws Throwable {
>> +        Transaction tx = TransactionUtil.suspend();
>> +        try {
>> +            return doTransaction(ifErrorMessage, callable);
>> +        } finally {
>> +            TransactionUtil.resume(tx);
>> +        }
>> +    }
>> +
>> +    public static <V> V doTransaction(String ifErrorMessage, Callable<V> callable) throws Throwable {
>> +        boolean tx = TransactionUtil.begin();
>> +        Throwable transactionAbortCause = null;
>> +        try {
>> +            try {
>> +                return callable.call();
>> +            } catch (Throwable t) {
>> +                while (t.getCause() != null) {
>> +                    t = t.getCause();
>> +                }
>> +                throw t;
>> +            }
>> +        } catch (Error e) {
>> +            transactionAbortCause = e;
>> +            throw e;
>> +        } catch (RuntimeException e) {
>> +            transactionAbortCause = e;
>> +            throw e;
>> +        } catch (Throwable t) {
>> +            transactionAbortCause = t;
>> +            throw t;
>> +        } finally {
>> +            if (transactionAbortCause == null) {
>> +                TransactionUtil.commit(tx);
>> +            } else {
>> +                transactionAbortCause.printStackTrace();
>> +                TransactionUtil.rollback(tx, ifErrorMessage, transactionAbortCause);
>> +            }
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java?rev=753081&view=auto
>> ============================================================================== ---
>> ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java (added) +++
>> ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/StatsUpdater.java Fri Mar 13 01:12:11 2009 @@ -0,0 +1,119 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.util.HashMap;
>> +import java.util.Iterator;
>> +import java.util.Map;
>> +import java.util.concurrent.Callable;
>> +import java.util.concurrent.ConcurrentHashMap;
>> +import java.util.concurrent.ScheduledFuture;
>> +import java.util.concurrent.TimeUnit;
>> +import java.util.concurrent.atomic.AtomicReference;
>> +
>> +import org.ofbiz.entity.GenericDelegator;
>> +import org.ofbiz.entity.GenericEntityException;
>> +import org.ofbiz.entity.GenericPK;
>> +import org.ofbiz.entity.GenericValue;
>> +
>> +import org.webslinger.lang.ConcurrentCache;
>> +import org.webslinger.lang.ExecutionPool;
>> +
>> +public class StatsUpdater {
>> +    private static final Updater UPDATER = new Updater();
>> +
>> +    public static void updateStats(GenericDelegator delegator, String entityName, Map<String, ? extends Object> keyFields,
>> Map<String, ? extends Long> updateCountFields) throws GenericEntityException {
>> +        GenericPK pk = delegator.makePK(entityName, keyFields);
>> +        Map<String, Long> value = UPDATER.getValue(pk);
>> +        synchronized (value) {
>> +            for (Map.Entry<String, ? extends Long> entry: updateCountFields.entrySet()) {
>> +                Long oldValue = value.get(entry.getKey());
>> +                if (oldValue != null) {
>> +                    value.put(entry.getKey(), Long.valueOf(oldValue.longValue() + entry.getValue()));
>> +                } else {
>> +                    value.put(entry.getKey(), entry.getValue());
>> +                }
>> +            }
>> +        }
>> +    }
>> +
>> +    private static final class Updater implements Callable<Void> {
>> +        protected AtomicReference<EntityHolder> entities = new AtomicReference<EntityHolder>(new EntityHolder(Updater.class,
>> "entities", null));
>> +        protected ScheduledFuture<Void> future;
>> +
>> +        protected Map<String, Long> getValue(GenericPK pk) throws GenericEntityException {
>> +            synchronized (this) {
>> +                if (future == null || future.isDone()) {
>> +                    future = ExecutionPool.schedule(this, 1, TimeUnit.SECONDS);
>> +                }
>> +            }
>> +            try {
>> +                return entities.get().get(pk);
>> +            } catch (RuntimeException e) {
>> +                throw e;
>> +            } catch (GenericEntityException e) {
>> +                throw e;
>> +            } catch (Exception e) {
>> +                throw (GenericEntityException) new GenericEntityException(e.getMessage()).initCause(e);
>> +            }
>> +        }
>> +
>> +        public Void call() {
>> +            EntityHolder oldEntities;
>> +            EntityHolder newEntities = new EntityHolder(Updater.class, "entities", null);
>> +            do {
>> +                oldEntities = entities.get();
>> +            } while (!entities.compareAndSet(oldEntities, newEntities));
>> +            synchronized (Updater.class) {
>> +                for (GenericPK pk: oldEntities.keys()) {
>> +                    try {
>> +                        Map<String, Long> add = oldEntities.get(pk);
>> +                        GenericValue existing = pk.getDelegator().findOne(pk.getEntityName(), pk, false);
>> +                        if (existing == null) {
>> +                            existing = pk.getDelegator().create(pk.getEntityName(), pk);
>> +                        }
>> +                        for (Map.Entry<String, Long> entry: add.entrySet()) {
>> +                            Long value = entry.getValue();
>> +                            Long oldValue = existing.getLong(entry.getKey());
>> +                            if (oldValue != null) {
>> +                                existing.put(entry.getKey(), Long.valueOf(value.longValue() + oldValue.longValue()));
>> +                            } else {
>> +                                existing.put(entry.getKey(), value);
>> +                            }
>> +                        }
>> +                        existing.store();
>> +                    } catch (Exception e) {
>> +                        e.printStackTrace();
>> +                    }
>> +                }
>> +            }
>> +            return null;
>> +        }
>> +    }
>> +
>> +    private static final class EntityHolder extends ConcurrentCache<GenericPK, Map<String, Long>> {
>> +        protected EntityHolder(Class<?> owner, String field, String label) {
>> +            super(owner, field, label, HARD);
>> +        }
>> +
>> +        protected Map<String, Long> createValue(GenericPK pk) throws Exception {
>> +            return new HashMap<String, Long>();
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerBSFServiceEngine.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,58 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.io.IOException;
>> +import java.util.Map;
>> +
>> +import org.apache.bsf.BSFException;
>> +
>> +import org.ofbiz.service.DispatchContext;
>> +import org.ofbiz.service.GenericServiceException;
>> +import org.ofbiz.service.ModelService;
>> +import org.ofbiz.service.ServiceDispatcher;
>> +import org.ofbiz.service.engine.GenericAsyncEngine;
>> +
>> +public class WebslingerBSFServiceEngine extends GenericAsyncEngine {
>> +    private static final String[] paramNames;
>> +    private static final Class<?>[] paramTypes;
>> +    static {
>> +        paramNames = new String[] { "dispatcher", "context" };
>> +        paramTypes = new Class<?>[] { DispatchContext.class, Map.class };
>> +    }
>> +
>> +    public WebslingerBSFServiceEngine(ServiceDispatcher dispatcher) {
>> +        super(dispatcher);
>> +    }
>> +
>> +    public void runSyncIgnore(String localName, ModelService modelService, Map<String, Object> context) throws
>> GenericServiceException {
>> +        runSync(localName, modelService, context);
>> +    }
>> +
>> +    public Map<String, Object> runSync(String localName, ModelService modelService, Map<String, Object> context) throws
>> GenericServiceException {
>> +        Object[] params = new Object[] { dispatcher.getLocalContext(localName), context };
>> +        try {
>> +            return (Map) WebslingerContainer.runEvent(modelService.engineName, modelService.location, paramNames, paramTypes,
>> params);
>> +        } catch (IOException e) {
>> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
>> +        } catch (BSFException e) {
>> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerCatalinaContainer.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,52 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.io.File;
>> +
>> +import org.apache.catalina.Engine;
>> +import org.apache.catalina.core.StandardEngine;
>> +
>> +import org.ofbiz.base.util.UtilValidate;
>> +import org.ofbiz.base.container.ContainerConfig;
>> +import org.ofbiz.base.container.ContainerException;
>> +import org.ofbiz.catalina.container.CatalinaContainer;
>> +
>> +import org.webslinger.catalina.WebslingerAccessLogValve;
>> +
>> +public class WebslingerCatalinaContainer extends CatalinaContainer {
>> +    protected Engine createEngine(ContainerConfig.Container.Property engineConfig) throws ContainerException {
>> +        Engine engine = super.createEngine(engineConfig);
>> +        String logDir = ContainerConfig.getPropertyValue(engineConfig, "access-log-dir", null);
>> +        if (logDir == null) return engine;
>> +        WebslingerAccessLogValve al = new WebslingerAccessLogValve();
>> +        if (!logDir.startsWith("/")) logDir = System.getProperty("ofbiz.home") + "/" + logDir;
>> +        File logFile = new File(logDir);
>> +        if (!logFile.isDirectory()) throw new ContainerException("Log directory [" + logDir + "] is not available; make sure the
>> directory is created");
>> +        al.setDirectory(logFile.getAbsolutePath());
>> +        String alp2 = ContainerConfig.getPropertyValue(engineConfig, "access-log-pattern", null);
>> +        if (!UtilValidate.isEmpty(alp2)) al.setPattern(alp2);
>> +        String alp3 = ContainerConfig.getPropertyValue(engineConfig, "access-log-prefix", null);
>> +        if (!UtilValidate.isEmpty(alp3)) al.setPrefix(alp3);
>> +        al.setResolveHosts(ContainerConfig.getPropertyValue(engineConfig, "access-log-resolve", true));
>> +        al.setRotatable(ContainerConfig.getPropertyValue(engineConfig, "access-log-rotate", false));
>> +        ((StandardEngine) engine).addValve(al);
>> +        return engine;
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContainer.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,100 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.io.IOException;
>> +import java.io.StringWriter;
>> +import java.io.Writer;
>> +import java.util.Map;
>> +
>> +import org.apache.bsf.BSFException;
>> +import org.apache.commons.vfs.FileName;
>> +import org.apache.commons.vfs.FileObject;
>> +
>> +import org.ofbiz.base.container.Container;
>> +import org.ofbiz.base.container.ContainerException;
>> +import org.ofbiz.commons.vfs.CommonsVfsContainer;
>> +
>> +import org.webslinger.bsf.LanguageManager;
>> +import org.webslinger.template.CompiledTemplate;
>> +import org.webslinger.template.TemplateManager;
>> +import org.webslinger.vfs.CommonsVfsFileNameVFSDelegate;
>> +import org.webslinger.vfs.TypeVFSDelegate;
>> +
>> +public class WebslingerContainer implements Container {
>> +    private static TypeVFSDelegate vfsDelegate;
>> +    private static LanguageManager languageManager;
>> +    private static TemplateManager templateManager;
>> +    private static final String[] templateParamNames = new String[] {"writer", "context"};
>> +    private static final Class<?>[] templateParamTypes = new Class<?>[] {Writer.class, Map.class};
>> +
>> +    public void init(String[] args, String configFile) throws ContainerException {
>> +    }
>> +
>> +    public boolean start() throws ContainerException {
>> +        ClassLoader loader = Thread.currentThread().getContextClassLoader();
>> +        TypeVFSDelegate.Resolver resolver = new TypeVFSDelegate.Resolver() {
>> +            public Object resolve(String name) throws IOException {
>> +                return CommonsVfsContainer.resolveFile(name);
>> +            }
>> +        };
>> +        try {
>> +            vfsDelegate = new TypeVFSDelegate(resolver);
>> +            vfsDelegate.addVFSDelegate(FileName.class, new CommonsVfsFileNameVFSDelegate(vfsDelegate,
>> CommonsVfsContainer.getFileSystemManager()));
>> +            languageManager = new LanguageManager(vfsDelegate, null);
>> +            languageManager.setClassLoader(loader);
>> +            templateManager = new TemplateManager(vfsDelegate, null);
>> +            templateManager.setClassLoader(loader);
>> +        } catch (BSFException e) {
>> +            throw (ContainerException) new ContainerException("Initializing StandardFileSystemManager").initCause(e);
>> +        }
>> +        return true;
>> +    }
>> +
>> +    public void stop() throws ContainerException {
>> +    }
>> +
>> +    public static LanguageManager getLanguageManager() {
>> +        return languageManager;
>> +    }
>> +
>> +    public static TemplateManager getTemplateManager() {
>> +        return templateManager;
>> +    }
>> +
>> +    public static Object runEvent(String language, String name, String[] paramNames, Class<?>[] paramTypes, Object[] params)
>> throws BSFException, IOException {
>> +        return getLanguageManager().apply(language, "top", 0, 0, CommonsVfsContainer.resolveFile(name), paramNames, params,
>> paramTypes);
>> +    }
>> +
>> +    public static String runTemplate(String language, String name, Map<String, Object> context) throws IOException {
>> +        StringWriter writer = new StringWriter();
>> +        runTemplate(language, name, writer, context);
>> +        return writer.toString();
>> +    }
>> +
>> +    public static void runTemplate(String language, String name, Writer writer, Map<String, Object> context) throws IOException
>> { +        FileObject file = CommonsVfsContainer.resolveFile(name);
>> +        CompiledTemplate template = getTemplate(language, file);
>> +        template.run(file, writer, context);
>> +    }
>> +
>> +    public static CompiledTemplate getTemplate(String language, FileObject file) throws IOException {
>> +        return getTemplateManager().compileTemplate(language, "top", 0, 0, file);
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerContextMapper.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,206 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.io.File;
>> +import java.io.IOException;
>> +import java.lang.ref.SoftReference;
>> +import java.net.URL;
>> +import java.util.ArrayList;
>> +import java.util.HashMap;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +import java.util.List;
>> +import java.util.Set;
>> +
>> +import javax.management.JMException;
>> +import javax.naming.NamingException;
>> +import javax.servlet.ServletConfig;
>> +import javax.servlet.ServletContext;
>> +import javax.servlet.ServletException;
>> +import javax.servlet.http.HttpServletRequest;
>> +import javax.servlet.http.HttpServletResponse;
>> +import javax.xml.parsers.ParserConfigurationException;
>> +
>> +import org.xml.sax.SAXException;
>> +
>> +import org.apache.commons.vfs.FileObject;
>> +import org.apache.commons.vfs.FileSystemException;
>> +import org.apache.commons.vfs.FileSystemManager;
>> +import org.apache.commons.vfs.NameScope;
>> +
>> +import org.ofbiz.base.util.UtilFormatOut;
>> +import org.ofbiz.base.util.UtilMisc;
>> +import org.ofbiz.base.util.UtilProperties;
>> +import org.ofbiz.base.util.UtilValidate;
>> +import org.ofbiz.entity.GenericEntity;
>> +import org.ofbiz.entity.GenericEntityException;
>> +import org.ofbiz.entity.GenericDelegator;
>> +import org.ofbiz.entity.GenericValue;
>> +import org.ofbiz.entity.transaction.TransactionFactory;
>> +import org.ofbiz.entity.cache.Cache;
>> +import org.ofbiz.entity.util.EntityUtil;
>> +import org.ofbiz.security.SecurityFactory;
>> +import org.ofbiz.service.LocalDispatcher;
>> +import org.ofbiz.service.WebAppDispatcher;
>> +
>> +import org.webslinger.AbstractMappingWebslingerServletContextFactory;
>> +import org.webslinger.WebslingerServletContext;
>> +import org.webslinger.container.WebslingerContainer;
>> +import org.webslinger.lang.ObjectUtil;
>> +import org.webslinger.servlet.WebslingerServlet;
>> +import org.webslinger.util.TTLObject;
>> +import org.webslinger.collections.ArrayUtil;
>> +import org.webslinger.collections.CollectionUtil;
>> +
>> +public class WebslingerContextMapper extends AbstractMappingWebslingerServletContextFactory {
>> +    protected ServletContext servletContext;
>> +    protected GenericDelegator delegator;
>> +    protected final ArrayList<URL> globalReaderURLs = new ArrayList<URL>();
>> +
>> +    public void init(ServletConfig config) throws ServletException, IOException {
>> +        System.err.println(org.webslinger.commons.vfs.flat.FlatFileProvider.class);
>> +        servletContext = config.getServletContext();
>> +        String delegatorName = servletContext.getInitParameter("entityDelegatorName");
>> +        delegator = GenericDelegator.getGenericDelegator(delegatorName);
>> +        String readerFiles = servletContext.getInitParameter("serviceReaderUrls");
>> +        if (readerFiles != null) {
>> +            for (String reader: CollectionUtil.split(readerFiles, ";")) {
>> +                URL url =  config.getServletContext().getResource(reader);
>> +                if (url != null) globalReaderURLs.add(url);
>> +            }
>> +        }
>> +        super.init(config, UtilProperties.getPropertyValue("webslinger.properties", "moduleBase"));
>> +    }
>> +
>> +    protected Layout[] getStartLayouts() throws Exception {
>> +        ArrayList<Layout> layouts = new ArrayList<Layout>();
>> +        try {
>> +            for (GenericValue value: delegator.findByAnd("WebslingerServer", UtilMisc.toMap("loadAtStart", "Y"))) {
>> +                layouts.add(new OfbizLayout(value));
>> +            }
>> +        } catch (GenericEntityException e) {
>> +        }
>> +        return layouts.toArray(new Layout[layouts.size()]);
>> +    }
>> +
>> +    public void initializeRequest(WebslingerServletContext context, HttpServletRequest request) {
>> +        request.setAttribute("servletContext", context);
>> +        Object delegator = context.getAttribute("delegator");
>> +        Object dispatcher = context.getAttribute("dispatcher");
>> +        Object security = context.getAttribute("security");
>> +        request.setAttribute("delegator", delegator);
>> +        request.setAttribute("dispatcher", dispatcher);
>> +        request.setAttribute("security", security);
>> +        // FIXME!!! These next two are a hack until proper fake/wrapped session support is done in webslinger
>> +        servletContext.setAttribute("delegator", delegator);
>> +        servletContext.setAttribute("dispatcher", dispatcher);
>> +        servletContext.setAttribute("security", security);
>> +    }
>> +
>> +    protected void initializeContext(WebslingerServletContext context, Layout layout) throws Exception {
>> +        OfbizLayout ofbizLayout = (OfbizLayout) layout;
>> +        GenericDelegator delegator = GenericDelegator.getGenericDelegator(ofbizLayout.delegatorName);
>> +        context.setAttribute("delegator", delegator);
>> +        context.setAttribute("dispatcher", createLocalDispatcher(context, layout.getTarget(), delegator));
>> +        context.setAttribute("security", SecurityFactory.getInstance(delegator));
>> +    }
>> +
>> +    protected LocalDispatcher createLocalDispatcher(WebslingerServletContext context, String name, GenericDelegator delegator)
>> throws IOException {
>> +        ArrayList<URL> readerURLs = new ArrayList<URL>(globalReaderURLs);
>> +        String readerFiles = context.getInitParameter("serviceReaderUrls");
>> +        if (readerFiles != null) {
>> +            for (String reader: CollectionUtil.split(readerFiles, ";")) {
>> +                URL url =  context.getResource(reader);
>> +                if (url != null) readerURLs.add(url);
>> +            }
>> +        }
>> +        System.err.println(readerURLs);
>> +        return new WebAppDispatcher(name, delegator, readerURLs);
>> +    }
>> +
>> +    protected Set<String> getSuffixes() throws Exception {
>> +        Cache cache = delegator.getCache();
>> +        Set<String> suffixes;
>> +        synchronized (WebslingerContextMapper.class) {
>> +            suffixes = (Set<String>) cache.get("WebslingerHostSuffix", null, "WebslingerContextMapper.Suffixes");
>> +            if (suffixes == null) {
>> +                suffixes = new HashSet<String>();
>> +                for (GenericValue value: delegator.findList("WebslingerHostSuffix", null, null, null, null, false)) {
>> +                    suffixes.add(value.getString("hostSuffix"));
>> +                }
>> +                cache.put("WebslingerHostSuffix", null, "WebslingerContextMapper.Suffixes", suffixes);
>> +            }
>> +        }
>> +        return suffixes;
>> +    }
>> +
>> +    protected Layout lookupLayout(String hostName, String contextPath) throws Exception {
>> +        GenericValue layout = EntityUtil.getOnly(delegator.findByAndCache("WebslingerLayout", UtilMisc.toMap("hostName",
>> hostName, "contextPath", contextPath)));
>> +        if (layout == null) return null;
>> +        return new OfbizLayout(layout);
>> +    }
>> +
>> +    protected class OfbizLayout implements Layout {
>> +        private final String id;
>> +        private final String target;
>> +        private final String[] bases;
>> +        private final int hashCode;
>> +        protected final String delegatorName;
>> +        protected final String dispatcherName;
>> +
>> +        protected OfbizLayout(GenericValue server) throws GenericEntityException {
>> +            id = server.getString("webslingerServerId");
>> +            target = server.getString("target");
>> +            List<GenericValue> baseValues = server.getRelatedCache("WebslingerServerBase", UtilMisc.toList("seqNum"));
>> +            bases = new String[baseValues.size()];
>> +            for (int i = 0; i < bases.length; i++) {
>> +                GenericValue baseValue = baseValues.get(i);
>> +                bases[i] = baseValue.getString("baseName");
>> +            }
>> +            delegatorName = server.getString("delegatorName");
>> +            dispatcherName = server.getString("dispatcherName");
>> +            hashCode = target.hashCode() ^ ObjectUtil.hashCodeHelper(delegatorName) ^ ArrayUtil.hashCodeHelper(bases);
>> +        }
>> +
>> +        public String getId() {
>> +            return id;
>> +        }
>> +
>> +        public String getTarget() {
>> +            return target;
>> +        }
>> +
>> +        public String[] getBases() {
>> +            return bases;
>> +        }
>> +
>> +        public int hashCode() {
>> +            return hashCode;
>> +        }
>> +
>> +        public boolean equals(Object o) {
>> +            if (!(o instanceof OfbizLayout)) return false;
>> +            OfbizLayout other = (OfbizLayout) o;
>> +            if (!target.equals(other.target)) return false;
>> +            if (!ObjectUtil.equalsHelper(delegatorName, other.delegatorName)) return false;
>> +            return ArrayUtil.equalsHelper(bases, other.bases);
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java (added)
>> +++ ofbiz/trunk/framework/webslinger/src/org/ofbiz/webslinger/WebslingerServerEngine.java Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,61 @@
>> +/*******************************************************************************
>> + * 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.ofbiz.webslinger;
>> +
>> +import java.io.IOException;
>> +import java.io.StringReader;
>> +import java.io.StringWriter;
>> +import java.util.Collections;
>> +import java.util.Map;
>> +
>> +import org.ofbiz.base.util.UtilMisc;
>> +import org.ofbiz.entity.GenericDelegator;
>> +import org.ofbiz.entity.GenericValue;
>> +import org.ofbiz.entity.util.EntityUtil;
>> +import org.ofbiz.service.GenericServiceException;
>> +import org.ofbiz.service.ModelService;
>> +import org.ofbiz.service.ServiceDispatcher;
>> +import org.ofbiz.service.engine.GenericAsyncEngine;
>> +
>> +import org.webslinger.WebslingerServletContext;
>> +
>> +public class WebslingerServerEngine extends GenericAsyncEngine {
>> +    public WebslingerServerEngine(ServiceDispatcher dispatcher) {
>> +        super(dispatcher);
>> +    }
>> +
>> +    public void runSyncIgnore(String localName, ModelService modelService, Map<String, Object> context) throws
>> GenericServiceException {
>> +        runSync(localName, modelService, context);
>> +    }
>> +
>> +    public Map<String, Object> runSync(String localName, ModelService modelService, Map<String, Object> context) throws
>> GenericServiceException {
>> +        GenericDelegator delegator = dispatcher.getDelegator();
>> +        try {
>> +            GenericValue found = EntityUtil.getFirst(delegator.findByAndCache("WebslingerLayout",
>> UtilMisc.toMap("webslingerServerId", modelService.location)));
>> +            if (found == null) throw new GenericServiceException("Couldn't find server mapping for(" + modelService.location +
>> ")");
>> +            return (Map<String, Object>) WebslingerServletContext.invokeInVM(found.getString("hostName"), 8080,
>> modelService.invoke, context);
>> +        } catch (RuntimeException e) {
>> +            throw e;
>> +        } catch (GenericServiceException e) {
>> +            throw e;
>> +        } catch (Exception e) {
>> +            throw (GenericServiceException) new GenericServiceException(e.getMessage()).initCause(e);
>> +        }
>> +    }
>> +}
>>
>> Added: ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml (added)
>> +++ ofbiz/trunk/framework/webslinger/webapp/webslinger/WEB-INF/web.xml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,74 @@
>> +<?xml version="1.0"?>
>> +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
>> +
>> +<!--
>> + *  Copyright (c) 2001-2005 The Open For Business Project - www.ofbiz.org
>> + *
>> + *  Permission is hereby granted, free of charge, to any person obtaining a
>> + *  copy of this software and associated documentation files (the "Software"),
>> + *  to deal in the Software without restriction, including without limitation
>> + *  the rights to use, copy, modify, merge, publish, distribute, sublicense,
>> + *  and/or sell copies of the Software, and to permit persons to whom the
>> + *  Software is furnished to do so, subject to the following conditions:
>> + *
>> + *  The above copyright notice and this permission notice shall be included
>> + *  in all copies or substantial portions of the Software.
>> + *
>> + *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
>> + *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> + *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
>> + *  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
>> + *  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
>> + *  OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
>> + *  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
>> +-->
>> +
>> +<web-app>
>> +    <display-name>Open For Business - Catalog</display-name>
>> +    <description>Catalog Module of the Open For Business Project</description>
>> +
>> +    <context-param>
>> +        <param-name>entityDelegatorName</param-name>
>> +        <param-value>default</param-value>
>> +        <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
>> +    </context-param>
>> +
>> +    <context-param>
>> +        <param-name>ofbiz.webslinger.baseLocation</param-name>
>> +        <param-value>ofbiz-component://webslinger/webapp/bases</param-value>
>> +    </context-param>
>> +
>> +    <servlet>
>> +        <servlet-name>WebslingerServlet</servlet-name>
>> +        <display-name>WebslingerServlet</display-name>
>> +        <description>Webslinger Servlet</description>
>> +        <servlet-class>org.webslinger.servlet.WebslingerServlet</servlet-class>
>> +        <init-param>
>> +            <param-name>ofbiz.mapping.ttl</param-name>
>> +            <param-value>60000</param-value>
>> +        </init-param>
>> +        <init-param>
>> +            <param-name>ofbiz.mapping.default-file-system-id</param-name>
>> +            <param-value>1</param-value>
>> +        </init-param>
>> +        <init-param>
>> +            <param-name>org.webslinger.servlet.WebslingerServlet.WebslingerServletContextFactory</param-name>
>> +            <param-value>org.ofbiz.webslinger.WebslingerContextMapper</param-value>
>> +        </init-param>
>> +        <load-on-startup>1</load-on-startup>
>> +    </servlet>
>> +    <servlet-mapping>
>> +        <servlet-name>WebslingerServlet</servlet-name>
>> +        <url-pattern>/*</url-pattern>
>> +    </servlet-mapping>
>> +
>> +    <session-config>
>> +        <session-timeout>60</session-timeout> <!-- in minutes -->
>> +    </session-config>
>> +
>> +    <welcome-file-list>
>> +        <welcome-file>index.jsp</welcome-file>
>> +        <welcome-file>index.html</welcome-file>
>> +        <welcome-file>index.htm</welcome-file>
>> +    </welcome-file-list>
>> +</web-app>
>>
>> Added: ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml?rev=753081&view=auto
>> ============================================================================== ---
>> ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml (added) +++
>> ofbiz/trunk/framework/webslinger/websites/webslinger/Config/ModuleState.xml Fri Mar 13 01:12:11 2009 @@ -0,0 +1,22 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<!--
>> +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.
>> +-->
>> +<module-state>
>> + <module name="defaults" url="ofbiz-component://webslinger/modules/defaults.zip" enabled="true"/>
>> +</module-state>
>>
>> Propchange: ofbiz/trunk/framework/webslinger/websites/webslinger/Var/
>> ------------------------------------------------------------------------------
>> --- svn:ignore (added)
>> +++ svn:ignore Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1 @@
>> +*
>>
>> Added: ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml
>> URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml?rev=753081&view=auto
>> ==============================================================================
>> --- ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml (added)
>> +++ ofbiz/trunk/framework/webslinger/websites/webslinger/www/index.whtml Fri Mar 13 01:12:11 2009
>> @@ -0,0 +1,12 @@
>> +<p>
>> +This page is brought to you by Webslinger!
>> +</p>
>> +<p>
>> +It doesn't do a whole lot yet, but if you've gotten this far, here are the features that are available:
>> +</p>
>> +<ul>
>> + <li>Extension mapper</li>
>> + <li>janino/groovy event handler</li>
>> + <li>velocity template markup</li>
>> + <li>template/wrapper/section content split</li>
>> +</ul>