22
33import java .io .InputStream ;
44import java .util .HashMap ;
5+ import java .util .HashSet ;
56import java .util .Iterator ;
67import java .util .Map ;
8+ import java .util .Set ;
79
810import org .fugerit .java .core .cfg .ConfigException ;
911import org .fugerit .java .core .cfg .xml .CustomListCatalogConfig ;
1618import org .w3c .dom .Element ;
1719import org .w3c .dom .NodeList ;
1820
19- public class MiniFilterConfig extends CustomListCatalogConfig <MiniFilterConfigEntry , ListMapConfig <MiniFilterConfigEntry >> {
21+ public class MiniFilterConfig extends CustomListCatalogConfig <MiniFilterConfigEntry , ListMapConfig <MiniFilterConfigEntry >> implements MiniFilterMap {
2022
2123 /**
2224 *
@@ -37,7 +39,7 @@ public MiniFilterConfig(String attTagDataList, String attTagData) {
3739 this .getGeneralProps ().setProperty ( ATT_TYPE , MiniFilterConfigEntry .class .getName () );
3840 }
3941
40- public static MiniFilterConfig loadConfig ( InputStream is , MiniFilterConfig config ) throws Exception {
42+ public static MiniFilterMap loadConfig ( InputStream is , MiniFilterConfig config ) throws Exception {
4143 Document doc = DOMIO .loadDOMDoc ( is );
4244 Element root = doc .getDocumentElement ();
4345 config .configure ( root );
@@ -60,32 +62,42 @@ protected void customFilterConfig( MiniFilter filter, MiniFilterConfigEntry entr
6062
6163 }
6264
65+ @ Override
6366 public MiniFilterChain getChain ( String id ) throws Exception {
67+ MiniFilterChain chain = null ;
6468 ListMapConfig <MiniFilterConfigEntry > c = this .getListMap ( id );
65- MiniFilterChain chain = new MiniFilterChain ();
66- chain .setChainId ( id );
67- chain .getDefaultConfig ().putAll ( c .getConfig () );
68- Iterator <MiniFilterConfigEntry > it = c .iterator ();
69- while ( it .hasNext () ) {
70- MiniFilterConfigEntry entry = it .next ();
71- String type = entry .getType ();
72- MiniFilter filter = (MiniFilter ) ClassHelper .newInstance ( type );
73- if ( filter instanceof MiniFilterBase ) {
74- MiniFilterBase filterBase = (MiniFilterBase )filter ;
75- filterBase .setChainId ( id );
76- if ( StringUtils .isNotEmpty ( entry .getParam01 () ) ) {
77- filterBase .setParam01 ( entry .getParam01 () );
69+ if ( c != null ) {
70+ chain = new MiniFilterChain ();
71+ chain .setChainId ( id );
72+ chain .getDefaultConfig ().putAll ( c .getConfig () );
73+ Iterator <MiniFilterConfigEntry > it = c .iterator ();
74+ while ( it .hasNext () ) {
75+ MiniFilterConfigEntry entry = it .next ();
76+ String type = entry .getType ();
77+ MiniFilter filter = (MiniFilter ) ClassHelper .newInstance ( type );
78+ if ( filter instanceof MiniFilterBase ) {
79+ MiniFilterBase filterBase = (MiniFilterBase )filter ;
80+ filterBase .setChainId ( id );
81+ if ( StringUtils .isNotEmpty ( entry .getParam01 () ) ) {
82+ filterBase .setParam01 ( entry .getParam01 () );
83+ }
7884 }
85+ filter .config ( entry .getKey () , entry .getDescription (), entry .getDefaultBehaviourInt () );
86+ filter .setCustomConfig ( entry .getProps () );
87+ this .customFilterConfig (filter , entry );
88+ chain .getFilterChain ().add ( filter );
89+ logger .info ( "adding filter to chain : " +filter );
90+ }
91+ } else {
92+ chain = this .getChainCache (id );
93+ if ( chain == null ) {
94+ throw new ConfigException ( "Chain not found : " +id );
7995 }
80- filter .config ( entry .getKey () , entry .getDescription (), entry .getDefaultBehaviourInt () );
81- filter .setCustomConfig ( entry .getProps () );
82- this .customFilterConfig (filter , entry );
83- chain .getFilterChain ().add ( filter );
84- logger .info ( "adding filter to chain : " +filter );
85- }
96+ }
8697 return chain ;
8798 }
8899
100+ @ Override
89101 public MiniFilterChain getChainCache ( String id ) throws Exception {
90102 MiniFilterChain chain = this .mapChain .get ( id );
91103 if ( chain == null ) {
@@ -95,6 +107,18 @@ public MiniFilterChain getChainCache( String id ) throws Exception {
95107 return chain ;
96108 }
97109
110+ @ Override
111+ public Set <String > getKeys () {
112+ Set <String > set = new HashSet <String >( this .getIdSet () );
113+ set .addAll ( this .mapChain .keySet () );
114+ return set ;
115+ }
116+
117+ @ Override
118+ public void setChain (String id , MiniFilterChain chain ) {
119+ this .mapChain .put ( id , chain );
120+ }
121+
98122 public static MiniFilterConfig initFromClassLoaderWithRuntimeException ( String path ) {
99123 MiniFilterConfig config = new MiniFilterConfig ();
100124 try {
0 commit comments