001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * bstefanescu 011 */ 012package org.nuxeo.ecm.core.event.impl; 013 014import java.rmi.dgc.VMID; 015import java.util.ArrayList; 016import java.util.HashSet; 017import java.util.Iterator; 018import java.util.List; 019import java.util.Set; 020 021import org.nuxeo.ecm.core.event.Event; 022import org.nuxeo.ecm.core.event.EventBundle; 023 024/** 025 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 026 */ 027public class EventBundleImpl implements EventBundle { 028 029 private static final long serialVersionUID = 1L; 030 031 // not final to allow modification derived classes 032 protected VMID vmid; 033 034 protected final List<Event> events; 035 036 protected final Set<String> eventNames; 037 038 public EventBundleImpl(VMID sourceVMID) { 039 events = new ArrayList<Event>(); 040 eventNames = new HashSet<String>(); 041 vmid = sourceVMID; 042 } 043 044 public EventBundleImpl() { 045 this(EventServiceImpl.VMID); 046 } 047 048 @Override 049 public boolean hasRemoteSource() { 050 return !vmid.equals(EventServiceImpl.VMID); 051 } 052 053 @Override 054 public String getName() { 055 if (events.isEmpty()) { 056 return null; 057 } 058 return events.get(0).getContext().getRepositoryName(); 059 } 060 061 @Override 062 public boolean isEmpty() { 063 return events.isEmpty(); 064 } 065 066 @Override 067 public Event peek() { 068 return events.get(0); 069 } 070 071 @Override 072 public void push(Event event) { 073 events.add(event); 074 String eventName = event.getName(); 075 if (eventName != null) { 076 eventNames.add(eventName); 077 } 078 } 079 080 @Override 081 public int size() { 082 return events.size(); 083 } 084 085 @Override 086 public Iterator<Event> iterator() { 087 return events.iterator(); 088 } 089 090 @Override 091 public VMID getSourceVMID() { 092 return vmid; 093 } 094 095 @Override 096 public boolean containsEventName(String eventName) { 097 if (eventName == null) { 098 return false; 099 } 100 return eventNames.contains(eventName); 101 } 102 103}