View | Details | Raw Unified | Return to bug 117189
Collapse All | Expand All

(-)ClassLoaderWeavingAdaptor.java (-16 / +35 lines)
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
}

Return to bug 117189