private static void writeBeliefSet( MarshallerWriteContext context, BeliefSet beliefSet, org.drools.core.marshalling.impl.ProtobufMessages.EqualityKey.Builder _key) throws IOException { ProtobufMessages.BeliefSet.Builder _beliefSet = ProtobufMessages.BeliefSet.newBuilder(); _beliefSet.setHandleId(beliefSet.getFactHandle().getId()); ObjectMarshallingStrategyStore objectMarshallingStrategyStore = context.objectMarshallingStrategyStore; // for ( LinkedListEntry node = (LinkedListEntry) beliefSet.getFirst(); node != null; node = // (LinkedListEntry) node.getNext() ) { FastIterator it = beliefSet.iterator(); for (LinkedListEntry node = (LinkedListEntry) beliefSet.getFirst(); node != null; node = (LinkedListEntry) it.next(node)) { LogicalDependency belief = (LogicalDependency) node.getObject(); ProtobufMessages.LogicalDependency.Builder _logicalDependency = ProtobufMessages.LogicalDependency.newBuilder(); // _belief.setActivation( value ) LogicalDependency dependency = (LogicalDependency) node.getObject(); org.drools.core.spi.Activation activation = dependency.getJustifier(); ProtobufMessages.Activation _activation = ProtobufMessages.Activation.newBuilder() .setPackageName(activation.getRule().getPackage()) .setRuleName(activation.getRule().getName()) .setTuple(PersisterHelper.createTuple(activation.getTuple())) .build(); _logicalDependency.setActivation(_activation); if (belief.getObject() != null) { ObjectMarshallingStrategy strategy = objectMarshallingStrategyStore.getStrategyObject(belief.getObject()); Integer index = context.getStrategyIndex(strategy); _logicalDependency.setObjectStrategyIndex(index.intValue()); _logicalDependency.setObject( ByteString.copyFrom( strategy.marshal( context.strategyContext.get(strategy), context, belief.getObject()))); } if (belief.getValue() != null) { ObjectMarshallingStrategy strategy = objectMarshallingStrategyStore.getStrategyObject(belief.getValue()); Integer index = context.getStrategyIndex(strategy); _logicalDependency.setValueStrategyIndex(index.intValue()); _logicalDependency.setValue( ByteString.copyFrom( strategy.marshal( context.strategyContext.get(strategy), context, belief.getValue()))); } _beliefSet.addLogicalDependency(_logicalDependency.build()); } _key.setBeliefSet(_beliefSet); }
public static InternalFactHandle readFactHandle( MarshallerReaderContext context, SessionEntryPoint entryPoint, FactHandle _handle) throws IOException, ClassNotFoundException { Object object = null; ObjectMarshallingStrategy strategy = null; if (_handle.hasStrategyIndex()) { strategy = context.usedStrategies.get(_handle.getStrategyIndex()); object = strategy.unmarshal( context.strategyContexts.get(strategy), context, _handle.getObject().toByteArray(), (context.ruleBase == null) ? null : context.ruleBase.getRootClassLoader()); } InternalFactHandle handle = null; switch (_handle.getType()) { case FACT: { handle = new DefaultFactHandle(_handle.getId(), object, _handle.getRecency(), entryPoint); break; } case QUERY: { handle = new QueryElementFactHandle(object, _handle.getId(), _handle.getRecency()); break; } case EVENT: { handle = new EventFactHandle( _handle.getId(), object, _handle.getRecency(), _handle.getTimestamp(), _handle.getDuration(), entryPoint); ((EventFactHandle) handle).setExpired(_handle.getIsExpired()); // the event is re-propagated through the network, so the activations counter will be // recalculated // ((EventFactHandle) handle).setActivationsCount( _handle.getActivationsCount() ); break; } default: { throw new IllegalStateException( "Unable to marshal FactHandle, as type does not exist:" + _handle.getType()); } } return handle; }
private static ProtobufMessages.FactHandle writeFactHandle( MarshallerWriteContext context, ObjectMarshallingStrategyStore objectMarshallingStrategyStore, InternalFactHandle handle) throws IOException { ProtobufMessages.FactHandle.Builder _handle = ProtobufMessages.FactHandle.newBuilder(); _handle.setType(getHandleType(handle)); _handle.setId(handle.getId()); _handle.setRecency(handle.getRecency()); if (_handle.getType() == ProtobufMessages.FactHandle.HandleType.EVENT) { // is event EventFactHandle efh = (EventFactHandle) handle; _handle.setTimestamp(efh.getStartTimestamp()); _handle.setDuration(efh.getDuration()); _handle.setIsExpired(efh.isExpired()); _handle.setActivationsCount(efh.getActivationsCount()); } if (handle.getEqualityKey() != null && handle.getEqualityKey().getStatus() == EqualityKey.JUSTIFIED) { _handle.setIsJustified(true); } else { _handle.setIsJustified(false); } Object object = handle.getObject(); if (object != null) { ObjectMarshallingStrategy strategy = objectMarshallingStrategyStore.getStrategyObject(object); Integer index = context.getStrategyIndex(strategy); _handle.setStrategyIndex(index.intValue()); _handle.setObject( ByteString.copyFrom( strategy.marshal(context.strategyContext.get(strategy), context, object))); } return _handle.build(); }
private static void readBeliefSet( MarshallerReaderContext context, TruthMaintenanceSystem tms, EqualityKey key, ProtobufMessages.BeliefSet _beliefSet) throws IOException, ClassNotFoundException { InternalFactHandle handle = (InternalFactHandle) context.handles.get(_beliefSet.getHandleId()); for (ProtobufMessages.LogicalDependency _logicalDependency : _beliefSet.getLogicalDependencyList()) { ProtobufMessages.Activation _activation = _logicalDependency.getActivation(); Activation activation = (Activation) context .filter .getTuplesCache() .get( PersisterHelper.createActivationKey( _activation.getPackageName(), _activation.getRuleName(), _activation.getTuple())) .getObject(); Object object = null; ObjectMarshallingStrategy strategy = null; if (_logicalDependency.hasObjectStrategyIndex()) { strategy = context.usedStrategies.get(_logicalDependency.getObjectStrategyIndex()); object = strategy.unmarshal( context.strategyContexts.get(strategy), context, _logicalDependency.getObject().toByteArray(), (context.ruleBase == null) ? null : context.ruleBase.getRootClassLoader()); } Object value = null; if (_logicalDependency.hasValueStrategyIndex()) { strategy = context.usedStrategies.get(_logicalDependency.getValueStrategyIndex()); value = strategy.unmarshal( context.strategyContexts.get(strategy), context, _logicalDependency.getValue().toByteArray(), (context.ruleBase == null) ? null : context.ruleBase.getRootClassLoader()); } ObjectTypeConf typeConf = context .wm .getObjectTypeConfigurationRegistry() .getObjectTypeConf( ((NamedEntryPoint) handle.getEntryPoint()).getEntryPoint(), handle.getObject()); tms.readLogicalDependency( handle, object, value, activation, activation.getPropagationContext(), activation.getRule(), typeConf); } }