01: /*
02: * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
03: */
04: package com.tc.object.config;
05:
06: import java.net.URL;
07:
08: /**
09: * Manages a set of classes that are being swapped.
10: */
11: public interface ClassReplacementMapping {
12:
13: /**
14: * Add a new mapping
15: * @param originalClassName Original class
16: * @param replacementClassName Replacement class
17: * @param replacementResource Class bits to use for replacement
18: * @return Previous mapping, if any
19: */
20: public String addMapping(final String originalClassName,
21: final String replacementClassName,
22: final URL replacementResource);
23:
24: /**
25: * Get class bytes URL
26: * @param replacementClassName Replacement class name
27: * @return Location of bytes
28: */
29: public URL getReplacementResource(final String replacementClassName);
30:
31: /**
32: * Get class bytes URL
33: * @param replacementClassName Replacement class name
34: * @param defaultClassLoader Classloader to use when loading URL resource
35: * @return Location of bytes
36: */
37: public URL getReplacementResource(
38: final String replacementClassName,
39: final ClassLoader defaultClassLoader);
40:
41: /**
42: * Check if has replacement
43: * @param originalClassName Class
44: * @return True if has replacement in mapping
45: */
46: public boolean hasReplacement(String originalClassName);
47:
48: /**
49: * Get replacement mapping
50: * @param original Original class name
51: * @return Replacement class name
52: */
53: public String getReplacementClassName(String original);
54:
55: /**
56: * Get original class name with slashes instead of dots.
57: * @param replacement Replacement class name with slashes
58: * @return Original class name with slashes instead of dots.
59: */
60: public String getOriginalClassNameSlashes(String replacement);
61:
62: /**
63: * Get original bytecode class name (slashes, start with L, etc).
64: * @param replacement Replacement class name in bytecode form
65: * @return Original class name in bytecode form
66: */
67: public String getOriginalAsmType(String replacement);
68:
69: /**
70: * In string s, convert all replacement ASM class names from the
71: * replacement names back to the original.
72: * @param s The string
73: * @return s, with replacement names converted to original
74: */
75: public String ensureOriginalAsmTypes(String s);
76: }
|