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