Skip to content

Commit ef8cc28

Browse files
author
Aleksandar Stojsavljevic
committed
Fixes #265
@Valid annotations added on same getter in both parent and child objects lead to exception
1 parent b6298bc commit ef8cc28

File tree

5 files changed

+373
-13
lines changed

5 files changed

+373
-13
lines changed

src/main/java/com/phoenixnap/oss/ramlplugin/raml2code/interpreters/PojoBuilder.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.util.Objects;
2323
import java.util.Set;
2424

25-
import com.fasterxml.jackson.annotation.JsonProperty;
2625
import org.apache.commons.collections.MapUtils;
2726
import org.raml.v2.api.model.v10.datamodel.DateTimeTypeDeclaration;
2827
import org.raml.v2.api.model.v10.datamodel.TypeDeclaration;
@@ -31,6 +30,7 @@
3130
import org.springframework.util.StringUtils;
3231

3332
import com.fasterxml.jackson.annotation.JsonFormat;
33+
import com.fasterxml.jackson.annotation.JsonProperty;
3434
import com.fasterxml.jackson.annotation.JsonSubTypes;
3535
import com.fasterxml.jackson.annotation.JsonTypeInfo;
3636
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@@ -227,16 +227,7 @@ public PojoBuilder withField(String name, String type, String comment, RamlTypeV
227227
// validation
228228
if (Config.getPojoConfig().isIncludeJsr303Annotations() && validations != null) {
229229

230-
// check if field is complex object so we can mark it with
231-
// @Valid
232-
boolean isPOJO = type.startsWith(this.pojo._package().name() + ".");
233-
if (!isPOJO && resolvedType.getClass().getName().equals("com.sun.codemodel.JNarrowedClass")
234-
&& resolvedType.getTypeParameters().size() == 1) {
235-
JClass typeClass = resolvedType.getTypeParameters().get(0);
236-
isPOJO = typeClass.fullName().startsWith(this.pojo._package().name() + ".");
237-
}
238-
239-
validations.annotateFieldJSR303(getterMethod, isPOJO);
230+
validations.annotateFieldJSR303(getterMethod, false);
240231
}
241232

242233
return this;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.phoenixnap.oss.ramlplugin.raml2code.github;
2+
3+
import org.junit.Test;
4+
5+
import com.phoenixnap.oss.ramlplugin.raml2code.rules.GitHubAbstractRuleTestBase;
6+
import com.phoenixnap.oss.ramlplugin.raml2code.rules.Spring4ControllerDecoratorRule;
7+
8+
/**
9+
* @author aleksandars
10+
* @since 2.0.3
11+
*/
12+
public class Issue265RulesTest extends GitHubAbstractRuleTestBase {
13+
14+
@Test
15+
public void testDontGenerateForAnnotation() throws Exception {
16+
loadRaml("issue-265.raml");
17+
rule = new Spring4ControllerDecoratorRule();
18+
rule.apply(getControllerMetadata(), jCodeModel);
19+
verifyGeneratedCode("Issue265Spring4ControllerDecorator");
20+
}
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#%RAML 1.0
2+
3+
title: Validation Bug Test
4+
5+
types:
6+
Address:
7+
type: object
8+
properties:
9+
city: string
10+
street: string
11+
houseNo: string
12+
Parent:
13+
type: object
14+
properties:
15+
address: Address
16+
Child:
17+
type: Parent
18+
19+
/parent:
20+
post:
21+
body:
22+
application/json:
23+
type: Child

src/test/resources/validations/github/Issue208Spring4ControllerStub.java.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,6 @@ package com.gen.test.model;
204204
import java.io.Serializable;
205205
import java.util.ArrayList;
206206
import java.util.List;
207-
import javax.validation.Valid;
208207
import javax.validation.constraints.NotNull;
209208
import org.apache.commons.lang.builder.EqualsBuilder;
210209
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -250,7 +249,6 @@ public class ProductUpdate
250249
* @return
251250
* groups
252251
*/
253-
@Valid
254252
public List<com.gen.test.model.Group> getGroups() {
255253
if (groups == null) {
256254
return new ArrayList<com.gen.test.model.Group>();

0 commit comments

Comments
 (0)