From 804bdd398fb8ac700621eb3114bca942fb128848 Mon Sep 17 00:00:00 2001 From: shimingxy Date: Fri, 19 Jun 2020 11:33:14 +0800 Subject: [PATCH] scim domain init scim domain init --- .../src/main/resources/application.properties | 2 +- .../src/main/resources/application.properties | 2 +- .../org/maxkey/json/JsonDateDeserializer.java | 33 +++++++++ .../org/maxkey/json/JsonDateSerializer.java | 30 +++++---- .../maxkey/json/JsonDateTimeDeserializer.java | 37 +++++----- .../maxkey/json/JsonDateTimeSerializer.java | 32 ++++----- .../maxkey/json/JsonISODateDeserializer.java | 55 ++++++--------- .../maxkey/json/JsonISODateSerializer.java | 42 ++++-------- .../maxkey-identity-scim/.classpath | 14 ++++ .../org.eclipse.wst.common.component | 5 +- .../identity/scim/resources/Enterprise.java | 5 +- .../scim/resources/EnterpriseUser.java | 19 +++++- .../maxkey/identity/scim/resources/Group.java | 10 ++- .../maxkey/identity/scim/resources/Meta.java | 15 +++++ .../scim/resources/MultiValuedAttribute.java | 5 ++ .../identity/scim/resources/Resource.java | 3 +- .../maxkey/identity/scim/resources/User.java | 3 + .../scim/resources/UserPhoneNumber.java | 2 +- .../scim/resources/ReadJson2String.java | 24 +++++++ .../ScimEnterpriseUserJsonString.json | 48 +++++++++++++ ...imEnterpriseUserJsonString2ObjectTest.java | 18 +++++ .../resources/ScimEnterpriseUserJsonTest.java | 67 +++++++++++++++++++ .../scim/resources/ScimGroupJsonString.json | 33 +++++++++ .../ScimGroupJsonString2ObjectTest.java | 19 ++++++ .../scim/resources/ScimGroupJsonTest.java | 46 +++++++++++++ .../scim/resources/ScimUserJsonString.json | 42 ++++++++++++ .../ScimUserJsonString2ObjectTest.java | 16 +++++ .../scim/resources/ScimUserJsonTest.java | 60 +++++++++++++++++ 28 files changed, 562 insertions(+), 125 deletions(-) create mode 100644 maxkey-core/src/main/java/org/maxkey/json/JsonDateDeserializer.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ReadJson2String.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString.json create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString2ObjectTest.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonTest.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString.json create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonTest.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString.json create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString2ObjectTest.java create mode 100644 maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonTest.java diff --git a/maxkey-connectors/maxkey-connector-activedirectory/src/main/resources/application.properties b/maxkey-connectors/maxkey-connector-activedirectory/src/main/resources/application.properties index 45cd2b6ac..35fac8d5c 100644 --- a/maxkey-connectors/maxkey-connector-activedirectory/src/main/resources/application.properties +++ b/maxkey-connectors/maxkey-connector-activedirectory/src/main/resources/application.properties @@ -15,7 +15,7 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.kafka.bootstrap-servers=localhost:9092 ###########【初始化消费者配置】########### # 默认的消费组ID -spring.kafka.consumer.properties.group.id=defaultConsumerGroup +spring.kafka.consumer.properties.group.id=ActiveDirectoryConsumerGroup # 是否自动提交offset spring.kafka.consumer.enable-auto-commit=true # 提交offset延时(接收到消息后多久提交offset) diff --git a/maxkey-connectors/maxkey-connector-ldap/src/main/resources/application.properties b/maxkey-connectors/maxkey-connector-ldap/src/main/resources/application.properties index 4597eff9a..063611c9a 100644 --- a/maxkey-connectors/maxkey-connector-ldap/src/main/resources/application.properties +++ b/maxkey-connectors/maxkey-connector-ldap/src/main/resources/application.properties @@ -17,7 +17,7 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.kafka.bootstrap-servers=localhost:9092 ###########【初始化消费者配置】########### # 默认的消费组ID -spring.kafka.consumer.properties.group.id=test-consumer-group +spring.kafka.consumer.properties.group.id=LdapConsumerGroup # 是否自动提交offset spring.kafka.consumer.enable-auto-commit=true # 提交offset延时(接收到消息后多久提交offset) diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonDateDeserializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonDateDeserializer.java new file mode 100644 index 000000000..75b5ee02c --- /dev/null +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonDateDeserializer.java @@ -0,0 +1,33 @@ +package org.maxkey.json; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * JSON deserializer for Jackson to handle regular date instances as timestamps + * in ISO format. + * + */ +public class JsonDateDeserializer extends JsonDeserializer { + + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("yyyy-MM-dd"); + + @Override + public Date deserialize(JsonParser parser, DeserializationContext context) + throws IOException, JsonProcessingException { + try { + return dateFormat.parse(parser.getText()); + } catch (ParseException e) { + throw new JsonParseException(parser,"Could not parse date", e); + } + } + +} \ No newline at end of file diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonDateSerializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonDateSerializer.java index 292681e53..d6aa97525 100644 --- a/maxkey-core/src/main/java/org/maxkey/json/JsonDateSerializer.java +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonDateSerializer.java @@ -1,28 +1,30 @@ package org.maxkey.json; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import org.springframework.stereotype.Component; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.stereotype.Component; /** - * 日期json序列化格式 + * 日期json序列化格式. + * * @author Crystal.Sea * */ + @Component -public class JsonDateSerializer extends JsonSerializer{ - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); +public class JsonDateSerializer extends JsonSerializer { + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("yyyy-MM-dd"); - @Override - public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) - throws IOException, JsonProcessingException { - String formattedDate = dateFormat.format(date); - gen.writeString(formattedDate); - } + @Override + public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) + throws IOException, JsonProcessingException { + String formattedDate = dateFormat.format(date); + gen.writeString(formattedDate); + } } diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeDeserializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeDeserializer.java index 1e4f16a8e..80878b79e 100644 --- a/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeDeserializer.java +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeDeserializer.java @@ -1,31 +1,32 @@ package org.maxkey.json; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; - import org.springframework.stereotype.Component; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; @Component -public class JsonDateTimeDeserializer extends JsonDeserializer{ - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - @Override - public Date deserialize(JsonParser jsonParser, DeserializationContext dc) - throws IOException, JsonProcessingException { - Date parserDate=null; - try { - parserDate = dateFormat.parse(jsonParser.getText()); - } catch (ParseException e) { +public class JsonDateTimeDeserializer extends JsonDeserializer { + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - e.printStackTrace(); - } - return parserDate; - } + @Override + public Date deserialize(JsonParser parser, DeserializationContext dc) + throws IOException, JsonProcessingException { + Date parserDate = null; + try { + parserDate = dateFormat.parse(parser.getText()); + } catch (ParseException e) { + throw new JsonParseException(parser,"Could not parse date", e); + } + return parserDate; + } } diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeSerializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeSerializer.java index 2b54ceb81..edf4142e5 100644 --- a/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeSerializer.java +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonDateTimeSerializer.java @@ -1,28 +1,28 @@ package org.maxkey.json; -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; -import org.springframework.stereotype.Component; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; - +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.stereotype.Component; /** - * 日期时间json序列化格式 + * 日期时间json序列化格式. + * * @author Crystal.Sea * */ + @Component -public class JsonDateTimeSerializer extends JsonSerializer{ - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - @Override - public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) - throws IOException, JsonProcessingException { - String formattedDate = dateFormat.format(date); - gen.writeString(formattedDate); - } +public class JsonDateTimeSerializer extends JsonSerializer { + private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + @Override + public void serialize(Date date, JsonGenerator gen, SerializerProvider provider) + throws IOException, JsonProcessingException { + String formattedDate = dateFormat.format(date); + gen.writeString(formattedDate); + } } diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonISODateDeserializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonISODateDeserializer.java index 0f1f1c423..3c09c7568 100644 --- a/maxkey-core/src/main/java/org/maxkey/json/JsonISODateDeserializer.java +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonISODateDeserializer.java @@ -1,47 +1,34 @@ -/* - * Cloud Foundry 2012.02.03 Beta - * Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved. - * - * This product is licensed to you under the Apache License, Version 2.0 (the "License"). - * You may not use this product except in compliance with the License. - * - * This product includes a number of subcomponents with - * separate copyright notices and license terms. Your use of these - * subcomponents is subject to the terms and conditions of the - * subcomponent's license, as noted in the LICENSE file. - */ package org.maxkey.json; - -import java.io.IOException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; /** - * JSON deserializer for Jackson to handle regular date instances as timestamps in ISO format. - * - * @author Dave Syer + * JSON deserializer for Jackson to handle regular date instances as timestamps + * in ISO format. * */ + public class JsonISODateDeserializer extends JsonDeserializer { - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - - @Override - public Date deserialize(JsonParser parser, DeserializationContext context) throws IOException, JsonProcessingException { - try { - return dateFormat.parse(parser.getText()); - } - catch (ParseException e) { - throw new JsonParseException("Could not parse date", parser.getCurrentLocation(), e); - } - } - + + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + + @Override + public Date deserialize(JsonParser parser, DeserializationContext context) + throws IOException, JsonProcessingException { + try { + return dateFormat.parse(parser.getText()); + } catch (ParseException e) { + throw new JsonParseException(parser,"Could not parse date", e); + } + } + } \ No newline at end of file diff --git a/maxkey-core/src/main/java/org/maxkey/json/JsonISODateSerializer.java b/maxkey-core/src/main/java/org/maxkey/json/JsonISODateSerializer.java index 474153f6e..408b72098 100644 --- a/maxkey-core/src/main/java/org/maxkey/json/JsonISODateSerializer.java +++ b/maxkey-core/src/main/java/org/maxkey/json/JsonISODateSerializer.java @@ -1,42 +1,28 @@ -/* - * Cloud Foundry 2012.02.03 Beta - * Copyright (c) [2009-2012] VMware, Inc. All Rights Reserved. - * - * This product is licensed to you under the Apache License, Version 2.0 (the "License"). - * You may not use this product except in compliance with the License. - * - * This product includes a number of subcomponents with - * separate copyright notices and license terms. Your use of these - * subcomponents is subject to the terms and conditions of the - * subcomponent's license, as noted in the LICENSE file. - */ package org.maxkey.json; - -import java.io.IOException; -import java.text.SimpleDateFormat; -import java.util.Date; - import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.Date; /** - * JSON serializer for Jackson to handle regular date instances as timestamps in ISO format. - * - * @author Dave Syer - * + * JSON serializer for Jackson to handle regular date instances as timestamps in + * ISO format. */ + public class JsonISODateSerializer extends JsonSerializer { - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); + private static final SimpleDateFormat dateFormat = + new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); - @Override - public void serialize(Date date, JsonGenerator generator, SerializerProvider provider) throws IOException, - JsonProcessingException { - String formatted = dateFormat.format(date); - generator.writeString(formatted); - } + @Override + public void serialize(Date date, JsonGenerator generator, SerializerProvider provider) + throws IOException, JsonProcessingException { + String formatted = dateFormat.format(date); + generator.writeString(formatted); + } } \ No newline at end of file diff --git a/maxkey-identitys/maxkey-identity-scim/.classpath b/maxkey-identitys/maxkey-identity-scim/.classpath index 7f645964a..eca1d9e92 100644 --- a/maxkey-identitys/maxkey-identity-scim/.classpath +++ b/maxkey-identitys/maxkey-identity-scim/.classpath @@ -12,6 +12,20 @@ + + + + + + + + + + + + + + diff --git a/maxkey-identitys/maxkey-identity-scim/.settings/org.eclipse.wst.common.component b/maxkey-identitys/maxkey-identity-scim/.settings/org.eclipse.wst.common.component index 1e2b16776..c20d1a875 100644 --- a/maxkey-identitys/maxkey-identity-scim/.settings/org.eclipse.wst.common.component +++ b/maxkey-identitys/maxkey-identity-scim/.settings/org.eclipse.wst.common.component @@ -1,8 +1,9 @@ - - + + + uses diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Enterprise.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Enterprise.java index b9cea8beb..333ec17b6 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Enterprise.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Enterprise.java @@ -3,11 +3,8 @@ package org.maxkey.identity.scim.resources; import java.io.Serializable; public class Enterprise implements Serializable { - - /** - * - */ private static final long serialVersionUID = -204619629148409697L; + private String employeeNumber; private String costCenter; private String organization; diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/EnterpriseUser.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/EnterpriseUser.java index bf8a57884..4da66a748 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/EnterpriseUser.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/EnterpriseUser.java @@ -1,16 +1,29 @@ package org.maxkey.identity.scim.resources; +import java.util.HashSet; + +import com.fasterxml.jackson.annotation.JsonProperty; + public class EnterpriseUser extends User { - /** - * - */ private static final long serialVersionUID = 3212312511630459427L; public static final String SCHEMA = "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"; + @JsonProperty(SCHEMA) Enterprise enterprise; public EnterpriseUser() { + schemas =new HashSet(); + schemas.add(User.SCHEMA); + schemas.add(SCHEMA); + } + + public Enterprise getEnterprise() { + return enterprise; + } + + public void setEnterprise(Enterprise enterprise) { + this.enterprise = enterprise; } diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Group.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Group.java index 2b4a64d74..9d045d6b1 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Group.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Group.java @@ -1,13 +1,16 @@ package org.maxkey.identity.scim.resources; +import java.util.HashSet; import java.util.Set; -public class Group { +public class Group extends Resource{ + private static final long serialVersionUID = 404613567384513866L; public static final String SCHEMA = "urn:ietf:params:scim:schemas:core:2.0:Group"; - + private String displayName; private Set members; + public String getDisplayName() { return displayName; } @@ -20,7 +23,10 @@ public class Group { public void setMembers(Set members) { this.members = members; } + public Group() { + schemas =new HashSet(); + schemas.add(SCHEMA); } } diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Meta.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Meta.java index 92a740102..b082e9e7d 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Meta.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Meta.java @@ -4,6 +4,11 @@ import java.io.Serializable; import java.util.Date; import java.util.Set; +import org.maxkey.json.*; + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + public class Meta implements Serializable { /** @@ -12,10 +17,20 @@ public class Meta implements Serializable { private static final long serialVersionUID = -2244662962968933591L; private String resourceType; + + @JsonSerialize(using = JsonISODateSerializer.class) + @JsonDeserialize(using = JsonISODateDeserializer.class) private Date created; + + @JsonSerialize(using = JsonISODateSerializer.class) + @JsonDeserialize(using = JsonISODateDeserializer.class) + private Date lastModified; + private String location; + private String version; + private Set attributes; diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/MultiValuedAttribute.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/MultiValuedAttribute.java index 138fa0d17..770c647fb 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/MultiValuedAttribute.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/MultiValuedAttribute.java @@ -2,11 +2,16 @@ package org.maxkey.identity.scim.resources; import java.io.Serializable; +import com.fasterxml.jackson.annotation.JsonProperty; + public class MultiValuedAttribute implements Serializable { + private static final long serialVersionUID = 6878912593878245947L; + String value; String display; boolean primary; + @JsonProperty("$ref") String reference; String type; diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Resource.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Resource.java index c89579eee..78c81611f 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Resource.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/Resource.java @@ -9,10 +9,11 @@ public class Resource implements Serializable { * */ private static final long serialVersionUID = -5159743553948621024L; + protected Set schemas; private String id; private String externalId; private Meta meta; - private Set schemas; + public Resource() { } diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/User.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/User.java index dd4f4003f..14f7368c2 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/User.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/User.java @@ -1,5 +1,6 @@ package org.maxkey.identity.scim.resources; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -176,6 +177,8 @@ public class User extends Resource{ this.extensions = extensions; } public User() { + schemas =new HashSet(); + schemas.add(SCHEMA); } diff --git a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/UserPhoneNumber.java b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/UserPhoneNumber.java index 2faa4757d..703c5899f 100644 --- a/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/UserPhoneNumber.java +++ b/maxkey-identitys/maxkey-identity-scim/src/main/java/org/maxkey/identity/scim/resources/UserPhoneNumber.java @@ -2,7 +2,7 @@ package org.maxkey.identity.scim.resources; import java.io.Serializable; -public class UserPhoneNumber implements Serializable { +public class UserPhoneNumber extends MultiValuedAttribute implements Serializable { /** * diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ReadJson2String.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ReadJson2String.java new file mode 100644 index 000000000..85cde08f9 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ReadJson2String.java @@ -0,0 +1,24 @@ +package org.maxkey.identity.scim.resources; + +import java.io.File; +import java.util.List; + +import org.apache.commons.io.FileUtils; + +public class ReadJson2String { + + public static String read(String jsonFileName) { + try { + List list = FileUtils.readLines(new File(ReadJson2String.class.getResource(jsonFileName).getFile()),"UTF-8"); + StringBuilder sb = new StringBuilder(); + for (String ss : list) { + sb.append(ss); + } + System.out.println(sb.toString()); + return sb.toString(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString.json b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString.json new file mode 100644 index 000000000..2c6d5351c --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString.json @@ -0,0 +1,48 @@ +{ + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:User", + "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" + ], + "id": "1111111111111", + "externalId": "UserName", + "meta": { + "resourceType": "User", + "created": "2020-06-15T23:06:00.129Z", + "lastModified": "2020-06-15T23:06:00.129Z", + "location": "https://example.com/v2/Users/2819c223...", + "version": "W\\/\"f250dd84f0671c3\"" + }, + "userName": "UserName", + "name": { + "formatted": "Ms. Barbara J Jensen, III", + "familyName": "Jensen", + "givenName": "Barbara", + "middleName": "Jane", + "honorificPrefix": "Ms.", + "honorificSuffix": "III" + }, + "emails": [ + { + "value": "bjensen@example.com", + "primary": false, + "type": "work" + } + ], + "phoneNumbers": [ + { + "value": "555-555-8377", + "primary": false, + "type": "home" + }, + { + "value": "555-555-8377", + "primary": false, + "type": "work" + } + ], + "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { + "employeeNumber": "k200908", + "costCenter": "1111", + "department": "de" + } +} \ No newline at end of file diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString2ObjectTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString2ObjectTest.java new file mode 100644 index 000000000..dc9f88f52 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonString2ObjectTest.java @@ -0,0 +1,18 @@ +package org.maxkey.identity.scim.resources; + +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimEnterpriseUserJsonString2ObjectTest { + + public static void main(String[] args) { + + String userJsonString = ReadJson2String.read("ScimEnterpriseUserJsonString.json"); + EnterpriseUser u = JsonUtils.json2Object(userJsonString, EnterpriseUser.class); + + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(u))); + System.out.println(u.getEnterprise().getCostCenter()); + } + +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonTest.java new file mode 100644 index 000000000..2067d27f2 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimEnterpriseUserJsonTest.java @@ -0,0 +1,67 @@ +package org.maxkey.identity.scim.resources; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimEnterpriseUserJsonTest { + + public static void main(String[] args) { + + // TODO Auto-generated method stub + EnterpriseUser u = new EnterpriseUser(); + u.setUserName("UserName"); + u.setExternalId("UserName"); + u.setId("1111111111111"); + + Meta meta = new Meta(); + meta.setVersion("W\\/\"f250dd84f0671c3\""); + meta.setCreated(new Date()); + meta.setLocation("https://example.com/v2/Users/2819c223..."); + meta.setResourceType("User"); + meta.setLastModified(new Date()); + u.setMeta(meta); + + UserName un=new UserName(); + un.setFamilyName("Jensen"); + un.setFormatted("Ms. Barbara J Jensen, III"); + un.setGivenName("Barbara"); + un.setHonorificPrefix("Ms."); + un.setHonorificSuffix("III"); + un.setMiddleName("Jane"); + u.setName(un); + + List UserPhoneNumberList = new ArrayList(); + UserPhoneNumber pn =new UserPhoneNumber(); + pn.setValue("555-555-8377"); + pn.setType(UserPhoneNumber.UserPhoneNumberType.WORK); + + UserPhoneNumber pnh =new UserPhoneNumber(); + pnh.setValue("555-555-8377"); + pnh.setType(UserPhoneNumber.UserPhoneNumberType.HOME); + UserPhoneNumberList.add(pnh); + + UserPhoneNumberList.add(pn); + + u.setPhoneNumbers(UserPhoneNumberList); + + List ueList = new ArrayList(); + UserEmail ue =new UserEmail(); + ue.setValue("bjensen@example.com"); + ue.setType(UserEmail.UserEmailType.WORK); + ueList.add(ue); + u.setEmails(ueList); + + Enterprise ent =new Enterprise(); + ent.setCostCenter("1111"); + ent.setDepartment("de"); + ent.setEmployeeNumber("k200908"); + u.setEnterprise(ent); + + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(u))); + } + +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString.json b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString.json new file mode 100644 index 000000000..630e35036 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString.json @@ -0,0 +1,33 @@ +{ + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:Group" + ], + "meta": { + "resourceType": "User", + "created": "2020-06-15T23:08:50.698Z", + "lastModified": "2020-06-15T23:08:50.698Z", + "location": "https://example.com/v2/Users/2819c223...", + "version": "W\\/\"f250dd84f0671c3\"" + }, + "displayName": "Tour Guides", + "members": [ + { + "value": "2819c223-7f76-453a-919d-413861904646", + "display": "Babs Jensen", + "primary": false, + "$ref": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646" + }, + { + "value": "2819c223-7f76-453a-919d-413861904646", + "display": "Babs Jensen", + "primary": false, + "$ref": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646" + }, + { + "value": "2819c223-7f76-453a-919d-413861904646", + "display": "Babs Jensen", + "primary": false, + "$ref": "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646" + } + ] +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java new file mode 100644 index 000000000..77fc0bead --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonString2ObjectTest.java @@ -0,0 +1,19 @@ +package org.maxkey.identity.scim.resources; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimGroupJsonString2ObjectTest { + public static void main(String[] args) { + String userJsonString = ReadJson2String.read("ScimGroupJsonString.json"); + Group g = JsonUtils.json2Object(userJsonString, Group.class); + + + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(g))); + } +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonTest.java new file mode 100644 index 000000000..1e01aeb7c --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimGroupJsonTest.java @@ -0,0 +1,46 @@ +package org.maxkey.identity.scim.resources; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimGroupJsonTest { + public static void main(String[] args) { + Group g= new Group(); + + Meta meta = new Meta(); + meta.setVersion("W\\/\"f250dd84f0671c3\""); + meta.setCreated(new Date()); + meta.setLocation("https://example.com/v2/Users/2819c223..."); + meta.setResourceType("User"); + meta.setLastModified(new Date()); + g.setMeta(meta); + + g.setDisplayName("Tour Guides"); + + Set mrSet =new HashSet(); + MemberRef mr1 =new MemberRef(); + mr1.setReference("https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"); + mr1.setValue("2819c223-7f76-453a-919d-413861904646"); + mr1.setDisplay("Babs Jensen"); + MemberRef mr2 =new MemberRef(); + mr2.setReference("https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"); + mr2.setValue("2819c223-7f76-453a-919d-413861904646"); + mr2.setDisplay("Babs Jensen"); + MemberRef mr3 =new MemberRef(); + mr3.setReference("https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"); + mr3.setValue("2819c223-7f76-453a-919d-413861904646"); + mr3.setDisplay("Babs Jensen"); + mrSet.add(mr1); + mrSet.add(mr2); + mrSet.add(mr3); + + g.setMembers(mrSet); + + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(g))); + } +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString.json b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString.json new file mode 100644 index 000000000..35c91aa85 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString.json @@ -0,0 +1,42 @@ +{ + "schemas": [ + "urn:ietf:params:scim:schemas:core:2.0:User" + ], + "id": "1111111111111", + "externalId": "UserName", + "meta": { + "resourceType": "User", + "created": "2020-06-15T23:09:30.763Z", + "lastModified": "2020-06-15T23:09:30.763Z", + "location": "https://example.com/v2/Users/2819c223...", + "version": "W\\/\"f250dd84f0671c3\"" + }, + "userName": "UserName", + "name": { + "formatted": "Ms. Barbara J Jensen, III", + "familyName": "Jensen", + "givenName": "Barbara", + "middleName": "Jane", + "honorificPrefix": "Ms.", + "honorificSuffix": "III" + }, + "emails": [ + { + "value": "bjensen@example.com", + "primary": false, + "type": "work" + } + ], + "phoneNumbers": [ + { + "value": "555-555-8377", + "primary": false, + "type": "home" + }, + { + "value": "555-555-8377", + "primary": false, + "type": "work" + } + ] +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString2ObjectTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString2ObjectTest.java new file mode 100644 index 000000000..ee6ce5784 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonString2ObjectTest.java @@ -0,0 +1,16 @@ +package org.maxkey.identity.scim.resources; + +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimUserJsonString2ObjectTest { + + public static void main(String[] args) { + + String userJsonString = ReadJson2String.read("ScimUserJsonString.json"); + User u = JsonUtils.json2Object(userJsonString, User.class); + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(u))); + } + +} diff --git a/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonTest.java b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonTest.java new file mode 100644 index 000000000..c4ddc7227 --- /dev/null +++ b/maxkey-identitys/maxkey-identity-scim/src/test/java/org/maxkey/identity/scim/resources/ScimUserJsonTest.java @@ -0,0 +1,60 @@ +package org.maxkey.identity.scim.resources; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import org.maxkey.pretty.impl.JsonPretty; +import org.maxkey.util.JsonUtils; + +public class ScimUserJsonTest { + + public static void main(String[] args) { + // TODO Auto-generated method stub + User u = new User(); + u.setUserName("UserName"); + u.setExternalId("UserName"); + u.setId("1111111111111"); + + Meta meta = new Meta(); + meta.setVersion("W\\/\"f250dd84f0671c3\""); + meta.setCreated(new Date()); + meta.setLocation("https://example.com/v2/Users/2819c223..."); + meta.setResourceType("User"); + meta.setLastModified(new Date()); + u.setMeta(meta); + + UserName un=new UserName(); + un.setFamilyName("Jensen"); + un.setFormatted("Ms. Barbara J Jensen, III"); + un.setGivenName("Barbara"); + un.setHonorificPrefix("Ms."); + un.setHonorificSuffix("III"); + un.setMiddleName("Jane"); + u.setName(un); + + List UserPhoneNumberList = new ArrayList(); + UserPhoneNumber pn =new UserPhoneNumber(); + pn.setValue("555-555-8377"); + pn.setType(UserPhoneNumber.UserPhoneNumberType.WORK); + + UserPhoneNumber pnh =new UserPhoneNumber(); + pnh.setValue("555-555-8377"); + pnh.setType(UserPhoneNumber.UserPhoneNumberType.HOME); + UserPhoneNumberList.add(pnh); + + UserPhoneNumberList.add(pn); + + u.setPhoneNumbers(UserPhoneNumberList); + + List ueList = new ArrayList(); + UserEmail ue =new UserEmail(); + ue.setValue("bjensen@example.com"); + ue.setType(UserEmail.UserEmailType.WORK); + ueList.add(ue); + u.setEmails(ueList); + + System.out.println( + (new JsonPretty()).format(JsonUtils.object2Json(u))); + } + +} -- GitLab