Example usage for org.apache.commons.lang3.tuple Pair getValue

List of usage examples for org.apache.commons.lang3.tuple Pair getValue

Introduction

In this page you can find the example usage for org.apache.commons.lang3.tuple Pair getValue.

Prototype

@Override
public R getValue() 

Source Link

Document

Gets the value from this pair.

This method implements the Map.Entry interface returning the right element as the value.

Usage

From source file:org.apache.samza.sql.serializers.TestSamzaSqlRelRecordSerde.java

@Test
public void testNestedRecordConversion() {
    Map<String, String> props = new HashMap<>();
    SystemStream ss1 = new SystemStream("test", "nestedRecord");
    props.put(String.format(ConfigBasedAvroRelSchemaProviderFactory.CFG_SOURCE_SCHEMA, ss1.getSystem(),
            ss1.getStream()), Profile.SCHEMA$.toString());
    ConfigBasedAvroRelSchemaProviderFactory factory = new ConfigBasedAvroRelSchemaProviderFactory();
    AvroRelSchemaProvider nestedRecordSchemaProvider = (AvroRelSchemaProvider) factory.create(ss1,
            new MapConfig(props));
    AvroRelConverter nestedRecordAvroRelConverter = new AvroRelConverter(ss1, nestedRecordSchemaProvider,
            new MapConfig());

    Pair<SamzaSqlRelMessage, GenericData.Record> messageRecordPair = TestSamzaSqlRelMessageSerde
            .createNestedSamzaSqlRelMessage(nestedRecordAvroRelConverter);
    SamzaSqlRelRecordSerdeFactory.SamzaSqlRelRecordSerde serde = (SamzaSqlRelRecordSerdeFactory.SamzaSqlRelRecordSerde) new SamzaSqlRelRecordSerdeFactory()
            .getSerde(null, null);//from   w  w w. ja  va  2  s  .  c  om
    SamzaSqlRelRecord resultRecord = serde
            .fromBytes(serde.toBytes(messageRecordPair.getKey().getSamzaSqlRelRecord()));
    GenericData.Record recordPostConversion = (GenericData.Record) nestedRecordAvroRelConverter
            .convertToAvroObject(resultRecord, Profile.SCHEMA$);

    for (Schema.Field field : Profile.SCHEMA$.getFields()) {
        // equals() on GenericRecord does the nested record equality check as well.
        Assert.assertEquals(messageRecordPair.getValue().get(field.name()),
                recordPostConversion.get(field.name()));
    }
}

From source file:org.apache.spark.network.client.TransportResponseHandler.java

