01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: * $Header:$
18: */
19: package org.apache.beehive.controls.runtime.bean;
20:
21: import java.beans.DefaultPersistenceDelegate;
22: import java.beans.Encoder;
23: import java.beans.Expression;
24:
25: /**
26: * The AdaptorPersistenceDelegate class supports the XML persistance of Control Client Event
27: * Adaptor instances by implementing the <code>java.beans.PersistenceDelegate</b> API, and
28: * overriding the default persistance algorithm based upon the runtime structure for Controls.
29: */
30: public class AdaptorPersistenceDelegate extends
31: DefaultPersistenceDelegate {
32: /**
33: * PersistenceDelegate.instantiate()
34: */
35: protected Expression instantiate(Object oldInstance, Encoder out) {
36: if (!(oldInstance instanceof EventAdaptor))
37: return super .instantiate(oldInstance, out);
38:
39: //
40: // An implementation instance is actually constructed at decode time by calling
41: // ControlBean.ensureControl on the parent bean. This will create a new impl
42: // instance and run the impl initializer on it.
43: //
44: return new Expression(oldInstance, oldInstance.getClass(),
45: "new", new Object[] { ((EventAdaptor) oldInstance)
46: .getClient() });
47: }
48:
49: /**
50: * PersistenceDelegate.initialize()
51: */
52: protected void initialize(Class<?> type, Object oldInstance,
53: Object newInstance, Encoder out) {
54: super .initialize(type, oldInstance, newInstance, out);
55: }
56:
57: /**
58: * PersistenceDelegate.writeObject()
59: */
60: public void writeObject(Object oldInstance, Encoder out) {
61: super.writeObject(oldInstance, out);
62: }
63: }
|