* @param packageName Name for this package. Overrides the one in the DRL.
*/
@LoggedIn
public String importClassicDRL(InputStream drlInputStream,
String packageName) {
ClassicDRLImporter imp;
try {
imp = new ClassicDRLImporter(drlInputStream);
} catch (DroolsParserException e) {
throw new IllegalArgumentException(
"Could not parse the drlInputStream for package (" + packageName + "): " + e.getMessage(), e);
}
ModuleItem pkg = null;
if ( packageName == null ) {
packageName = imp.getPackageName();
}
if ( packageName == null || "".equals( packageName ) ) {
throw new IllegalArgumentException( "Missing package name." );
}
boolean existing = repository.containsModule( packageName );
// Check if the package is archived
if ( existing && repository.isModuleArchived( packageName ) ) {
// Remove the package so it can be created again.
ModuleItem item = repository.loadModule( packageName );
item.remove();
existing = false;
}
if ( existing ) {
pkg = repository.loadModule( packageName );
DroolsHeader.updateDroolsHeader( ClassicDRLImporter.mergeLines( DroolsHeader.getDroolsHeader( pkg ),
imp.getPackageHeader() ),
pkg );
existing = true;
} else {
pkg = repository.createModule( packageName,
"<imported>" );
DroolsHeader.updateDroolsHeader( imp.getPackageHeader(),
pkg );
}
boolean newVer = Boolean.parseBoolean( System.getProperty( "drools.createNewVersionOnImport",
"true" ) );
for ( Asset as : imp.getAssets() ) {
if ( existing && pkg.containsAsset( as.name ) ) {
AssetItem asset = pkg.loadAsset( as.name );
if ( asset.getFormat().equals( as.format ) ) {
asset.updateContent( as.content );