/** * Calls an event with the given details. * <p> * This method only synchronizes when the event is not asynchronous. * * @param event Event details */ public void callEvent(Event event) { if (event.isAsynchronous()) { if (Thread.holdsLock(this)) { throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from inside synchronized code."); } if (server.isPrimaryThread()) { throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from primary server thread."); } fireEvent(event); } else { synchronized (this) { fireEvent(event); } } }
private void fireEvent(Event event) { HandlerList handlers = event.getHandlers(); RegisteredListener[] listeners = handlers.getRegisteredListeners(); for (RegisteredListener registration : listeners) { if (!registration.getPlugin().isEnabled()) { continue; } try { registration.callEvent(event); } catch (AuthorNagException ex) { Plugin plugin = registration.getPlugin(); if (plugin.isNaggable()) { plugin.setNaggable(false); server.getLogger().log(Level.SEVERE, String.format( "Nag author(s): '%s' of '%s' about the following: %s", plugin.getDescription().getAuthors(), plugin.getDescription().getFullName(), ex.getMessage() )); } } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName(), ex); } } }
if (event.getHandlers().getRegisteredListeners().length == 0) { return event; if (event.isAsynchronous()) { server.getPluginManager().callEvent(event); return event;
private String getEventName(@Nullable Event event) { return event != null ? event.getEventName() : "?"; }
/** * Build a cache of listeners registered for an event. * * @param event The event * @return A list of handlers */ private static List<Handler> getHandlers(Event event) { List<Handler> handlers = Lists.newArrayList(); for (RegisteredListener listener : event.getHandlers().getRegisteredListeners()) { handlers.add(new Handler(listener.getListener().getClass().getName(), listener.getPlugin())); } return handlers; }
@Override public void callEvent(Event event) throws EventException { if (event.isAsynchronous()) { super.callEvent(event); return; } count++; Class<? extends Event> newEventClass = event.getClass(); if (this.eventClass == null) { this.eventClass = newEventClass; } else if (!this.eventClass.equals(newEventClass)) { multiple = true; this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class); } long start = System.nanoTime(); super.callEvent(event); totalTime += System.nanoTime() - start; }
public void addEvent(Event event) { SQLiteDatabase writableDatabase = getWritableDatabase(); ContentValues values=new ContentValues(); values.put(MyDBHandler.COLUMN_ICON, event.getIcon()); values.put(MyDBHandler.COLUMN_EVENTNAME, event.getEventName()); writableDatabase.insert(MyDBHandler.TABLE_EVENTS, null, values); }
public class EventAdapter extends ArrayAdapter<Event> { public EventAdapter(Context context, ArrayList<Event> events) { super(context, 0, events); } @Override public View getView(int position, View convertView, ViewGroup parent) { // Get the data item for this position Event event = getItem(position); // Check if an existing view is being reused, otherwise inflate the view if (convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(R.layout.each_event, parent, false); } TextView eName = (TextView) convertView.findViewById(R.id.e_name); // get other views ... eName.setText(event.getEventName()); // set other views... return convertView; } }
event.getHandlers().unregister(listener); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return;
@Override public void callEvent(Event event) throws EventException { if (event.isAsynchronous()) { super.callEvent(event); return; } count++; Class<? extends Event> newEventClass = event.getClass(); if (this.eventClass == null) { this.eventClass = newEventClass; } else if (!this.eventClass.equals(newEventClass)) { multiple = true; this.eventClass = getCommonSuperclass(newEventClass, this.eventClass).asSubclass(Event.class); } long start = System.nanoTime(); super.callEvent(event); totalTime += System.nanoTime() - start; }
private void checkSafety(Event eventType) { //async executing of sync event String eventName = eventType.getEventName(); if (!eventType.isAsynchronous()) { actionManager.checkThreadSafety(eventName); } } }
private void fireEvent(Event event) { HandlerList handlers = event.getHandlers(); RegisteredListener[] listeners = handlers.getRegisteredListeners(); for (RegisteredListener registration : listeners) { if (!registration.getPlugin().isEnabled()) { continue; } try { registration.callEvent(event); } catch (AuthorNagException ex) { Plugin plugin = registration.getPlugin(); if (plugin.isNaggable()) { plugin.setNaggable(false); server.getLogger().log(Level.SEVERE, String.format( "Nag author(s): '%s' of '%s' about the following: %s", plugin.getDescription().getAuthors(), plugin.getDescription().getFullName(), ex.getMessage() )); } } catch (Throwable ex) { server.getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + registration.getPlugin().getDescription().getFullName(), ex); } } }
private void report(@Nullable User user, @NonNull Event e, @NonNull Location loc, @NonNull Flag flag, @NonNull Why why) { // A quick way to debug flag listener unit tests is to add this line here: System.out.println(why.name()); NOSONAR if (user != null && user.getPlayer().getMetadata(loc.getWorld().getName() + "_why_debug").stream() .filter(p -> p.getOwningPlugin().equals(getPlugin())).findFirst().map(MetadataValue::asBoolean).orElse(false)) { plugin.log("Why: " + e.getEventName() + " in world " + loc.getWorld().getName() + " at " + Util.xyz(loc.toVector())); plugin.log("Why: " + user.getName() + " " + flag.getID() + " - " + why.name()); } }
event.getHandlers().unregister(listener); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return;
public void execute(Listener listener, Event event) throws EventException { try { if (!eventClass.isAssignableFrom(event.getClass())) { return; } // Spigot start boolean isAsync = event.isAsynchronous(); if (!isAsync) timings.startTiming(); method.invoke(listener, event); if (!isAsync) timings.stopTiming(); // Spigot end } catch (InvocationTargetException ex) { throw new EventException(ex.getCause()); } catch (Throwable t) { throw new EventException(t); } } };
/** * Calls an event with the given details. * <p> * This method only synchronizes when the event is not asynchronous. * * @param event Event details */ public void callEvent(Event event) { if (event.isAsynchronous()) { if (Thread.holdsLock(this)) { throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from inside synchronized code."); } if (server.isPrimaryThread()) { throw new IllegalStateException(event.getEventName() + " cannot be triggered asynchronously from primary server thread."); } fireEvent(event); } else { synchronized (this) { fireEvent(event); } } }
plugin.logError("Check island had no associated user! " + e.getEventName()); report(user, e, loc, flag, Why.ERROR_NO_ASSOCIATED_USER); return false;
event.getHandlers().unregister(listener); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return;
@Override // 计算调用次数和花费总时间以及花费最多的时间 public void execute(Listener listener, Event e) throws EventException { if (e.isAsynchronous()) { this.eventExecutor.execute(listener, e); } else { long startTime = System.nanoTime(); try { this.eventExecutor.execute(listener, e); } finally { long endTime = System.nanoTime(); long executeTime = endTime - startTime; this.record(e.getEventName(), executeTime); } } }
event.getHandlers().unregister(listener); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return; event.getHandlers().unregister(listener); this.active.set(false); return;