Skip to content

Commit 9841e41

Browse files
committed
added new parameters
1 parent 1b77ca6 commit 9841e41

File tree

7 files changed

+113
-4
lines changed

7 files changed

+113
-4
lines changed

jbbp-plugins/jbbp-gradle/src/main/java/com/igormaznitsa/jbbp/plugin/gradle/JBBPExtension.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,13 @@ public class JBBPExtension {
6262
*/
6363
public Map<String, String> mapSubClassInterfaces = new HashMap<String, String>();
6464

65+
/**
66+
* Superclasses to be mapped to generated sub-classes
67+
*
68+
* @since 1.4.0
69+
*/
70+
public Map<String, String> mapSubClassSuperclasses = new HashMap<String, String>();
71+
6572
/**
6673
* Encoding for text input.
6774
*/
@@ -110,6 +117,13 @@ public class JBBPExtension {
110117
*/
111118
public boolean disableGenerateFields = false;
112119

120+
/**
121+
* Make inner clases non-static ones
122+
*
123+
* @since 1.4.0
124+
*/
125+
public boolean doInternalClassesNonStatic = false;
126+
113127
/**
114128
* Output folder for result classes.
115129
*/

jbbp-plugins/jbbp-gradle/src/main/java/com/igormaznitsa/jbbp/plugin/gradle/JBBPGenerateTask.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ public JBBPAbstractField readCustomFieldType(@Nonnull final JBBPBitInputStream i
9999
.setSuperClass(ext.superClass)
100100
.setClassImplements(ext.interfaces)
101101
.setSubClassInterfaces(ext.mapSubClassInterfaces)
102+
.setSubClassSuperclasses(ext.mapSubClassSuperclasses)
103+
.setDoInternalClassesNonStatic(ext.doInternalClassesNonStatic)
102104
.setAddGettersSetters(ext.addGettersSetters)
103105
.setDoAbstract(ext.doAbstract)
104106
.setDisableGenerateFields(ext.disableGenerateFields);

jbbp-plugins/jbbp-maven/jbbp-maven-plugin/src/main/java/com/igormaznitsa/jbbp/plugin/mvn/JBBPGenerateMojo.java

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,20 @@ public class JBBPGenerateMojo extends AbstractJBBPMojo {
7676
*/
7777
@Parameter(alias = "mapStructToInterfaces")
7878
private final Map<String, String> mapStructToInterfaces = new HashMap<String, String>();
79+
/**
80+
* Superclasses for structures, structure will be extending mapped superclass.
81+
*
82+
* @since 1.4.0
83+
*/
84+
@Parameter(alias = "mapStructToSuperclasses")
85+
private final Map<String, String> mapStructToSuperclasses = new HashMap<String, String>();
86+
/**
87+
* Do not make generated inner classes as static ones.
88+
*
89+
* @since 1.4.0
90+
*/
91+
@Parameter(alias = "doInnerClassesNonStatic")
92+
private boolean doInnerClassesNonStatic;
7993
/**
8094
* Specify output file encoding; defaults to source encoding.
8195
*/
@@ -113,7 +127,7 @@ public class JBBPGenerateMojo extends AbstractJBBPMojo {
113127
/**
114128
* Disable generate fields in result class.
115129
*/
116-
@Parameter(alias = "disableGenerateFields",defaultValue = "false")
130+
@Parameter(alias = "disableGenerateFields", defaultValue = "false")
117131
private boolean disableGenerateFields;
118132
/**
119133
* Generate getters and setters for class fields (class fields will be private
@@ -137,6 +151,10 @@ public String getSuperClass() {
137151
return this.superClass;
138152
}
139153

154+
public void setDoAbstract(final boolean value) {
155+
this.doAbstract = value;
156+
}
157+
140158
public boolean getDoAbstract() {
141159
return this.doAbstract;
142160
}
@@ -146,6 +164,11 @@ public Map<String, String> getMapStructToInterfaces() {
146164
return this.mapStructToInterfaces;
147165
}
148166

167+
@Nonnull
168+
public Map<String, String> getMapStructToSuperclasses() {
169+
return this.mapStructToSuperclasses;
170+
}
171+
149172
@Nonnull
150173
@MustNotContainNull
151174
public Set<String> getInterfaces() {
@@ -201,7 +224,19 @@ public Set<ParserFlags> getParserFlags() {
201224
public boolean isDisableGenerateFields() {
202225
return this.disableGenerateFields;
203226
}
204-
227+
228+
public void setDisableGenerateFields(final boolean value) {
229+
this.disableGenerateFields = value;
230+
}
231+
232+
public void setDoInnerClassesNonStatic(final boolean value) {
233+
this.doInnerClassesNonStatic = value;
234+
}
235+
236+
public boolean isDoInnerClassesNonStatic() {
237+
return this.doInnerClassesNonStatic;
238+
}
239+
205240
@Nullable
206241
private String makeCapText(@Nonnull final String inEncoding) throws IOException {
207242
String result = null;
@@ -306,6 +341,8 @@ public JBBPAbstractField readCustomFieldType(@Nonnull final JBBPBitInputStream i
306341
.setSuperClass(this.superClass)
307342
.setClassImplements(this.interfaces)
308343
.setSubClassInterfaces(this.mapStructToInterfaces)
344+
.setDoInternalClassesNonStatic(this.doInnerClassesNonStatic)
345+
.setSubClassSuperclasses(this.mapStructToSuperclasses)
309346
.setAddGettersSetters(this.addGettersSetters)
310347
.setDoAbstract(this.doAbstract)
311348
.setDisableGenerateFields(this.disableGenerateFields);

jbbp-plugins/jbbp-maven/jbbp-maven-plugin/src/test/java/com/igormaznitsa/jbbp/plugin/mvn/JBBPGenerateMojoTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,18 @@ public void testConfig() throws Exception {
8989
assertArrayEquals(new String[] {"path1/**/*.jbbp", "path2/**/*.jbbp"}, set2array(mojo.getIncludes()));
9090
assertArrayEquals(new String[] {"path3/**/*.jbbp", "path4/**/*.jbbp"}, set2array(mojo.getExcludes()));
9191

92+
assertTrue(mojo.isDoInnerClassesNonStatic());
93+
assertTrue(mojo.isDisableGenerateFields());
94+
9295
final Map<String, String> mapStructToInterfaces = mojo.getMapStructToInterfaces();
9396
assertEquals(2, mapStructToInterfaces.size());
9497
assertEquals("com.test.C", mapStructToInterfaces.get("a.b.c"));
9598
assertEquals("com.test.D", mapStructToInterfaces.get("a.b.d"));
99+
100+
final Map<String, String> mapStructToSuperclasses = mojo.getMapStructToSuperclasses();
101+
assertEquals(2, mapStructToSuperclasses.size());
102+
assertEquals("com.test.CC", mapStructToSuperclasses.get("a.b.c"));
103+
assertEquals("com.test.DD", mapStructToSuperclasses.get("a.b.d"));
96104
}
97105

98106
}

jbbp-plugins/jbbp-maven/jbbp-maven-plugin/src/test/resources/com/igormaznitsa/jbbp/plugin/mvn/mojoConfig.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@
4040
<a.b.c>com.test.C</a.b.c>
4141
<a.b.d>com.test.D</a.b.d>
4242
</mapStructToInterfaces>
43+
<mapStructToSuperclasses>
44+
<a.b.c>com.test.CC</a.b.c>
45+
<a.b.d>com.test.DD</a.b.d>
46+
</mapStructToSuperclasses>
47+
<doInnerClassesNonStatic>true</doInnerClassesNonStatic>
48+
<disableGenerateFields>true</disableGenerateFields>
4349
<customTypes>
4450
<type>abc</type>
4551
<type>def</type>

jbbp-plugins/jbbp-plugin-common/src/main/java/com/igormaznitsa/jbbp/plugin/common/converters/JBBPScriptTranslator.java

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,20 @@ final class Parameters {
4141
*/
4242
@Nonnull
4343
private final Map<String, String> subClassInterfaces = new HashMap<String, String>();
44+
/**
45+
* Map of superclasses to be extended by subclasses.
46+
*
47+
* @since 1.4.0
48+
*/
49+
@Nonnull
50+
private final Map<String, String> subClassSuperclasses = new HashMap<String, String>();
51+
52+
/**
53+
* Flag to not make generated subclasses as static ones.
54+
*
55+
* @since 1.4.0
56+
*/
57+
private boolean doInternalClassesNonStatic;
4458
/**
4559
* Set of interface names to be implemented by the main class.
4660
*/
@@ -58,6 +72,7 @@ final class Parameters {
5872
JBBPCustomFieldTypeProcessor customFieldTypeProcessor = null;
5973
/**
6074
* Disable generate class fields.
75+
*
6176
* @since 1.4.0
6277
*/
6378
private boolean disableGenerateFields = false;
@@ -145,7 +160,7 @@ public Parameters setDisableGenerateFields(final boolean value) {
145160
this.disableGenerateFields = value;
146161
return this;
147162
}
148-
163+
149164
@Nonnull
150165
public Set<String> getClassImplements() {
151166
return Collections.unmodifiableSet(this.classImplements);
@@ -163,6 +178,28 @@ public Map<String, String> getSubClassInterfaces() {
163178
return Collections.unmodifiableMap(this.subClassInterfaces);
164179
}
165180

181+
@Nonnull
182+
public Map<String, String> getSubClassSuperclasses() {
183+
return Collections.unmodifiableMap(this.subClassSuperclasses);
184+
}
185+
186+
@Nonnull
187+
public Parameters setDoInternalClassesNonStatic(final boolean flag) {
188+
this.doInternalClassesNonStatic = flag;
189+
return this;
190+
}
191+
192+
public boolean isDoInternalClassesNonStatic() {
193+
return this.doInternalClassesNonStatic;
194+
}
195+
196+
@Nonnull
197+
public Parameters setSubClassSuperclasses(@Nonnull final Map<String, String> value) {
198+
this.subClassSuperclasses.clear();
199+
this.subClassSuperclasses.putAll(value);
200+
return this;
201+
}
202+
166203
@Nonnull
167204
public Parameters setSubClassInterfaces(@Nonnull final Map<String, String> value) {
168205
this.subClassInterfaces.clear();

jbbp-plugins/jbbp-plugin-common/src/main/java/com/igormaznitsa/jbbp/plugin/common/converters/Java16Converter.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
public class Java16Converter implements JBBPScriptTranslator {
1919
@Override
2020
@Nonnull
21-
public Set<File> translate(@Nonnull final JBBPScriptTranslator.Parameters parameters, final boolean dryRun) throws IOException {
21+
public Set<File> translate(@Nonnull final Parameters parameters, final boolean dryRun) throws IOException {
2222
final File scriptToProcess = Assertions.assertNotNull(parameters.getScriptFile());
2323

2424
final String text = FileUtils.readFileToString(scriptToProcess, parameters.getEncodingIn());
@@ -38,6 +38,7 @@ public Set<File> translate(@Nonnull final JBBPScriptTranslator.Parameters parame
3838

3939
final JBBPToJava6Converter.Builder builder = JBBPToJava6Converter.makeBuilder(parser)
4040
.setMapSubClassesInterfaces(parameters.getSubClassInterfaces())
41+
.setMapSubClassesSuperclasses(parameters.getSubClassSuperclasses())
4142
.setMainClassName(className)
4243
.setHeadComment(parameters.getHeadComment())
4344
.setMainClassPackage(packageName)
@@ -48,6 +49,10 @@ public Set<File> translate(@Nonnull final JBBPScriptTranslator.Parameters parame
4849
.setParserFlags(parameters.getParserFlags())
4950
.setSuperClass(parameters.superClass);
5051

52+
if (parameters.isDoInternalClassesNonStatic()) {
53+
builder.doInternalClassesNonStatic();
54+
}
55+
5156
if (parameters.isDisableGenerateFields()) {
5257
builder.disableGenerateFields();
5358
}

0 commit comments

Comments
 (0)