
com.liferay.notification.internal.term.evaluator.NotificationTermEvaluatorTrackerImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.notification.service
Show all versions of com.liferay.notification.service
Liferay Notification Service
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
package com.liferay.notification.internal.term.evaluator;
import com.liferay.notification.term.evaluator.NotificationTermEvaluator;
import com.liferay.notification.term.evaluator.NotificationTermEvaluatorTracker;
import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerCustomizerFactory;
import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMap;
import com.liferay.osgi.service.tracker.collections.map.ServiceTrackerMapFactory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
/**
* @author Gustavo Lima
*/
@Component(service = NotificationTermEvaluatorTracker.class)
public class NotificationTermEvaluatorTrackerImpl
implements NotificationTermEvaluatorTracker {
@Override
public List getNotificationTermEvaluators(
String className) {
return _getNotificationTermEvaluators(className, _serviceTrackerMap);
}
@Activate
protected void activate(BundleContext bundleContext) {
_serviceTrackerMap = ServiceTrackerMapFactory.openMultiValueMap(
bundleContext, NotificationTermEvaluator.class, "class.name",
ServiceTrackerCustomizerFactory.serviceWrapper(bundleContext));
}
@Deactivate
protected void deactivate() {
_serviceTrackerMap.close();
}
private List _getNotificationTermEvaluators(
String key,
ServiceTrackerMap
>> serviceTrackerMap) {
if (key == null) {
return Collections.singletonList(_defaultNotificationTermEvaluator);
}
List
> notificationTermEvaluatorWrappers =
serviceTrackerMap.getService(key);
if (notificationTermEvaluatorWrappers == null) {
return Collections.singletonList(_defaultNotificationTermEvaluator);
}
List notificationTermEvaluators =
new ArrayList<>();
for (ServiceTrackerCustomizerFactory.ServiceWrapper
tableActionProviderServiceWrapper :
notificationTermEvaluatorWrappers) {
notificationTermEvaluators.add(
tableActionProviderServiceWrapper.getService());
}
return notificationTermEvaluators;
}
private static final NotificationTermEvaluator
_defaultNotificationTermEvaluator = (context, object, termName) -> {
if (!(object instanceof Map)) {
return termName;
}
Map termValues = (Map)object;
return termValues.get(termName);
};
private ServiceTrackerMap
>> _serviceTrackerMap;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy