Skip to content

Commit 370ef0a

Browse files
Made project and folder optional for artifact factory config
1 parent 197d94a commit 370ef0a

3 files changed

Lines changed: 35 additions & 14 deletions

File tree

commons/src/main/java/org/fuin/srcgen4j/commons/ArtifactFactoryConfig.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ public final class ArtifactFactoryConfig extends AbstractElement {
4444
@XmlAttribute(name = "class")
4545
private String factoryClassName;
4646

47-
@NotNull
47+
@Nullable
4848
@XmlAttribute(name = "project")
4949
private String project;
5050

51-
@NotNull
51+
@Nullable
5252
@XmlAttribute(name = "folder")
5353
private String folder;
5454

@@ -78,12 +78,12 @@ public final class ArtifactFactoryConfig extends AbstractElement {
7878
* @param factoryClassName
7979
* Full qualified factory class name.
8080
* @param project
81-
* Name of the target project.
81+
* Name of the target project (optional).
8282
* @param folder
83-
* Name of the target folder inside the project.
83+
* Name of the target folder inside the project (optional).
8484
*/
85-
public ArtifactFactoryConfig(final String artifact, final String factoryClassName, final String project,
86-
final String folder) {
85+
public ArtifactFactoryConfig(final String artifact, final String factoryClassName, @Nullable final String project,
86+
@Nullable final String folder) {
8787
this(artifact, factoryClassName, project, folder, null);
8888
}
8989

@@ -95,14 +95,14 @@ public ArtifactFactoryConfig(final String artifact, final String factoryClassNam
9595
* @param factoryClassName
9696
* Full qualified factory class name.
9797
* @param project
98-
* Name of the target project.
98+
* Name of the target project (optional).
9999
* @param folder
100-
* Name of the target folder inside the project.
100+
* Name of the target folder inside the project (optional).
101101
* @param incremental
102102
* If the factory executes on an incremental build TRUE (default), else FALSE.
103103
*/
104-
public ArtifactFactoryConfig(final String artifact, final String factoryClassName, final String project, // NOSONAR
105-
final String folder, @Nullable final Boolean incremental) {
104+
public ArtifactFactoryConfig(final String artifact, final String factoryClassName, @Nullable final String project, // NOSONAR
105+
@Nullable final String folder, @Nullable final Boolean incremental) {
106106
super();
107107
this.artifact = artifact;
108108
this.factoryClassName = factoryClassName;
@@ -132,17 +132,19 @@ public final String getFactoryClassName() {
132132
/**
133133
* Returns the name of the target project.
134134
*
135-
* @return Project name.
135+
* @return Project name or <code>null</code> if not set.
136136
*/
137+
@Nullable
137138
public final String getProject() {
138139
return project;
139140
}
140141

141142
/**
142143
* Returns the name of the target folder inside the project.
143144
*
144-
* @return Folder name.
145+
* @return Folder name or <code>null</code> if not set.
145146
*/
147+
@Nullable
146148
public final String getFolder() {
147149
return folder;
148150
}

commons/src/main/resources/srcgen4j-commons-0_5_0.xsd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,8 @@
115115
</xs:sequence>
116116
<xs:attribute type="xs:string" name="artifact" use="required" />
117117
<xs:attribute type="xs:string" name="class" use="required" />
118-
<xs:attribute type="xs:string" name="project" use="required" />
119-
<xs:attribute type="xs:string" name="folder" use="required" />
118+
<xs:attribute type="xs:string" name="project" use="optional" />
119+
<xs:attribute type="xs:string" name="folder" use="optional" />
120120
<xs:attribute type="xs:boolean" name="incremental" use="optional" />
121121
</xs:complexType>
122122

commons/src/test/java/org/fuin/srcgen4j/commons/ArtifactFactoryConfigTest.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,25 @@ public final void testUnmarshal() throws Exception {
7070

7171
}
7272

73+
@Test
74+
public final void testUnmarshalWithoutProjectAndFolder() throws Exception {
75+
76+
// PREPARE
77+
final JAXBContext jaxbContext = JAXBContext.newInstance(ArtifactFactoryConfig.class);
78+
79+
// TEST
80+
final ArtifactFactoryConfig testee = JaxbUtils.unmarshal(new UnmarshallerBuilder().withContext(jaxbContext).build(),
81+
"<artifact-factory artifact=\"abc\" class=\"a.b.c.X\"" + " xmlns=\"" + NS_SG4JC + "\"/>");
82+
83+
// VERIFY project and folder are optional
84+
assertThat(testee).isNotNull();
85+
assertThat(testee.getArtifact()).isEqualTo("abc");
86+
assertThat(testee.getFactoryClassName()).isEqualTo("a.b.c.X");
87+
assertThat(testee.getProject()).isNull();
88+
assertThat(testee.getFolder()).isNull();
89+
90+
}
91+
7392
@Test
7493
public final void testGetFactory() {
7594

0 commit comments

Comments
 (0)