@Override
public void handle(ResponseMessage message) throws Exception {
    if (message instanceof ChunkFetchSuccess) {
        ChunkFetchSuccess resp = (ChunkFetchSuccess) message;
        ChunkReceivedCallback listener = outstandingFetches.get(resp.streamChunkId);
        if (listener == null) {
            logger.warn("Ignoring response for block {} from {} since it is not outstanding",
                    resp.streamChunkId, getRemoteAddress(channel));
            resp.body().release();// w w  w.ja  v  a2s .co  m
        } else {
            outstandingFetches.remove(resp.streamChunkId);
            listener.onSuccess(resp.streamChunkId.chunkIndex, resp.body());
            resp.body().release();
        }
    } else if (message instanceof ChunkFetchFailure) {
        ChunkFetchFailure resp = (ChunkFetchFailure) message;
        ChunkReceivedCallback listener = outstandingFetches.get(resp.streamChunkId);
        if (listener == null) {
            logger.warn("Ignoring response for block {} from {} ({}) since it is not outstanding",
                    resp.streamChunkId, getRemoteAddress(channel), resp.errorString);
        } else {
            outstandingFetches.remove(resp.streamChunkId);
            listener.onFailure(resp.streamChunkId.chunkIndex, new ChunkFetchFailureException(
                    "Failure while fetching " + resp.streamChunkId + ": " + resp.errorString));
        }
    } else if (message instanceof RpcResponse) {
        RpcResponse resp = (RpcResponse) message;
        RpcResponseCallback listener = outstandingRpcs.get(resp.requestId);
        if (listener == null) {
            logger.warn("Ignoring response for RPC {} from {} ({} bytes) since it is not outstanding",
                    resp.requestId, getRemoteAddress(channel), resp.body().size());
        } else {
            outstandingRpcs.remove(resp.requestId);
            try {
                listener.onSuccess(resp.body().nioByteBuffer());
            } finally {
                resp.body().release();
            }
        }
    } else if (message instanceof RpcFailure) {
        RpcFailure resp = (RpcFailure) message;
        RpcResponseCallback listener = outstandingRpcs.get(resp.requestId);
        if (listener == null) {
            logger.warn("Ignoring response for RPC {} from {} ({}) since it is not outstanding", resp.requestId,
                    getRemoteAddress(channel), resp.errorString);
        } else {
            outstandingRpcs.remove(resp.requestId);
            listener.onFailure(new RuntimeException(resp.errorString));
        }
    } else if (message instanceof StreamResponse) {
        StreamResponse resp = (StreamResponse) message;
        Pair<String, StreamCallback> entry = streamCallbacks.poll();
        if (entry != null) {
            StreamCallback callback = entry.getValue();
            if (resp.byteCount > 0) {
                StreamInterceptor interceptor = new StreamInterceptor(this, resp.streamId, resp.byteCount,
                        callback);
                try {
                    TransportFrameDecoder frameDecoder = (TransportFrameDecoder) channel.pipeline()
                            .get(TransportFrameDecoder.HANDLER_NAME);
                    frameDecoder.setInterceptor(interceptor);
                    streamActive = true;
                } catch (Exception e) {
                    logger.error("Error installing stream handler.", e);
                    deactivateStream();
                }
            } else {
                try {
                    callback.onComplete(resp.streamId);
                } catch (Exception e) {
                    logger.warn("Error in stream handler onComplete().", e);
                }
            }
        } else {
            logger.error("Could not find callback for StreamResponse.");
        }
    } else if (message instanceof StreamFailure) {
        StreamFailure resp = (StreamFailure) message;
        Pair<String, StreamCallback> entry = streamCallbacks.poll();
        if (entry != null) {
            StreamCallback callback = entry.getValue();
            try {
                callback.onFailure(resp.streamId, new RuntimeException(resp.error));
            } catch (IOException ioe) {
                logger.warn("Error in stream failure handler.", ioe);
            }
        } else {
            logger.warn("Stream failure with unknown callback: {}", resp.error);
        }
    } else {
        throw new IllegalStateException("Unknown response type: " + message.type());
    }
}

From source file:org.apache.syncope.client.cli.commands.configuration.ConfigurationUpdate.java

public void update() {
    if (input.parameterNumber() >= 1) {
        List<AttrTO> attrList = new ArrayList<>();
        boolean failed = false;
        for (String parameter : input.getParameters()) {
            Pair<String, String> pairParameter = Input.toPairParameter(parameter);
            try {
                AttrTO attrTO = configurationSyncopeOperations.get(pairParameter.getKey());
                attrTO.getValues().clear();
                attrTO.getValues().add(pairParameter.getValue());
                configurationSyncopeOperations.set(attrTO);
                attrList.add(attrTO);/* w w w.  j ava 2  s  .c  o m*/
            } catch (IllegalArgumentException ex) {
                LOG.error("Error updating configuration", ex);
                configurationResultManager.genericError(ex.getMessage());
                configurationResultManager.genericError(UPDATE_HELP_MESSAGE);
                failed = true;
                break;
            } catch (SyncopeClientException | WebServiceException ex) {
                LOG.error("Error updating configuration", ex);
                if (ex.getMessage().startsWith("NotFound")) {
                    configurationResultManager.notFoundError("Configuration", pairParameter.getKey());
                } else if (ex.getMessage().startsWith("InvalidValues")) {
                    configurationResultManager.genericError(
                            pairParameter.getValue() + " is not a valid value for " + pairParameter.getKey());
                } else {
                    configurationResultManager.genericError(ex.getMessage());
                }
                failed = true;
                break;
            }
        }
        if (!failed) {
            configurationResultManager.fromUpdate(attrList);
        }
    } else {
        configurationResultManager.commandOptionError(UPDATE_HELP_MESSAGE);
    }
}

From source file:org.apache.syncope.client.cli.commands.logger.LoggerCreate.java

public void create() {
    if (input.parameterNumber() >= 1) {
        final List<LoggerTO> loggerTOs = new ArrayList<>();
        boolean failed = false;
        for (String parameter : input.getParameters()) {
            LoggerTO loggerTO = new LoggerTO();
            Pair<String, String> pairParameter = Input.toPairParameter(parameter);
            try {
                loggerTO.setKey(pairParameter.getKey());
                loggerTO.setLevel(LoggerLevel.valueOf(pairParameter.getValue()));
                loggerSyncopeOperations.update(loggerTO);
                loggerTOs.add(loggerTO);
            } catch (WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
                LOG.error("Error creating logger", ex);
                loggerResultManager.typeNotValidError("logger level", input.firstParameter(),
                        CommandUtils.fromEnumToArray(LoggerLevel.class));
                failed = true;/*w  ww. jav a 2 s. c om*/
                break;
            }
        }
        if (!failed) {
            loggerResultManager.fromUpdate(loggerTOs);
        }
    } else {
        loggerResultManager.commandOptionError(CREATE_HELP_MESSAGE);
    }
}

