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 files --> + <!-- ================================================================== --> + + <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> |
Free forum by Nabble | Edit this page |