You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by jk...@apache.org on 2006/04/22 06:31:14 UTC

svn commit: r396077 - in /tapestry/tapestry4/trunk: eclipse/ examples/TimeTracker/src/context/ examples/TimeTracker/src/context/WEB-INF/ examples/TimeTracker/src/context/css/ examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/ examples/...

Author: jkuhnert
Date: Fri Apr 21 21:31:11 2006
New Revision: 396077

URL: http://svn.apache.org/viewcvs?rev=396077&view=rev
Log:
Fixed asset service (wasn't reading cached header values correctly..oops! ) , more url encoding / combobox widget fun

Added:
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/dojo.css
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java
Modified:
    tapestry/tapestry4/trunk/eclipse/TimeTracker.launch
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Border.html
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/log4j.properties
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/web.xml
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/timetracker.css
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/DataSourceProxyFactory.java
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/JdbcConnectionProxy.java
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/asset/AssetService.java
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/PropertySelection.java

Modified: tapestry/tapestry4/trunk/eclipse/TimeTracker.launch
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/eclipse/TimeTracker.launch?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/eclipse/TimeTracker.launch (original)
+++ tapestry/tapestry4/trunk/eclipse/TimeTracker.launch Fri Apr 21 21:31:11 2006
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
 <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.mortbay.start.Main"/>

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html Fri Apr 21 21:31:11 2006
@@ -26,7 +26,7 @@
       <input name="fm-lastname" id="fm-lastname" type="text" />
     </div>
     <div id="fm-hsubmit" class="fm-req">
-      <input name="Submit" value="add" type="submit" />
+      <input jwcid="@Submit" value="message:button.add" />
     </div>
     </fieldset>
 </form>

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Border.html
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Border.html?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Border.html (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Border.html Fri Apr 21 21:31:11 2006
@@ -2,7 +2,6 @@
 
 <link rel="shortcut icon" href="favicon.ico" type="image/gif" />
 <link href="css/timetracker.css" rel="stylesheet" type="text/css" media="all" />
-<link href="css/forms.css" rel="stylesheet" type="text/css" media="all" />
 
 <body jwcid="@Body">
 

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/Home.properties Fri Apr 21 21:31:11 2006
@@ -1,3 +1,4 @@
 new.task=Task Entry
 
-choose.project=Project
\ No newline at end of file
+choose.project=Project
+button.add=add
\ No newline at end of file

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/log4j.properties
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/log4j.properties?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/log4j.properties (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/log4j.properties Fri Apr 21 21:31:11 2006
@@ -1,4 +1,4 @@
-# Copyright 2005 The Apache Software Foundation
+# Copyright 2006 The Apache Software Foundation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-log4j.rootCategory=DEBUG, A1
+log4j.rootLogger=DEBUG, A1
 
 # A1 is set to be a ConsoleAppender. 
 log4j.appender.A1=org.apache.log4j.ConsoleAppender
@@ -21,11 +21,12 @@
 log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 log4j.appender.A1.layout.ConversionPattern=%c{1} [%p] %m%n
 
-log4j.category.org.apache.hivemind=WARN
-log4j.category.hivemind=DEBUG
-log4j.category.tapestry=DEBUG
-log4j.category.org.apache.tapestry=DEBUG
+log4j.logger.org.apache.hivemind=WARN
+log4j.logger.org.apache=INFO
+log4j.logger.hivemind=INFO
+log4j.logger.tapestry=INFO
+log4j.logger.timetracker=INFO
+log4j.logger.org.apache.tapestry=INFO
 
-log4j.category.org.apache.tapestry.ApplicationServlet=info
-
-log4j.category.org.apache.tapestry.timetracker=debug
+log4j.logger.org.apache.tapestry.timetracker=INFO
+log4j.logger.org.apache.tapestry.form=DEBUG

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/web.xml
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/web.xml?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/web.xml (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/WEB-INF/web.xml Fri Apr 21 21:31:11 2006
@@ -32,7 +32,7 @@
   
   <servlet>
   	<servlet-name>timetracker</servlet-name>
-    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
+    <servlet-class>org.apache.tapestry.timetracker.servlet.ConfigurationServlet</servlet-class>
   	<load-on-startup>0</load-on-startup>
   </servlet>
      

Added: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/dojo.css
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/dojo.css?rev=396077&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/dojo.css (added)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/dojo.css Fri Apr 21 21:31:11 2006
@@ -0,0 +1,6 @@
+div.fm-hopt table.dojoComboBox {
+    width:20em;
+    display:block;
+    float:left;
+    clear:left;
+}
\ No newline at end of file

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/timetracker.css
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/timetracker.css?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/timetracker.css (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/css/timetracker.css Fri Apr 21 21:31:11 2006
@@ -1,4 +1,6 @@
 @import url("undohtml.css");  /* CSS to undo some default browser css that gets in the way more than it helps */
+@import url("dojo.css");
+@import url("forms.css");
 
 body {
     width: auto;

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/DataSourceProxyFactory.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/DataSourceProxyFactory.java?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/DataSourceProxyFactory.java (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/DataSourceProxyFactory.java Fri Apr 21 21:31:11 2006
@@ -49,7 +49,6 @@
         
         _log = parms.getLog();
         try {
-            _log.debug("Opening connection ");
             Connection conn = _dataSource.getConnection();
             
             return Proxy.newProxyInstance(this.getClass()

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/JdbcConnectionProxy.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/JdbcConnectionProxy.java?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/JdbcConnectionProxy.java (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/jdbc/JdbcConnectionProxy.java Fri Apr 21 21:31:11 2006
@@ -92,15 +92,9 @@
     public void threadDidDiscardService()
     {
         try {
-            if (_log.isDebugEnabled())
-                _log.debug("threadDidDiscardService(): Closing connection: " + _conn.isClosed());
-            
             if (!_conn.isClosed()) {
-                if (!_conn.getAutoCommit()) {
-                    if (_log.isDebugEnabled())
-                        _log.debug("Committing uncommitted transaction.");
+                if (!_conn.getAutoCommit())
                     _conn.commit();
-                }
             }
         } catch (SQLException e) {
             _log.error("SQL error cleaning up connection, rolling back transaction(if any).", e);

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java Fri Apr 21 21:31:11 2006
@@ -14,7 +14,6 @@
 package org.apache.tapestry.timetracker.page;
 
 import java.util.Date;
-import java.util.List;
 
 import org.apache.tapestry.annotations.Component;
 import org.apache.tapestry.annotations.InjectObject;
@@ -51,14 +50,13 @@
     
     public abstract Date getStartTime();
     
+    
     /**
      * Selection model for projects.
      * @return
      */
     public IPropertySelectionModel getProjectModel()
     {
-        List<Project> projects = getProjectDao().listProjects();
-        projects.add(0, new Project(-1, "Choose.."));
-        return new BeanPropertySelectionModel(projects, "name");
+        return new BeanPropertySelectionModel(getProjectDao().listProjects(), "name");
     }
 }

Added: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java?rev=396077&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java (added)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java Fri Apr 21 21:31:11 2006
@@ -0,0 +1,71 @@
+// Copyright Apr 21, 2006 The Apache Software Foundation
+//
+// Licensed 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.apache.tapestry.timetracker.servlet;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.apache.log4j.PropertyConfigurator;
+import org.apache.tapestry.ApplicationServlet;
+
+/**
+ * Used to configure logging.
+ * 
+ * @author jkuhnert
+ */
+public class ConfigurationServlet extends ApplicationServlet implements ServletContextListener {
+    
+    /**
+     * generated.
+     */
+    private static final long serialVersionUID = -5959967554036278600L;
+
+    /**
+     * @see javax.servlet.GenericServlet#init()
+     */
+    public void init() {
+        try {
+            // Use basic logging configuration until Log4j is properly configured
+            PropertyConfigurator.configure(getServletContext().getRealPath("/")
+                    + "/WEB-INF/log4j.properties");
+            super.init();
+        } catch (Throwable t) {
+            t.printStackTrace();
+        }
+    }
+
+    /**
+     * @see javax.servlet.Servlet#destroy()
+     */
+    public void destroy()
+    {
+        super.destroy();
+        org.apache.log4j.LogManager.shutdown();
+    }
+
+    /**
+     * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
+     */
+    public void contextDestroyed(ServletContextEvent arg0)
+    {
+        org.apache.log4j.LogManager.shutdown();
+    }
+
+    /** 
+     * {@inheritDoc}
+     */
+    public void contextInitialized(ServletContextEvent arg0)
+    {
+    }
+}

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/asset/AssetService.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/asset/AssetService.java?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/asset/AssetService.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/asset/AssetService.java Fri Apr 21 21:31:11 2006
@@ -21,6 +21,9 @@
 import java.io.OutputStream;
 import java.net.URL;
 import java.net.URLConnection;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.TreeMap;
@@ -96,6 +99,8 @@
 
     private static final int BUFFER_SIZE = 10240;
 
+    private static final DateFormat CACHED_FORMAT = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
+    
     /** @since 4.0 */
     private ClassResolver _classResolver;
 
@@ -260,8 +265,10 @@
         String header = _request.getHeader("If-Modified-Since");
         long modify = -1;
         
-        if (header != null)
-            modify = Long.parseLong(header);
+        try {
+            if (header != null)
+                modify = CACHED_FORMAT.parse(header).getTime();
+        } catch (ParseException e) { e.printStackTrace(); }
         
         if (resource.lastModified() > modify)
             return false;

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/PropertySelection.java
URL: http://svn.apache.org/viewcvs/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/PropertySelection.java?rev=396077&r1=396076&r2=396077&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/PropertySelection.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/PropertySelection.java Fri Apr 21 21:31:11 2006
@@ -60,7 +60,7 @@
  */
 public abstract class PropertySelection extends AbstractFormComponent 
     implements ValidatableField, IJSONRender, IDirect, IWidget
-{
+{   
     /**
      * @see org.apache.tapestry.form.AbstractFormComponent#renderFormComponent(org.apache.tapestry.IMarkupWriter, org.apache.tapestry.IRequestCycle)
      */
@@ -79,8 +79,6 @@
         
         renderIdAttribute(writer, cycle);
         
-        renderWidget(writer, cycle);
-        
         renderDelegateAttributes(writer, cycle);
         
         getValidatableFieldSupport().renderContributions(this, writer, cycle);
@@ -88,39 +86,45 @@
         // Apply informal attributes.
         renderInformalParameters(writer, cycle);
         
-        writer.println();
-        
-        IPropertySelectionModel model = getModel();
-        
-        if (model == null)
-            throw Tapestry.createRequiredParameterException(this, "model");
-        
-        int count = model.getOptionCount();
-        boolean foundSelected = false;
-        Object value = getValue();
-        
-        for (int i = 0; i < count; i++)
-        {
-            Object option = model.getOption(i);
+        if (isFilterOnChange()) {
+            renderWidget(writer, cycle);
+        } else {
             
-            writer.begin("option");
-            writer.attribute("value", model.getValue(i));
+            writer.println();
             
-            if (!foundSelected && isEqual(option, value))
-            {
-                writer.attribute("selected", "selected");
-                
-                foundSelected = true;
-            }
+            IPropertySelectionModel model = getModel();
+            
+            if (model == null)
+                throw Tapestry.createRequiredParameterException(this, "model");
             
-            writer.print(model.getLabel(i));
+            int count = model.getOptionCount();
+            boolean foundSelected = false;
+            Object value = getValue();
 
-            writer.end();
+            for (int i = 0; i < count; i++)
+            {
+                Object option = model.getOption(i);
 
-            writer.println();
-        }
+                writer.begin("option");
+                writer.attribute("value", model.getValue(i));
+
+                if (!foundSelected && isEqual(option, value))
+                {
+                    writer.attribute("selected", "selected");
+
+                    foundSelected = true;
+                }
+
+                writer.print(model.getLabel(i));
+
+                writer.end();
+
+                writer.println();
+            }
+
+            writer.end(); // <select>
         
-        writer.end(); // <select>
+        }
         
         renderDelegateSuffix(writer, cycle);
     }
@@ -163,14 +167,14 @@
             String value = model.getValue(i);
             String label = model.getLabel(i);
             
-            if (getFilter() == null || getFilter().length() <= 0) {
+            if (getFilter() == null || getFilter().trim().length() <= 0) {
                 writer.put(value, label);
                 continue;
             }
             
             // primitive filter, for now
             // TODO: Create filter interface in IPropertySelectionModel
-            if (getFilter() != null && getFilter().trim().length() > 0
+            if (getFilter() != null 
                     && label.toLowerCase().indexOf(getFilter().toLowerCase()) > -1) {
                 writer.put(value, label);
             }
@@ -183,7 +187,7 @@
      */
     public void renderWidget(IMarkupWriter writer, IRequestCycle cycle)
     {
-        if (!isFilterOnChange() || cycle.isRewinding()) return;
+        if (cycle.isRewinding()) return;
         
         DirectServiceParameter dsp = 
             new DirectServiceParameter(this, new Object[]{}, 
@@ -192,7 +196,7 @@
         
         Map parms = new HashMap();
         parms.put("id", this.getClientId());
-        parms.put("props", "{dataUrl:'" + link.getURL() + "', mode: 'remote'}");
+        parms.put("props", "{dataUrl:'" + link.getURL() + "&filter=%{searchString}', mode: 'remote', forceValidOption:true}");
         
         PageRenderSupport prs = TapestryUtils.getPageRenderSupport(cycle, this);
         getScript().execute(cycle, prs, parms);
@@ -205,15 +209,15 @@
     {
         return false;
     }
-
-    /** 
+    
+    /**
      * Triggerd by using filterOnChange logic.
      * 
      * {@inheritDoc}
      */
     public void trigger(IRequestCycle cycle)
     {
-        setFilter(cycle.getParameter("searchString"));
+        setFilter(cycle.getParameter("filter"));
     }
     
     private boolean isEqual(Object left, Object right)



---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org