From source file:org.apache.syncope.client.cli.commands.logger.LoggerUpdate.java

public void update() {
    if (input.parameterNumber() >= 1) {
        final List<LoggerTO> loggerTOs = new ArrayList<>();
        boolean failed = false;
        for (String parameter : input.getParameters()) {
            Pair<String, String> pairParameter = Input.toPairParameter(parameter);
            try {
                LoggerTO loggerTO = loggerSyncopeOperations.read(pairParameter.getKey());
                loggerTO.setLevel(LoggerLevel.valueOf(pairParameter.getValue()));
                loggerSyncopeOperations.update(loggerTO);
                loggerTOs.add(loggerTO);
            } catch (WebServiceException | SyncopeClientException | IllegalArgumentException ex) {
                LOG.error("Error updating logger", ex);
                if (ex.getMessage().startsWith("No enum constant org.apache.syncope.common.lib.types.")) {
                    loggerResultManager.typeNotValidError("logger level", input.firstParameter(),
                            CommandUtils.fromEnumToArray(LoggerLevel.class));
                } else if ("Parameter syntax error!".equalsIgnoreCase(ex.getMessage())) {
                    loggerResultManager.genericError(ex.getMessage());
                    loggerResultManager.genericError(UPDATE_HELP_MESSAGE);
                } else if (ex.getMessage().startsWith("NotFound")) {
                    loggerResultManager.notFoundError("Logger", parameter);
                } else {
                    loggerResultManager.genericError(ex.getMessage());
                    loggerResultManager.genericError(UPDATE_HELP_MESSAGE);
                }/*from   w w  w. j  ava2s  .c  om*/
                failed = true;
                break;
            }
        }
        if (!failed) {
            loggerResultManager.fromUpdate(loggerTOs);
        }
    } else {
        loggerResultManager.commandOptionError(UPDATE_HELP_MESSAGE);
    }
}

From source file:org.apache.syncope.client.cli.commands.user.UserDeleteByAttribute.java

public void delete() {
    if (input.parameterNumber() == 2) {
        String realm = input.firstParameter();
        Pair<String, String> pairParameter = Input.toPairParameter(input.secondParameter());
        try {/*w  w  w. ja va 2 s . c o m*/
            if (!realmSyncopeOperations.exists(realm)) {
                userResultManager.notFoundError("Realm", realm);
                return;
            }
            Map<String, BulkActionResult.Status> results = userSyncopeOperations.deleteByAttribute(realm,
                    pairParameter.getKey(), pairParameter.getValue());
            Map<String, String> failedUsers = new HashMap<>();
            int deletedUsers = 0;
            for (final Map.Entry<String, BulkActionResult.Status> entrySet : results.entrySet()) {
                String userId = entrySet.getKey();
                BulkActionResult.Status status = entrySet.getValue();
                if (BulkActionResult.Status.SUCCESS == status) {
                    deletedUsers++;
                } else {
                    failedUsers.put(userId, status.name());
                }
            }
            userResultManager.genericMessage("Deleted users: " + deletedUsers);
            if (!failedUsers.isEmpty()) {
                userResultManager.printFailedUsers(failedUsers);
            }
        } catch (WebServiceException | SyncopeClientException ex) {
            LOG.error("Error searching user", ex);
            if (ex.getMessage().startsWith("NotFound")) {
                userResultManager.notFoundError("User with " + pairParameter.getKey(),
                        pairParameter.getValue());
            } else {
                userResultManager.genericError(ex.getMessage());
            }
        } catch (IllegalArgumentException ex) {
            LOG.error("Error searching user", ex);
            userResultManager.genericError(ex.getMessage());
            userResultManager.genericError(SEARCH_HELP_MESSAGE);
        }
    } else {
        userResultManager.commandOptionError(SEARCH_HELP_MESSAGE);
    }
}

From source file:org.apache.syncope.client.cli.commands.user.UserSearchByAttribute.java

