Commit 10e66696 authored by Daniel Honsel's avatar Daniel Honsel
Browse files

added own error handler for the scope provider

parent 6eab94f3
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -3,10 +3,31 @@
 */
package de.ugoe.cs.swe;

import org.apache.log4j.Logger;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
import org.eclipse.xtext.util.PolymorphicDispatcher;

import com.google.inject.Binder;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Names;

import de.ugoe.cs.swe.scoping.TTCN3ScopeErrorHandler;


/**
 * Use this class to register components to be used at runtime / without the Equinox extension registry.
 */
public class TTCN3RuntimeModule extends AbstractTTCN3RuntimeModule {
	
	public void configureErrorHandler(Binder binder) {
		Logger logger = Logger.getLogger(PolymorphicDispatcher.class);
		//PolymorphicDispatcher.ErrorHandler<IScope> handler = new TTCN3ScopeErrorHandler<IScope>( logger );
		PolymorphicDispatcher.ErrorHandler<IScope> handler = new PolymorphicDispatcher.NullErrorHandler<IScope>();
		
		binder.bind(new TypeLiteral<PolymorphicDispatcher.ErrorHandler<IScope>>(){})
        	.annotatedWith(Names.named(AbstractDeclarativeScopeProvider.NAMED_ERROR_HANDLER))
        	.toInstance( handler );		
	}
	
}
+24 −0
Original line number Diff line number Diff line
package de.ugoe.cs.swe.scoping;

import org.apache.log4j.Logger;
import org.eclipse.xtext.util.PolymorphicDispatcher.ErrorHandler;

public class TTCN3ScopeErrorHandler<IScope> implements ErrorHandler<IScope> {
	
    private Logger logger;

    public TTCN3ScopeErrorHandler( Logger logger ) {
        this.logger = logger;
    }
    
    @Override
    public IScope handle( Object[] params, Throwable throwable ) {
        
        if( !(throwable instanceof NoSuchMethodException ) ) {
            logger.warn("Error in polymorphic dispatcher : "+throwable.getMessage(), throwable);
        }
        
        return null;
    }	
	
}