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:
18: package java.beans;
19:
20: /**
21: * A special internal <code>PersistenceDelegate</code> for wrapper classes of
22: * primitive types like int.
23: *
24: */
25: class PrimitiveWrapperPersistenceDelegate extends PersistenceDelegate {
26:
27: /*
28: * It's unnecessary to do anything for initialization, because two mutatable
29: * wrapper objects are actually equivalent already.
30: */
31: @Override
32: protected void initialize(Class<?> type, Object oldInstance,
33: Object newInstance, Encoder enc) {
34: // do nothing
35: }
36:
37: /*
38: * Instantiates a wrapper object using the constructor taking one String
39: * parameter except for Character.
40: */
41: @Override
42: protected Expression instantiate(Object oldInstance, Encoder enc) {
43: if (oldInstance instanceof Character) {
44: return new Expression(oldInstance, oldInstance.toString(),
45: "charAt", new Object[] { new Integer(0) }); //$NON-NLS-1$
46: }
47: return new Expression(oldInstance, oldInstance.getClass(),
48: "new", new Object[] { oldInstance //$NON-NLS-1$
49: .toString() });
50: }
51:
52: /*
53: * Two wrapper objects are regarded mutatable if they are equal.
54: */
55: @Override
56: protected boolean mutatesTo(Object o1, Object o2) {
57: if (null == o2) {
58: return false;
59: }
60: return o1.equals(o2);
61: }
62:
63: }
|