public void search() {
    if (input.parameterNumber() == 2) {
        String realm = input.firstParameter();
        Pair<String, String> pairParameter = Input.toPairParameter(input.secondParameter());
        try {/*  w w w.  jav a 2  s.c o m*/
            if (!realmSyncopeOperations.exists(realm)) {
                userResultManager.genericMessage(
                        "Operation performed on root realm because " + realm + " does not exists");
            }
            List<UserTO> userTOs = userSyncopeOperations.searchByAttribute(realm, pairParameter.getKey(),
                    pairParameter.getValue());
            if (userTOs.isEmpty()) {
                userResultManager.genericMessage("No users found with attribute " + pairParameter.getKey()
                        + " and value " + pairParameter.getValue());
            } else {
                userResultManager.printUsers(userTOs);
            }
        } catch (WebServiceException | SyncopeClientException ex) {
            LOG.error("Error searching user", ex);
            if (ex.getMessage().startsWith("NotFound")) {
                userResultManager.notFoundError("User with " + pairParameter.getKey(),
                        pairParameter.getValue());
            } else {
                userResultManager.genericError(ex.getMessage());
            }
        } catch (IllegalArgumentException ex) {
            LOG.error("Error searching user", ex);
            userResultManager.genericError(ex.getMessage());
            userResultManager.genericError(SEARCH_HELP_MESSAGE);
        }
    } else {
        userResultManager.commandOptionError(SEARCH_HELP_MESSAGE);
    }
}

From source file:org.apache.syncope.client.console.events.EventCategoryPanel.java

public EventCategoryPanel(final String id, final List<EventCategoryTO> eventCategoryTOs,
        final IModel<List<String>> model) {

    super(id);/*from w  w w. ja v a2 s.c  om*/

    this.model = model;
    selectedEventsPanel = new SelectedEventsPanel("selectedEventsPanel", model);
    add(selectedEventsPanel);

    this.eventCategoryTOs = eventCategoryTOs;

    categoryContainer = new WebMarkupContainer("categoryContainer");
    categoryContainer.setOutputMarkupId(true);
    add(categoryContainer);

    eventsContainer = new WebMarkupContainer("eventsContainer");
    eventsContainer.setOutputMarkupId(true);
    add(eventsContainer);

    authorizeList();
    authorizeChanges();

    type = new AjaxDropDownChoicePanel<>("type", "type", new PropertyModel<>(eventCategoryTO, "type"), false);
    type.setChoices(Arrays.asList(EventCategoryType.values()));
    type.setStyleSheet("ui-widget-content ui-corner-all");
    type.setChoiceRenderer(new IChoiceRenderer<EventCategoryType>() {

        private static final long serialVersionUID = 2317134950949778735L;

        @Override
        public String getDisplayValue(final EventCategoryType eventCategoryType) {
            return eventCategoryType.name();
        }

        @Override
        public String getIdValue(final EventCategoryType eventCategoryType, final int i) {
            return eventCategoryType.name();
        }

        @Override
        public EventCategoryType getObject(final String id,
                final IModel<? extends List<? extends EventCategoryType>> choices) {
            return choices.getObject().stream().filter(object -> object.name().equals(id)).findAny()
                    .orElse(null);
        }
    });
    categoryContainer.add(type);

    type.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, type));
        }
    });

    category = new AjaxDropDownChoicePanel<>("category", "category",
            new PropertyModel<>(eventCategoryTO, "category"), false);
    category.setChoices(filter(eventCategoryTOs, type.getModelObject()));
    categoryContainer.add(category);

    category.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306811L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, category));
        }
    });

    subcategory = new AjaxDropDownChoicePanel<>("subcategory", "subcategory",
            new PropertyModel<>(eventCategoryTO, "subcategory"), false);
    subcategory.setChoices(filter(eventCategoryTOs, type.getModelObject(), category.getModelObject()));
    categoryContainer.add(subcategory);

    subcategory.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

        private static final long serialVersionUID = -1107858522700306812L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            send(EventCategoryPanel.this, Broadcast.EXACT, new ChangeCategoryEvent(target, subcategory));
        }
    });

    categoryContainer.add(new Label("customLabel", new ResourceModel("custom", "custom")).setVisible(false));

    custom = new AjaxTextFieldPanel("custom", "custom", new Model<>(null));
    custom.setVisible(false);
    custom.setEnabled(false);

    categoryContainer.add(custom.hideLabel());

    actionsPanel = new ActionsPanel<>("customActions", null);
    actionsPanel.add(new ActionLink<EventCategoryTO>() {

        private static final long serialVersionUID = -3722207913631435501L;

        @Override
        public void onClick(final AjaxRequestTarget target, final EventCategoryTO ignore) {
            if (StringUtils.isNotBlank(custom.getModelObject())) {
                Pair<EventCategoryTO, AuditElements.Result> parsed = AuditLoggerName
                        .parseEventCategory(custom.getModelObject());

                String eventString = AuditLoggerName.buildEvent(parsed.getKey().getType(), null, null,
                        parsed.getKey().getEvents().isEmpty() ? StringUtils.EMPTY
                                : parsed.getKey().getEvents().iterator().next(),
                        parsed.getValue());

                custom.setModelObject(StringUtils.EMPTY);
                send(EventCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(target,
                        Collections.<String>singleton(eventString), Collections.<String>emptySet()));
                target.add(categoryContainer);
            }
        }
    }, ActionLink.ActionType.CREATE, StringUtils.EMPTY).hideLabel();
    actionsPanel.add(new ActionLink<EventCategoryTO>() {

        private static final long serialVersionUID = -3722207913631435521L;

        @Override
        public void onClick(final AjaxRequestTarget target, final EventCategoryTO ignore) {
            if (StringUtils.isNotBlank(custom.getModelObject())) {
                Pair<EventCategoryTO, AuditElements.Result> parsed = AuditLoggerName
                        .parseEventCategory(custom.getModelObject());

                String eventString = AuditLoggerName.buildEvent(parsed.getKey().getType(), null, null,
                        parsed.getKey().getEvents().isEmpty() ? StringUtils.EMPTY
                                : parsed.getKey().getEvents().iterator().next(),
                        parsed.getValue());

                custom.setModelObject(StringUtils.EMPTY);
                send(EventCategoryPanel.this.getPage(), Broadcast.BREADTH, new EventSelectionChanged(target,
                        Collections.<String>emptySet(), Collections.<String>singleton(eventString)));
                target.add(categoryContainer);
            }
        }
    }, ActionLink.ActionType.DELETE, StringUtils.EMPTY, true).hideLabel();

    categoryContainer.add(actionsPanel);

    actionsPanel.setVisible(false);
    actionsPanel.setEnabled(false);
    actionsPanel.setMarkupId("inline-actions");

    eventsContainer.add(new EventSelectionPanel("eventsPanel", eventCategoryTO, model) {

        private static final long serialVersionUID = 3513194801190026082L;

        @Override
        protected void onEventAction(final IEvent<?> event) {
            EventCategoryPanel.this.onEventAction(event);
        }
    });
}

