Skip to content

Commit 206a384

Browse files
authored
Merge pull request #16 from openstandia/fix-filter-query
fix: can't fetch user/group by NAME
2 parents 1ad23b3 + 849eda7 commit 206a384

3 files changed

Lines changed: 28 additions & 21 deletions

File tree

src/main/java/jp/openstandia/connector/github/GitHubEMUGroupHandler.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.HashSet;
2626
import java.util.Set;
2727
import java.util.stream.Collectors;
28+
import java.util.stream.Stream;
2829

2930
import static jp.openstandia.connector.util.Utils.toZoneDateTimeForISO8601OffsetDateTime;
3031
import static org.identityconnectors.framework.common.objects.AttributeInfo.Flags.*;
@@ -96,22 +97,22 @@ public static SchemaDefinition.Builder createSchema(AbstractGitHubConfiguration
9697
},
9798
(add, dest) -> dest.addMembers(add),
9899
(remove, dest) -> dest.removeMembers(remove),
99-
(source) -> source.members.stream().filter(x -> x.ref.contains("/Users/")).map(x -> x.value),
100+
(source) -> source.members != null ? source.members.stream().filter(x -> x.ref.contains("/Users/")).map(x -> x.value) : Stream.empty(),
100101
null
101102
);
102103

103104
// Metadata (readonly)
104105
sb.add("meta.created",
105106
SchemaDefinition.Types.DATETIME,
106107
null,
107-
(source) -> toZoneDateTimeForISO8601OffsetDateTime(source.meta.created),
108+
(source) -> source.meta != null ? toZoneDateTimeForISO8601OffsetDateTime(source.meta.created) : null,
108109
null,
109110
NOT_CREATABLE, NOT_UPDATEABLE
110111
);
111112
sb.add("meta.lastModified",
112113
SchemaDefinition.Types.DATETIME,
113114
null,
114-
(source) -> toZoneDateTimeForISO8601OffsetDateTime(source.meta.lastModified),
115+
(source) -> source.meta != null ? toZoneDateTimeForISO8601OffsetDateTime(source.meta.lastModified) : null,
115116
null,
116117
NOT_CREATABLE, NOT_UPDATEABLE
117118
);
@@ -166,10 +167,10 @@ public int getByUid(Uid uid, ResultsHandler resultsHandler, OperationOptions opt
166167
public int getByName(Name name, ResultsHandler resultsHandler, OperationOptions options,
167168
Set<String> returnAttributesSet, Set<String> fetchFieldsSet,
168169
boolean allowPartialAttributeValues, int pageSize, int pageOffset) {
169-
SCIMEMUGroup user = client.getEMUGroup(name, options, fetchFieldsSet);
170+
SCIMEMUGroup group = client.getEMUGroup(name, options, fetchFieldsSet);
170171

171-
if (user != null) {
172-
resultsHandler.handle(toConnectorObject(schemaDefinition, user, returnAttributesSet, allowPartialAttributeValues));
172+
if (group != null) {
173+
resultsHandler.handle(toConnectorObject(schemaDefinition, group, returnAttributesSet, allowPartialAttributeValues));
173174
return 1;
174175
}
175176
return 0;

src/main/java/jp/openstandia/connector/github/GitHubEMUUserHandler.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import java.util.ArrayList;
2424
import java.util.Set;
25+
import java.util.stream.Stream;
2526

2627
import static jp.openstandia.connector.util.Utils.toZoneDateTimeForISO8601OffsetDateTime;
2728
import static org.identityconnectors.framework.common.objects.AttributeInfo.Flags.*;
@@ -200,7 +201,7 @@ public static SchemaDefinition.Builder createSchema(AbstractGitHubConfiguration
200201
null,
201202
null,
202203
null,
203-
(source) -> source.groups.stream().filter(x -> x.ref.contains("/Groups/")).map(x -> x.value),
204+
(source) -> source.groups != null ? source.groups.stream().filter(x -> x.ref.contains("/Groups/")).map(x -> x.value) : Stream.empty(),
204205
null,
205206
NOT_CREATABLE, NOT_UPDATEABLE, NOT_RETURNED_BY_DEFAULT
206207
);
@@ -209,14 +210,14 @@ public static SchemaDefinition.Builder createSchema(AbstractGitHubConfiguration
209210
sb.add("meta.created",
210211
SchemaDefinition.Types.DATETIME,
211212
null,
212-
(source) -> toZoneDateTimeForISO8601OffsetDateTime(source.meta.created),
213+
(source) -> source.meta != null ? toZoneDateTimeForISO8601OffsetDateTime(source.meta.created) : null,
213214
null,
214215
NOT_CREATABLE, NOT_UPDATEABLE
215216
);
216217
sb.add("meta.lastModified",
217218
SchemaDefinition.Types.DATETIME,
218219
null,
219-
(source) -> toZoneDateTimeForISO8601OffsetDateTime(source.meta.lastModified),
220+
(source) -> source.meta != null ? toZoneDateTimeForISO8601OffsetDateTime(source.meta.lastModified) : null,
220221
null,
221222
NOT_CREATABLE, NOT_UPDATEABLE
222223
);

src/main/java/org/kohsuke/github/GHEnterpriseExt.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.io.ByteArrayInputStream;
66
import java.io.IOException;
77
import java.io.InputStream;
8+
import java.util.List;
89

910
/**
1011
* GHEnterprise class.
@@ -65,12 +66,14 @@ public SCIMEMUUser getSCIMEMUUser(String scimUserId) throws IOException {
6566
}
6667

6768
public SCIMEMUUser getSCIMEMUUserByUserName(String scimUserName) throws IOException {
68-
SCIMEMUUser u = root.createRequest()
69-
.withHeader(SCIMConstants.HEADER_ACCEPT, SCIMConstants.SCIM_ACCEPT)
70-
.withHeader(SCIMConstants.HEADER_API_VERSION, SCIMConstants.GITHUB_API_VERSION)
71-
.withUrlPath(String.format("/scim/v2/enterprises/%s/Users?filter=userName eq \"%s\"", login, scimUserName))
72-
.fetch(SCIMEMUUser.class);
73-
return u;
69+
List<SCIMEMUUser> list = searchSCIMUsers()
70+
.eq("userName", scimUserName)
71+
.list()
72+
.toList();
73+
if (list.size() != 1) {
74+
return null;
75+
}
76+
return list.get(0);
7477
}
7578

7679
/**
@@ -142,12 +145,14 @@ public SCIMEMUGroup getSCIMEMUGroup(String scimGroupId) throws IOException {
142145
}
143146

144147
public SCIMEMUGroup getSCIMEMUGroupByDisplayName(String scimGroupDisplayName) throws IOException {
145-
SCIMEMUGroup g = root.createRequest()
146-
.withHeader(SCIMConstants.HEADER_ACCEPT, SCIMConstants.SCIM_ACCEPT)
147-
.withHeader(SCIMConstants.HEADER_API_VERSION, SCIMConstants.GITHUB_API_VERSION)
148-
.withUrlPath(String.format("/scim/v2/enterprises/%s/Groups?filter=displayName eq \"%s\"", login, scimGroupDisplayName))
149-
.fetch(SCIMEMUGroup.class);
150-
return g;
148+
List<SCIMEMUGroup> list = searchSCIMGroups()
149+
.eq("displayName", scimGroupDisplayName)
150+
.list()
151+
.toList();
152+
if (list.size() != 1) {
153+
return null;
154+
}
155+
return list.get(0);
151156
}
152157

153158
/**

0 commit comments

Comments
 (0)