// Copyright 2011 Google 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. package com.google.appengine.tools.pipeline.impl.model; import com.google.appengine.api.datastore.Blob; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Key; /** * A datastore entity for storing data necessary for a fan-out task * * @author rudominer@google.com (Mitch Rudominer) */ public class FanoutTaskRecord extends PipelineModelObject { public static final String DATA_STORE_KIND = "pipeline-fanoutTask"; private static final String PAYLOAD_PROPERTY = "payload"; private final byte[] payload; public FanoutTaskRecord(Key rootJobKey, byte[] payload) { super(rootJobKey, null, null); if (payload == null) { throw new RuntimeException("Payload must not be null"); } this.payload = payload; } public FanoutTaskRecord(Entity entity) { super(entity); Blob payloadBlob = (Blob) entity.getProperty(PAYLOAD_PROPERTY); payload = payloadBlob.getBytes(); } public byte[] getPayload() { return payload; } @Override protected String getDatastoreKind() { return DATA_STORE_KIND; } @Override public Entity toEntity() { Entity entity = toProtoEntity(); entity.setUnindexedProperty(PAYLOAD_PROPERTY, new Blob(payload)); return entity; } }