From source file:org.apache.syncope.client.console.pages.Audit.java

public Audit(final PageParameters parameters) {
    super(parameters);

    body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));

    final LoggerRestClient loggerRestClient = new LoggerRestClient();

    List<String> events = loggerRestClient.listAudits().stream()
            .map(audit -> AuditLoggerName.buildEvent(audit.getType(), audit.getCategory(),
                    audit.getSubcategory(), audit.getEvent(), audit.getResult()))
            .collect(Collectors.toList());

    WebMarkupContainer content = new WebMarkupContainer("content");
    content.setOutputMarkupId(true);//w  w w. j  a v a 2  s. co m

    Form<?> form = new Form<>("auditForm");
    content.add(form);

    form.add(new EventCategoryPanel("auditPanel", loggerRestClient.listEvents(), new ListModel<>(events)) {

        private static final long serialVersionUID = 6113164334533550277L;

        @Override
        protected List<String> getListAuthRoles() {
            return Collections.singletonList(StandardEntitlement.AUDIT_LIST);
        }

        @Override
        protected List<String> getChangeAuthRoles() {
            return Arrays.asList(
                    new String[] { StandardEntitlement.AUDIT_ENABLE, StandardEntitlement.AUDIT_DISABLE });
        }

        @Override
        public void onEventAction(final IEvent<?> event) {
            if (event.getPayload() instanceof SelectedEventsPanel.EventSelectionChanged) {
                final SelectedEventsPanel.EventSelectionChanged eventSelectionChanged = (SelectedEventsPanel.EventSelectionChanged) event
                        .getPayload();

                eventSelectionChanged.getToBeRemoved().forEach(toBeRemoved -> {
                    Pair<EventCategoryTO, AuditElements.Result> eventCategory = AuditLoggerName
                            .parseEventCategory(toBeRemoved);

                    AuditLoggerName auditLoggerName = new AuditLoggerName(eventCategory.getKey().getType(),
                            eventCategory.getKey().getCategory(), eventCategory.getKey().getSubcategory(),
                            CollectionUtils.isEmpty(eventCategory.getKey().getEvents()) ? null
                                    : eventCategory.getKey().getEvents().iterator().next(),
                            eventCategory.getValue());

                    loggerRestClient.disableAudit(auditLoggerName);
                });

                eventSelectionChanged.getToBeAdded().forEach(toBeAdded -> {
                    Pair<EventCategoryTO, AuditElements.Result> eventCategory = AuditLoggerName
                            .parseEventCategory(toBeAdded);

                    AuditLoggerName auditLoggerName = new AuditLoggerName(eventCategory.getKey().getType(),
                            eventCategory.getKey().getCategory(), eventCategory.getKey().getSubcategory(),
                            CollectionUtils.isEmpty(eventCategory.getKey().getEvents()) ? null
                                    : eventCategory.getKey().getEvents().iterator().next(),
                            eventCategory.getValue());

                    loggerRestClient.enableAudit(auditLoggerName);
                });
            }
        }
    });

    body.add(content);
}

