001
014
015 package com.liferay.portal.kernel.registry;
016
017 import com.liferay.portal.kernel.util.Accessor;
018 import com.liferay.portal.kernel.util.Function;
019 import com.liferay.registry.ServiceReference;
020 import com.liferay.registry.collections.ServiceMapper;
021 import com.liferay.registry.collections.ServiceReferenceMapper;
022
023
026 public class ServiceReferenceMapperFactory {
027
028 public static <K, S> ServiceReferenceMapper<K, S> create(
029 final Accessor<S, K> accessor) {
030
031 return new ServiceReferenceMapper<K, S>() {
032
033 @Override
034 public void map(
035 ServiceReference<S> serviceReference, Emitter<K> emitter) {
036
037 com.liferay.registry.collections.ServiceReferenceMapperFactory.
038 create(
039 new ServiceMapper<K, S>() {
040
041 @Override
042 public void map(S service, Emitter<K> emitter) {
043 emitter.emit(accessor.get(service));
044 }
045
046 });
047 }
048
049 };
050 }
051
052 public static <K, S> ServiceReferenceMapper<K, S> create(
053 final Function<S, K> function) {
054
055 return new ServiceReferenceMapper<K, S>() {
056
057 @Override
058 public void map(
059 ServiceReference<S> serviceReference, Emitter<K> emitter) {
060
061 com.liferay.registry.collections.ServiceReferenceMapperFactory.
062 create(
063 new ServiceMapper<K, S>() {
064
065 @Override
066 public void map(S service, Emitter<K> emitter) {
067 emitter.emit(function.apply(service));
068 }
069
070 });
071 }
072
073 };
074 }
075
076 }