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.lang.instrument;
19:
20: import org.apache.harmony.instrument.internal.nls.Messages;
21:
22: /**
23: * Wraps a {@link java.lang.Class} that is to be redefined together with the
24: * byte array which constitutes the updated version of the class.
25: *
26: */
27: public final class ClassDefinition {
28:
29: /**
30: * The <code>Class</code> object for the class that will be instrumented.
31: */
32: private Class<?> definitionClass;
33:
34: /**
35: * The new version of the class file bytes for the class being instrumented.
36: */
37: private byte[] definitionClassFile;
38:
39: /**
40: * Constructs a new instance of <code>ClassDefinition</code> with the
41: * supplied {@link Class} object and byte array representing the new class
42: * file bytes.
43: *
44: * @param theClass
45: * the <code>Class</code> object for the class to be redefined
46: * @param theClassFile
47: * an array of bytes containing the updated version of the class
48: * to be redefined.
49: * @throws NullPointerException
50: * if either <code>theClass</code> or
51: * <code>theClassFile</code> are <code>null</code>.
52: */
53: public ClassDefinition(Class<?> theClass, byte[] theClassFile) {
54: if (theClass == null) {
55: throw new NullPointerException(Messages
56: .getString("instrument.1")); //$NON-NLS-1$
57: }
58: if (theClassFile == null) {
59: throw new NullPointerException(Messages
60: .getString("instrument.2")); //$NON-NLS-1$
61: }
62: this .definitionClass = theClass;
63: this .definitionClassFile = theClassFile;
64: }
65:
66: /**
67: * Returns the {@link Class} object for the class to be redefined.
68: *
69: * @return the <code>Class</code> object
70: */
71: public Class<?> getDefinitionClass() {
72: return this .definitionClass;
73: }
74:
75: /**
76: * Returns a reference to the byte array containing the re-engineered
77: * version of the class.
78: *
79: * @return byte array containing the new version of the class
80: */
81: public byte[] getDefinitionClassFile() {
82: return this.definitionClassFile;
83: }
84: }
|