/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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. */ package org.drools.compiler.integrationtests.marshalling.util; import org.drools.core.common.EventFactHandle; import org.drools.core.common.InternalFactHandle; import org.drools.core.marshalling.impl.MarshallerWriteContext; import org.drools.core.process.instance.WorkItem; import org.kie.api.marshalling.ObjectMarshallingStrategy; import org.kie.api.marshalling.ObjectMarshallingStrategyStore; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Collection; import java.util.Map; public class OldOutputMarshallerMethods { // Changed with JBRULES-3257 public static void writeWorkItem_v1(MarshallerWriteContext context, WorkItem workItem) throws IOException { ObjectOutputStream stream = context.stream; stream.writeLong( workItem.getId() ); stream.writeLong( workItem.getProcessInstanceId() ); stream.writeUTF( workItem.getName() ); stream.writeInt( workItem.getState() ); //Work Item Parameters Map<String, Object> parameters = workItem.getParameters(); Collection<Object> notNullValues = new ArrayList<Object>(); for ( Object value : parameters.values() ) { if ( value != null ) { notNullValues.add( value ); } } stream.writeInt( notNullValues.size() ); for ( String key : parameters.keySet() ) { Object object = parameters.get( key ); if ( object != null ) { stream.writeUTF( key ); int index = context.objectMarshallingStrategyStore.getStrategy( object ); stream.writeInt( index ); ObjectMarshallingStrategy strategy = context.objectMarshallingStrategyStore.getStrategy( index ); if ( strategy.accept( object ) ) { strategy.write( stream, object ); } } } } // Changed with JBRULES-3257 public static void writeFactHandle_v1(MarshallerWriteContext context, ObjectOutputStream stream, ObjectMarshallingStrategyStore objectMarshallingStrategyStore, int type, InternalFactHandle handle) throws IOException { stream.writeInt( type ); stream.writeInt( handle.getId() ); stream.writeLong( handle.getRecency() ); if ( type == 2) { // is event EventFactHandle efh = ( EventFactHandle ) handle; stream.writeLong( efh.getStartTimestamp() ); stream.writeLong( efh.getDuration() ); stream.writeBoolean( efh.isExpired() ); stream.writeLong( efh.getActivationsCount() ); } //context.out.println( "Object : int:" + handle.getId() + " long:" + handle.getRecency() ); //context.out.println( handle.getObject() ); Object object = handle.getObject(); if ( object != null ) { int index = objectMarshallingStrategyStore.getStrategy( object ); ObjectMarshallingStrategy strategy = objectMarshallingStrategyStore.getStrategy( index ); stream.writeInt( index ); strategy.write( stream, object ); } else { stream.writeInt( -1 ); } String entryPoint = handle.getEntryPoint().getEntryPoint().getEntryPointId(); if ( entryPoint != null && !entryPoint.equals( "" ) ) { stream.writeBoolean( true ); stream.writeUTF( entryPoint ); } else { stream.writeBoolean( false ); } } }