Lines 14-19
Link Here
|
14 |
|
14 |
|
15 |
import org.aspectj.asm.IRelationship; |
15 |
import org.aspectj.asm.IRelationship; |
16 |
import org.aspectj.bridge.IMessage; |
16 |
import org.aspectj.bridge.IMessage; |
|
|
17 |
import org.aspectj.bridge.IMessageHandler; |
17 |
import org.aspectj.bridge.ISourceLocation; |
18 |
import org.aspectj.bridge.ISourceLocation; |
18 |
import org.aspectj.bridge.Message; |
19 |
import org.aspectj.bridge.Message; |
19 |
import org.aspectj.bridge.MessageUtil; |
20 |
import org.aspectj.bridge.MessageUtil; |
Lines 99-104
Link Here
|
99 |
weavingContext = wContext ; |
100 |
weavingContext = wContext ; |
100 |
} |
101 |
} |
101 |
|
102 |
|
|
|
103 |
List definitions = parseDefinitions(loader, messageHandler); |
104 |
if (!enabled) { |
105 |
return; |
106 |
} |
107 |
|
102 |
bcelWorld = new BcelWorld( |
108 |
bcelWorld = new BcelWorld( |
103 |
loader, messageHandler, new ICrossReferenceHandler() { |
109 |
loader, messageHandler, new ICrossReferenceHandler() { |
104 |
public void addCrossReference(ISourceLocation from, ISourceLocation to, IRelationship.Kind kind, boolean runtimeTest) { |
110 |
public void addCrossReference(ISourceLocation from, ISourceLocation to, IRelationship.Kind kind, boolean runtimeTest) { |
Lines 106-112
Link Here
|
106 |
} |
112 |
} |
107 |
} |
113 |
} |
108 |
); |
114 |
); |
109 |
|
|
|
110 |
// //TODO this AJ code will call |
115 |
// //TODO this AJ code will call |
111 |
// //org.aspectj.apache.bcel.Repository.setRepository(this); |
116 |
// //org.aspectj.apache.bcel.Repository.setRepository(this); |
112 |
// //ie set some static things |
117 |
// //ie set some static things |
Lines 116-129
Link Here
|
116 |
weaver = new BcelWeaver(bcelWorld); |
121 |
weaver = new BcelWeaver(bcelWorld); |
117 |
|
122 |
|
118 |
// register the definitions |
123 |
// register the definitions |
119 |
registerDefinitions(weaver, loader); |
124 |
registerDefinitions(weaver, loader, definitions); |
|
|
125 |
messageHandler = bcelWorld.getMessageHandler(); |
120 |
|
126 |
|
121 |
// AV - see #113511 - not sure it is good to skip message handler |
127 |
//bcelWorld.setResolutionLoader(loader.getParent());//(ClassLoader)null);// |
122 |
if (enabled) { |
128 |
|
123 |
messageHandler = bcelWorld.getMessageHandler(); |
129 |
// after adding aspects |
124 |
// after adding aspects |
130 |
weaver.prepareForWeave(); |
125 |
weaver.prepareForWeave(); |
|
|
126 |
} |
127 |
} |
131 |
} |
128 |
|
132 |
|
129 |
/** |
133 |
/** |
Lines 132-142
Link Here
|
132 |
* @param weaver |
136 |
* @param weaver |
133 |
* @param loader |
137 |
* @param loader |
134 |
*/ |
138 |
*/ |
135 |
private void registerDefinitions(final BcelWeaver weaver, final ClassLoader loader) { |
139 |
private List parseDefinitions(final ClassLoader loader, IMessageHandler handler) { |
136 |
try { |
140 |
List definitions = new ArrayList(); |
137 |
MessageUtil.info(messageHandler, "register classloader " + getClassLoaderName(loader)); |
141 |
try { |
|
|
142 |
MessageUtil.info(messageHandler, "register classloader " + ((loader!=null)?loader.getClass().getName()+"@"+loader.hashCode():"null")); |
138 |
//TODO av underoptimized: we will parse each XML once per CL that see it |
143 |
//TODO av underoptimized: we will parse each XML once per CL that see it |
139 |
List definitions = new ArrayList(); |
|
|
140 |
|
144 |
|
141 |
//TODO av dev mode needed ? TBD -Daj5.def=... |
145 |
//TODO av dev mode needed ? TBD -Daj5.def=... |
142 |
if (ClassLoader.getSystemClassLoader().equals(loader)) { |
146 |
if (ClassLoader.getSystemClassLoader().equals(loader)) { |
Lines 160-166
Link Here
|
160 |
definitions.add(DocumentParser.parse(xml)); |
164 |
definitions.add(DocumentParser.parse(xml)); |
161 |
} |
165 |
} |
162 |
} |
166 |
} |
163 |
|
167 |
if (definitions.isEmpty()) { |
|
|
168 |
enabled = false; |
169 |
} |
170 |
} catch (Exception e) { |
171 |
handler.handleMessage( |
172 |
new Message("Register definition failed", IMessage.WARNING, e, null)); |
173 |
} |
174 |
return definitions; |
175 |
} |
176 |
|
177 |
private void registerDefinitions(final BcelWeaver weaver, final ClassLoader loader, List definitions) { |
178 |
try { |
164 |
// still go thru if definitions is empty since we will configure |
179 |
// still go thru if definitions is empty since we will configure |
165 |
// the default message handler in there |
180 |
// the default message handler in there |
166 |
registerOptions(weaver, loader, definitions); |
181 |
registerOptions(weaver, loader, definitions); |
Lines 177-184
Link Here
|
177 |
info("no configuration found. Disabling weaver for class loader " + getClassLoaderName(loader)); |
192 |
info("no configuration found. Disabling weaver for class loader " + getClassLoaderName(loader)); |
178 |
} |
193 |
} |
179 |
} catch (Exception e) { |
194 |
} catch (Exception e) { |
180 |
enabled = false;// will allow very fast skip in shouldWeave() |
195 |
weaver.getWorld().getMessageHandler().handleMessage( |
181 |
warn("register definition failed",e); |
196 |
new Message("Register definition failed", IMessage.WARNING, e, null) |
|
|
197 |
); |
182 |
} |
198 |
} |
183 |
} |
199 |
} |
184 |
|
200 |
|
Lines 437-442
Link Here
|
437 |
} |
453 |
} |
438 |
|
454 |
|
439 |
protected boolean accept(String className, byte[] bytes) { |
455 |
protected boolean accept(String className, byte[] bytes) { |
|
|
456 |
|
457 |
if (!enabled) { |
458 |
return false; |
459 |
} |
440 |
// avoid ResolvedType if not needed |
460 |
// avoid ResolvedType if not needed |
441 |
if (m_excludeTypePattern.isEmpty() && m_includeTypePattern.isEmpty()) { |
461 |
if (m_excludeTypePattern.isEmpty() && m_includeTypePattern.isEmpty()) { |
442 |
return true; |
462 |
return true; |
Lines 586-590
Link Here
|
586 |
public void flushGeneratedClasses(){ |
606 |
public void flushGeneratedClasses(){ |
587 |
generatedClasses = new HashMap(); |
607 |
generatedClasses = new HashMap(); |
588 |
} |
608 |
} |
589 |
|
|
|
590 |
} |
609 |
} |