Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.drools.guvnor.server.contenthandler;
  
  /*
   * Copyright 2005 JBoss Inc
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
  *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 
 import  org.drools.guvnor.client.rpc.RuleAsset;
 import  org.drools.guvnor.client.rpc.RuleFlowContentModel;
 
 import  com.google.gwt.user.client.rpc.SerializableException;
 
 public class RuleFlowHandler extends ContentHandler
     implements
     IRuleAsset {
 
     public void retrieveAssetContent(RuleAsset asset,
                                      PackageItem pkg,
                                      AssetItem itemthrows SerializableException {
 
         RuleFlowProcess process = readProcessnew ByteArrayInputStreamitem.getContent().getBytes() ) );
 
         if ( process != null ) {
             RuleFlowContentModel content = RuleFlowContentModelBuilder.createModelprocess );
             content.setXml( item.getContent() );
             asset.content = content;
         } else if ( process == null && !"".equalsitem.getContent() ) ) {
             asset.content = new RuleFlowContentModel();
             //
             // 
             // Migrate v4 ruleflows to v5
             // All we can do is put the old drools 4 rfm back as the xml so 
             // that we can at least rebuild the package with it if the
             // migrate ruleflow system property is set true.
             //
             ((RuleFlowContentModel) asset.content).setXml( item.getContent() );
         }
 
     }
 
     protected RuleFlowProcess readProcess(InputStream is) {
 
         RuleFlowProcess process = null;
 
         try {
             InputStreamReader reader = new InputStreamReaderis );
             PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
             XmlProcessReader xmlReader = new XmlProcessReaderconfiguration.getSemanticModules() );
 
             try {
                 process = (RuleFlowProcessxmlReader.readreader );
 
             } catch ( Exception e ) {
                 reader.close();
                 throw new Exception"Unable to read rule flow XML." );
             }
             reader.close();
         } catch ( Exception e ) {
             return null;
         }
 
         return process;
     }
 
     public void storeAssetContent(RuleAsset asset,
                                   AssetItem repoAssetthrows SerializableException {
 
         RuleFlowContentModel content = (RuleFlowContentModel) asset.content;
 
         // 
         // Migrate v4 ruleflows to v5
         // Added guards to check for nulls in the case where the ruleflows
        // have not been migrated from drools 4 to 5.
        //
        if ( content != null ) {
            if ( content.getXml() != null ) {
                RuleFlowProcess process = readProcessnew ByteArrayInputStreamcontent.getXml().getBytes() ) );
                if ( process != null ) {
                    RuleFlowProcessBuilder.updateProcessprocess,
                                                          content.getNodes() );
                    XmlRuleFlowProcessDumper dumper = .;
                    String out = dumper.dumpprocess );
                    repoAsset.updateContentout );
                } else {
                    //
                    // Migrate v4 ruleflows to v5
                    // Put the old contents back as there is no updating possible
                    //
                    repoAsset.updateContentcontent.getXml() );
                }
            }
        }
    }

    
The rule flow can not be built if the package name is not the same as the package that it exists in. This changes the package name.

Parameters:
item
    public void ruleFlowAttached(AssetItem item) {
        String content = item.getContent();
        if ( content != null && !content.equals"" ) ) {
            RuleFlowProcess process = readProcessnew ByteArrayInputStreamcontent.getBytes() ) );
            if ( process != null ) {
                String packageName = item.getPackageName();
                String originalPackageName = process.getPackageName();
                if ( !packageName.equalsoriginalPackageName ) ) {
                    process.setPackageNamepackageName );
                    XmlRuleFlowProcessDumper dumper = .;
                    String out = dumper.dumpprocess );
                    item.updateContentout );
                    item.checkin"Changed rule flow package from " + originalPackageName + " to " + packageName );
                }
            }
        }
    }
    public void assembleDRL(BRMSPackageBuilder builder,
                            AssetItem asset,
                            StringBuffer buf) {
        // do nothing... as no change to source.
    }
    public void compile(BRMSPackageBuilder builder,
                        AssetItem asset,
                        ErrorLogger loggerthrows DroolsParserException,
                                           IOException {
        InputStream ins = asset.getBinaryContentAttachment();
        if ( ins != null ) {
            builder.addRuleFlownew InputStreamReaderasset.getBinaryContentAttachment() ) );
        }
    }
New to GrepCode? Check out our FAQ X