Skip to content

Commit

Permalink
Register String[] mixin
Browse files Browse the repository at this point in the history
Fixes gh-1666
  • Loading branch information
MrJovanovic13 committed Jul 22, 2024
1 parent ab6f4e4 commit 7c1f5a3
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public void setupModule(SetupContext context) {
context.setMixInAnnotations(SignatureAlgorithm.class, JwsAlgorithmMixin.class);
context.setMixInAnnotations(MacAlgorithm.class, JwsAlgorithmMixin.class);
context.setMixInAnnotations(OAuth2TokenFormat.class, OAuth2TokenFormatMixin.class);
context.setMixInAnnotations(String[].class, StringArrayMixin.class);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.security.oauth2.server.authorization.jackson2;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

/**
* This mixin class is used to serialize/deserialize {@link String[]}.
*
* @author Nikola Jovanovic
* @since 1.2.6
* @see String[]
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
abstract class StringArrayMixin {

@JsonCreator
StringArrayMixin(String[] array) {
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2020-2022 the original author or authors.
* Copyright 2020-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -43,6 +43,9 @@ public class OAuth2AuthorizationServerJackson2ModuleTests {
private static final TypeReference<Set<String>> STRING_SET = new TypeReference<Set<String>>() {
};

private static final TypeReference<String[]> STRING_ARRAY = new TypeReference<String[]>() {
};

private ObjectMapper objectMapper;

@BeforeEach
Expand Down Expand Up @@ -73,4 +76,11 @@ public void readValueWhenLinkedHashSetThenSuccess() throws Exception {
assertThat(this.objectMapper.readValue(json, STRING_SET)).isEqualTo(set);
}

@Test
public void readValueWhenStringArrayThenSuccess() throws Exception {
String[] array = new String[] {"one", "two"};
String json = this.objectMapper.writeValueAsString(array);
assertThat(this.objectMapper.readValue(json, STRING_ARRAY)).isEqualTo(array);
}

}

0 comments on commit 7c1f5a3

Please sign in to comment.