You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by Bruno Busco <br...@gmail.com> on 2010/09/05 15:31:52 UTC
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-
We should definitively have at least a simple demo of webslinger application
in the Example.
Is someone working on that?
-Bruno
2010/9/5 Jacques Le Roux <ja...@les7arts.com>
> 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: <do...@apache.org>
>>
>>> 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>
>>>
>>
>
>
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-
Posted by Jacques Le Roux <ja...@les7arts.com>.
From: "Adam Heath" <do...@brainfood.com>
> On 09/07/2010 05:18 PM, Adam Heath wrote:
>> On 09/05/2010 11:40 AM, Jacques Le Roux wrote:
>>> Yes, it would be great, good idea Bruno!
>>>
>>> Jacques
>>>
>>> Bruno Busco wrote:
>>>> We should definitively have at least a simple demo of webslinger
>>>> application
>>>> in the Example.
>>>> Is someone working on that?
>>
>> Hehe. Things have been quiet from me on this. But I have some good stuff
>> done.
>>
>> I've converted specialpurpose/ofbizwebsite to webslinger.
>>
>> However, that's not quite ready to go, as there is another thing I've
>> been working on(has to do with vaadin, but I shouldn't say more about
>> that until I chop up my code and make it easier to digest).
>>
>> I still need to finish the double-click edit feature, and ajax page
>> load, in the converted ofbizwebsite. It's slower than I'd like, because
>> I am not using Brainfood's internal base module(has too much
>> customer-facing logic).
>>
>> It's looking like this weekend I'll have this all wrapped up. I got
>> finished with my implementations last night, so the rest of the week is
>> just using git rebase to split up 7 large commits that all say 'foo' as
>> their message.
>>
>> I know I've said this in the past, that a webslinger example is Coming
>> Real Soon(tm); but this time it's all actually implemented.
>
> It's taking a bit longer than I expected to get this done. Ean said I
> should follow the 5 minute rule: give it a 'wow' factor, with tons of
> features, so that those that look at it go gaga when they see it.
>
> The first version that I had working(ofbizwebsite converted to ofbiz)
> didn't have the set of features to do that. Namely, full double-click
> edit, with partial ajax page loading. Those features are coming
> along, but it just takes time.
>
> I've been working constantly on this in my off hours; it's my primary
> personal development featureset.
Looking forward to it, take your time Adam, the longer the better :o)
Jacques
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-
Posted by Adam Heath <do...@brainfood.com>.
On 09/07/2010 05:18 PM, Adam Heath wrote:
> On 09/05/2010 11:40 AM, Jacques Le Roux wrote:
>> Yes, it would be great, good idea Bruno!
>>
>> Jacques
>>
>> Bruno Busco wrote:
>>> We should definitively have at least a simple demo of webslinger
>>> application
>>> in the Example.
>>> Is someone working on that?
>
> Hehe. Things have been quiet from me on this. But I have some good stuff
> done.
>
> I've converted specialpurpose/ofbizwebsite to webslinger.
>
> However, that's not quite ready to go, as there is another thing I've
> been working on(has to do with vaadin, but I shouldn't say more about
> that until I chop up my code and make it easier to digest).
>
> I still need to finish the double-click edit feature, and ajax page
> load, in the converted ofbizwebsite. It's slower than I'd like, because
> I am not using Brainfood's internal base module(has too much
> customer-facing logic).
>
> It's looking like this weekend I'll have this all wrapped up. I got
> finished with my implementations last night, so the rest of the week is
> just using git rebase to split up 7 large commits that all say 'foo' as
> their message.
>
> I know I've said this in the past, that a webslinger example is Coming
> Real Soon(tm); but this time it's all actually implemented.
It's taking a bit longer than I expected to get this done. Ean said I
should follow the 5 minute rule: give it a 'wow' factor, with tons of
features, so that those that look at it go gaga when they see it.
The first version that I had working(ofbizwebsite converted to ofbiz)
didn't have the set of features to do that. Namely, full double-click
edit, with partial ajax page loading. Those features are coming
along, but it just takes time.
I've been working constantly on this in my off hours; it's my primary
personal development featureset.
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-
Posted by Jacques Le Roux <ja...@les7arts.com>.
Looks great indeed, it looks like Jahia. Bravo Adam (and Brainfood at large)!
For those interested here it is http://www.youtube.com/user/click2build
Jacques
From: "Bruno Busco" <br...@gmail.com>
> Thank you Adam,
> I have seen some video on youtube about webslinger (just search for "ofbiz"
> and they come up) and looks really good.
>
> 2010/9/8 Adam Heath <do...@brainfood.com>
>
>> On 09/05/2010 11:40 AM, Jacques Le Roux wrote:
>>
>>> Yes, it would be great, good idea Bruno!
>>>
>>> Jacques
>>>
>>> Bruno Busco wrote:
>>>
>>>> We should definitively have at least a simple demo of webslinger
>>>> application
>>>> in the Example.
>>>> Is someone working on that?
>>>>
>>>
>> Hehe. Things have been quiet from me on this. But I have some good stuff
>> done.
>>
>> I've converted specialpurpose/ofbizwebsite to webslinger.
>>
>> However, that's not quite ready to go, as there is another thing I've been
>> working on(has to do with vaadin, but I shouldn't say more about that until
>> I chop up my code and make it easier to digest).
>>
>> I still need to finish the double-click edit feature, and ajax page load,
>> in the converted ofbizwebsite. It's slower than I'd like, because I am not
>> using Brainfood's internal base module(has too much customer-facing logic).
>>
>> It's looking like this weekend I'll have this all wrapped up. I got
>> finished with my implementations last night, so the rest of the week is just
>> using git rebase to split up 7 large commits that all say 'foo' as their
>> message.
>>
>> I know I've said this in the past, that a webslinger example is Coming Real
>> Soon(tm); but this time it's all actually implemented.
>>
>
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-
Posted by Bruno Busco <br...@gmail.com>.
Thank you Adam,
I have seen some video on youtube about webslinger (just search for "ofbiz"
and they come up) and looks really good.
2010/9/8 Adam Heath <do...@brainfood.com>
> On 09/05/2010 11:40 AM, Jacques Le Roux wrote:
>
>> Yes, it would be great, good idea Bruno!
>>
>> Jacques
>>
>> Bruno Busco wrote:
>>
>>> We should definitively have at least a simple demo of webslinger
>>> application
>>> in the Example.
>>> Is someone working on that?
>>>
>>
> Hehe. Things have been quiet from me on this. But I have some good stuff
> done.
>
> I've converted specialpurpose/ofbizwebsite to webslinger.
>
> However, that's not quite ready to go, as there is another thing I've been
> working on(has to do with vaadin, but I shouldn't say more about that until
> I chop up my code and make it easier to digest).
>
> I still need to finish the double-click edit feature, and ajax page load,
> in the converted ofbizwebsite. It's slower than I'd like, because I am not
> using Brainfood's internal base module(has too much customer-facing logic).
>
> It's looking like this weekend I'll have this all wrapped up. I got
> finished with my implementations last night, so the rest of the week is just
> using git rebase to split up 7 large commits that all say 'foo' as their
> message.
>
> I know I've said this in the past, that a webslinger example is Coming Real
> Soon(tm); but this time it's all actually implemented.
>
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-
Posted by Tim Ruppert <ti...@hotwaxmedia.com>.
That's awesome Adam - looking forward to it!
Cheers,
Ruppert
On Sep 7, 2010, at 4:18 PM, Adam Heath wrote:
> I know I've said this in the past, that a webslinger example is Coming Real Soon(tm); but this time it's all actually implemented.
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-
Posted by Adam Heath <do...@brainfood.com>.
On 09/05/2010 11:40 AM, Jacques Le Roux wrote:
> Yes, it would be great, good idea Bruno!
>
> Jacques
>
> Bruno Busco wrote:
>> We should definitively have at least a simple demo of webslinger
>> application
>> in the Example.
>> Is someone working on that?
Hehe. Things have been quiet from me on this. But I have some good
stuff done.
I've converted specialpurpose/ofbizwebsite to webslinger.
However, that's not quite ready to go, as there is another thing I've
been working on(has to do with vaadin, but I shouldn't say more about
that until I chop up my code and make it easier to digest).
I still need to finish the double-click edit feature, and ajax page
load, in the converted ofbizwebsite. It's slower than I'd like,
because I am not using Brainfood's internal base module(has too much
customer-facing logic).
It's looking like this weekend I'll have this all wrapped up. I got
finished with my implementations last night, so the rest of the week
is just using git rebase to split up 7 large commits that all say
'foo' as their message.
I know I've said this in the past, that a webslinger example is Coming
Real Soon(tm); but this time it's all actually implemented.
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-
Posted by Jacques Le Roux <ja...@les7arts.com>.
Yes, it would be great, good idea Bruno!
Jacques
Bruno Busco wrote:
> We should definitively have at least a simple demo of webslinger application
> in the Example.
> Is someone working on that?
>
> -Bruno
>
> 2010/9/5 Jacques Le Roux <ja...@les7arts.com>
>
>> 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: <do...@apache.org>
>>>
>>>> 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>