/** * Gets task name for the given task class. * * @param taskCls Task class. * @return Either task name from class annotation (see {@link org.apache.ignite.compute.ComputeTaskName}}) * or task class name if there is no annotation. */ public static String getTaskName(Class<? extends ComputeTask<?, ?>> taskCls) { ComputeTaskName nameAnn = getAnnotation(taskCls, ComputeTaskName.class); return nameAnn == null ? taskCls.getName() : nameAnn.value(); }
/** * Test task that implements {@link org.apache.ignite.internal.util.lang.GridPeerDeployAware}. */ @ComputeTaskName(PEER_DEPLOY_AWARE_TASK_NAME) private static class PeerDeployAwareTestTask extends TestTask implements GridPeerDeployAware { /** {@inheritDoc} */ @Override public Class<?> deployClass() { return getClass(); } /** {@inheritDoc} */ @Override public ClassLoader classLoader() { return getClass().getClassLoader(); } } }
/** * Gets alias for a class. * * @param dep Deployment. * @param cls Class. * @return Alias for a class. */ private String getAlias(GridDeployment dep, Class<?> cls) { String alias = cls.getName(); if (isTask(cls)) { ComputeTaskName ann = dep.annotation(cls, ComputeTaskName.class); if (ann != null) alias = ann.value(); } return alias; }
/** * */ @SuppressWarnings({"PublicInnerClass", "InnerClassMayBeStatic"}) @ComputeTaskName(value="GridDeploymentTestTask") public class GridDeploymentTestTask1 extends ComputeTaskSplitAdapter<Object, Object> { /** {@inheritDoc} */ @Override protected Collection<? extends ComputeJob> split(int gridSize, Object arg) { return null; } /** {@inheritDoc} */ @Override public Serializable reduce(List<ComputeJobResult> results) { return null; } } }
/** * Gets task name for a task class. It firstly checks * {@link @ComputeTaskName} annotation, then thread context * map. If both are empty, class name is returned. * * @param dep Deployment. * @param cls Class. * @param map Thread context map. * @return Task name. * @throws IgniteCheckedException If {@link @ComputeTaskName} annotation is found, but has empty value. */ private String taskName(GridDeployment dep, Class<?> cls, Map<GridTaskThreadContextKey, Object> map) throws IgniteCheckedException { assert dep != null; assert cls != null; assert map != null; String taskName; ComputeTaskName ann = dep.annotation(cls, ComputeTaskName.class); if (ann != null) { taskName = ann.value(); if (F.isEmpty(taskName)) throw new IgniteCheckedException("Task name specified by @ComputeTaskName annotation" + " cannot be empty for class: " + cls); } else taskName = map.containsKey(TC_TASK_NAME) ? (String)map.get(TC_TASK_NAME) : cls.getName(); return taskName; }
/** * */ @SuppressWarnings({"PublicInnerClass", "InnerClassMayBeStatic"}) @ComputeTaskName(value="GridDeploymentTestTask") public class GridDeploymentTestTask extends ComputeTaskSplitAdapter<Object, Object> { /** {@inheritDoc} */ @Override protected Collection<? extends ComputeJob> split(int gridSize, Object arg) { return null; } /** {@inheritDoc} */ @Override public Serializable reduce(List<ComputeJobResult> results) { return null; } }
alias = nameAnn.value();
/** * Test task. */ @ComputeTaskName(TASK_NAME) private static class TestTask implements ComputeTask<Void, String> { /** {@inheritDoc} */ @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, @Nullable Void arg) { return F.asMap(new ComputeJobAdapter() { @TaskSessionResource private ComputeTaskSession ses; @Override public Object execute() { return ses.getTaskName(); } }, F.rand(subgrid)); } /** {@inheritDoc} */ @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> rcvd) { return WAIT; } /** {@inheritDoc} */ @Override public String reduce(List<ComputeJobResult> results) { return F.first(results).getData(); } }
alias = nameAnn.value();
/** * Test deployable named task. */ @ComputeTaskName(value = "GridDeploymentTestTask") private static class GridDeploymentTestTask2 extends ComputeTaskAdapter<Object, Object> { /** */ @LoggerResource private IgniteLogger log; /** {@inheritDoc} */ @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) { Map<ComputeJobAdapter, ClusterNode> map = new HashMap<>(subgrid.size()); for (ClusterNode node : subgrid) { map.put(new ComputeJobAdapter() { @Override public Serializable execute() { if (log.isInfoEnabled()) log.info("Executing grid job: " + this); return null; } }, node); } return map; } /** {@inheritDoc} */ @Override public Object reduce(List<ComputeJobResult> results) { return null; } }
locDep.addDeployedClass(cls, taskNameAnn.value());
/** * Test deployable named task. */ @ComputeTaskName(value = "GridDeploymentTestTask") private static class GridDeploymentTestTask1 extends ComputeTaskAdapter<Object, Object> { /** */ @LoggerResource private IgniteLogger log; /** {@inheritDoc} */ @Override public Map<? extends ComputeJob, ClusterNode> map(List<ClusterNode> subgrid, Object arg) { Map<ComputeJobAdapter, ClusterNode> map = new HashMap<>(subgrid.size()); for (ClusterNode node : subgrid) { map.put(new ComputeJobAdapter() { @Override public Serializable execute() { log.info("Executing grid job: " + this); return null; } }, node); } return map; } /** {@inheritDoc} */ @Override public Object reduce(List<ComputeJobResult> results) { return null; } }
/** * Gets task name for the given task class. * * @param taskCls Task class. * @return Either task name from class annotation (see {@link org.apache.ignite.compute.ComputeTaskName}}) * or task class name if there is no annotation. */ public static String getTaskName(Class<? extends ComputeTask<?, ?>> taskCls) { ComputeTaskName nameAnn = getAnnotation(taskCls, ComputeTaskName.class); return nameAnn == null ? taskCls.getName() : nameAnn.value(); }
@ComputeTaskName("GridDeploymentResourceTestTask") public static class GridDeploymentResourceTestTask extends ComputeTaskAdapter<String, Integer> {
/** * Gets alias for a class. * * @param dep Deployment. * @param cls Class. * @return Alias for a class. */ private String getAlias(GridDeployment dep, Class<?> cls) { String alias = cls.getName(); if (isTask(cls)) { ComputeTaskName ann = dep.annotation(cls, ComputeTaskName.class); if (ann != null) alias = ann.value(); } return alias; }
@ComputeTaskName(value="GridDeploymentTestTask") public static class GridDeploymentTestTask extends ComputeTaskAdapter<Object, Object> {
/** * Gets task name for a task class. It firstly checks * {@link @ComputeTaskName} annotation, then thread context * map. If both are empty, class name is returned. * * @param dep Deployment. * @param cls Class. * @param map Thread context map. * @return Task name. * @throws IgniteCheckedException If {@link @ComputeTaskName} annotation is found, but has empty value. */ private String taskName(GridDeployment dep, Class<?> cls, Map<GridTaskThreadContextKey, Object> map) throws IgniteCheckedException { assert dep != null; assert cls != null; assert map != null; String taskName; ComputeTaskName ann = dep.annotation(cls, ComputeTaskName.class); if (ann != null) { taskName = ann.value(); if (F.isEmpty(taskName)) throw new IgniteCheckedException("Task name specified by @ComputeTaskName annotation" + " cannot be empty for class: " + cls); } else taskName = map.containsKey(TC_TASK_NAME) ? (String)map.get(TC_TASK_NAME) : cls.getName(); return taskName; }
@ComputeTaskName("GridCheckpointTestTask") @ComputeTaskSessionFullSupport @ComputeTaskMapAsync
alias = nameAnn.value();
locDep.addDeployedClass(cls, taskNameAnn.value());