From a66827c2872c53a9541549da063fdb3c229ac6cc Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Thu, 25 Apr 2013 22:38:52 +0900 Subject: [PATCH] =?utf8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95=E3=82=A7?= =?utf8?q?=E3=83=BC=E3=82=B9=E7=A9=BA=E5=AE=9F=E8=A3=85=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../EmptyProxyFactory.java} | 41 ++++++++++++---------- .../jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java | 20 +++++------ .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java | 4 +-- .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java | 4 +-- .../jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java | 8 ++--- .../mikutoga/pmd/parser/PmdUnifiedHandler.java | 8 +++++ .../mikutoga/vmd/parser/VmdUnifiedHandler.java | 25 +++++++++++++ 7 files changed, 74 insertions(+), 36 deletions(-) rename src/main/java/jp/sfjp/mikutoga/{pmd/parser/NullHandler.java => corelib/EmptyProxyFactory.java} (54%) create mode 100644 src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdUnifiedHandler.java diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/NullHandler.java b/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java similarity index 54% rename from src/main/java/jp/sfjp/mikutoga/pmd/parser/NullHandler.java rename to src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java index 598087c..360074a 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/NullHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/corelib/EmptyProxyFactory.java @@ -1,46 +1,51 @@ /* - * PMD nothing handler + * nothing proxy factory * * License : The MIT License * Copyright(c) 2013 MikuToga Partners */ -package jp.sfjp.mikutoga.pmd.parser; +package jp.sfjp.mikutoga.corelib; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; /** - * 何もしない統合ハンドラを提供する。 + * 何もしないインタフェース実装を生成する。 */ -public final class NullHandler{ +public final class EmptyProxyFactory { - /** 何もしない統合ハンドラ。 */ - public static final PmdUnifiedHandler HANDLER; - - static{ - Class types[] = { PmdUnifiedHandler.class }; - ClassLoader loader = types[0].getClassLoader(); - InvocationHandler nothing = new Nothing(); - - Object proxy = Proxy.newProxyInstance(loader, types, nothing); - assert proxy instanceof PmdUnifiedHandler; - - HANDLER = (PmdUnifiedHandler) proxy; - } + /** 何もせず何も返さないInvoker。 */ + public static InvocationHandler NOTHING_INVOKER = new Nothing(); /** * ダミーコンストラクタ。 */ - private NullHandler(){ + private EmptyProxyFactory(){ assert false; throw new AssertionError(); } /** + * 何もしないインタフェース実装のインスタンスを生成する。 + *

インタフェースの各メソッド戻り値はvoidでなければならない。 + * @param types インタフェース群 + * @return インタフェースを実装したインスタンス。 + */ + public static Object buildEmptyProxy(Class... types){ + ClassLoader loader = types[0].getClassLoader(); + + Object proxy = + Proxy.newProxyInstance(loader, types, NOTHING_INVOKER); + + return proxy; + } + + + /** * 何もしないInvoker実装。 */ private static class Nothing implements InvocationHandler{ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java index 659c82c..e991ad0 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java @@ -54,11 +54,11 @@ public class PmdParserBase extends CommonParser { private final TextDecoder decoderWin31j = new TextDecoder(CS_WIN31J); - private PmdBasicHandler basicHandler = NullHandler.HANDLER; - private PmdShapeHandler shapeHandler = NullHandler.HANDLER; - private PmdMaterialHandler materialHandler = NullHandler.HANDLER; - private PmdBoneHandler boneHandler = NullHandler.HANDLER; - private PmdMorphHandler morphHandler = NullHandler.HANDLER; + private PmdBasicHandler basicHandler = PmdUnifiedHandler.EMPTY; + private PmdShapeHandler shapeHandler = PmdUnifiedHandler.EMPTY; + private PmdMaterialHandler materialHandler = PmdUnifiedHandler.EMPTY; + private PmdBoneHandler boneHandler = PmdUnifiedHandler.EMPTY; + private PmdMorphHandler morphHandler = PmdUnifiedHandler.EMPTY; private int boneCount = -1; private int morphCount = -1; @@ -100,7 +100,7 @@ public class PmdParserBase extends CommonParser { */ public void setBasicHandler(PmdBasicHandler handler){ if(handler == null){ - this.basicHandler = NullHandler.HANDLER; + this.basicHandler = PmdUnifiedHandler.EMPTY; }else{ this.basicHandler = handler; } @@ -113,7 +113,7 @@ public class PmdParserBase extends CommonParser { */ public void setShapeHandler(PmdShapeHandler handler){ if(handler == null){ - this.shapeHandler = NullHandler.HANDLER; + this.shapeHandler = PmdUnifiedHandler.EMPTY; }else{ this.shapeHandler = handler; } @@ -126,7 +126,7 @@ public class PmdParserBase extends CommonParser { */ public void setMaterialHandler(PmdMaterialHandler handler){ if(handler == null){ - this.materialHandler = NullHandler.HANDLER; + this.materialHandler = PmdUnifiedHandler.EMPTY; }else{ this.materialHandler = handler; } @@ -139,7 +139,7 @@ public class PmdParserBase extends CommonParser { */ public void setBoneHandler(PmdBoneHandler handler){ if(handler == null){ - this.boneHandler = NullHandler.HANDLER; + this.boneHandler = PmdUnifiedHandler.EMPTY; }else{ this.boneHandler = handler; } @@ -152,7 +152,7 @@ public class PmdParserBase extends CommonParser { */ public void setMorphHandler(PmdMorphHandler handler){ if(handler == null){ - this.morphHandler = NullHandler.HANDLER; + this.morphHandler = PmdUnifiedHandler.EMPTY; }else{ this.morphHandler = handler; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java index 643b3c2..fbab5a8 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt1.java @@ -18,7 +18,7 @@ import jp.sfjp.mikutoga.pmd.PmdLimits; */ public class PmdParserExt1 extends PmdParserBase { - private PmdEngHandler engHandler = NullHandler.HANDLER; + private PmdEngHandler engHandler = PmdUnifiedHandler.EMPTY; private boolean hasEnglishInfo = true; /** @@ -36,7 +36,7 @@ public class PmdParserExt1 extends PmdParserBase { */ public void setEngHandler(PmdEngHandler handler){ if(handler == null){ - this.engHandler = NullHandler.HANDLER; + this.engHandler = PmdUnifiedHandler.EMPTY; }else{ this.engHandler = handler; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java index ff5433a..3e6ce5c 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt2.java @@ -18,7 +18,7 @@ import jp.sfjp.mikutoga.pmd.PmdLimits; */ public class PmdParserExt2 extends PmdParserExt1 { - private PmdToonHandler toonHandler = NullHandler.HANDLER; + private PmdToonHandler toonHandler = PmdUnifiedHandler.EMPTY; /** * コンストラクタ。 @@ -35,7 +35,7 @@ public class PmdParserExt2 extends PmdParserExt1 { */ public void setToonHandler(PmdToonHandler handler){ if(handler == null){ - this.toonHandler = NullHandler.HANDLER; + this.toonHandler = PmdUnifiedHandler.EMPTY; }else{ this.toonHandler = handler; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java index e3cf20c..555f185 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserExt3.java @@ -18,8 +18,8 @@ import jp.sfjp.mikutoga.pmd.PmdLimits; */ public class PmdParserExt3 extends PmdParserExt2 { - private PmdRigidHandler rigidHandler = NullHandler.HANDLER; - private PmdJointHandler jointHandler = NullHandler.HANDLER; + private PmdRigidHandler rigidHandler = PmdUnifiedHandler.EMPTY; + private PmdJointHandler jointHandler = PmdUnifiedHandler.EMPTY; /** * コンストラクタ。 @@ -36,7 +36,7 @@ public class PmdParserExt3 extends PmdParserExt2 { */ public void setRigidHandler(PmdRigidHandler handler){ if(handler == null){ - this.rigidHandler = NullHandler.HANDLER; + this.rigidHandler = PmdUnifiedHandler.EMPTY; }else{ this.rigidHandler = handler; } @@ -49,7 +49,7 @@ public class PmdParserExt3 extends PmdParserExt2 { */ public void setJointHandler(PmdJointHandler handler){ if(handler == null){ - this.jointHandler = NullHandler.HANDLER; + this.jointHandler = PmdUnifiedHandler.EMPTY; }else{ this.jointHandler = handler; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdUnifiedHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdUnifiedHandler.java index 2d06bb3..c849e89 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdUnifiedHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdUnifiedHandler.java @@ -7,6 +7,8 @@ package jp.sfjp.mikutoga.pmd.parser; +import jp.sfjp.mikutoga.corelib.EmptyProxyFactory; + /** * PMDパーサ用の統合ハンドラ。 */ @@ -20,4 +22,10 @@ public interface PmdUnifiedHandler PmdToonHandler, PmdRigidHandler, PmdJointHandler { + + /** 何もしない統合ハンドラ。 */ + PmdUnifiedHandler EMPTY = + (PmdUnifiedHandler) + ( EmptyProxyFactory.buildEmptyProxy(PmdUnifiedHandler.class) ); + } diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdUnifiedHandler.java b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdUnifiedHandler.java new file mode 100644 index 0000000..ddc6197 --- /dev/null +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdUnifiedHandler.java @@ -0,0 +1,25 @@ +/* + * VMD unified handler + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sourceforge.mikutoga.vmd.parser; + +import jp.sfjp.mikutoga.corelib.EmptyProxyFactory; + +/** + * VMDパーサ用の統合ハンドラ。 + */ +public interface VmdUnifiedHandler + extends VmdBasicHandler, + VmdCameraHandler, + VmdLightingHandler { + + /** 何もしない統合ハンドラ。 */ + VmdUnifiedHandler EMPTY = + (VmdUnifiedHandler) + ( EmptyProxyFactory.buildEmptyProxy(VmdUnifiedHandler.class) ); + +} -- 2.11.0