Source:
<code>private void processTemplate(TestClass tc, OpenShiftAdapter client, CECubeConfiguration configuration) throws DeploymentException { final StringResolver resolver = Strings.createStringResolver(configuration.getProperties()); <START> final Template template = tc.getAnnotation(Template.class); <END> final String templateURL = readTemplateUrl(template, configuration, resolver); try { final int replicas = readReplicas(tc); final Map<String, String> labels = readLabels(template, configuration, resolver); if (labels.isEmpty()) { log.warning(String.format("Empty labels for template: %s, namespace: %s", templateURL, configuration.getNamespace())); } if (executeProcessTemplate(template, configuration)) { List<ParamValue> values = new ArrayList<>(); addParameterValues(values, readParameters(template, configuration, resolver), false); addParameterValues(values, System.getenv(), true); addParameterValues(values, System.getProperties(), true); values.add(new ParamValue("REPLICAS", String.valueOf(replicas))); log.info(String.format("Applying OpenShift template: %s", templateURL)); client.processTemplateAndCreateResources(tc.getName(), templateURL, values); } else { log.info(String.format("Ignoring template [%s] processing ...", templateURL)); } templateDetailsProducer.set(new TemplateDetails() { @Override public int getReplicas() { return replicas; } @Override public Map<String, String> getLabels() { return labels; } }); } catch (Throwable t) { throw new DeploymentException("Cannot deploy template: " + templateURL, t); } }</code><technical_language>read hierarchy for this annotation. annotation inheritable -- create problems parameter / label overrides</technical_language>

Target:
private void processTemplate(TestClass tc, OpenShiftAdapter client, CECubeConfiguration configuration) throws DeploymentException { final StringResolver resolver = Strings.createStringResolver(configuration.getProperties()); final Template template = ReflectionUtils.findAnnotation(tc.getJavaClass(), Template.class); final String templateURL = readTemplateUrl(template, configuration, resolver); try { final int replicas = readReplicas(tc); final Map<String, String> labels = readLabels(template, configuration, resolver); if (labels.isEmpty()) { log.warning(String.format("Empty labels for template: %s, namespace: %s", templateURL, configuration.getNamespace())); } if (executeProcessTemplate(template, configuration)) { List<ParamValue> values = new ArrayList<>(); addParameterValues(values, readParameters(template, configuration, resolver), false); addParameterValues(values, System.getenv(), true); addParameterValues(values, System.getProperties(), true); values.add(new ParamValue("REPLICAS", String.valueOf(replicas))); log.info(String.format("Applying OpenShift template: %s", templateURL)); client.processTemplateAndCreateResources(tc.getName(), templateURL, values); } else { log.info(String.format("Ignoring template [%s] processing ...", templateURL)); } templateDetailsProducer.set(new TemplateDetails() { @Override public int getReplicas() { return replicas; } @Override public Map<String, String> getLabels() { return labels; } }); } catch (Throwable t) { throw new DeploymentException("Cannot deploy template: " + templateURL, t); } }