I've been tweaking them to get back to what I think they were on my old computer. Eventually I'll export those settings out and check them in.
On Fri, Jan 7, 2011 at 2:07 PM, Josh Canfield <[email protected]>wrote: > It looks like you changed your source formatting settings... > > On Fri, Jan 7, 2011 at 1:31 PM, <[email protected]> wrote: > > Author: hlship > > Date: Fri Jan 7 21:31:05 2011 > > New Revision: 1056524 > > > > URL: http://svn.apache.org/viewvc?rev=1056524&view=rev > > Log: > > TAP5-1390: Convert Predicate, Mapper and Worker from abstract base > classes > > to single method interfaces (for future lambda compatibility) > > Move other operations to static methods of F > > > > Modified: > > > > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java > > > > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java > > > > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java > > > > tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java > > > > Modified: > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java > Fri Jan 7 21:31:05 2011 > > @@ -1,10 +1,10 @@ > > -// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation > > +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 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 > > +// 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, > > @@ -52,7 +52,7 @@ public final class Element extends Node > > private static final String CLASS_ATTRIBUTE = "class"; > > > > /** > > - * URI of the namespace which contains the element. A quirk in XML > is that the element may be in a namespace it > > + * URI of the namespace which contains the element. A quirk in XML > is that the element may be in a namespace it > > * defines itself, so resolving the namespace to a prefix must wait > until render time (since the Element is created > > * before the namespaces for it are defined). > > */ > > @@ -93,7 +93,7 @@ public final class Element extends Node > > > > /** > > * Returns the containing element for this element. This will be null > for the root element of a document. > > - * > > + * > > * @deprecated since 5.1.0.1, use {...@link Node#getContainer()} instead > > */ > > public Element getParent() > > @@ -103,10 +103,12 @@ public final class Element extends Node > > > > /** > > * Adds an attribute to the element, but only if the attribute name > does not already exist. > > - * > > - * @param name the name of the attribute to add > > - * @param value the value for the attribute. A value of null is > allowed, and no attribute will be added to the > > - * element. > > + * > > + * @param name > > + * the name of the attribute to add > > + * @param value > > + * the value for the attribute. A value of null is > allowed, and no attribute will be added to the > > + * element. > > */ > > public Element attribute(String name, String value) > > { > > @@ -115,11 +117,14 @@ public final class Element extends Node > > > > /** > > * Adds a namespaced attribute to the element, but only if the > attribute name does not already exist. > > - * > > - * @param namespace the namespace to contain the attribute, or null > > - * @param name the name of the attribute to add > > - * @param value the value for the attribute. A value of null is > allowed, and no attribute will be added to the > > - * element. > > + * > > + * @param namespace > > + * the namespace to contain the attribute, or null > > + * @param name > > + * the name of the attribute to add > > + * @param value > > + * the value for the attribute. A value of null is > allowed, and no attribute will be added to the > > + * element. > > */ > > public Element attribute(String namespace, String name, String value) > > { > > @@ -131,7 +136,8 @@ public final class Element extends Node > > > > private void updateAttribute(String namespace, String name, String > value, boolean force) > > { > > - if (!force && value == null) return; > > + if (!force && value == null) > > + return; > > > > Attribute prior = null; > > Attribute cursor = firstAttribute; > > @@ -140,7 +146,8 @@ public final class Element extends Node > > { > > if (cursor.matches(namespace, name)) > > { > > - if (!force) return; > > + if (!force) > > + return; > > > > if (value != null) > > { > > @@ -162,18 +169,19 @@ public final class Element extends Node > > cursor = cursor.nextAttribute; > > } > > > > - // Don't add a Attribute if the value is null. > > + // Don't add a Attribute if the value is null. > > > > - if (value == null) return; > > + if (value == null) > > + return; > > > > firstAttribute = new Attribute(this, namespace, name, value, > firstAttribute); > > } > > > > - > > /** > > * Convenience for invoking {...@link #attribute(String, String)} > multiple times. > > - * > > - * @param namesAndValues alternating attribute names and attribute > values > > + * > > + * @param namesAndValues > > + * alternating attribute names and attribute values > > */ > > public Element attributes(String... namesAndValues) > > { > > @@ -192,8 +200,9 @@ public final class Element extends Node > > /** > > * Forces changes to a number of attributes. The new attributes > <em>overwrite</em> previous values. Overriding an > > * attribute's value to null will remove the attribute entirely. > > - * > > - * @param namesAndValues alternating attribute names and attribute > values > > + * > > + * @param namesAndValues > > + * alternating attribute names and attribute values > > * @return this element > > */ > > public Element forceAttributes(String... namesAndValues) > > @@ -205,11 +214,12 @@ public final class Element extends Node > > * Forces changes to a number of attributes in the global namespace. > The new attributes <em>overwrite</em> previous > > * values. Overriding attribute's value to null will remove the > attribute entirely. > > * TAP5-708: don't use element namespace for attributes > > - * > > - * @param namespace the namespace or null > > - * @param namesAndValues alternating attribute name and value > > + * > > + * @param namespace > > + * the namespace or null > > + * @param namesAndValues > > + * alternating attribute name and value > > * @return this element > > - * > > */ > > public Element forceAttributesNS(String namespace, String... > namesAndValues) > > { > > @@ -228,9 +238,11 @@ public final class Element extends Node > > > > /** > > * Creates and returns a new Element node as a child of this node. > > - * > > - * @param name the name of the element to create > > - * @param namesAndValues alternating attribute names and attribute > values > > + * > > + * @param name > > + * the name of the element to create > > + * @param namesAndValues > > + * alternating attribute names and attribute values > > */ > > public Element element(String name, String... namesAndValues) > > { > > @@ -244,9 +256,11 @@ public final class Element extends Node > > > > /** > > * Creates and returns a new Element within a namespace as a child of > this node. > > - * > > - * @param namespace namespace to contain the element, or null > > - * @param name element name to create within the namespace > > + * > > + * @param namespace > > + * namespace to contain the element, or null > > + * @param name > > + * element name to create within the namespace > > * @return the newly created element > > */ > > public Element elementNS(String namespace, String name) > > @@ -287,10 +301,11 @@ public final class Element extends Node > > } > > > > /** > > - * Adds and returns a new text node (the text node is returned so > that {...@link Text#write(String)} or [...@link {...@link > > - * Text#writef(String, Object[])} may be invoked . > > - * > > - * @param text initial text for the node > > + * Adds and returns a new text node (the text node is returned so > that {...@link Text#write(String)} or [...@link > > + * {...@link Text#writef(String, Object[])} may be invoked . > > + * > > + * @param text > > + * initial text for the node > > * @return the new Text node > > */ > > public Text text(String text) > > @@ -300,8 +315,9 @@ public final class Element extends Node > > > > /** > > * Adds and returns a new CDATA node. > > - * > > - * @param content the content to be rendered by the node > > + * > > + * @param content > > + * the content to be rendered by the node > > * @return the newly created node > > */ > > public CData cdata(String content) > > @@ -309,7 +325,6 @@ public final class Element extends Node > > return newChild(new CData(this, content)); > > } > > > > - > > private <T extends Node> T newChild(T child) > > { > > addChild(child); > > @@ -344,7 +359,8 @@ public final class Element extends Node > > > > for (String namespace : namespaces) > > { > > - if (namespace.equals(Document.XML_NAMESPACE_URI)) continue; > > + if (namespace.equals(Document.XML_NAMESPACE_URI)) > > + continue; > > > > String prefix = namespaceToPrefix.get(namespace); > > > > @@ -373,12 +389,14 @@ public final class Element extends Node > > > > writer.print(builder.toString()); > > > > - if (hasChildren) writeChildMarkup(document, writer, > localNamespacePrefixToURI); > > + if (hasChildren) > > + writeChildMarkup(document, writer, > localNamespacePrefixToURI); > > > > // Dangerous -- perhaps it should be an error for a tag of type > OMIT to even have children! > > // We'll certainly be writing out unbalanced markup in that case. > > > > - if (style == EndTagStyle.OMIT) return; > > + if (style == EndTagStyle.OMIT) > > + return; > > > > if (hasChildren || style == EndTagStyle.REQUIRE) > > { > > @@ -391,21 +409,24 @@ public final class Element extends Node > > > > String toPrefixedName(Map<String, String> namespaceURIToPrefix, > String namespace, String name) > > { > > - if (namespace == null || namespace.equals("")) return name; > > + if (namespace == null || namespace.equals("")) > > + return name; > > > > - if (namespace.equals(Document.XML_NAMESPACE_URI)) return "xml:" > + name; > > + if (namespace.equals(Document.XML_NAMESPACE_URI)) > > + return "xml:" + name; > > > > String prefix = namespaceURIToPrefix.get(namespace); > > > > // This should never happen, because namespaces are automatically > defined as needed. > > > > if (prefix == null) > > - throw new IllegalArgumentException( > > - String.format("No prefix has been defined for > namespace '%s'.", namespace)); > > + throw new IllegalArgumentException(String.format("No prefix > has been defined for namespace '%s'.", > > + namespace)); > > > > // The empty string indicates the default namespace which doesn't > use a prefix. > > > > - if (prefix.equals("")) return name; > > + if (prefix.equals("")) > > + return name; > > > > return prefix + ":" + name; > > } > > @@ -420,16 +441,16 @@ public final class Element extends Node > > * @return the element if found. null if not found. > > */ > > public Element getElementById(final String id) > > - { > > + { > > return getElementByAttributeValue("id", id); > > } > > - > > + > > /** > > * Tries to find an element under this element (including itself) > whose given attribute has a given value. > > * > > * @since 5.2.3 > > - * > > - * @param attributeName the name of the attribute of the element > being looked for > > + * @param attributeName > > + * the name of the attribute of the element being looked > for > > * @param attributeValue > > * the value of the attribute of the element being looked > for > > * @return the element if found. null if not found. > > @@ -438,11 +459,9 @@ public final class Element extends Node > > { > > assert attributeName != null; > > assert attributeValue != null; > > - > > + > > return getElement(new Predicate<Element>() > > { > > - > > - @Override > > public boolean accept(Element e) > > { > > String elementId = e.getAttribute(attributeName); > > @@ -455,8 +474,8 @@ public final class Element extends Node > > * Tries to find an element under this element (including itself) > accepted by the given predicate. > > * > > * @since 5.2.3 > > - * > > - * @param predicate Predicate to accept the element > > + * @param predicate > > + * Predicate to accept the element > > * @return the element if found. null if not found. > > */ > > public Element getElement(Predicate<Element> predicate) > > @@ -469,7 +488,8 @@ public final class Element extends Node > > { > > Element e = queue.removeFirst(); > > > > - if (predicate.accept(e)) return e; > > + if (predicate.accept(e)) > > + return e; > > > > for (Element child : e.childElements()) > > { > > @@ -482,11 +502,10 @@ public final class Element extends Node > > return null; > > } > > > > - > > /** > > * Searchs for a child element with a particular name below this > element. The path parameter is a slash separated > > * series of element names. > > - * > > + * > > * @param path > > * @return > > */ > > @@ -499,7 +518,8 @@ public final class Element extends Node > > { > > search = search.findChildWithElementName(name); > > > > - if (search == null) break; > > + if (search == null) > > + break; > > } > > > > return search; > > @@ -536,7 +556,8 @@ public final class Element extends Node > > { > > while (cursor != null) > > { > > - if (cursor instanceof Element) return; > > + if (cursor instanceof Element) > > + return; > > > > cursor = cursor.nextSibling; > > } > > @@ -586,8 +607,9 @@ public final class Element extends Node > > /** > > * Adds one or more CSS class names to the "class" attribute. No > check for duplicates is made. Note that CSS class > > * names are case insensitive on the client. > > - * > > - * @param className one or more CSS class names > > + * > > + * @param className > > + * one or more CSS class names > > * @return the element for further configuration > > */ > > public Element addClassName(String... className) > > @@ -596,11 +618,13 @@ public final class Element extends Node > > > > StringBuilder builder = new StringBuilder(); > > > > - if (classes != null) builder.append(classes); > > + if (classes != null) > > + builder.append(classes); > > > > for (String name : className) > > { > > - if (builder.length() > 0) builder.append(" "); > > + if (builder.length() > 0) > > + builder.append(" "); > > > > builder.append(name); > > } > > @@ -611,12 +635,14 @@ public final class Element extends Node > > } > > > > /** > > - * Defines a namespace for this element, mapping a URI to a prefix. > This will affect how namespaced elements and > > + * Defines a namespace for this element, mapping a URI to a prefix. > This will affect how namespaced elements and > > * attributes nested within the element are rendered, and will also > cause <code>xmlns:</code> attributes (to define > > * the namespace and prefix) to be rendered. > > - * > > - * @param namespace URI of the namespace > > - * @param namespacePrefix prefix > > + * > > + * @param namespace > > + * URI of the namespace > > + * @param namespacePrefix > > + * prefix > > * @return this element > > */ > > public Element defineNamespace(String namespace, String > namespacePrefix) > > @@ -647,7 +673,7 @@ public final class Element extends Node > > */ > > public void pop() > > { > > - // Have to be careful because we'll be modifying the underlying > list of children > > + // Have to be careful because we'll be modifying the underlying > list of children > > // as we work, so we need a copy of the children. > > > > List<Node> childrenCopy = > CollectionFactory.newList(getChildren()); > > @@ -662,7 +688,7 @@ public final class Element extends Node > > > > /** > > * Removes all children from this element. > > - * > > + * > > * @return the element, for method chaining > > */ > > public Element removeChildren() > > @@ -677,7 +703,7 @@ public final class Element extends Node > > * Creates the URI to namespace prefix map for this element, which > reflects namespace mappings from containing > > * elements. In addition, automatic namespaces are defined for any > URIs that are not explicitly mapped (this occurs > > * sometimes in Ajax partial render scenarios). > > - * > > + * > > * @return a mapping from namespace URI to namespace prefix > > */ > > private Map<String, String> createNamespaceURIToPrefix(Map<String, > String> containerNamespaceURIToPrefix) > > @@ -686,7 +712,6 @@ public final class Element extends Node > > > > holder.putAll(namespaceToPrefix); > > > > - > > // result now contains all the mappings, including this > element's. > > > > // Add a mapping for the element's namespace. > > @@ -713,11 +738,13 @@ public final class Element extends Node > > > > private void addMappingIfNeeded(MapHolder holder, String namespace) > > { > > - if (InternalUtils.isBlank(namespace)) return; > > + if (InternalUtils.isBlank(namespace)) > > + return; > > > > Map<String, String> current = holder.getResult(); > > > > - if (current.containsKey(namespace)) return; > > + if (current.containsKey(namespace)) > > + return; > > > > // A missing namespace. > > > > @@ -768,14 +795,15 @@ public final class Element extends Node > > > > /** > > * Returns true if the element has no children, or has only text > children that contain only whitespace. > > - * > > + * > > * @since 5.1.0.0 > > */ > > public boolean isEmpty() > > { > > List<Node> children = getChildren(); > > > > - if (children.isEmpty()) return true; > > + if (children.isEmpty()) > > + return true; > > > > for (Node n : children) > > { > > @@ -783,7 +811,8 @@ public final class Element extends Node > > { > > Text t = (Text) n; > > > > - if (t.isEmpty()) continue; > > + if (t.isEmpty()) > > + continue; > > } > > > > // Not a text node, or a non-empty text node, then the > element isn't empty. > > @@ -796,8 +825,9 @@ public final class Element extends Node > > /** > > * Depth-first visitor traversal of this Element and its Element > children. The traversal order is the same as render > > * order. > > - * > > - * @param visitor callback > > + * > > + * @param visitor > > + * callback > > * @since 5.1.0.0 > > */ > > public void visit(Visitor visitor) > > @@ -816,10 +846,10 @@ public final class Element extends Node > > } > > } > > > > - > > private void queueChildren(Stack<Element> queue) > > { > > - if (firstChild == null) return; > > + if (firstChild == null) > > + return; > > > > List<Element> childElements = CollectionFactory.newList(); > > > > @@ -867,7 +897,6 @@ public final class Element extends Node > > cursor = cursor.nextSibling; > > } > > > > - > > newChild.nextSibling = cursor.nextSibling; > > cursor.nextSibling = newChild; > > } > > @@ -910,9 +939,9 @@ public final class Element extends Node > > > > /** > > * Returns an unmodifiable list of children for this element. Only > {...@link org.apache.tapestry5.dom.Element}s will > > - * have children. Also, note that unlike W3C DOM, attributes are > not represented as {...@link > > - * org.apache.tapestry5.dom.Node}s. > > - * > > + * have children. Also, note that unlike W3C DOM, attributes are not > represented as > > + * {...@link org.apache.tapestry5.dom.Node}s. > > + * > > * @return unmodifiable list of children nodes > > */ > > @SuppressWarnings("unchecked") > > @@ -993,7 +1022,8 @@ public final class Element extends Node > > > > while (cursor != null) > > { > > - if (node == cursor) return index; > > + if (node == cursor) > > + return index; > > > > cursor = cursor.nextSibling; > > index++; > > @@ -1003,11 +1033,11 @@ public final class Element extends Node > > } > > > > /** > > - * Returns the attributes for this Element as a (often empty) > collection of {...@link > > - * org.apache.tapestry5.dom.Attribute}s. The order of the attributes > within the collection is not specified. > > + * Returns the attributes for this Element as a (often empty) > collection of > > + * {...@link org.apache.tapestry5.dom.Attribute}s. The order of the > attributes within the collection is not specified. > > * Modifying the collection will not affect the attributes (use > {...@link #forceAttributes(String[])} to change > > * existing attribute values, and {...@link #attribute(String, String, > String)} to add new attribute values. > > - * > > + * > > * @return attribute collection > > */ > > public Collection<Attribute> getAttributes() > > > > Modified: > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java > Fri Jan 7 21:31:05 2011 > > @@ -1,4 +1,4 @@ > > -// Copyright 2010 The Apache Software Foundation > > +// Copyright 2010, 2011 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. > > @@ -57,8 +57,8 @@ public class DateFieldStack implements J > > } > > }; > > > > - Mapper<String, StylesheetLink> pathToStylesheetLink = > pathToAsset > > - .combine(TapestryInternalUtils.assetToStylesheetLink); > > + Mapper<String, StylesheetLink> pathToStylesheetLink = > F.combine(pathToAsset, > > + TapestryInternalUtils.assetToStylesheetLink); > > > > javaScriptStack = F > > .flow("${tapestry.datepicker}/js/datepicker.js", > "org/apache/tapestry5/corelib/components/datefield.js") > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java > Fri Jan 7 21:31:05 2011 > > @@ -1,4 +1,4 @@ > > -// Copyright 2010 The Apache Software Foundation > > +// Copyright 2010, 2011 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. > > @@ -170,7 +170,7 @@ abstract class AbstractFlow<T> implement > > { > > assert predicate != null; > > > > - return filter(predicate.invert()); > > + return filter(F.not(predicate)); > > } > > > > public Flow<T> reverse() > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java > Fri Jan 7 21:31:05 2011 > > @@ -125,7 +125,7 @@ public class F > > */ > > public static <T extends Comparable<T>> Predicate<T> lt(T value) > > { > > - return gteq(value).invert(); > > + return not(gteq(value)); > > } > > > > /** > > @@ -134,7 +134,7 @@ public class F > > */ > > public static <T extends Comparable<T>> Predicate<T> lteq(T value) > > { > > - return gt(value).invert(); > > + return not(gt(value)); > > } > > > > /** > > @@ -156,9 +156,7 @@ public class F > > */ > > public static <T> Predicate<T> notNull() > > { > > - Predicate<T> isNull = isNull(); > > - > > - return isNull.invert(); > > + return not(isNull()); > > } > > > > /** > > @@ -346,7 +344,6 @@ public class F > > > > Flow<Tuple<A, B>> tuples = F.flow(map.entrySet()).map(new > Mapper<Map.Entry<A, B>, Tuple<A, B>>() > > { > > - @Override > > public Tuple<A, B> map(Entry<A, B> element) > > { > > return Tuple.create(element.getKey(), > element.getValue()); > > @@ -457,7 +454,6 @@ public class F > > { > > return new Predicate<String>() > > { > > - @Override > > public boolean accept(String element) > > { > > return element.regionMatches(ignoreCase, 0, prefix, 0, > prefix.length()); > > @@ -490,7 +486,6 @@ public class F > > { > > return new Predicate<String>() > > { > > - @Override > > public boolean accept(String element) > > { > > return element > > @@ -533,4 +528,132 @@ public class F > > } > > }; > > } > > + > > + /** > > + * Inverts a predicate. > > + * > > + * @param <T> > > + * @param delegate > > + * the predicate to invert > > + * @return a new predicate that is inverse to the existing predicate > > + * @since 5.3.0 > > + */ > > + public static <T> Predicate<T> not(final Predicate<? super T> > delegate) > > + { > > + assert delegate != null; > > + > > + return new Predicate<T>() > > + { > > + public boolean accept(T element) > > + { > > + return !delegate.accept(element); > > + } > > + }; > > + } > > + > > + /** > > + * Combines two mappers into a composite mapping from type A to type > C via type B. > > + * > > + * @param <A> > > + * @param <B> > > + * @param <C> > > + * @param abMapper > > + * maps from A to B > > + * @param bcMapper > > + * maps from B to C > > + * @return mapper from A to C > > + */ > > + public static <A, B, C> Mapper<A, C> combine(final Mapper<A, B> > abMapper, final Mapper<B, C> bcMapper) > > + { > > + assert abMapper != null; > > + assert bcMapper != null; > > + > > + return new Mapper<A, C>() > > + { > > + > > + public C map(A aElement) > > + { > > + B bElement = abMapper.map(aElement); > > + > > + return bcMapper.map(bElement); > > + } > > + > > + }; > > + } > > + > > + /** > > + * Combines any number of delegates as a logical and operation. > Evaluation terminates > > + * with the first delegate predicate that returns false. > > + * > > + * @param <T> > > + * @param delegates > > + * to evaluate > > + * @return combined delegate > > + * @since 5.3.0 > > + */ > > + public static <T> Predicate<T> and(final Predicate<? super T>... > delegates) > > + { > > + return new Predicate<T>() > > + { > > + public boolean accept(T element) > > + { > > + for (Predicate<? super T> delegate : delegates) > > + { > > + if (!delegate.accept(element)) > > + return false; > > + } > > + > > + return true; > > + } > > + }; > > + } > > + > > + /** > > + * Combines any number of delegates as a logical or operation. > Evaluation terminates > > + * with the first delegate predicate that returns true. > > + * > > + * @param <T> > > + * @param delegates > > + * to evaluate > > + * @return combined delegate > > + * @since 5.3.0 > > + */ > > + public static <T> Predicate<T> or(final Predicate<? super T>... > delegates) > > + { > > + return new Predicate<T>() > > + { > > + public boolean accept(T element) > > + { > > + for (Predicate<? super T> delegate : delegates) > > + { > > + if (delegate.accept(element)) > > + return true; > > + } > > + > > + return false; > > + } > > + }; > > + } > > + > > + /** > > + * Combines several compatible workers together into a composite. > > + * > > + * @since 5.3.0 > > + */ > > + public static <T> Worker<T> combine(final Worker<? super T>... > delegates) > > + { > > + assert delegates.length > 0; > > + > > + return new Worker<T>() > > + { > > + public void work(T value) > > + { > > + for (Worker<? super T> delegate : delegates) > > + { > > + delegate.work(value); > > + } > > + } > > + }; > > + } > > + > > } > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java > Fri Jan 7 21:31:05 2011 > > @@ -15,9 +15,10 @@ > > package org.apache.tapestry5.func; > > > > /** > > - * Base class used with {...@link Flow#map(Mapper)} to > > - * define how Flow values are mapped from one type > > + * Interface for operation {...@link Flow#map(Mapper)} to define how Flow > elements are mapped from one type > > * to another (or otherwise transformed). > > + * <p> > > + * This changed in 5.3 from an abstract base class to an interface. > > * > > * @since 5.2.0 > > * @param <S> > > @@ -25,32 +26,11 @@ package org.apache.tapestry5.func; > > * @param <T> > > * type of target (output) flow > > */ > > -public abstract class Mapper<S, T> > > +public interface Mapper<S, T> > > { > > /** > > * Implemented in subclasses to map an element from the source flow > to an element of the target > > * flow. > > */ > > - public abstract T map(S element); > > - > > - /** > > - * Combines this mapper (S -->T) with another mapper (T -->X) > to form > > - * a composite mapper (S --> X). > > - */ > > - public final <X> Mapper<S, X> combine(final Mapper<T, X> other) > > - { > > - assert other != null; > > - > > - final Mapper<S, T> stMapper = this; > > - > > - return new Mapper<S, X>() > > - { > > - public X map(S element) > > - { > > - T tElement = stMapper.map(element); > > - > > - return other.map(tElement); > > - } > > - }; > > - } > > + T map(S element); > > } > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java > Fri Jan 7 21:31:05 2011 > > @@ -1,4 +1,4 @@ > > -// Copyright 2010 The Apache Software Foundation > > +// Copyright 2010, 2011 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. > > @@ -16,12 +16,14 @@ package org.apache.tapestry5.func; > > > > /** > > * A generalization of {...@link Mapper} for a two-input function. > > + * <p> > > + * This was converted from to an interface from an abstract base class > in 5.3. > > */ > > -public abstract class Mapper2<A, B, C> > > +public interface Mapper2<A, B, C> > > { > > /** > > * Take, as input, two values (from two flows) and return a computed > value of > > * the third type. > > */ > > - public abstract C map(A first, B second); > > + C map(A first, B second); > > } > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java > Fri Jan 7 21:31:05 2011 > > @@ -19,12 +19,14 @@ package org.apache.tapestry5.func; > > * each object in turn, and returns true to include the object in the > result collection. > > * <p> > > * The {...@link F} class includes a number of Predicate factory methods. > > + * <p> > > + * This was converted from a abstract base class to an interface in 5.3. > > * > > * @since 5.2.0 > > * @see Flow#filter(Predicate) > > * @see Flow#remove(Predicate) > > */ > > -public abstract class Predicate<T> > > +public interface Predicate<T> > > { > > /** > > * This method is overridden in subclasses to define which objects > the Predicate will accept > > @@ -33,62 +35,5 @@ public abstract class Predicate<T> > > * @param element > > * the element from the flow to be evaluated by the > Predicate > > */ > > - public abstract boolean accept(T element); > > - > > - /** > > - * Combines this Predicate with another compatible Predicate to form > a new Predicate, which is > > - * returned. The new Predicate is true only if both of the combined > Predicates are true. > > - */ > > - public final Predicate<T> and(final Predicate<? super T> other) > > - { > > - assert other != null; > > - > > - final Predicate<T> left = this; > > - > > - return new Predicate<T>() > > - { > > - public boolean accept(T object) > > - { > > - return left.accept(object) && other.accept(object); > > - }; > > - }; > > - } > > - > > - /** > > - * Combines this Predicate with another compatible Predicate to form > a new Predicate, which is > > - * returned. The > > - * new Predicate is true if either of the combined Predicates are > true. > > - */ > > - public final Predicate<T> or(final Predicate<? super T> other) > > - { > > - assert other != null; > > - > > - final Predicate<T> left = this; > > - > > - return new Predicate<T>() > > - { > > - public boolean accept(T object) > > - { > > - return left.accept(object) || other.accept(object); > > - }; > > - }; > > - } > > - > > - /** > > - * Inverts this Predicate, returning a new Predicate that inverts > the value returned from > > - * {...@link #accept}. > > - */ > > - public final Predicate<T> invert() > > - { > > - final Predicate<T> normal = this; > > - > > - return new Predicate<T>() > > - { > > - public boolean accept(T object) > > - { > > - return !normal.accept(object); > > - }; > > - }; > > - } > > - > > + boolean accept(T element); > > } > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java > Fri Jan 7 21:31:05 2011 > > @@ -1,4 +1,4 @@ > > -// Copyright 2010 The Apache Software Foundation > > +// Copyright 2010, 2011 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. > > @@ -20,32 +20,10 @@ package org.apache.tapestry5.func; > > * @since 5.2.0 > > * @see Flow#each(Worker) > > */ > > -public abstract class Worker<T> > > +public interface Worker<T> > > { > > /** > > * Perform the operation on some object of type T. > > */ > > - public abstract void work(T value); > > - > > - /** > > - * Combines this worker with the other worker, forming a new > composite worker. In the composite, > > - * the value from the Flow is passed first to this worker, then to > the other worker. > > - */ > > - public Worker<T> combine(final Worker<? super T> other) > > - { > > - assert other != null; > > - > > - final Worker<T> first = this; > > - > > - return new Worker<T>() > > - { > > - public void work(T value) > > - { > > - first.work(value); > > - other.work(value); > > - } > > - > > - }; > > - } > > - > > + void work(T value); > > } > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/main/java/org/apache/tapestry5/func/ZippedFlowImpl.java > Fri Jan 7 21:31:05 2011 > > @@ -143,7 +143,6 @@ class ZippedFlowImpl<A, B> implements Zi > > { > > return tupleFlow.map(new Mapper<Tuple<A, B>, A>() > > { > > - @Override > > public A map(Tuple<A, B> value) > > { > > return value.first; > > @@ -160,7 +159,6 @@ class ZippedFlowImpl<A, B> implements Zi > > { > > return tupleFlow.map(new Mapper<Tuple<A, B>, B>() > > { > > - @Override > > public B map(Tuple<A, B> value) > > { > > return value.second; > > @@ -174,7 +172,6 @@ class ZippedFlowImpl<A, B> implements Zi > > > > return filter(new Predicate<Tuple<A, B>>() > > { > > - @Override > > public boolean accept(Tuple<A, B> element) > > { > > return predicate.accept(element.first); > > @@ -188,7 +185,6 @@ class ZippedFlowImpl<A, B> implements Zi > > > > return filter(new Predicate<Tuple<A, B>>() > > { > > - @Override > > public boolean accept(Tuple<A, B> element) > > { > > return predicate.accept(element.second); > > @@ -200,14 +196,14 @@ class ZippedFlowImpl<A, B> implements Zi > > { > > assert predicate != null; > > > > - return filterOnFirst(predicate.invert()); > > + return filterOnFirst(F.not(predicate)); > > } > > > > public ZippedFlow<A, B> removeOnSecond(Predicate<? super B> > predicate) > > { > > assert predicate != null; > > > > - return filterOnSecond(predicate.invert()); > > + return filterOnSecond(F.not(predicate)); > > } > > > > public Map<A, B> toMap() > > @@ -216,7 +212,6 @@ class ZippedFlowImpl<A, B> implements Zi > > > > tupleFlow.each(new Worker<Tuple<A, B>>() > > { > > - @Override > > public void work(Tuple<A, B> value) > > { > > result.put(value.first, value.second); > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java > Fri Jan 7 21:31:05 2011 > > @@ -35,7 +35,8 @@ public class FuncTest extends BaseFuncTe > > @Test > > public void combine_mappers() > > { > > - List<Boolean> even = F.flow("Mary", "had", "a", "little", > "lamb").map(stringToLength.combine(toEven)).toList(); > > + List<Boolean> even = F.flow("Mary", "had", "a", "little", > "lamb").map(F.combine(stringToLength, toEven)) > > + .toList(); > > > > assertListsEquals(even, true, false, false, true, true); > > } > > @@ -151,7 +152,7 @@ public class FuncTest extends BaseFuncTe > > } > > }; > > > > - F.flow("Mary", "had", "a", "little", > "lamb").each(appendWorker.combine(appendLength)); > > + F.flow("Mary", "had", "a", "little", > "lamb").each(F.combine(appendWorker, appendLength)); > > > > assertEquals(buffer.toString(), "Mary(4) had(3) a(1) little(6) > lamb(4)"); > > } > > @@ -205,7 +206,7 @@ public class FuncTest extends BaseFuncTe > > { > > List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7); > > > > - List<Integer> output = > F.flow(input).filter(F.gt(2).and(F.lt(5))).toList(); > > + List<Integer> output = F.flow(input).filter(F.and(F.gt(2), > F.lt(5))).toList(); > > > > assertListsEquals(output, 3, 4); > > } > > @@ -215,7 +216,7 @@ public class FuncTest extends BaseFuncTe > > { > > List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7); > > > > - List<Integer> output = > F.flow(input).filter(F.lt(3).or(F.gt(5))).toList(); > > + List<Integer> output = F.flow(input).filter(F.or(F.lt(3), > F.gt(5))).toList(); > > > > assertListsEquals(output, 1, 2, 6, 7); > > } > > @@ -245,7 +246,7 @@ public class FuncTest extends BaseFuncTe > > @Test > > public void select_and_filter() > > { > > - Predicate<String> combinedp = > F.toPredicate(stringToLength.combine(toEven)); > > + Predicate<String> combinedp = > F.toPredicate(F.combine(stringToLength, toEven)); > > > > Mapper<String, String> identity = F.identity(); > > Predicate<String> isNull = F.isNull(); > > > > Modified: > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-func/src/test/java/org/apache/tapestry5/func/ZippedFlowTests.java > Fri Jan 7 21:31:05 2011 > > @@ -156,7 +156,6 @@ public class ZippedFlowTests extends Bas > > > > zipped.each(new Worker<Tuple<Integer, String>>() > > { > > - @Override > > public void work(Tuple<Integer, String> value) > > { > > count.addAndGet(value.second.length()); > > @@ -220,8 +219,6 @@ public class ZippedFlowTests extends Bas > > { > > Tuple<String, String> firstTuple = zipped.mapTuples(new > Mapper<Tuple<Integer, String>, Tuple<String, String>>() > > { > > - > > - @Override > > public Tuple<String, String> map(Tuple<Integer, String> > value) > > { > > return Tuple.create(StringUtils.reverse(value.second), > > > > Modified: > tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java > > URL: > http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java?rev=1056524&r1=1056523&r2=1056524&view=diff > > > ============================================================================== > > --- > tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java > (original) > > +++ > tapestry/tapestry5/trunk/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java > Fri Jan 7 21:31:05 2011 > > @@ -277,14 +277,14 @@ public class RegistryImpl implements Reg > > contributionMarkers.remove(Local.class); > > > > // Match services with the correct interface AND having as > markers *all* the marker annotations > > - > > - Flow<ServiceDef2> filtered = serviceDefs.filter(new > Predicate<ServiceDef2>() > > + > > + Flow<ServiceDef2> filtered = serviceDefs.filter(F.and(new > Predicate<ServiceDef2>() > > { > > public boolean accept(ServiceDef2 object) > > { > > return > object.getServiceInterface().equals(cd.getServiceInterface()); > > } > > - }.and(new Predicate<ServiceDef2>() > > + }, new Predicate<ServiceDef2>() > > { > > public boolean accept(ServiceDef2 serviceDef) > > { > > @@ -1001,7 +1001,7 @@ public class RegistryImpl implements Reg > > { > > assert interfaceClass != null; > > assert implementationClass != null; > > - > > + > > if (InternalUtils.SERVICE_CLASS_RELOADING_ENABLED && > InternalUtils.isLocalFile(implementationClass)) > > return createReloadingProxy(interfaceClass, > implementationClass, locator); > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Howard M. Lewis Ship Creator of Apache Tapestry The source for Tapestry training, mentoring and support. Contact me to learn how I can get you up and productive in Tapestry fast! (971) 678-5210 http://howardlewisship.com
