package test;

import java.io.StringReader;

import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;

import com.recondotech.hre.rules.runtime.impl.drools.DroolsExecutionMgr;

public class PermGenFail {

    public RuleBase deploy(String drlString, String scope, String pkgName)  {
        try {
            RuleBase base = null;
             
            
            RuleBaseConfiguration conf = new RuleBaseConfiguration();
            conf.setShadowProxy(false);
            base = RuleBaseFactory.newRuleBase(conf);
        
            
            try {
                ruleBase.lock();
                if (ruleBase.getPackage(pkgName) != null) {
                    ruleBase.removePackage(pkgName);
                    
                }
                PackageBuilderConfiguration pkgBuilderCfg = new PackageBuilderConfiguration();
                JavaDialectConfiguration javaConf = (JavaDialectConfiguration) pkgBuilderCfg.getDialectConfiguration( "java" );
                javaConf.setCompiler( JavaDialectConfiguration.JANINO );                
                PackageBuilder builder = new PackageBuilder(pkgBuilderCfg);
                
                /*memory leak */ 
                builder.addPackageFromDrl(new StringReader(drlString));
                /*memory leak */
                
                ruleBase.addPackage(builder.getPackage());
                
            } finally {
                ruleBase.unlock();
            }
            return ruleBase;
        } catch (Exception e) {
            
        }
        return null;
    }
}
