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.ResourceOperation;
24 import org.apache.syncope.core.persistence.api.entity.task.PropagationData;
25 import org.apache.syncope.core.provisioning.api.propagation.PropagationActions;
26 import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskInfo;
27 import org.apache.syncope.core.spring.implementation.InstanceScope;
28 import org.apache.syncope.core.spring.implementation.SyncopeImplementation;
29 import org.identityconnectors.framework.common.objects.Attribute;
30 import org.identityconnectors.framework.common.objects.AttributeUtil;
31 import org.identityconnectors.framework.common.objects.Name;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34 import org.springframework.transaction.annotation.Transactional;
35
36
37
38
39
40
41
42 @SyncopeImplementation(scope = InstanceScope.PER_CONTEXT)
43 public class AzurePropagationActions implements PropagationActions {
44
45 protected static final Logger LOG = LoggerFactory.getLogger(AzurePropagationActions.class);
46
47 protected String getEmailAttrName() {
48 return "mailNickname";
49 }
50
51 protected void setName(final PropagationTaskInfo taskInfo) {
52 PropagationData data = taskInfo.getPropagationData();
53 if (data.getAttributes() != null) {
54 Set<Attribute> attrs = data.getAttributes();
55
56 if (AttributeUtil.find(getEmailAttrName(), attrs) == null) {
57 LOG.warn("Can't find {} to set as {} attribute value, skipping...", getEmailAttrName(), Name.NAME);
58 return;
59 }
60
61 Optional.ofNullable(AttributeUtil.getNameFromAttributes(attrs)).ifPresent(attrs::remove);
62 attrs.add(new Name(AttributeUtil.find(getEmailAttrName(), attrs).getValue().get(0).toString()));
63 }
64 }
65
66 @Transactional
67 @Override
68 public void before(final PropagationTaskInfo taskInfo) {
69 if (taskInfo.getOperation() == ResourceOperation.DELETE || taskInfo.getOperation() == ResourceOperation.NONE) {
70 return;
71 }
72
73 switch (taskInfo.getAnyTypeKind()) {
74 case USER:
75 setName(taskInfo);
76 break;
77
78 case GROUP:
79 setName(taskInfo);
80 break;
81
82 default:
83 LOG.debug("Not about user or group: not doing anything");
84 }
85 }
86 }