/* * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. 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.wso2.siddhi.extension.table.hazelcast; import com.hazelcast.core.IList; import org.wso2.siddhi.core.event.ComplexEvent; import org.wso2.siddhi.core.event.ComplexEventChunk; import org.wso2.siddhi.core.event.stream.StreamEvent; import org.wso2.siddhi.core.event.stream.StreamEventPool; import org.wso2.siddhi.core.event.stream.converter.StreamEventConverter; import org.wso2.siddhi.core.event.stream.converter.ZeroStreamEventConverter; import org.wso2.siddhi.core.table.holder.EventHolder; import java.util.Collection; import java.util.Iterator; /** * Created by suho on 5/22/16. */ public class HazelcastCollectionEventHolder implements EventHolder, Collection<StreamEvent> { private IList<StreamEvent> storeEventList; private StreamEventPool tableStreamEventPool; private StreamEventConverter eventConverter = new ZeroStreamEventConverter(); public HazelcastCollectionEventHolder(IList storeEventList, StreamEventPool tableStreamEventPool, StreamEventConverter eventConverter) { this.storeEventList = storeEventList; this.tableStreamEventPool = tableStreamEventPool; this.eventConverter = eventConverter; } @Override public void add(ComplexEventChunk<StreamEvent> addingEventChunk) { addingEventChunk.reset(); while (addingEventChunk.hasNext()) { ComplexEvent complexEvent = addingEventChunk.next(); StreamEvent streamEvent = tableStreamEventPool.borrowEvent(); eventConverter.convertComplexEvent(complexEvent, streamEvent); storeEventList.add(streamEvent); } } @Override public int size() { return storeEventList.size(); } @Override public boolean isEmpty() { return storeEventList.isEmpty(); } @Override public boolean contains(Object o) { return storeEventList.contains(o); } @Override public Iterator<StreamEvent> iterator() { return storeEventList.iterator(); } @Override public Object[] toArray() { return storeEventList.toArray(); } @Override public <T> T[] toArray(T[] a) { return storeEventList.toArray(a); } @Override public boolean add(StreamEvent streamEvent) { return storeEventList.add(streamEvent); } @Override public boolean remove(Object o) { return storeEventList.remove(o); } @Override public boolean containsAll(Collection<?> c) { return storeEventList.containsAll(c); } @Override public boolean addAll(Collection<? extends StreamEvent> c) { return storeEventList.addAll(c); } @Override public boolean removeAll(Collection<?> c) { return storeEventList.removeAll(c); } @Override public boolean retainAll(Collection<?> c) { return storeEventList.retainAll(c); } @Override public void clear() { storeEventList.clear(); } public StreamEvent get(int i) { return storeEventList.get(i); } public void set(int i, StreamEvent storeEvent) { storeEventList.set(i, storeEvent); } }