blob: d91b6a721f5a165da00d25b6070eaf8b6aa8caec [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.ignite.spi.collision;
import org.apache.ignite.GridTestJob;
import org.apache.ignite.GridTestJobContext;
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.ComputeJobContext;
import org.apache.ignite.compute.ComputeTaskSession;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteUuid;
/**
* Test implementation for job collision context.
*/
public class GridTestCollisionJobContext implements CollisionJobContext {
/** Task session. */
private ComputeTaskSession ses;
/** {@code true} if job was activated. */
private boolean activated;
/** {@code true} if job was canceled. */
private boolean canceled;
/** Index in wrapping collection. */
private int idx = -1;
/** Job context. */
private ComputeJobContext ctx;
/** Kob. */
private GridTestJob job;
/** Job activation callback. */
private IgniteInClosure<GridTestCollisionJobContext> onActivate;
/**
* @param ses Session.
*/
public GridTestCollisionJobContext(ComputeTaskSession ses) {
this.ses = ses;
ctx = new GridTestJobContext();
job = new GridTestJob();
}
/**
* @param ses Session.
* @param idx Index.
*/
public GridTestCollisionJobContext(ComputeTaskSession ses, int idx) {
this.idx = idx;
this.ses = ses;
ctx = new GridTestJobContext();
job = new GridTestJob();
}
/**
* @param ses Session.
* @param idx Index in wrapping collection.
* @param onActivate Closure to be called when current task get activated.
*/
public GridTestCollisionJobContext(ComputeTaskSession ses, int idx,
IgniteInClosure<GridTestCollisionJobContext> onActivate) {
this(ses, idx);
this.onActivate = onActivate;
}
/**
* @param ses Task session.
* @param jobId Job ID.
*/
public GridTestCollisionJobContext(ComputeTaskSession ses, IgniteUuid jobId) {
this.ses = ses;
ctx = new GridTestJobContext(jobId);
job = new GridTestJob();
}
/** {@inheritDoc} */
@Override public ComputeTaskSession getTaskSession() {
return ses;
}
/**
* @param ses Session.
*/
public void setTaskSession(ComputeTaskSession ses) {
this.ses = ses;
}
/** {@inheritDoc} */
@Override public ComputeJobContext getJobContext() {
return ctx;
}
/**
* @param ctx Job context.
*/
public void setJobContext(ComputeJobContext ctx) {
this.ctx = ctx;
}
/**
* @return Index.
*/
public int getIndex() {
return idx;
}
/** {@inheritDoc} */
@Override public boolean activate() {
activated = true;
if (onActivate != null)
onActivate.apply(this);
return true;
}
/** {@inheritDoc} */
@Override public boolean cancel() {
canceled = true;
return true;
}
/** {@inheritDoc} */
@Override public ComputeJob getJob() {
return job;
}
/**
* @return {@code True} if job was activated.
*/
public boolean isActivated() {
return activated;
}
/**
* @return {@code True} if job was activated.
*/
public boolean isCanceled() {
return canceled;
}
/** {@inheritDoc} */
@Override public String toString() {
StringBuilder buf = new StringBuilder();
buf.append(getClass().getName());
buf.append(" [ses=").append(ses);
buf.append(", idx=").append(idx);
buf.append(", activated=").append(activated);
buf.append(", canceled=").append(canceled);
buf.append(']');
return buf.toString();
}
}