public static FactModels unmarshal( final String content ) { try { //De-serialize model final List<FactMetaModel> models = toModel( content ); final FactModels factModels = new FactModels(); factModels.getModels().addAll( models ); //De-serialize Package name final String packageName = PackageNameParser.parsePackageName( content ); factModels.setPackageName( packageName ); //De-serialize imports final Imports imports = ImportsParser.parseImports( content ); factModels.setImports( imports ); return factModels; } catch ( final DroolsParserException e ) { throw new RuntimeException( e ); } //TODO {porcelli} needs define error handling strategy // log.error( "Unable to parse the DRL for the model - falling back to text (" + e.getMessage() + ")" ); // RuleContentText text = new RuleContentText(); // text.content = item.getContent(); // asset.setContent( text ); }
@Override public Path save( final Path resource, final FactModels content, final Metadata metadata, final String comment ) { content.setPackageName( projectService.resolvePackageName( resource ) ); ioService.write( paths.convert( resource ), FactModelPersistence.marshal( content ), metadataService.setUpAttributes( resource, metadata ), makeCommentedOption( comment ) ); //Invalidate Project-level DMO cache as Model has changed. invalidateDMOProjectCache.fire( new InvalidateDMOProjectCacheEvent( resource ) ); //Signal update to interested parties resourceUpdatedEvent.fire( new ResourceUpdatedEvent( resource ) ); return resource; }
@Override public Path create( final Path context, final String fileName, final FactModels content, final String comment ) { content.setPackageName( projectService.resolvePackageName( context ) ); final org.kie.commons.java.nio.file.Path nioPath = paths.convert( context ).resolve( fileName ); final Path newPath = paths.convert( nioPath, false ); ioService.createFile( nioPath ); ioService.write( nioPath, FactModelPersistence.marshal( content ), makeCommentedOption( comment ) ); //Signal creation to interested parties resourceAddedEvent.fire( new ResourceAddedEvent( newPath ) ); return newPath; }