1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.provisioning.java.propagation;
20
21 import java.util.Optional;
22 import java.util.Set;
23 import org.apache.syncope.common.lib.types.AnyTypeKind;
24 import org.apache.syncope.common.lib.types.ResourceOperation;
25 import org.apache.syncope.core.persistence.api.entity.task.PropagationData;
26 import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
27 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
28 import org.apache.syncope.core.spring.implementation.InstanceScope;
29 import org.apache.syncope.core.spring.implementation.SyncopeImplementation;
30 import org.identityconnectors.framework.common.objects.Attribute;
31 import org.identityconnectors.framework.common.objects.AttributeUtil;
32 import org.identityconnectors.framework.common.objects.Name;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
35 import org.springframework.transaction.annotation.Transactional;
36
37
38
39
40
41
42
43 @SyncopeImplementation(scope = InstanceScope.PER_CONTEXT)
44 public class GoogleAppsPropagationActions implements PropagationActions {
45
46 protected static final Logger LOG = LoggerFactory.getLogger(GoogleAppsPropagationActions.class);
47
48 protected String getEmailAttrName() {
49 return "emails";
50 }
51
52 @Transactional
53 @Override
54 public void before(final PropagationTaskInfo taskInfo) {
55 if (taskInfo.getOperation() == ResourceOperation.DELETE || taskInfo.getOperation() == ResourceOperation.NONE) {
56 return;
57 }
58 if (AnyTypeKind.USER != taskInfo.getAnyTypeKind()) {
59 return;
60 }
61
62 PropagationData data = taskInfo.getPropagationData();
63 if (data.getAttributes() != null) {
64 Set<Attribute> attrs = data.getAttributes();
65
66 if (AttributeUtil.find(getEmailAttrName(), attrs) == null) {
67 LOG.warn("Can't find {} to set as {} attribute value, skipping...", getEmailAttrName(), Name.NAME);
68 return;
69 }
70
71 Optional.ofNullable(AttributeUtil.getNameFromAttributes(attrs)).ifPresent(attrs::remove);
72 attrs.add(new Name(AttributeUtil.find(getEmailAttrName(), attrs).getValue().get(0).toString()));
73 }
74 }
75 }