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 */ [EMAIL PROTECTED] url("dojo.css"); [EMAIL PROTECTED] 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(); + } + + /** + * [EMAIL PROTECTED] + */ + 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. * * [EMAIL PROTECTED] */ public void trigger(IRequestCycle cycle) { - setFilter(cycle.getParameter("searchString")); + setFilter(cycle.getParameter("filter")); } private boolean isEqual(Object left, Object right) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]