blob: 7485a363476448fec3206c1e22fed3ddde858f63 [file] [log] [blame]
/**
* 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 com.datatorrent.lib.stream;
import java.util.ArrayList;
import java.util.Collection;
/**
*
* An implementation of AbstractAggregator that creates an ArrayList tuple from incoming tuples.
* <p>
* The size of the ArrayList before it is emitted is determined by property \"size\". If size == 0
* then the ArrayList (if not empty) is emitted in the endWindow call. Is size is specified then the ArrayList is emitted as soon as the size is
* reached as part of process(tuple), and no emit happens in endWindow. For size != 0, the operator is statefull.<p>
* <br>
* <b>Port</b>:<br>
* <b>input</b>: expects T<br>
* <b>output</b>: emits ArrayList&lt;T&gt;<br>
* <br>
* <b>Properties</b>:<br>
* <b>size</b>: The size of ArrayList. If specified the ArrayList is emitted the moment it reaches this size.
* If 0, the ArrayList is emitted in endWindow call. Default value is 0, </br>
* <br>
* @displayName Array List Aggregator
* @category Stream Manipulators
* @tags list, aggregate, collection
* @param <T> Type of elements in the collection.<br>
* @since 0.3.3
*/
public class ArrayListAggregator<T> extends AbstractAggregator<T>
{
@Override
public Collection<T> getNewCollection(int size)
{
return new ArrayList<T>(size);
}
}