From source file:org.apache.syncope.client.console.pages.Reports.java

@SuppressWarnings("rawtypes")
private void setupAudit() {
    auditContainer = new WebMarkupContainer("auditContainer");
    auditContainer.setOutputMarkupId(true);
    add(auditContainer);//from   ww  w. j  a  v a  2 s . com

    MetaDataRoleAuthorizationStrategy.authorize(auditContainer, RENDER,
            xmlRolesReader.getEntitlement("Audit", "list"));

    final Form form = new Form("auditForm");
    auditContainer.add(form);

    final List<String> events = new ArrayList<>();

    final List<AuditLoggerName> audits = loggerRestClient.listAudits();
    for (AuditLoggerName audit : audits) {
        events.add(AuditLoggerName.buildEvent(audit.getType(), audit.getCategory(), audit.getSubcategory(),
                audit.getEvent(), audit.getResult()));
    }

    final ListModel<String> model = new ListModel<>(new ArrayList<>(events));

    form.add(new LoggerCategoryPanel("events", loggerRestClient.listEvents(), model, getPageReference(),
            "Reports") {

        private static final long serialVersionUID = 6113164334533550277L;

        @Override
        protected String[] getListRoles() {
            return new String[] { xmlRolesReader.getEntitlement("Audit", "list") };
        }

        @Override
        protected String[] getChangeRoles() {
            return new String[] { xmlRolesReader.getEntitlement("Audit", "enable"),
                    xmlRolesReader.getEntitlement("Audit", "disable") };
        }

        @Override
        public void onEventAction(final IEvent<?> event) {
            if (event.getPayload() instanceof SelectedEventsPanel.EventSelectionChanged) {

                final SelectedEventsPanel.EventSelectionChanged eventSelectionChanged = (SelectedEventsPanel.EventSelectionChanged) event
                        .getPayload();

                for (String toBeRemoved : eventSelectionChanged.getToBeRemoved()) {
                    if (events.contains(toBeRemoved)) {
                        Pair<EventCategoryTO, Result> eventCategory = AuditLoggerName
                                .parseEventCategory(toBeRemoved);

                        final AuditLoggerName auditLoggerName = new AuditLoggerName(
                                eventCategory.getKey().getType(), eventCategory.getKey().getCategory(),
                                eventCategory.getKey().getSubcategory(),
                                CollectionUtils.isEmpty(eventCategory.getKey().getEvents()) ? null
                                        : eventCategory.getKey().getEvents().iterator().next(),
                                eventCategory.getValue());

                        loggerRestClient.disableAudit(auditLoggerName);
                        events.remove(toBeRemoved);
                    }
                }

                for (String toBeAdded : eventSelectionChanged.getToBeAdded()) {
                    if (!events.contains(toBeAdded)) {
                        Pair<EventCategoryTO, Result> eventCategory = AuditLoggerName
                                .parseEventCategory(toBeAdded);

                        final AuditLoggerName auditLoggerName = new AuditLoggerName(
                                eventCategory.getKey().getType(), eventCategory.getKey().getCategory(),
                                eventCategory.getKey().getSubcategory(),
                                CollectionUtils.isEmpty(eventCategory.getKey().getEvents()) ? null
                                        : eventCategory.getKey().getEvents().iterator().next(),
                                eventCategory.getValue());

                        loggerRestClient.enableAudit(auditLoggerName);
                        events.add(toBeAdded);
                    }
                }
            }
        }
    });
}