• R/O
  • HTTP
  • SSH
  • HTTPS

Pmd2XML: コミット

Pmd2XMLは、3D動画制作ツール、MikuMikuDance(MMD)で用いられるモデルデータファイル(*.pmd)の内容を、XML形式のデータファイルと交換するためのアプリケーションです。


コミットメタ情報

リビジョンf5ccf9a8f0902b0b8d4fc4f00d8059357e2880c6 (tree)
日時2019-07-04 16:26:03
作者Olyutorskii <olyutorskii@user...>
コミッターOlyutorskii

ログメッセージ

Merge release/v1.203.2

変更サマリ

差分

--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -4,6 +4,9 @@
44 Pmd2XML 変更履歴
55
66
7+1.203.2 (2019-07-04)
8+ * Prevent XXE vulnerabilities from external resources.
9+
710 1.202.2 (2019-06-06)
811 ・必須環境をJavaSE8に引き上げ。
912 ・デフォルトロケールによる出力揺らぎを解消。
--- a/config/checkstyle/checkstyle-suppressions.xml
+++ b/config/checkstyle/checkstyle-suppressions.xml
@@ -6,7 +6,7 @@
66
77 <!--
88 Checkstyle suppressions
9- for Checkstyle 8.20 or later
9+ for Checkstyle 8.22 or later
1010
1111 [ https://checkstyle.org/ ]
1212
@@ -31,18 +31,19 @@
3131 <suppress files="" checks="ImportControl" />
3232
3333 <!-- Javadoc Comments -->
34- <suppress files="" checks="JavadocParagraph" />
35- <suppress files="" checks="JavadocTagContinuationIndentation" />
3634 <suppress files="" checks="SummaryJavadocCheck" />
3735
3836 <!-- Miscellaneous -->
3937 <suppress files="" checks="FinalParameters" />
38+ <suppress files="" checks="OrderedProperties" />
4039 <suppress files="" checks="TrailingComment" />
4140
4241 <!-- Modifier -->
43- <suppress files="" checks="InterfaceMemberImpliedModifier" />
42+ <suppress files="" checks="RedundantModifier" />
4443
4544 <!-- Whitespace -->
45+ <suppress files="" checks="MethodParam" />
46+ <suppress files="" checks="ParenPad" />
4647 <suppress files="" checks="SingleSpaceSeparator" />
4748
4849 </suppressions>
--- a/config/checkstyle/checkstyle.xml
+++ b/config/checkstyle/checkstyle.xml
@@ -6,7 +6,7 @@
66
77 <!--
88 Checkstyle modules
9- for Checkstyle 8.21 or later
9+ for Checkstyle 8.22 or later
1010
1111 [ https://checkstyle.org/ ]
1212
@@ -39,6 +39,7 @@
3939 <property name="fileExtensions" value="xml" />
4040 </module>
4141 <module name="RegexpHeader">
42+ <!-- /* ... */ -->
4243 <property name="header" value="^/\*$\n^ \*( .*)?$\n^ \*/$\n" />
4344 <property name="multiLines" value="2" />
4445 <property name="fileExtensions" value="java" />
@@ -55,6 +56,7 @@
5556 <module name="NewlineAtEndOfFile">
5657 <property name="fileExtensions" value="java, properties, xml, xsd, md, txt" />
5758 </module>
59+ <module name="OrderedProperties" />
5860 <module name="Translation" />
5961 <module name="UniqueProperties" />
6062
@@ -188,13 +190,18 @@
188190 <module name="RequireThis">
189191 <property name="checkMethods" value="false" />
190192 </module>
191- <module name="ReturnCount" />
193+ <module name="ReturnCount">
194+ <property name="max" value="5" />
195+ <property name="maxForVoid" value="5" />
196+ </module>
192197 <module name="SimplifyBooleanExpression" />
193198 <module name="SimplifyBooleanReturn" />
194199 <module name="StringLiteralEquality" />
195200 <module name="SuperClone" />
196201 <module name="SuperFinalize" />
197202 <module name="UnnecessaryParentheses" />
203+ <module name="UnnecessarySemicolonInEnumeration" />
204+ <module name="UnnecessarySemicolonInTryWithResources" />
198205 <module name="VariableDeclarationUsageDistance">
199206 <property name="allowedDistance" value="5"/>
200207 </module>
@@ -230,6 +237,7 @@
230237 <property name="scope" value="protected" />
231238 </module>
232239 <module name="MissingJavadocMethod" />
240+ <module name="MissingJavadocPackage" />
233241 <module name="MissingJavadocType" />
234242 <module name="NonEmptyAtclauseDescription" />
235243 <module name="SingleLineJavadoc" />
@@ -352,16 +360,17 @@
352360 <module name="GenericWhitespace" />
353361 <module name="MethodParamPad" />
354362 <module name="NoLineWrap" />
355- <module name="NoWhitespaceAfter" />
356- <module name="NoWhitespaceBefore" />
357- <module name="OperatorWrap" />
358- <module name="ParenPad">
359- <property name="option" value="nospace" />
363+ <module name="NoWhitespaceAfter">
360364 <property
361365 name="tokens"
362- value="CTOR_CALL, METHOD_CALL, SUPER_CTOR_CALL"
366+ value="AT, INC, DEC, UNARY_MINUS, UNARY_PLUS, DOT"
363367 />
364368 </module>
369+ <module name="NoWhitespaceBefore">
370+ <property name="allowLineBreaks" value="true" />
371+ </module>
372+ <module name="OperatorWrap" />
373+ <module name="ParenPad" />
365374 <module name="SeparatorWrap">
366375 <property name="tokens" value="DOT"/>
367376 <property name="option" value="nl"/>
@@ -392,6 +401,6 @@
392401 </module>
393402
394403
395- </module>
404+</module>
396405
397406 <!-- EOF -->
--- a/config/pmd/pmdrules.xml
+++ b/config/pmd/pmdrules.xml
@@ -37,6 +37,11 @@
3737 <property name="checkSingleIfStmt" value="false"/>
3838 </properties>
3939 </rule>
40+ <rule ref="category/java/codestyle.xml/LongVariable" >
41+ <properties>
42+ <property name="minimum" value="25"/>
43+ </properties>
44+ </rule>
4045
4146 <rule ref="category/java/design.xml" >
4247 <exclude name="LawOfDemeter" />
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
1616 <groupId>jp.sourceforge.mikutoga</groupId>
1717 <artifactId>pmd2xml</artifactId>
1818
19- <version>1.202.2</version>
19+ <version>1.203.2</version>
2020
2121 <packaging>jar</packaging>
2222 <name>Pmd2XML</name>
@@ -86,26 +86,23 @@
8686 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
8787 <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
8888
89- <locale>en</locale>
90- <site.locales>${locale}</site.locales>
91- <javadoc.locale>${locale}</javadoc.locale>
92- <spotbugs.jvmArgs>-Duser.language=${locale}</spotbugs.jvmArgs>
93-
94- <!-- Walk around: JDK 11 javadoc + Maven -->
95- <detectJavaApiLink>false</detectJavaApiLink>
89+ <!-- DO NOT USE ${locale} with site-plugin -->
90+ <site.locales>en</site.locales>
91+ <javadoc.locale>en</javadoc.locale>
92+ <spotbugs.jvmArgs>-Duser.language=en</spotbugs.jvmArgs>
9693
9794 <surefire-plugin.version>3.0.0-M3</surefire-plugin.version>
9895 <jacoco-plugin.version>0.8.4</jacoco-plugin.version>
9996
10097 <checkstyle-plugin.version>3.1.0</checkstyle-plugin.version>
101- <checkstyleruntime.version>8.21</checkstyleruntime.version>
102- <checkstyle.config.location>${project.basedir}/config/checkstyle/checkstyle.xml</checkstyle.config.location>
103- <checkstyle.suppressions.location>${project.basedir}/config/checkstyle/checkstyle-suppressions.xml</checkstyle.suppressions.location>
98+ <checkstyleruntime.version>8.22</checkstyleruntime.version>
99+ <checkstyle.config.location>config/checkstyle/checkstyle.xml</checkstyle.config.location>
100+ <checkstyle.suppressions.location>config/checkstyle/checkstyle-suppressions.xml</checkstyle.suppressions.location>
104101 <checkstyle.enable.rss>false</checkstyle.enable.rss>
105102
106103 <pmd-plugin.version>3.12.0</pmd-plugin.version>
107104
108- <spotbugs-plugin.version>3.1.11</spotbugs-plugin.version>
105+ <spotbugs-plugin.version>3.1.12</spotbugs-plugin.version>
109106 <spotbugs.effort>Max</spotbugs.effort>
110107 <spotbugs.threshold>Low</spotbugs.threshold>
111108 <!-- for Jenkins -->
@@ -129,7 +126,7 @@
129126 <dependency>
130127 <groupId>jp.sourceforge.mikutoga</groupId>
131128 <artifactId>togagem</artifactId>
132- <version>3.121.2</version>
129+ <version>3.122.2</version>
133130 <scope>compile</scope>
134131 </dependency>
135132
@@ -315,7 +312,7 @@
315312 <execution>
316313 <phase>package</phase>
317314 <goals>
318- <goal>shade</goal>
315+ <goal>shade</goal>
319316 </goals>
320317 <configuration>
321318 <createDependencyReducedPom>false</createDependencyReducedPom>
@@ -349,7 +346,7 @@
349346 <id>attach-sources</id>
350347 <phase>verify</phase>
351348 <goals>
352- <goal>jar-no-fork</goal>
349+ <goal>jar-no-fork</goal>
353350 </goals>
354351 </execution>
355352 </executions>
@@ -508,13 +505,14 @@
508505 <artifactId>maven-javadoc-plugin</artifactId>
509506 <version>3.1.0</version>
510507 <configuration>
508+ <locale>${javadoc.locale}</locale>
509+ <source>${maven.compiler.source}</source>
511510 <author>false</author>
512511 <notimestamp>true</notimestamp>
513512 <quiet>true</quiet>
514513 <show>protected</show>
515514 <header>${project.name} ${project.version} API</header>
516515 <version>true</version>
517- <locale>${javadoc.locale}</locale>
518516 <!-- for JDK11 javadoc -->
519517 <additionalJOption>-J-Duser.language=${javadoc.locale}</additionalJOption>
520518 </configuration>
@@ -571,7 +569,7 @@
571569 <version>${pmd-plugin.version}</version>
572570 <configuration>
573571 <rulesets>
574- <ruleset>${project.basedir}/config/pmd/pmdrules.xml</ruleset>
572+ <ruleset>config/pmd/pmdrules.xml</ruleset>
575573 </rulesets>
576574 </configuration>
577575 <reportSets>
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java
@@ -18,11 +18,11 @@ import jp.sfjp.mikutoga.corelib.I18nText;
1818 * 通し番号0のボーングループは、
1919 * 暗黙に用意される「デフォルトボーングループ」とする。
2020 */
21-public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {
21+public class BoneGroup implements SerialNumbered, Iterable<BoneInfo> {
2222
2323 private final I18nText groupName = new I18nText();
2424
25- private final List<BoneInfo> boneList = new ArrayList<BoneInfo>();
25+ private final List<BoneInfo> boneList = new ArrayList<>();
2626
2727 private int serialNo = -1;
2828
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java
@@ -21,7 +21,7 @@ public class IKChain implements Iterable<BoneInfo> {
2121 private int ikDepth;
2222 private float ikWeight;
2323
24- private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();
24+ private final List<BoneInfo> chainList = new ArrayList<>();
2525
2626
2727 /**
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java
@@ -39,7 +39,7 @@ public class Material implements Iterable<Surface> {
3939
4040 private boolean edgeAppearance = true;
4141
42- private final List<Surface> surfaceList = new ArrayList<Surface>();
42+ private final List<Surface> surfaceList = new ArrayList<>();
4343
4444
4545 /**
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java
@@ -23,7 +23,7 @@ public class MorphPart implements SerialNumbered, Iterable<MorphVertex> {
2323 private MorphType type;
2424
2525 private final List<MorphVertex> morphVertexList =
26- new ArrayList<MorphVertex>();
26+ new ArrayList<>();
2727
2828 private int morphSerialNo = -1;
2929
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java
@@ -29,23 +29,23 @@ public class PmdModel {
2929 private final I18nText modelName = new I18nText();
3030 private final I18nText description = new I18nText();
3131
32- private final List<Vertex> vertexList = new ArrayList<Vertex>();
33- private final List<Surface> surfaceList = new ArrayList<Surface>();
34- private final List<Material> materialList = new LinkedList<Material>();
32+ private final List<Vertex> vertexList = new ArrayList<>();
33+ private final List<Surface> surfaceList = new ArrayList<>();
34+ private final List<Material> materialList = new LinkedList<>();
3535
36- private final List<BoneInfo> boneList = new ArrayList<BoneInfo>();
37- private final List<BoneGroup> boneGroupList = new ArrayList<BoneGroup>();
36+ private final List<BoneInfo> boneList = new ArrayList<>();
37+ private final List<BoneGroup> boneGroupList = new ArrayList<>();
3838
39- private final List<IKChain> ikChainList = new ArrayList<IKChain>();
39+ private final List<IKChain> ikChainList = new ArrayList<>();
4040
4141 private final Map<MorphType, List<MorphPart>> morphMap =
42- new EnumMap<MorphType, List<MorphPart>>(MorphType.class);
42+ new EnumMap<>(MorphType.class);
4343
44- private final List<RigidInfo> rigidList = new ArrayList<RigidInfo>();
44+ private final List<RigidInfo> rigidList = new ArrayList<>();
4545 private final List<RigidGroup> rigidGroupList =
46- new ArrayList<RigidGroup>();
46+ new ArrayList<>();
4747
48- private final List<JointInfo> jointList = new ArrayList<JointInfo>();
48+ private final List<JointInfo> jointList = new ArrayList<>();
4949
5050 private ToonMap toonMap = new ToonMap();
5151
@@ -59,10 +59,10 @@ public class PmdModel {
5959 assert this.vertexList instanceof RandomAccess;
6060 assert this.surfaceList instanceof RandomAccess;
6161
62- this.morphMap.put(MorphType.EYEBROW, new ArrayList<MorphPart>());
63- this.morphMap.put(MorphType.EYE, new ArrayList<MorphPart>());
64- this.morphMap.put(MorphType.LIP, new ArrayList<MorphPart>());
65- this.morphMap.put(MorphType.EXTRA, new ArrayList<MorphPart>());
62+ this.morphMap.put(MorphType.EYEBROW, new ArrayList<>());
63+ this.morphMap.put(MorphType.EYE, new ArrayList<>());
64+ this.morphMap.put(MorphType.LIP, new ArrayList<>());
65+ this.morphMap.put(MorphType.EXTRA, new ArrayList<>());
6666
6767 return;
6868 }
@@ -70,6 +70,7 @@ public class PmdModel {
7070
7171 /**
7272 * モデル名を返す。
73+ *
7374 * @return モデル名
7475 */
7576 public I18nText getModelName(){
@@ -79,6 +80,7 @@ public class PmdModel {
7980 /**
8081 * モデル説明文を返す。
8182 * 改行表現には{@literal \n}が用いられる
83+ *
8284 * @return モデル説明文
8385 */
8486 public I18nText getDescription(){
@@ -87,6 +89,7 @@ public class PmdModel {
8789
8890 /**
8991 * 頂点リストを返す。
92+ *
9093 * @return 頂点リスト。
9194 */
9295 public List<Vertex> getVertexList(){
@@ -95,6 +98,7 @@ public class PmdModel {
9598
9699 /**
97100 * 面リストを返す。
101+ *
98102 * @return 面リスト
99103 */
100104 public List<Surface> getSurfaceList(){
@@ -103,6 +107,7 @@ public class PmdModel {
103107
104108 /**
105109 * 素材リストを返す。
110+ *
106111 * @return 素材リスト
107112 */
108113 public List<Material> getMaterialList(){
@@ -111,6 +116,7 @@ public class PmdModel {
111116
112117 /**
113118 * ボーンリストを返す。
119+ *
114120 * @return ボーンリスト
115121 */
116122 public List<BoneInfo> getBoneList(){
@@ -119,6 +125,7 @@ public class PmdModel {
119125
120126 /**
121127 * ボーングループリストを返す。
128+ *
122129 * @return ボーングループリスト
123130 */
124131 public List<BoneGroup> getBoneGroupList(){
@@ -127,6 +134,7 @@ public class PmdModel {
127134
128135 /**
129136 * IKチェーンリストを返す。
137+ *
130138 * @return IKチェーンリスト
131139 */
132140 public List<IKChain> getIKChainList(){
@@ -135,6 +143,7 @@ public class PmdModel {
135143
136144 /**
137145 * 種類別モーフリストのマップを返す。
146+ *
138147 * @return 種類別モーフリストのマップ
139148 */
140149 public Map<MorphType, List<MorphPart>> getMorphMap(){
@@ -143,6 +152,7 @@ public class PmdModel {
143152
144153 /**
145154 * 剛体リストを返す。
155+ *
146156 * @return 剛体リスト
147157 */
148158 public List<RigidInfo> getRigidList(){
@@ -151,6 +161,7 @@ public class PmdModel {
151161
152162 /**
153163 * 剛体グループリストを返す。
164+ *
154165 * @return 剛体グループリスト。
155166 */
156167 public List<RigidGroup> getRigidGroupList(){
@@ -159,6 +170,7 @@ public class PmdModel {
159170
160171 /**
161172 * 剛体間ジョイントリストを返す。
173+ *
162174 * @return 剛体間ジョイントリスト
163175 */
164176 public List<JointInfo> getJointList(){
@@ -167,6 +179,7 @@ public class PmdModel {
167179
168180 /**
169181 * トゥーンファイルマップを返す。
182+ *
170183 * @return トゥーンファイルマップ
171184 */
172185 public ToonMap getToonMap(){
@@ -176,6 +189,7 @@ public class PmdModel {
176189 /**
177190 * トゥーンファイルマップを設定する。
178191 * 各素材のシェーディングで参照するトゥーンファイルマップも更新される。
192+ *
179193 * @param map トゥーンファイルマップ
180194 */
181195 public void setToonMap(ToonMap map){
@@ -190,6 +204,7 @@ public class PmdModel {
190204 /**
191205 * このモデルがグローバル名を含むか判定する。
192206 * ボーン名、ボーングループ名、モーフ名、モデル説明文が判定対象。
207+ *
193208 * @return グローバル名を持つならtrue
194209 */
195210 public boolean hasGlobalText(){
@@ -216,10 +231,11 @@ public class PmdModel {
216231 /**
217232 * 全モーフが使う全モーフ頂点の出現順リストを返す。
218233 * モーフ種別毎に固まっている事が保証される。
234+ *
219235 * @return モーフ頂点リスト
220236 */
221237 private List<MorphVertex> getAllMorphVertexList(){
222- List<MorphVertex> allList = new ArrayList<MorphVertex>();
238+ List<MorphVertex> allList = new ArrayList<>();
223239
224240 for(MorphType type : this.morphMap.keySet()){
225241 if(type.isBase()) continue;
@@ -239,14 +255,15 @@ public class PmdModel {
239255
240256 /**
241257 * 重複する頂点参照を除いたモーフ頂点リストを返す。
258+ *
242259 * @param allList モーフ頂点リスト
243260 * @return 重複が除かれたモーフ頂点リスト
244261 */
245262 private List<MorphVertex> getUniqueMorphVertexList(
246263 List<MorphVertex> allList ){
247- List<MorphVertex> result = new ArrayList<MorphVertex>();
264+ List<MorphVertex> result = new ArrayList<>();
248265
249- Set<Vertex> mergedVertexSet = new HashSet<Vertex>();
266+ Set<Vertex> mergedVertexSet = new HashSet<>();
250267
251268 for(MorphVertex morphVertex : allList){
252269 Vertex vertex = morphVertex.getBaseVertex();
@@ -264,9 +281,10 @@ public class PmdModel {
264281 * モーフで使われる全てのモーフ頂点のリストを返す。
265282 * モーフ間で重複する頂点はマージされる。
266283 * 頂点IDでソートされる。
267- * <p>
268- * 0から始まる通し番号がリナンバリングされる。
284+ *
285+ * <p>0から始まる通し番号がリナンバリングされる。
269286 * 通し番号は返されるモーフ頂点リストの添え字番号と一致する。
287+ *
270288 * @return モーフに使われるモーフ頂点のリスト
271289 */
272290 public List<MorphVertex> mergeMorphVertex(){
@@ -279,7 +297,7 @@ public class PmdModel {
279297 ListUtil.assignIndexedSerial(result);
280298
281299 Map<Vertex, MorphVertex> numberedMap =
282- new HashMap<Vertex, MorphVertex>();
300+ new HashMap<>();
283301 for(MorphVertex morphVertex : result){
284302 Vertex vertex = morphVertex.getBaseVertex();
285303 numberedMap.put(vertex, morphVertex);
@@ -319,10 +337,11 @@ public class PmdModel {
319337 * 所属マテリアル順に再配置し、通し番号を割り振り直す。
320338 * 所属マテリアルの無い面はリストの末端に配置される。
321339 * 面リスト中のnullは削除され詰められる。
340+ *
322341 * @return トリミングされた面リスト
323342 */
324343 private List<Surface> trimmingSurfaceList(){
325- Set<Surface> materialedSurfaceSet = new HashSet<Surface>();
344+ Set<Surface> materialedSurfaceSet = new HashSet<>();
326345 for(Material material : this.materialList){
327346 if(material == null) continue;
328347 for(Surface surface : material){
@@ -333,7 +352,7 @@ public class PmdModel {
333352
334353 materialedSurfaceSet.removeAll(this.surfaceList);
335354
336- List<Surface> result = new ArrayList<Surface>();
355+ List<Surface> result = new ArrayList<>();
337356 for(Surface surface : this.surfaceList){
338357 if(surface == null) continue;
339358 result.add(surface);
@@ -355,10 +374,11 @@ public class PmdModel {
355374 * 通し番号を振り直す。
356375 * 所属面の無い頂点はリストの末端に配置される。
357376 * 頂点リスト中のnullは削除され詰められる。
377+ *
358378 * @return トリミングされた頂点リスト
359379 */
360380 private List<Vertex> trimmingVertexList(){
361- Set<Vertex> surfacedVertexSet = new HashSet<Vertex>();
381+ Set<Vertex> surfacedVertexSet = new HashSet<>();
362382 for(Surface surface : this.surfaceList){
363383 if(surface == null) continue;
364384 for(Vertex vertex : surface){
@@ -368,7 +388,7 @@ public class PmdModel {
368388
369389 surfacedVertexSet.removeAll(this.vertexList);
370390
371- List<Vertex> result = new ArrayList<Vertex>();
391+ List<Vertex> result = new ArrayList<>();
372392 for(Vertex vertex : this.vertexList){
373393 if(vertex == null) continue;
374394 result.add(vertex);
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java
@@ -21,7 +21,7 @@ public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
2121 public static final int MAX_RIGID_GROUP = 16;
2222
2323
24- private final List<RigidInfo> rigidList = new ArrayList<RigidInfo>();
24+ private final List<RigidInfo> rigidList = new ArrayList<>();
2525
2626 private int rigidGroupSerialNo = -1;
2727
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java
@@ -32,7 +32,7 @@ public class RigidInfo implements SerialNumbered {
3232 private final DynamicsInfo dynamicsInfo = new DynamicsInfo();
3333
3434 private final Collection<RigidGroup> throughGroupColl =
35- new ArrayList<RigidGroup>();
35+ new ArrayList<>();
3636
3737 private RigidGroup rigidGroup;
3838
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java
@@ -15,20 +15,23 @@ import java.util.Comparator;
1515 public interface SerialNumbered {
1616
1717 /** 昇順での比較子。 */
18- Comparator<SerialNumbered> COMPARATOR = new SerialComparator();
18+ public static final Comparator<SerialNumbered> COMPARATOR =
19+ new SerialComparator();
1920
2021
2122 /**
2223 * 通し番号を設定する。
24+ *
2325 * @param num 通し番号
2426 */
25- void setSerialNumber(int num);
27+ public abstract void setSerialNumber(int num);
2628
2729 /**
2830 * 通し番号を返す。
31+ *
2932 * @return 通し番号
3033 */
31- int getSerialNumber();
34+ public abstract int getSerialNumber();
3235
3336
3437 /**
@@ -36,7 +39,7 @@ public interface SerialNumbered {
3639 * 通し番号の昇順を定義づける。
3740 */
3841 @SuppressWarnings("serial")
39- class SerialComparator
42+ public static class SerialComparator
4043 implements Comparator<SerialNumbered> {
4144
4245 /**
@@ -50,6 +53,7 @@ public interface SerialNumbered {
5053
5154 /**
5255 * {@inheritDoc}
56+ *
5357 * @param o1 {@inheritDoc}
5458 * @param o2 {@inheritDoc}
5559 * @return {@inheritDoc}
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java
@@ -38,6 +38,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
3838
3939 /**
4040 * 3頂点を設定する。
41+ *
4142 * @param vtx1 頂点1
4243 * @param vtx2 頂点2
4344 * @param vtx3 頂点3
@@ -61,10 +62,11 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
6162
6263 /**
6364 * 3頂点を返す。
65+ *
6466 * @param store 頂点格納用配列。nullもしくは3要素に満たない場合は無視され、
65- * 新規に格納用配列が生成される。
67+ * 新規に格納用配列が生成される。
6668 * @return 先頭3要素に3頂点が収められた配列。未設定要素にはnullが入る。
67- * 引数が長さ3以上の配列であれば引数と同じ配列が返る。
69+ * 引数が長さ3以上の配列であれば引数と同じ配列が返る。
6870 */
6971 public Vertex[] getTriangle(Vertex[] store){
7072 Vertex[] result;
@@ -83,6 +85,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
8385
8486 /**
8587 * 頂点その1を返す。
88+ *
8689 * @return 頂点その1
8790 */
8891 public Vertex getVertex1(){
@@ -91,6 +94,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
9194
9295 /**
9396 * 頂点その2を返す。
97+ *
9498 * @return 頂点その2
9599 */
96100 public Vertex getVertex2(){
@@ -99,6 +103,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
99103
100104 /**
101105 * 頂点その3を返す。
106+ *
102107 * @return 頂点その3
103108 */
104109 public Vertex getVertex3(){
@@ -109,11 +114,12 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
109114 * {@inheritDoc}
110115 * 頂点を返す反復子を生成する。
111116 * 反復子がnullを返す可能性もありうる。
117+ *
112118 * @return {@inheritDoc}
113119 */
114120 @Override
115121 public Iterator<Vertex> iterator(){
116- List<Vertex> list = new ArrayList<Vertex>(TRIANGLE);
122+ List<Vertex> list = new ArrayList<>(TRIANGLE);
117123
118124 list.add(this.vertex1);
119125 list.add(this.vertex2);
@@ -124,6 +130,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
124130
125131 /**
126132 * 3頂点全てが設定されているか判定する。
133+ *
127134 * @return 3頂点とも非nullが設定されていればtrue
128135 */
129136 public boolean isCompleted(){
@@ -136,6 +143,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
136143
137144 /**
138145 * {@inheritDoc}
146+ *
139147 * @param num {@inheritDoc}
140148 */
141149 @Override
@@ -146,6 +154,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
146154
147155 /**
148156 * {@inheritDoc}
157+ *
149158 * @return {@inheritDoc}
150159 */
151160 @Override
@@ -155,6 +164,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
155164
156165 /**
157166 * {@inheritDoc}
167+ *
158168 * @return {@inheritDoc}
159169 */
160170 @Override
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java
@@ -33,7 +33,7 @@ public class ToonMap {
3333 private static final int IDX_SP = 0xff; // 特殊トゥーンのインデックス
3434
3535 static{
36- Map<Integer, String> map = new TreeMap<Integer, String>();
36+ Map<Integer, String> map = new TreeMap<>();
3737
3838 int idx = 0x00;
3939 map.put(idx++, "toon01.bmp");
@@ -57,7 +57,7 @@ public class ToonMap {
5757
5858
5959 private final Map<Integer, String> toonDefMap =
60- new TreeMap<Integer, String>(DEF_TOONMAP);
60+ new TreeMap<>(DEF_TOONMAP);
6161
6262
6363 /**
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java
@@ -47,6 +47,7 @@ public class Vertex implements SerialNumbered {
4747
4848 /**
4949 * 頂点位置座標を返す。
50+ *
5051 * @return 頂点の位置座標
5152 */
5253 public MkPos3D getPosition(){
@@ -55,6 +56,7 @@ public class Vertex implements SerialNumbered {
5556
5657 /**
5758 * 法線ベクトルを返す。
59+ *
5860 * @return 法線ベクトル
5961 */
6062 public MkVec3D getNormal(){
@@ -63,6 +65,7 @@ public class Vertex implements SerialNumbered {
6365
6466 /**
6567 * UVマップ座標を返す。
68+ *
6669 * @return UVマップ情報
6770 */
6871 public MkPos2D getUVPosition(){
@@ -71,6 +74,7 @@ public class Vertex implements SerialNumbered {
7174
7275 /**
7376 * 頂点の属するボーンを設定する。
77+ *
7478 * @param boneAArg ボーンA
7579 * @param boneBArg ボーンB
7680 * @throws NullPointerException 引数がnull
@@ -88,6 +92,7 @@ public class Vertex implements SerialNumbered {
8892
8993 /**
9094 * ボーンAを返す。
95+ *
9196 * @return ボーンA
9297 */
9398 public BoneInfo getBoneA(){
@@ -96,6 +101,7 @@ public class Vertex implements SerialNumbered {
96101
97102 /**
98103 * ボーンBを返す。
104+ *
99105 * @return ボーンB
100106 */
101107 public BoneInfo getBoneB(){
@@ -104,12 +110,13 @@ public class Vertex implements SerialNumbered {
104110
105111 /**
106112 * ボーンAのウェイト値を設定する。
113+ *
107114 * @param weight ウェイト値。0(影響小)-100(影響大)
108115 * @throws IllegalArgumentException ウェイト値が範囲外
109116 */
110117 public void setWeightA(int weight) throws IllegalArgumentException{
111- if( weight < MIN_WEIGHT
112- || MAX_WEIGHT < weight ){
118+ if( weight < MIN_WEIGHT
119+ || MAX_WEIGHT < weight ){
113120 throw new IllegalArgumentException();
114121 }
115122 this.boneWeight = weight;
@@ -118,6 +125,7 @@ public class Vertex implements SerialNumbered {
118125
119126 /**
120127 * ボーンBのウェイト値を設定する。
128+ *
121129 * @param weight ウェイト値。0(影響小)-100(影響大)
122130 * @throws IllegalArgumentException ウェイト値が範囲外
123131 */
@@ -128,6 +136,7 @@ public class Vertex implements SerialNumbered {
128136
129137 /**
130138 * ボーンAのウェイト値を返す。
139+ *
131140 * @return ウェイト値
132141 */
133142 public int getWeightA(){
@@ -136,6 +145,7 @@ public class Vertex implements SerialNumbered {
136145
137146 /**
138147 * ボーンBのウェイト値を返す。
148+ *
139149 * @return ウェイト値
140150 */
141151 public int getWeightB(){
@@ -145,6 +155,7 @@ public class Vertex implements SerialNumbered {
145155
146156 /**
147157 * ボーンAのウェイト率を返す。
158+ *
148159 * @return ウェイト率。0.0(影響小)-1.0(影響大)
149160 */
150161 public float getWeightRatioA(){
@@ -153,6 +164,7 @@ public class Vertex implements SerialNumbered {
153164
154165 /**
155166 * ボーンBのウェイト率を返す。
167+ *
156168 * @return ウェイト率。0.0(影響小)-1.0(影響大)
157169 */
158170 public float getWeightRatioB(){
@@ -163,6 +175,7 @@ public class Vertex implements SerialNumbered {
163175 /**
164176 * エッジを表示するか設定する。
165177 * マテリアル材質単位の設定より優先度は高い。
178+ *
166179 * @param show 表示するならtrue
167180 */
168181 public void setEdgeAppearance(boolean show){
@@ -173,6 +186,7 @@ public class Vertex implements SerialNumbered {
173186 /**
174187 * エッジを表示するか判定する。
175188 * マテリアル材質単位の設定より優先度は高い。
189+ *
176190 * @return 表示するならtrue
177191 */
178192 public boolean getEdgeAppearance(){
@@ -181,6 +195,7 @@ public class Vertex implements SerialNumbered {
181195
182196 /**
183197 * {@inheritDoc}
198+ *
184199 * @param num {@inheritDoc}
185200 */
186201 @Override
@@ -191,6 +206,7 @@ public class Vertex implements SerialNumbered {
191206
192207 /**
193208 * {@inheritDoc}
209+ *
194210 * @return {@inheritDoc}
195211 */
196212 @Override
@@ -200,6 +216,7 @@ public class Vertex implements SerialNumbered {
200216
201217 /**
202218 * {@inheritDoc}
219+ *
203220 * @return {@inheritDoc}
204221 */
205222 @Override
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java
@@ -158,7 +158,7 @@ class BoneBuilder implements PmdBoneHandler {
158158 * 所属グループの無いボーンをデフォルトボーングループへ登録する。
159159 */
160160 private void pickOrphanBone(){
161- List<BoneInfo> orpahnList = new LinkedList<BoneInfo>();
161+ List<BoneInfo> orpahnList = new LinkedList<>();
162162 orpahnList.addAll(this.boneList);
163163 for(BoneGroup group : this.boneGroupList){
164164 orpahnList.removeAll(group.getBoneList());
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java
@@ -34,7 +34,7 @@ class MorphBuilder implements PmdMorphHandler {
3434 private MorphPart currentMorphPart;
3535 private final List<Vertex> vertexList;
3636
37- private final List<Vertex> morphVertexList = new ArrayList<Vertex>();
37+ private final List<Vertex> morphVertexList = new ArrayList<>();
3838
3939 /**
4040 * コンストラクタ。
@@ -183,7 +183,7 @@ class MorphBuilder implements PmdMorphHandler {
183183
184184 List<MorphPart> partList = this.morphMap.get(type);
185185 if(partList == null){
186- partList = new LinkedList<MorphPart>();
186+ partList = new LinkedList<>();
187187 this.morphMap.put(type, partList);
188188 }
189189 partList.add(part);
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java
@@ -38,8 +38,8 @@ import jp.sfjp.mikutoga.pmd.model.Vertex;
3838
3939 /**
4040 * PMDファイルのエクスポーター(拡張無し基本フォーマット)。
41- * <p>
42- * 英名対応以降のPMDファイルフォーマットを
41+ *
42+ * <p>英名対応以降のPMDファイルフォーマットを
4343 * 使いたくない場合はこのエクスポーターを用いて出力せよ。
4444 */
4545 public class PmdExporterBase extends BinaryExporter{
@@ -88,6 +88,7 @@ public class PmdExporterBase extends BinaryExporter{
8888
8989 /**
9090 * コンストラクタ。
91+ *
9192 * @param stream 出力ストリーム
9293 * @throws NullPointerException 引数がnull
9394 */
@@ -100,6 +101,7 @@ public class PmdExporterBase extends BinaryExporter{
100101 /**
101102 * 改行文字の正規化を行う。
102103 * CR(0x0d)およびCRLF(0x0d0a)がLF(0x0a)へと正規化される。
104+ *
103105 * @param text 文字列
104106 * @return 正規化の行われた文字列。
105107 */
@@ -117,11 +119,12 @@ public class PmdExporterBase extends BinaryExporter{
117119 * 文字列の改行記号はLF(0x0a)に正規化される。
118120 * エンコード結果がバイト長に満たない場合は
119121 * 1つの0x00及びそれに続く複数の0xfdがパディングされる。
122+ *
120123 * @param text 文字列
121124 * @param maxByteLength バイト長指定
122125 * @throws IOException 出力エラー
123126 * @throws IllegalTextExportException エンコード結果が
124- * 指定バイト長をはみ出した。
127+ * 指定バイト長をはみ出した。
125128 */
126129 protected void dumpText(String text, int maxByteLength)
127130 throws IOException, IllegalTextExportException{
@@ -131,6 +134,7 @@ public class PmdExporterBase extends BinaryExporter{
131134
132135 /**
133136 * モデルデータをPMDファイル形式で出力する。
137+ *
134138 * @param model モデルデータ
135139 * @throws IOException 出力エラー
136140 * @throws IllegalPmdDataException モデルデータに不備が発見された
@@ -156,6 +160,7 @@ public class PmdExporterBase extends BinaryExporter{
156160
157161 /**
158162 * モデル基本情報を出力する。
163+ *
159164 * @param model モデルデータ
160165 * @throws IOException 出力エラー
161166 * @throws IllegalTextExportException モデル名もしくは説明が長すぎる
@@ -179,6 +184,7 @@ public class PmdExporterBase extends BinaryExporter{
179184
180185 /**
181186 * 頂点リストを出力する。
187+ *
182188 * @param model モデルデータ
183189 * @throws IOException 出力エラー
184190 */
@@ -200,6 +206,7 @@ public class PmdExporterBase extends BinaryExporter{
200206
201207 /**
202208 * 個別の頂点データを出力する。
209+ *
203210 * @param vertex 頂点
204211 * @throws IOException 出力エラー
205212 */
@@ -233,6 +240,7 @@ public class PmdExporterBase extends BinaryExporter{
233240
234241 /**
235242 * 面リストを出力する。
243+ *
236244 * @param model モデルデータ
237245 * @throws IOException 出力エラー
238246 */
@@ -262,6 +270,7 @@ public class PmdExporterBase extends BinaryExporter{
262270
263271 /**
264272 * マテリアル素材リストを出力する。
273+ *
265274 * @param model モデルデータ
266275 * @throws IOException 出力エラー
267276 * @throws IllegalTextExportException シェーディングファイル情報が長すぎる
@@ -285,6 +294,7 @@ public class PmdExporterBase extends BinaryExporter{
285294
286295 /**
287296 * フォンシェーディングの色情報を出力する。
297+ *
288298 * @param material マテリアル情報
289299 * @throws IOException 出力エラー
290300 */
@@ -317,6 +327,7 @@ public class PmdExporterBase extends BinaryExporter{
317327
318328 /**
319329 * シェーディング情報を出力する。
330+ *
320331 * @param material マテリアル情報
321332 * @throws IOException 出力エラー
322333 * @throws IllegalTextExportException ファイル名が長すぎる
@@ -343,6 +354,7 @@ public class PmdExporterBase extends BinaryExporter{
343354
344355 /**
345356 * シェーディングファイル情報を出力する。
357+ *
346358 * @param shade シェーディング情報
347359 * @throws IOException 出力エラー
348360 * @throws IllegalTextExportException ファイル名が長すぎる
@@ -372,6 +384,7 @@ public class PmdExporterBase extends BinaryExporter{
372384
373385 /**
374386 * ボーンリストを出力する。
387+ *
375388 * @param model モデルデータ
376389 * @throws IOException 出力エラー
377390 * @throws IllegalTextExportException ボーン名が長すぎる
@@ -394,6 +407,7 @@ public class PmdExporterBase extends BinaryExporter{
394407
395408 /**
396409 * 個別のボーン情報を出力する。
410+ *
397411 * @param bone ボーン情報
398412 * @throws IOException 出力エラー
399413 * @throws IllegalTextExportException ボーン名が長すぎる
@@ -431,6 +445,7 @@ public class PmdExporterBase extends BinaryExporter{
431445
432446 /**
433447 * IKチェーンリストを出力する。
448+ *
434449 * @param model モデルデータ
435450 * @throws IOException 出力エラー
436451 */
@@ -452,6 +467,7 @@ public class PmdExporterBase extends BinaryExporter{
452467
453468 /**
454469 * IKチェーンを出力する。
470+ *
455471 * @param chain IKチェーン
456472 * @throws IOException 出力エラー
457473 */
@@ -485,6 +501,7 @@ public class PmdExporterBase extends BinaryExporter{
485501
486502 /**
487503 * モーフリストを出力する。
504+ *
488505 * @param model モデルデータ
489506 * @throws IOException 出力エラー
490507 * @throws IllegalTextExportException モーフ名が長すぎる
@@ -493,7 +510,7 @@ public class PmdExporterBase extends BinaryExporter{
493510 throws IOException, IllegalTextExportException{
494511 Map<MorphType, List<MorphPart>> morphMap = model.getMorphMap();
495512 Set<MorphType> typeSet = morphMap.keySet();
496- List<MorphPart> morphPartList = new LinkedList<MorphPart>();
513+ List<MorphPart> morphPartList = new LinkedList<>();
497514
498515 for(MorphType type : typeSet){
499516 List<MorphPart> partList = morphMap.get(type);
@@ -533,6 +550,7 @@ public class PmdExporterBase extends BinaryExporter{
533550
534551 /**
535552 * BASEモーフを出力する。
553+ *
536554 * @param model モデルデータ
537555 * @throws IOException 出力エラー
538556 * @throws IllegalTextExportException モーフ名が長すぎる
@@ -557,6 +575,7 @@ public class PmdExporterBase extends BinaryExporter{
557575
558576 /**
559577 * モーフグループを出力する。
578+ *
560579 * @param model モデルデータ
561580 * @throws IOException 出力エラー
562581 */
@@ -573,7 +592,7 @@ public class PmdExporterBase extends BinaryExporter{
573592 }
574593 dumpByte(totalMorph);
575594
576- List<MorphType> typeList = new LinkedList<MorphType>();
595+ List<MorphType> typeList = new LinkedList<>();
577596 for(MorphType type : typeSet){
578597 assert ! type.isBase();
579598 typeList.add(type);
@@ -596,6 +615,7 @@ public class PmdExporterBase extends BinaryExporter{
596615 /**
597616 * ボーングループリストを出力する。
598617 * デフォルトボーングループ内訳は出力されない。
618+ *
599619 * @param model モデルデータ
600620 * @throws IOException 出力エラー
601621 * @throws IllegalTextExportException ボーングループ名が長すぎる
@@ -632,6 +652,7 @@ public class PmdExporterBase extends BinaryExporter{
632652 /**
633653 * 各種通し番号をshort値で出力する。
634654 * short値に収まらない上位ビットは捨てられる。
655+ *
635656 * @param obj 番号づけられたオブジェクト
636657 * @throws IOException 出力エラー
637658 */
@@ -644,6 +665,7 @@ public class PmdExporterBase extends BinaryExporter{
644665
645666 /**
646667 * 2次元位置情報を出力する。
668+ *
647669 * @param position 2次元位置情報
648670 * @throws IOException 出力エラー
649671 */
@@ -659,6 +681,7 @@ public class PmdExporterBase extends BinaryExporter{
659681
660682 /**
661683 * 3次元位置情報を出力する。
684+ *
662685 * @param position 3次元位置情報
663686 * @throws IOException 出力エラー
664687 */
@@ -676,6 +699,7 @@ public class PmdExporterBase extends BinaryExporter{
676699
677700 /**
678701 * 3次元ベクトル情報を出力する。
702+ *
679703 * @param vector 3次元ベクトル
680704 * @throws IOException 出力エラー
681705 */
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt1.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt1.java
@@ -22,14 +22,15 @@ import jp.sfjp.mikutoga.pmd.model.PmdModel;
2222
2323 /**
2424 * PMDファイルのエクスポーター(拡張1:英名対応)。
25- * <p>
26- * 任意のトゥーンファイル名対応以降のPMDファイルフォーマットを
25+ *
26+ * <p>任意のトゥーンファイル名対応以降のPMDファイルフォーマットを
2727 * 使いたくない場合はこのエクスポーターを用いて出力せよ。
2828 */
2929 public class PmdExporterExt1 extends PmdExporterBase{
3030
3131 /**
3232 * コンストラクタ。
33+ *
3334 * @param stream 出力ストリーム
3435 * @throws NullPointerException 引数がnull
3536 */
@@ -41,6 +42,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
4142
4243 /**
4344 * {@inheritDoc}
45+ *
4446 * @param model {@inheritDoc}
4547 * @throws IOException {@inheritDoc}
4648 * @throws IllegalPmdDataException {@inheritDoc}
@@ -57,6 +59,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
5759
5860 /**
5961 * 英語名情報を出力する。
62+ *
6063 * @param model モデルデータ
6164 * @throws IOException 出力エラー
6265 * @throws IllegalPmdDataException 文字列が長すぎる。
@@ -87,6 +90,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
8790
8891 /**
8992 * モデル基本情報を英語で出力する。
93+ *
9094 * @param model モデルデータ
9195 * @throws IOException 出力エラー
9296 * @throws IllegalTextExportException 文字列が長すぎる。
@@ -106,6 +110,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
106110
107111 /**
108112 * ボーン英語名情報を出力する。
113+ *
109114 * @param model モデルデータ
110115 * @throws IOException 出力エラー
111116 * @throws IllegalTextExportException 文字列が長すぎる。
@@ -123,6 +128,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
123128
124129 /**
125130 * モーフ英語名情報を出力する。
131+ *
126132 * @param model モデルデータ
127133 * @throws IOException 出力エラー
128134 * @throws IllegalTextExportException 文字列が長すぎる。
@@ -147,6 +153,7 @@ public class PmdExporterExt1 extends PmdExporterBase{
147153
148154 /**
149155 * ボーングループ英語名情報を出力する。
156+ *
150157 * @param model モデルデータ
151158 * @throws IOException 出力エラー
152159 * @throws IllegalTextExportException 文字列が長すぎる
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt2.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt2.java
@@ -17,14 +17,15 @@ import jp.sfjp.mikutoga.pmd.model.ToonMap;
1717
1818 /**
1919 * PMDファイルのエクスポーター(拡張2:任意のトゥーンファイル名対応)。
20- * <p>
21- * 物理演算対応以降のPMDファイルフォーマットを
20+ *
21+ * <p>物理演算対応以降のPMDファイルフォーマットを
2222 * 使いたくない場合はこのエクスポーターを用いて出力せよ。
2323 */
2424 public class PmdExporterExt2 extends PmdExporterExt1{
2525
2626 /**
2727 * コンストラクタ。
28+ *
2829 * @param stream 出力ストリーム
2930 * @throws NullPointerException 引数がnull
3031 */
@@ -36,6 +37,7 @@ public class PmdExporterExt2 extends PmdExporterExt1{
3637
3738 /**
3839 * {@inheritDoc}
40+ *
3941 * @param model {@inheritDoc}
4042 * @throws IOException {@inheritDoc}
4143 * @throws IllegalPmdDataException {@inheritDoc}
@@ -56,6 +58,7 @@ public class PmdExporterExt2 extends PmdExporterExt1{
5658
5759 /**
5860 * 独自トゥーンファイルテーブルを出力する。
61+ *
5962 * @param model モデルデータ
6063 * @throws IOException 出力エラー
6164 * @throws IllegalTextExportException トゥーンファイル名が長すぎる
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt3.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterExt3.java
@@ -27,8 +27,8 @@ import jp.sfjp.mikutoga.pmd.model.RigidShape;
2727
2828 /**
2929 * PMDファイルのエクスポーター(拡張3:物理演算対応)。
30- * <p>
31- * 物理演算対応のPMDファイルフォーマットを
30+ *
31+ * <p>物理演算対応のPMDファイルフォーマットを
3232 * 使いたい場合はこのエクスポーターを用いて出力せよ。
3333 */
3434 public class PmdExporterExt3 extends PmdExporterExt2{
@@ -37,6 +37,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
3737
3838 /**
3939 * コンストラクタ。
40+ *
4041 * @param stream 出力ストリーム
4142 * @throws NullPointerException 引数がnull
4243 */
@@ -48,6 +49,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
4849
4950 /**
5051 * {@inheritDoc}
52+ *
5153 * @param model {@inheritDoc}
5254 * @throws IOException {@inheritDoc}
5355 * @throws IllegalPmdDataException {@inheritDoc}
@@ -69,6 +71,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
6971
7072 /**
7173 * 剛体リストを出力する。
74+ *
7275 * @param model モデルデータ
7376 * @throws IOException 出力エラー
7477 * @throws IllegalTextExportException 長すぎる剛体名
@@ -90,6 +93,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
9093
9194 /**
9295 * 個別の剛体情報を出力する。
96+ *
9397 * @param rigid 剛体
9498 * @throws IOException 出力エラー
9599 * @throws IllegalTextExportException 長すぎる剛体名
@@ -130,6 +134,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
130134
131135 /**
132136 * 剛体形状を出力する。
137+ *
133138 * @param shape 剛体形状
134139 * @throws IOException 出力エラー
135140 */
@@ -151,6 +156,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
151156
152157 /**
153158 * 力学設定を出力する。
159+ *
154160 * @param dynamics 力学設定
155161 * @throws IOException 出力エラー
156162 */
@@ -173,6 +179,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
173179
174180 /**
175181 * ジョイントリストを出力する。
182+ *
176183 * @param model モデルデータ
177184 * @throws IOException 出力エラー
178185 * @throws IllegalTextExportException 長すぎるジョイント名
@@ -194,6 +201,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
194201
195202 /**
196203 * 個別のジョイント情報を出力する。
204+ *
197205 * @param joint ジョイント
198206 * @throws IOException 出力エラー
199207 * @throws IllegalTextExportException 長すぎるジョイント名
@@ -223,6 +231,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
223231
224232 /**
225233 * 3次元範囲制約を出力する。
234+ *
226235 * @param range 3次元範囲制約
227236 * @throws IOException 出力エラー
228237 */
@@ -248,6 +257,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
248257
249258 /**
250259 * ラジアンによる3次元姿勢情報を出力する。
260+ *
251261 * @param rad 3次元姿勢情報
252262 * @throws IOException 出力エラー
253263 */
@@ -265,6 +275,7 @@ public class PmdExporterExt3 extends PmdExporterExt2{
265275
266276 /**
267277 * 度数法による3次元姿勢情報を出力する。
278+ *
268279 * @param deg 3次元姿勢情報
269280 * @throws IOException 出力エラー
270281 */
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdLoader.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdLoader.java
@@ -40,8 +40,10 @@ public class PmdLoader {
4040
4141 /**
4242 * 正常パース時に読み残したデータがあったか判定する。
43+ *
4344 * <p>MMDでの仕様拡張による
4445 * PMDファイルフォーマットの拡張が行われた場合を想定。
46+ *
4547 * @return 読み残したデータがあればtrue
4648 * @throws IllegalStateException まだパースを試みていない。
4749 */
@@ -53,6 +55,7 @@ public class PmdLoader {
5355 /**
5456 * PMDファイルの読み込みを行いモデル情報を返す。
5557 * 1インスタンスにつき一度しかロードできない。
58+ *
5659 * @param source PMDファイル入力ソース
5760 * @return モデル情報
5861 * @throws IOException 入力エラー
@@ -78,7 +81,7 @@ public class PmdLoader {
7881 RigidBuilder rigidBuilder = new RigidBuilder(model);
7982 JointBuilder jointBuilder = new JointBuilder(model);
8083
81- List<MorphPart> morphPartList = new ArrayList<MorphPart>();
84+ List<MorphPart> morphPartList = new ArrayList<>();
8285 morphBuilder.setMorphPartList(morphPartList);
8386 textBuilder.setMorphPartList(morphPartList);
8487
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/CloseXmlMark.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/CloseXmlMark.java
@@ -18,6 +18,12 @@ import java.lang.annotation.Target;
1818 @Target(ElementType.METHOD)
1919 @Retention(RetentionPolicy.RUNTIME)
2020 @interface CloseXmlMark {
21- /** タグ指定。 */
21+
22+ /**
23+ * タグ指定。
24+ *
25+ * @return tag
26+ */
2227 PmdTag value();
28+
2329 }
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/OpenXmlMark.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/OpenXmlMark.java
@@ -18,6 +18,12 @@ import java.lang.annotation.Target;
1818 @Target(ElementType.METHOD)
1919 @Retention(RetentionPolicy.RUNTIME)
2020 @interface OpenXmlMark {
21- /** タグ指定。 */
21+
22+ /**
23+ * タグ指定。
24+ *
25+ * @return tag
26+ */
2227 PmdTag value();
28+
2329 }
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/PmdTag.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/PmdTag.java
@@ -93,7 +93,7 @@ enum PmdTag {
9393 ;
9494
9595 private static final Map<String, PmdTag> NAME_MAP =
96- new HashMap<String, PmdTag>();
96+ new HashMap<>();
9797
9898 static{
9999 for(PmdTag tag : values()){
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/PmdXmlExporter.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/PmdXmlExporter.java
@@ -11,7 +11,7 @@ import java.io.IOException;
1111 import jp.sfjp.mikutoga.corelib.I18nText;
1212 import jp.sfjp.mikutoga.pmd.model.PmdModel;
1313 import jp.sfjp.mikutoga.xml.BasicXmlExporter;
14-import jp.sfjp.mikutoga.xml.XmlResourceResolver;
14+import jp.sfjp.mikutoga.xml.SchemaUtil;
1515
1616 /**
1717 * PMDモーションデータをXMLへエクスポートする。
@@ -225,7 +225,7 @@ public class PmdXmlExporter extends BasicXmlExporter{
225225 }
226226
227227 ind().putAttr("xmlns", namespace).ln();
228- ind().putAttr("xmlns:" + XSINS, XmlResourceResolver.NS_XSD).ln();
228+ ind().putAttr("xmlns:" + XSINS, SchemaUtil.NS_XSD).ln();
229229
230230 ind().putRawText(XSINS).putRawText(":schemaLocation=")
231231 .putRawCh('"');
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/RefHelper.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/RefHelper.java
@@ -28,41 +28,41 @@ class RefHelper {
2828
2929 // マテリアル関連
3030 private final List<IdRefHolder<Material>> materialSfcGroupIdRefList =
31- new LinkedList<IdRefHolder<Material>>();
31+ new LinkedList<>();
3232 private final List<IdRefHolder<Material>> materialToonIdRefList =
33- new LinkedList<IdRefHolder<Material>>();
33+ new LinkedList<>();
3434 private final Map<String, Integer> toonIdxMap =
35- new HashMap<String, Integer>();
35+ new HashMap<>();
3636
3737 // ボーン関連
3838 private final Map<String, BoneInfo> boneIdMap =
39- new HashMap<String, BoneInfo>();
39+ new HashMap<>();
4040 private final List<IdRefHolder<BoneInfo>> boneChainIdRefList =
41- new LinkedList<IdRefHolder<BoneInfo>>();
41+ new LinkedList<>();
4242 private final List<IdRefHolder<BoneInfo>> boneSourceIdRefList =
43- new LinkedList<IdRefHolder<BoneInfo>>();
43+ new LinkedList<>();
4444
4545 // モーフ関連
4646 private final List<IdRefHolder<MorphVertex>> morphVertexIdRefList =
47- new LinkedList<IdRefHolder<MorphVertex>>();
47+ new LinkedList<>();
4848
4949 // 剛体関連
5050 private final Map<String, RigidInfo> rigidIdMap =
51- new HashMap<String, RigidInfo>();
51+ new HashMap<>();
5252 private final Map<String, RigidGroup> rigidGroupIdMap =
53- new HashMap<String, RigidGroup>();
53+ new HashMap<>();
5454 private final List<IdRefHolder<RigidInfo>> thghRigidGroupIdRefList =
55- new LinkedList<IdRefHolder<RigidInfo>>();
55+ new LinkedList<>();
5656
5757 // 面関連
5858 private final Map<String, List<Surface>> surfaceGroupIdMap =
59- new HashMap<String, List<Surface>>();
59+ new HashMap<>();
6060 private final List<IdRefHolder<Surface>> surfaceVertexIdRef =
61- new LinkedList<IdRefHolder<Surface>>();
61+ new LinkedList<>();
6262
6363 // 頂点関連
6464 private final Map<String, Vertex> vertexIdMap =
65- new HashMap<String, Vertex>();
65+ new HashMap<>();
6666
6767
6868 /**
@@ -81,7 +81,7 @@ class RefHelper {
8181 */
8282 void addSurfaceGroupIdRef(Material material, String idRef){
8383 IdRefHolder<Material> holder =
84- new IdRefHolder<Material>(material, idRef);
84+ new IdRefHolder<>(material, idRef);
8585 this.materialSfcGroupIdRefList.add(holder);
8686
8787 return;
@@ -96,7 +96,7 @@ class RefHelper {
9696 List<Surface> surfaceGroup =
9797 this.surfaceGroupIdMap.get(surfaceGroupId);
9898 if(surfaceGroup == null){
99- surfaceGroup = new LinkedList<Surface>();
99+ surfaceGroup = new LinkedList<>();
100100 this.surfaceGroupIdMap.put(surfaceGroupId, surfaceGroup);
101101 }
102102
@@ -130,7 +130,7 @@ class RefHelper {
130130 */
131131 void addToonFileIdRef(Material material, String idRef){
132132 IdRefHolder<Material> holder =
133- new IdRefHolder<Material>(material, idRef);
133+ new IdRefHolder<>(material, idRef);
134134 this.materialToonIdRefList.add(holder);
135135 return;
136136 }
@@ -190,7 +190,7 @@ class RefHelper {
190190 void addBoneChain(BoneInfo bone,
191191 String prevBoneIdRef, String nextBoneIdRef ){
192192 IdRefHolder<BoneInfo> holder =
193- new IdRefHolder<BoneInfo>(bone, prevBoneIdRef, nextBoneIdRef);
193+ new IdRefHolder<>(bone, prevBoneIdRef, nextBoneIdRef);
194194 this.boneChainIdRefList.add(holder);
195195 return;
196196 }
@@ -225,7 +225,7 @@ class RefHelper {
225225 */
226226 void addSrcBoneIdRef(BoneInfo bone, String srcBoneIdRef){
227227 IdRefHolder<BoneInfo> holder =
228- new IdRefHolder<BoneInfo>(bone, srcBoneIdRef);
228+ new IdRefHolder<>(bone, srcBoneIdRef);
229229 this.boneSourceIdRefList.add(holder);
230230 return;
231231 }
@@ -253,7 +253,7 @@ class RefHelper {
253253 */
254254 void addMorphVertexIdRef(MorphVertex morphVertex, String vertexIdRef){
255255 IdRefHolder<MorphVertex> holder =
256- new IdRefHolder<MorphVertex>(morphVertex, vertexIdRef);
256+ new IdRefHolder<>(morphVertex, vertexIdRef);
257257 this.morphVertexIdRefList.add(holder);
258258 return;
259259 }
@@ -285,7 +285,7 @@ class RefHelper {
285285 */
286286 void addThroughRigidGroupIdRef(RigidInfo rigid, String rigidGroupIdRef){
287287 IdRefHolder<RigidInfo> holder =
288- new IdRefHolder<RigidInfo>(rigid, rigidGroupIdRef);
288+ new IdRefHolder<>(rigid, rigidGroupIdRef);
289289 this.thghRigidGroupIdRefList.add(holder);
290290 return;
291291 }
@@ -329,10 +329,10 @@ class RefHelper {
329329 String vtxIdRef2,
330330 String vtxIdRef3 ){
331331 IdRefHolder<Surface> holder =
332- new IdRefHolder<Surface>(surface,
333- vtxIdRef1,
334- vtxIdRef2,
335- vtxIdRef3 );
332+ new IdRefHolder<>(surface,
333+ vtxIdRef1,
334+ vtxIdRef2,
335+ vtxIdRef3 );
336336
337337 this.surfaceVertexIdRef.add(holder);
338338
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/SaxListener.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/SaxListener.java
@@ -53,7 +53,7 @@ class SaxListener {
5353 */
5454 private static Collection<Method> filtMethod(Class<?> klass,
5555 Class<? extends Annotation> filter ){
56- Collection<Method> result = new LinkedList<Method>();
56+ Collection<Method> result = new LinkedList<>();
5757
5858 for(Method method : klass.getDeclaredMethods()){
5959 int modifiers = method.getModifiers();
@@ -77,7 +77,7 @@ class SaxListener {
7777 */
7878 private static Map<PmdTag, Method> getOpenDispatcher(Class<?> klass){
7979 Map<PmdTag, Method> result =
80- new EnumMap<PmdTag, Method>(PmdTag.class);
80+ new EnumMap<>(PmdTag.class);
8181
8282 for(Method method : filtMethod(klass, OpenXmlMark.class)){
8383 Annotation anno = method.getAnnotation(OpenXmlMark.class);
@@ -96,7 +96,7 @@ class SaxListener {
9696 */
9797 private static Map<PmdTag, Method> getCloseDispatcher(Class<?> klass){
9898 Map<PmdTag, Method> result =
99- new EnumMap<PmdTag, Method>(PmdTag.class);
99+ new EnumMap<>(PmdTag.class);
100100
101101 for(Method method : filtMethod(klass, CloseXmlMark.class)){
102102 Annotation anno = method.getAnnotation(CloseXmlMark.class);
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/SaxMorphListener.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/SaxMorphListener.java
@@ -54,7 +54,7 @@ class SaxMorphListener extends SaxListener{
5454 void closeMorphList(){
5555 Map<MorphType, List<MorphPart>> morphMap =
5656 getPmdModel().getMorphMap();
57- List<MorphPart> tempList = new LinkedList<MorphPart>();
57+ List<MorphPart> tempList = new LinkedList<>();
5858
5959 tempList.addAll(morphMap.get(MorphType.EYEBROW));
6060 tempList.addAll(morphMap.get(MorphType.EYE));
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java
@@ -9,15 +9,11 @@ package jp.sfjp.mikutoga.pmd.model.xml;
99
1010 import java.net.URI;
1111 import java.net.URISyntaxException;
12-import jp.sfjp.mikutoga.xml.LocalXmlResource;
1312
1413 /**
1514 * 101009形式XML各種リソースの定義。
1615 */
17-public final class Schema101009 implements LocalXmlResource{
18-
19- /** 唯一のシングルトン。 */
20- public static final Schema101009 SINGLETON;
16+public final class Schema101009{
2117
2218 /** 名前空間。 */
2319 public static final String NS_PMDXML =
@@ -32,8 +28,10 @@ public final class Schema101009 implements LocalXmlResource{
3228 public static final String LOCAL_SCHEMA_PMDXML =
3329 "resources/pmdxml-101009.xsd";
3430
35- private static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
36- private static final URI RES_SCHEMA_PMDXML;
31+ /** schema URI. */
32+ public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
33+ /** local resource URI. */
34+ public static final URI RES_SCHEMA_PMDXML;
3735
3836 private static final Class<?> THISCLASS = Schema101009.class;
3937
@@ -44,8 +42,6 @@ public final class Schema101009 implements LocalXmlResource{
4442 }catch(URISyntaxException e){
4543 throw new ExceptionInInitializerError(e);
4644 }
47-
48- SINGLETON = new Schema101009();
4945 }
5046
5147
@@ -53,30 +49,7 @@ public final class Schema101009 implements LocalXmlResource{
5349 * コンストラクタ。
5450 */
5551 private Schema101009(){
56- super();
57- assert this.getClass() == THISCLASS;
58- return;
59- }
60-
61-
62- /**
63- * {@inheritDoc}
64- * @return {@inheritDoc}
65- * ※101009版。
66- */
67- @Override
68- public URI getOriginalResource(){
69- return URI_SCHEMA_PMDXML;
70- }
71-
72- /**
73- * {@inheritDoc}
74- * ※101009版。
75- * @return {@inheritDoc}
76- */
77- @Override
78- public URI getLocalResource(){
79- return RES_SCHEMA_PMDXML;
52+ assert false;
8053 }
8154
8255 }
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java
@@ -9,15 +9,11 @@ package jp.sfjp.mikutoga.pmd.model.xml;
99
1010 import java.net.URI;
1111 import java.net.URISyntaxException;
12-import jp.sfjp.mikutoga.xml.LocalXmlResource;
1312
1413 /**
1514 * 130128形式XML各種リソースの定義。
1615 */
17-public final class Schema130128 implements LocalXmlResource{
18-
19- /** 唯一のシングルトン。 */
20- public static final Schema130128 SINGLETON;
16+public final class Schema130128{
2117
2218 /** 名前空間。 */
2319 public static final String NS_PMDXML =
@@ -32,8 +28,10 @@ public final class Schema130128 implements LocalXmlResource{
3228 public static final String LOCAL_SCHEMA_PMDXML =
3329 "resources/pmdxml-130128.xsd";
3430
35- private static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
36- private static final URI RES_SCHEMA_PMDXML;
31+ /** schema URI. */
32+ public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML);
33+ /** local resource URI. */
34+ public static final URI RES_SCHEMA_PMDXML;
3735
3836 private static final Class<?> THISCLASS = Schema130128.class;
3937
@@ -44,8 +42,6 @@ public final class Schema130128 implements LocalXmlResource{
4442 }catch(URISyntaxException e){
4543 throw new ExceptionInInitializerError(e);
4644 }
47-
48- SINGLETON = new Schema130128();
4945 }
5046
5147
@@ -53,30 +49,7 @@ public final class Schema130128 implements LocalXmlResource{
5349 * コンストラクタ。
5450 */
5551 private Schema130128(){
56- super();
57- assert this.getClass() == THISCLASS;
58- return;
59- }
60-
61-
62- /**
63- * {@inheritDoc}
64- * ※130128版。
65- * @return {@inheritDoc}
66- */
67- @Override
68- public URI getOriginalResource(){
69- return URI_SCHEMA_PMDXML;
70- }
71-
72- /**
73- * {@inheritDoc}
74- * ※130128版。
75- * @return {@inheritDoc}
76- */
77- @Override
78- public URI getLocalResource(){
79- return RES_SCHEMA_PMDXML;
52+ assert false;
8053 }
8154
8255 }
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlHandler.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlHandler.java
@@ -17,6 +17,7 @@ import org.xml.sax.SAXException;
1717
1818 /**
1919 * XMLモデルファイルパース用SAXハンドラ。
20+ *
2021 * <p>下位リスナに各種通知が振り分けられる。
2122 */
2223 class XmlHandler implements ContentHandler{
@@ -44,7 +45,7 @@ class XmlHandler implements ContentHandler{
4445 SaxListener dynamicsListener = new SaxDynamicsListener(helper);
4546 SaxListener shapeListener = new SaxShapeListener(helper);
4647
47- this.listenerMap = new EnumMap<PmdTag, SaxListener>(PmdTag.class);
48+ this.listenerMap = new EnumMap<>(PmdTag.class);
4849 this.listenerMap.put(PmdTag.PMD_MODEL, modelListener);
4950 this.listenerMap.put(PmdTag.MATERIAL_LIST, materialListener);
5051 this.listenerMap.put(PmdTag.BONE_LIST, boneListener);
@@ -58,6 +59,7 @@ class XmlHandler implements ContentHandler{
5859
5960 /**
6061 * ビルド対象のモデルを返す。
62+ *
6163 * @return ビルド対象のモデル。ビルド前ならnull
6264 */
6365 PmdModel getPmdModel(){
@@ -66,6 +68,7 @@ class XmlHandler implements ContentHandler{
6668
6769 /**
6870 * {@inheritDoc}
71+ *
6972 * @throws SAXException {@inheritDoc}
7073 */
7174 @Override
@@ -81,6 +84,7 @@ class XmlHandler implements ContentHandler{
8184
8285 /**
8386 * {@inheritDoc}
87+ *
8488 * @throws SAXException {@inheritDoc}
8589 */
8690 @Override
@@ -92,6 +96,7 @@ class XmlHandler implements ContentHandler{
9296
9397 /**
9498 * {@inheritDoc}
99+ *
95100 * @param prefix {@inheritDoc}
96101 * @param uri {@inheritDoc}
97102 * @throws SAXException {@inheritDoc}
@@ -99,8 +104,8 @@ class XmlHandler implements ContentHandler{
99104 @Override
100105 public void startPrefixMapping(String prefix, String uri)
101106 throws SAXException {
102- if( Schema101009.NS_PMDXML.equals(uri)
103- || Schema130128.NS_PMDXML.equals(uri) ){
107+ if( Schema101009.NS_PMDXML.equals(uri)
108+ || Schema130128.NS_PMDXML.equals(uri) ){
104109 this.nspfx = prefix;
105110 this.nsuri = uri;
106111 }
@@ -109,6 +114,7 @@ class XmlHandler implements ContentHandler{
109114
110115 /**
111116 * {@inheritDoc}
117+ *
112118 * @param prefix {@inheritDoc}
113119 * @throws SAXException {@inheritDoc}
114120 */
@@ -123,6 +129,7 @@ class XmlHandler implements ContentHandler{
123129
124130 /**
125131 * {@inheritDoc}
132+ *
126133 * @param uri {@inheritDoc}
127134 * @param localName {@inheritDoc}
128135 * @param qName {@inheritDoc}
@@ -150,6 +157,7 @@ class XmlHandler implements ContentHandler{
150157
151158 /**
152159 * タグ出現に従い通知リスナを切り替える。
160+ *
153161 * @param tag タグ種別
154162 */
155163 private void switchListener(PmdTag tag){
@@ -163,6 +171,7 @@ class XmlHandler implements ContentHandler{
163171
164172 /**
165173 * {@inheritDoc}
174+ *
166175 * @param uri {@inheritDoc}
167176 * @param localName {@inheritDoc}
168177 * @param qName {@inheritDoc}
@@ -185,6 +194,7 @@ class XmlHandler implements ContentHandler{
185194
186195 /**
187196 * {@inheritDoc}
197+ *
188198 * @param locator {@inheritDoc}
189199 */
190200 @Override
@@ -195,6 +205,7 @@ class XmlHandler implements ContentHandler{
195205
196206 /**
197207 * {@inheritDoc}
208+ *
198209 * @param target {@inheritDoc}
199210 * @param data {@inheritDoc}
200211 * @throws SAXException {@inheritDoc}
@@ -208,6 +219,7 @@ class XmlHandler implements ContentHandler{
208219
209220 /**
210221 * {@inheritDoc}
222+ *
211223 * @param ch {@inheritDoc}
212224 * @param start {@inheritDoc}
213225 * @param length {@inheritDoc}
@@ -223,6 +235,7 @@ class XmlHandler implements ContentHandler{
223235
224236 /**
225237 * {@inheritDoc}
238+ *
226239 * @param ch {@inheritDoc}
227240 * @param start {@inheritDoc}
228241 * @param length {@inheritDoc}
@@ -237,6 +250,7 @@ class XmlHandler implements ContentHandler{
237250
238251 /**
239252 * {@inheritDoc}
253+ *
240254 * @param name {@inheritDoc}
241255 * @throws SAXException {@inheritDoc}
242256 */
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlModelFileType.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlModelFileType.java
@@ -14,8 +14,8 @@ public enum XmlModelFileType {
1414
1515 /**
1616 * XMLファイル。
17- * <p>読み込み時のスキーマ判別は自動。
18- * 出力時のスキーマ種別は最新。
17+ *
18+ * <p>読み込み時のスキーマ判別は自動。出力時のスキーマ種別は最新。
1919 */
2020 XML_AUTO,
2121
--- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlPmdLoader.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/XmlPmdLoader.java
@@ -27,7 +27,9 @@ public class XmlPmdLoader {
2727
2828 /**
2929 * コンストラクタ。
30+ *
3031 * <p>XMLリーダは名前空間をサポートしていなければならない。
32+ *
3133 * @param reader XMLリーダ
3234 * @throws NullPointerException 引数がnull
3335 * @throws SAXException 機能不足のXMLリーダが渡された
@@ -49,6 +51,7 @@ public class XmlPmdLoader {
4951
5052 /**
5153 * XMLのパースを開始する。
54+ *
5255 * @param source XML入力
5356 * @return モデルデータ
5457 * @throws SAXException 構文エラー
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java
@@ -33,6 +33,7 @@ final class CmdLine {
3333
3434 /**
3535 * コマンドライン解析を行う。
36+ *
3637 * @param args コマンドライン
3738 * @return 解析されたコマンドライン並び
3839 */
@@ -43,11 +44,12 @@ final class CmdLine {
4344
4445 /**
4546 * コマンドライン解析を行う。
47+ *
4648 * @param argList コマンドライン
4749 * @return 解析されたコマンドライン並び
4850 */
4951 static List<CmdLine> parse(List<String> argList){
50- List<CmdLine> result = new LinkedList<CmdLine>();
52+ List<CmdLine> result = new LinkedList<>();
5153
5254 Iterator<String> it = argList.iterator();
5355 while (it.hasNext()) {
@@ -62,7 +64,7 @@ final class CmdLine {
6264 if (info.opt != null) {
6365 exArgNum = info.opt.getExArgNum();
6466 }
65- info.optArgs = new ArrayList<String>(exArgNum + 1);
67+ info.optArgs = new ArrayList<>(exArgNum + 1);
6668
6769 info.optArgs.add(arg);
6870
@@ -81,8 +83,9 @@ final class CmdLine {
8183
8284 /**
8385 * オプション識別子を返す。
86+ *
8487 * @return オプション識別子。
85- * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。
88+ * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。
8689 */
8790 OptSwitch getOptSwitch() {
8891 return this.opt;
@@ -90,9 +93,10 @@ final class CmdLine {
9093
9194 /**
9295 * オプションに付随する引数群を返す。
96+ *
9397 * @return オプションに付随する引数群。
94- * 先頭要素はオプション識別子。
95- * 単純なコマンドライン引数の場合は自身が1要素のみを占める。
98+ * 先頭要素はオプション識別子。
99+ * 単純なコマンドライン引数の場合は自身が1要素のみを占める。
96100 */
97101 List<String> getOptArgs() {
98102 return this.optArgs;
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java
@@ -26,7 +26,9 @@ public enum ModelFileType {
2626
2727 /**
2828 * XMLファイル。
29+ *
2930 * <p>読み込み時のスキーマ判別は自動。
31+ *
3032 * <p>書き込み時のスキーマは最新。
3133 */
3234 XML_AUTO,
@@ -51,13 +53,15 @@ public enum ModelFileType {
5153 /**
5254 * コンストラクタ。
5355 */
54- private ModelFileType(){
56+ ModelFileType(){
5557 return;
5658 }
5759
5860 /**
5961 * ファイル種別をXMLファイル種別に変換する。
62+ *
6063 * <p>未定義の場合はXML_AUTOを返す。
64+ *
6165 * @return XMLファイル種別
6266 */
6367 public XmlModelFileType toXmlType(){
@@ -83,6 +87,7 @@ public enum ModelFileType {
8387
8488 /**
8589 * ファイル種別がXMLか判定する。
90+ *
8691 * @return XMLならtrue
8792 */
8893 public boolean isXml(){
@@ -104,6 +109,7 @@ public enum ModelFileType {
104109
105110 /**
106111 * ファイル種別がPMDか判定する。
112+ *
107113 * @return PMDならtrue
108114 */
109115 public boolean isPmd(){
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java
@@ -73,6 +73,7 @@ final class OptInfo {
7373
7474 /**
7575 * フォーマット種別指定子をデコードする。
76+ *
7677 * @param arg 文字列
7778 * @return デコード結果。
7879 * @throws CmdLineException 不正なフォーマット種別
@@ -99,6 +100,7 @@ final class OptInfo {
99100
100101 /**
101102 * 改行文字指定子をデコードする。
103+ *
102104 * @param arg 文字列
103105 * @return デコード結果。
104106 * @throws CmdLineException 不正なフォーマット種別
@@ -121,6 +123,7 @@ final class OptInfo {
121123
122124 /**
123125 * ブール指定子をデコードする。
126+ *
124127 * @param arg 文字列
125128 * @return デコード結果。
126129 * @throws CmdLineException 不正なフォーマット種別
@@ -129,9 +132,9 @@ final class OptInfo {
129132 throws CmdLineException{
130133 boolean result;
131134
132- if( "on" .equals(arg)
133- || "true".equals(arg)
134- || "yes" .equals(arg) ){
135+ if( "on" .equals(arg)
136+ || "true".equals(arg)
137+ || "yes" .equals(arg) ){
135138 result = true;
136139 }else if( "off" .equals(arg)
137140 || "false".equals(arg)
@@ -147,7 +150,9 @@ final class OptInfo {
147150
148151 /**
149152 * ファイル名からファイル種別を類推する。
153+ *
150154 * <p>拡張子が「pmd」ならPMDファイル、「xml」ならXMLファイル。
155+ *
151156 * @param fileName ファイル名
152157 * @return ファイル種別
153158 */
@@ -164,6 +169,7 @@ final class OptInfo {
164169
165170 /**
166171 * コマンドラインを解析する。
172+ *
167173 * @param args コマンドライン
168174 * @return オプション情報
169175 * @throws CmdLineException 不正なコマンドライン
@@ -233,7 +239,9 @@ final class OptInfo {
233239
234240 /**
235241 * 単純なコマンドラインエラーを検出する。
242+ *
236243 * <p>検出項目は未知のオプションおよび不正な引数の個数
244+ *
237245 * @param cmdLines コマンドライン
238246 * @throws CmdLineException 異常系
239247 */
@@ -266,6 +274,7 @@ final class OptInfo {
266274
267275 /**
268276 * ファイルフォーマット情報の推測を行う。
277+ *
269278 * @param result オプション情報
270279 */
271280 private static void fixFormat(OptInfo result){
@@ -282,6 +291,7 @@ final class OptInfo {
282291
283292 /**
284293 * オプション整合性の事後検査。
294+ *
285295 * @param result オプション情報
286296 * @throws CmdLineException 不正なオプション設定
287297 */
@@ -309,6 +319,7 @@ final class OptInfo {
309319
310320 /**
311321 * ヘルプ表示が必要か否か判定する。
322+ *
312323 * @return 必要ならtrue
313324 */
314325 boolean needHelp(){
@@ -317,6 +328,7 @@ final class OptInfo {
317328
318329 /**
319330 * 入力ファイル種別を返す。
331+ *
320332 * @return 入力ファイル種別
321333 */
322334 ModelFileType getInFileType(){
@@ -325,6 +337,7 @@ final class OptInfo {
325337
326338 /**
327339 * 出力ファイル種別を返す。
340+ *
328341 * @return 出力ファイル種別
329342 */
330343 ModelFileType getOutFileType(){
@@ -333,6 +346,7 @@ final class OptInfo {
333346
334347 /**
335348 * 入力ファイル名を返す。
349+ *
336350 * @return 入力ファイル名
337351 */
338352 String getInFilename(){
@@ -341,6 +355,7 @@ final class OptInfo {
341355
342356 /**
343357 * 出力ファイル名を返す。
358+ *
344359 * @return 出力ファイル名
345360 */
346361 String getOutFilename(){
@@ -349,6 +364,7 @@ final class OptInfo {
349364
350365 /**
351366 * 上書きモードか否か返す。
367+ *
352368 * @return 上書きモードならtrue
353369 */
354370 boolean overwriteMode(){
@@ -357,6 +373,7 @@ final class OptInfo {
357373
358374 /**
359375 * XML改行文字を返す。
376+ *
360377 * @return 改行文字
361378 */
362379 String getNewline(){
@@ -365,6 +382,7 @@ final class OptInfo {
365382
366383 /**
367384 * ジェネレータ名を返す。
385+ *
368386 * @return ジェネレータ名。表示したくない時はnull
369387 */
370388 String getGenerator(){
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java
@@ -18,14 +18,14 @@ import java.util.Map;
1818 */
1919 enum OptSwitch {
2020
21- OPT_HELP (0, "-h", "-help", "-?"),
22- OPT_INFILE (1, "-i"),
23- OPT_OUTFILE (1, "-o"),
24- OPT_FORCE (0, "-f"),
25- OPT_NEWLINE (1, "-nl"),
26- OPT_GENOUT (1, "-genout"),
27- OPT_IFORM (1, "-iform"),
28- OPT_OFORM (1, "-oform"),
21+ OPT_HELP( 0, "-h", "-help", "-?"),
22+ OPT_INFILE( 1, "-i"),
23+ OPT_OUTFILE( 1, "-o"),
24+ OPT_FORCE( 0, "-f"),
25+ OPT_NEWLINE( 1, "-nl"),
26+ OPT_GENOUT( 1, "-genout"),
27+ OPT_IFORM( 1, "-iform"),
28+ OPT_OFORM( 1, "-oform"),
2929 ;
3030
3131 private static final String HELP_CONSOLE =
@@ -50,7 +50,7 @@ enum OptSwitch {
5050 private static final Map<String, OptSwitch> MAP_OPT;
5151
5252 static{
53- Map<String, OptSwitch> map = new HashMap<String, OptSwitch>();
53+ Map<String, OptSwitch> map = new HashMap<>();
5454
5555 for(OptSwitch opt : values()){
5656 for(String cmdarg : opt.cmdopts){
@@ -69,10 +69,11 @@ enum OptSwitch {
6969
7070 /**
7171 * コンストラクタ。
72+ *
7273 * @param argnum 必要な引数の数
7374 * @param cmdopts オプションスイッチパターン群
7475 */
75- private OptSwitch(int argnum, String... cmdopts) {
76+ OptSwitch(int argnum, String... cmdopts) {
7677 this.exArgNum = argnum;
7778
7879 List<String> optlist;
@@ -86,6 +87,7 @@ enum OptSwitch {
8687
8788 /**
8889 * コンソール提示用ヘルプ出力文字列を返す。
90+ *
8991 * @return オプションヘルプ文字列
9092 */
9193 static String getConsoleHelp(){
@@ -94,7 +96,9 @@ enum OptSwitch {
9496
9597 /**
9698 * 文字列に合致するオプションを返す。
99+ *
97100 * <p>一つのオプションが複数の表記に合致する場合がある。
101+ *
98102 * @param cmd 文字列
99103 * @return オプション種別。合致する物が見つからなければnull
100104 */
@@ -106,7 +110,9 @@ enum OptSwitch {
106110
107111 /**
108112 * 各オプションに後続する引数の数を返す。
113+ *
109114 * <p>引数をとらないオプションは0を返す。
115+ *
110116 * @return 引数の数
111117 */
112118 int getExArgNum(){
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2Xml.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2Xml.java
@@ -71,7 +71,7 @@ public final class Pmd2Xml {
7171 + "If you want to overwrite, use -f.";
7272
7373 private static final String MSG_OLDJRE = "You need JRE {0} or later.";
74- private static final String REQUIRED_JRE = "1.6";
74+ private static final String REQUIRED_JRE = "1.8";
7575
7676 static{
7777 THISCLASS = Pmd2Xml.class;
@@ -110,6 +110,7 @@ public final class Pmd2Xml {
110110
111111 /**
112112 * VMを終了させる。
113+ *
113114 * @param code 終了コード
114115 * @see java.lang.System#exit(int)
115116 */
@@ -121,6 +122,7 @@ public final class Pmd2Xml {
121122
122123 /**
123124 * 共通エラーメッセージを出力する。
125+ *
124126 * @param text 個別メッセージ
125127 */
126128 private static void errMsg(String text){
@@ -131,6 +133,7 @@ public final class Pmd2Xml {
131133
132134 /**
133135 * 標準エラー出力へ例外情報出力。
136+ *
134137 * @param ex 例外
135138 * @param dumpStack スタックトレースを出力するならtrue
136139 */
@@ -147,6 +150,7 @@ public final class Pmd2Xml {
147150
148151 /**
149152 * 標準エラー出力へ例外情報出力。
153+ *
150154 * @param ex 例外
151155 */
152156 private static void thPrintln(Throwable ex){
@@ -157,6 +161,7 @@ public final class Pmd2Xml {
157161 /**
158162 * 入出力エラー処理。
159163 * 例外を出力してVM終了する。
164+ *
160165 * @param ex 例外
161166 */
162167 private static void ioError(IOException ex){
@@ -167,6 +172,7 @@ public final class Pmd2Xml {
167172 /**
168173 * XML構文エラー処理。
169174 * 例外を出力してVM終了する。
175+ *
170176 * @param ex 例外
171177 */
172178 private static void xmlError(Throwable ex){
@@ -177,6 +183,7 @@ public final class Pmd2Xml {
177183 /**
178184 * PMDファイルフォーマットエラー処理。
179185 * 例外を出力してVM終了する。
186+ *
180187 * @param ex 例外
181188 */
182189 private static void pmdError(MmdFormatException ex){
@@ -187,6 +194,7 @@ public final class Pmd2Xml {
187194 /**
188195 * 内部エラー処理。
189196 * 例外を出力してVM終了する。
197+ *
190198 * @param ex 例外
191199 */
192200 private static void internalError(Throwable ex){
@@ -222,8 +230,11 @@ public final class Pmd2Xml {
222230
223231 /**
224232 * ファイルサイズを0に切り詰める。
233+ *
225234 * <p>ファイルが存在しなければなにもしない。
235+ *
226236 * <p>通常ファイルでなければなにもしない。
237+ *
227238 * @param file ファイル
228239 * @throws IOException 入出力エラー
229240 */
@@ -250,7 +261,9 @@ public final class Pmd2Xml {
250261
251262 /**
252263 * 入力ソースを準備する。
264+ *
253265 * <p>入力ファイルが通常ファイルとして存在しなければエラー終了。
266+ *
254267 * @param optInfo オプション情報
255268 * @return 入力ソース
256269 */
@@ -272,8 +285,11 @@ public final class Pmd2Xml {
272285
273286 /**
274287 * 出力ストリームを準備する。
288+ *
275289 * <p>出力ファイルが通常ファイルでない場合はエラー終了。
290+ *
276291 * <p>既存の出力ファイルに上書き指示が伴っていなければエラー終了。
292+ *
277293 * @param optInfo オプション情報
278294 * @return 出力ストリーム
279295 */
@@ -318,13 +334,14 @@ public final class Pmd2Xml {
318334
319335 /**
320336 * オプション情報に従いコンバータを生成する。
337+ *
321338 * @param optInfo オプション情報
322339 * @return コンバータ
323340 */
324341 private static Pmd2XmlConv buildConverter(OptInfo optInfo){
325342 Pmd2XmlConv converter = new Pmd2XmlConv();
326343
327- converter.setInType (optInfo.getInFileType());
344+ converter.setInType( optInfo.getInFileType());
328345 converter.setOutType(optInfo.getOutFileType());
329346
330347 converter.setNewline(optInfo.getNewline());
@@ -335,7 +352,9 @@ public final class Pmd2Xml {
335352
336353 /**
337354 * 実際のコンバート作業と異常系処理を行う。
355+ *
338356 * <p>異常系が起きた場合、このメソッドは制御を戻さない。
357+ *
339358 * @param converter コンバータ
340359 * @param source 入力ソース
341360 * @param ostream 出力ストリーム
@@ -362,11 +381,13 @@ public final class Pmd2Xml {
362381
363382 /**
364383 * コマンドライン文字列をオプション情報としてパースする。
384+ *
365385 * <p>異常系が起きた場合、このメソッドは制御を戻さない。
386+ *
366387 * @param args コマンドライン文字列群
367388 * @return オプション情報
368389 */
369- private static OptInfo parseOption(String[] args){
390+ private static OptInfo parseOption(String... args){
370391 OptInfo optInfo;
371392
372393 try{
@@ -385,6 +406,7 @@ public final class Pmd2Xml {
385406
386407 /**
387408 * Mainエントリ。
409+ *
388410 * @param args コマンドパラメータ
389411 */
390412 public static void main(String[] args){
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java
@@ -53,6 +53,7 @@ public class Pmd2XmlConv {
5353
5454 /**
5555 * 入力ファイル種別を設定する。
56+ *
5657 * @param type ファイル種別
5758 * @throws NullPointerException 引数がnull
5859 * @throws IllegalArgumentException 具体的な種別を渡さなかった
@@ -67,6 +68,7 @@ public class Pmd2XmlConv {
6768
6869 /**
6970 * 入力ファイル種別を返す。
71+ *
7072 * @return ファイル種別
7173 */
7274 public ModelFileType getInTypes(){
@@ -75,6 +77,7 @@ public class Pmd2XmlConv {
7577
7678 /**
7779 * 出力ファイル種別を設定する。
80+ *
7881 * @param type ファイル種別
7982 * @throws NullPointerException 引数がnull
8083 * @throws IllegalArgumentException 具体的な種別を渡さなかった
@@ -89,6 +92,7 @@ public class Pmd2XmlConv {
8992
9093 /**
9194 * 出力ファイル種別を返す。
95+ *
9296 * @return ファイル種別
9397 */
9498 public ModelFileType getOutTypes(){
@@ -97,6 +101,7 @@ public class Pmd2XmlConv {
97101
98102 /**
99103 * XML出力用改行文字列を設定する。
104+ *
100105 * @param newline 改行文字
101106 */
102107 public void setNewline(String newline){
@@ -106,6 +111,7 @@ public class Pmd2XmlConv {
106111
107112 /**
108113 * XML出力用改行文字列を返す。
114+ *
109115 * @return 改行文字
110116 */
111117 public String getNewline(){
@@ -114,6 +120,7 @@ public class Pmd2XmlConv {
114120
115121 /**
116122 * ジェネレータ名を設定する。
123+ *
117124 * @param generator ジェネレータ名。表示したくない場合はnull
118125 */
119126 public void setGenerator(String generator){
@@ -123,6 +130,7 @@ public class Pmd2XmlConv {
123130
124131 /**
125132 * ジェネレータ名を返す。
133+ *
126134 * @return ジェネレータ名。非表示の場合はnullを返す。
127135 */
128136 public String getGenerator(){
@@ -131,8 +139,10 @@ public class Pmd2XmlConv {
131139
132140 /**
133141 * ファイル変換を行う。
142+ *
134143 * <p>XML入力の場合は{@link #convert(InputSource, OutputStream)}を
135144 * 推奨する。
145+ *
136146 * @param is 入力ストリーム
137147 * @param os 出力ストリーム
138148 * @throws IOException 入力エラー
@@ -154,10 +164,13 @@ public class Pmd2XmlConv {
154164
155165 /**
156166 * ファイル変換を行う。
167+ *
157168 * <p>PMD入力の場合は{@link InputStream}に
158169 * バイトストリームが直接設定されていなければならない。
170+ *
159171 * <p>XML入力の場合は{@link InputStream}に
160172 * URL(systemId)のみの設定を推奨する。
173+ *
161174 * @param source 入力ソース
162175 * @param os 出力ストリーム
163176 * @throws IOException 入力エラー
@@ -179,8 +192,10 @@ public class Pmd2XmlConv {
179192
180193 /**
181194 * モデルファイルを読み込む。
195+ *
182196 * <p>XML読み込みの場合は、
183197 * こちらより{@link #readModel(InputSource)}版を推奨する。
198+ *
184199 * @param is 入力ストリーム
185200 * @return モデルデータ
186201 * @throws IOException 入力エラー
@@ -208,6 +223,7 @@ public class Pmd2XmlConv {
208223
209224 /**
210225 * モデルファイルを読み込む。
226+ *
211227 * @param source 入力ソース
212228 * @return モデルデータ
213229 * @throws IOException 入力エラー
@@ -240,6 +256,7 @@ public class Pmd2XmlConv {
240256
241257 /**
242258 * モデルファイルを出力する。
259+ *
243260 * @param model モデルデータ
244261 * @param os 出力ストリーム
245262 * @throws IOException 出力エラー
@@ -261,6 +278,7 @@ public class Pmd2XmlConv {
261278
262279 /**
263280 * PMDファイルからモデルデータを読み込む。
281+ *
264282 * @param is 入力ストリーム
265283 * @return モデルデータ
266284 * @throws IOException 入力エラー
@@ -275,6 +293,7 @@ public class Pmd2XmlConv {
275293
276294 /**
277295 * XMLファイルからモデルデータを読み込む。
296+ *
278297 * @param source 入力ソース
279298 * @return モデルデータ
280299 * @throws IOException 入力エラー
@@ -293,6 +312,7 @@ public class Pmd2XmlConv {
293312
294313 /**
295314 * モデルデータをPMDファイルに出力する。
315+ *
296316 * @param model モデルデータ
297317 * @param ostream 出力ストリーム
298318 * @throws IOException 出力エラー
@@ -308,6 +328,7 @@ public class Pmd2XmlConv {
308328
309329 /**
310330 * モデルデータをXMLファイルに出力する。
331+ *
311332 * @param model モデルデータ
312333 * @param ostream 出力ストリーム
313334 * @throws IOException 出力エラー
--- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java
+++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java
@@ -14,6 +14,7 @@ import java.io.InputStream;
1414 import java.net.MalformedURLException;
1515 import java.net.URI;
1616 import java.net.URL;
17+import javax.xml.XMLConstants;
1718 import javax.xml.parsers.ParserConfigurationException;
1819 import javax.xml.parsers.SAXParser;
1920 import javax.xml.parsers.SAXParserFactory;
@@ -21,11 +22,12 @@ import javax.xml.validation.Schema;
2122 import jp.sfjp.mikutoga.pmd.model.xml.Schema101009;
2223 import jp.sfjp.mikutoga.pmd.model.xml.Schema130128;
2324 import jp.sfjp.mikutoga.xml.BotherHandler;
24-import jp.sfjp.mikutoga.xml.LocalXmlResource;
25+import jp.sfjp.mikutoga.xml.NoopEntityResolver;
2526 import jp.sfjp.mikutoga.xml.SchemaUtil;
26-import jp.sfjp.mikutoga.xml.XmlResourceResolver;
2727 import org.xml.sax.InputSource;
2828 import org.xml.sax.SAXException;
29+import org.xml.sax.SAXNotRecognizedException;
30+import org.xml.sax.SAXNotSupportedException;
2931 import org.xml.sax.XMLReader;
3032
3133 /**
@@ -33,6 +35,16 @@ import org.xml.sax.XMLReader;
3335 */
3436 final class XmlInputUtil {
3537
38+ private static final String F_DISALLOW_DOCTYPE_DECL =
39+ "http://apache.org/xml/features/disallow-doctype-decl";
40+ private static final String F_EXTERNAL_GENERAL_ENTITIES =
41+ "http://xml.org/sax/features/external-general-entities";
42+ private static final String F_EXTERNAL_PARAMETER_ENTITIES =
43+ "http://xml.org/sax/features/external-parameter-entities";
44+ private static final String F_LOAD_EXTERNAL_DTD =
45+ "http://apache.org/xml/features/nonvalidating/load-external-dtd";
46+
47+
3648 /**
3749 * 隠しコンストラクタ。
3850 */
@@ -44,6 +56,7 @@ final class XmlInputUtil {
4456
4557 /**
4658 * 実在ファイルからXML入力ソースを得る。
59+ *
4760 * @param file 実在ファイル
4861 * @return XML入力ソース
4962 */
@@ -70,8 +83,10 @@ final class XmlInputUtil {
7083
7184 /**
7285 * InputSourceからInputStreamを得る。
86+ *
7387 * <p>入力ソースには、少なくともバイトストリームか
7488 * URL文字列(SystemId)のいずれかが設定されていなければならない。
89+ *
7590 * @param source 入力ソース
7691 * @return 入力バイトストリーム
7792 * @throws IllegalArgumentException 入力ソースの設定が足りない。
@@ -98,11 +113,13 @@ final class XmlInputUtil {
98113
99114 /**
100115 * SAXパーサファクトリを生成する。
116+ *
101117 * <ul>
102118 * <li>XML名前空間機能は有効になる。
103119 * <li>DTDによる形式検証は無効となる。
104120 * <li>XIncludeによる差し込み機能は無効となる。
105121 * </ul>
122+ *
106123 * @param schema スキーマ
107124 * @return ファクトリ
108125 */
@@ -112,7 +129,19 @@ final class XmlInputUtil {
112129 factory.setNamespaceAware(true);
113130 factory.setValidating(false);
114131 factory.setXIncludeAware(false);
115-// factory.setFeature(name, value);
132+
133+ try{
134+ factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
135+ factory.setFeature(F_DISALLOW_DOCTYPE_DECL, true);
136+ factory.setFeature(F_EXTERNAL_GENERAL_ENTITIES, false);
137+ factory.setFeature(F_EXTERNAL_PARAMETER_ENTITIES, false);
138+ factory.setFeature(F_LOAD_EXTERNAL_DTD, false);
139+ }catch( ParserConfigurationException
140+ | SAXNotRecognizedException
141+ | SAXNotSupportedException e ){
142+ assert false;
143+ throw new AssertionError(e);
144+ }
116145
117146 factory.setSchema(schema);
118147
@@ -121,6 +150,7 @@ final class XmlInputUtil {
121150
122151 /**
123152 * SAXパーサを生成する。
153+ *
124154 * @param schema スキーマ
125155 * @return SAXパーサ
126156 */
@@ -130,64 +160,72 @@ final class XmlInputUtil {
130160 SAXParser parser;
131161 try{
132162 parser = factory.newSAXParser();
133- }catch(ParserConfigurationException e){
163+ }catch(ParserConfigurationException | SAXException e){
134164 assert false;
135165 throw new AssertionError(e);
136- }catch(SAXException e){
166+ }
167+
168+ try{
169+ parser.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
170+ parser.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
171+ }catch(SAXNotRecognizedException | SAXNotSupportedException e){
137172 assert false;
138173 throw new AssertionError(e);
139174 }
140175
141-// parser.setProperty(name, value);
142-
143176 return parser;
144177 }
145178
146179 /**
147180 * スキーマを生成する。
148- * @param resolver リゾルバ
181+ *
149182 * @param xmlInType 入力XML種別
150183 * @return スキーマ
151184 */
152- private static Schema builsSchema(XmlResourceResolver resolver,
153- ModelFileType xmlInType ){
154- LocalXmlResource[] schemaArray;
185+ private static Schema buildSchema(ModelFileType xmlInType ){
186+ URI[] schemaUris;
155187 switch(xmlInType){
156188 case XML_101009:
157- schemaArray = new LocalXmlResource[]{
158- Schema101009.SINGLETON,
189+ schemaUris = new URI[]{
190+ Schema101009.RES_SCHEMA_PMDXML,
159191 };
160192 break;
161193 case XML_130128:
162- schemaArray = new LocalXmlResource[]{
163- Schema130128.SINGLETON,
194+ schemaUris = new URI[]{
195+ Schema130128.RES_SCHEMA_PMDXML,
164196 };
165197 break;
166198 case XML_AUTO:
167- schemaArray = new LocalXmlResource[]{
168- Schema101009.SINGLETON,
169- Schema130128.SINGLETON,
199+ schemaUris = new URI[]{
200+ Schema101009.RES_SCHEMA_PMDXML,
201+ Schema130128.RES_SCHEMA_PMDXML,
170202 };
171203 break;
172204 default:
173205 throw new IllegalStateException();
174206 }
175207
176- Schema schema = SchemaUtil.newSchema(resolver, schemaArray);
208+ Schema schema;
209+ try{
210+ schema = SchemaUtil.newSchema(schemaUris);
211+ }catch(IOException | SAXException e){
212+ assert false;
213+ throw new AssertionError(e);
214+ }
177215
178216 return schema;
179217 }
180218
181219 /**
182220 * XMLリーダを生成する。
221+ *
183222 * <p>エラーハンドラには{@link BotherHandler}が指定される。
223+ *
184224 * @param xmlInType 入力XML種別
185225 * @return XMLリーダ
186226 */
187227 static XMLReader buildReader(ModelFileType xmlInType){
188- XmlResourceResolver resolver = new XmlResourceResolver();
189-
190- Schema schema = builsSchema(resolver, xmlInType);
228+ Schema schema = buildSchema(xmlInType);
191229
192230 SAXParser parser = buildParser(schema);
193231
@@ -199,7 +237,7 @@ final class XmlInputUtil {
199237 throw new AssertionError(e);
200238 }
201239
202- reader.setEntityResolver(resolver);
240+ reader.setEntityResolver(NoopEntityResolver.NOOP_RESOLVER);
203241 reader.setErrorHandler(BotherHandler.HANDLER);
204242
205243 return reader;
旧リポジトリブラウザで表示