01: package org.mandarax.util.xmlser;
02:
03: /*
04: * Copyright (C) 1999-2004 <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</a>
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20:
21: import java.beans.*;
22:
23: import org.mandarax.kernel.LogicFactory;
24:
25: /**
26: * Utility class that can be used to configure an XMLEncoder. The idea is to instruct the
27: * encoder not to use direct instanciation of classes nut to use the logic factory instead.
28: * Moreover, an exception listener is set which forwards exception details to the mandarax logging system.<p>
29: * <strong>Warning:</strong> This is not yet working for the persistence delegate for rules, perhaps there is a bug
30: * in the jdk xml encoder. The delegates for facts and queries do not yet support properties!
31: * @author <A href="http://www-ist.massey.ac.nz/JBDietrich" target="_top">Jens Dietrich</a>
32: * @version 3.4 <7 March 05>
33: * @since 2.3.1
34: */
35:
36: public class XMLEncoderConfigurator {
37: /**
38: * Configure an encoder.
39: * @param encoder the encoder
40: */
41: public static void configure(XMLEncoder encoder) {
42: LogicFactory lfactory = LogicFactory.getDefaultFactory();
43: encoder.setPersistenceDelegate(lfactory.getClass(),
44: new PersistenceDelegate4LogicFactories());
45: // encoder.setPersistenceDelegate(lfactory.getQueryImplementationClass(),new PersistenceDelegate4Queries());
46: // encoder.setPersistenceDelegate(lfactory.getRuleImplementationClass(),new PersistenceDelegate4Rules());
47: encoder.setPersistenceDelegate(lfactory
48: .getPrerequisiteImplementationClass(),
49: new PersistenceDelegate4Prerequisites());
50: // encoder.setPersistenceDelegate(lfactory.getFactImplementationClass(),new PersistenceDelegate4Facts());
51: encoder.setPersistenceDelegate(lfactory
52: .getConstantTermImplementationClass(),
53: new PersistenceDelegate4ConstantTerms());
54: encoder.setPersistenceDelegate(lfactory
55: .getComplexTermImplementationClass(),
56: new PersistenceDelegate4ComplexTerms());
57: encoder.setPersistenceDelegate(lfactory
58: .getVariableTermImplementationClass(),
59: new PersistenceDelegate4VariableTerms());
60: encoder.setExceptionListener(new LogExceptionListener());
61: }
62:
63: /**
64: * Configure a decoder.
65: * @param decoder the decoder
66: */
67: public static void configure(XMLDecoder decoder) {
68: decoder.setExceptionListener(new LogExceptionListener());
69: }
70: }
|