/** * Returns the root object of the JAXB structure for the content * cast to a more specific class. * @param as the class of the object * @return the root JAXB object */ public <T> T get(Class<T> as) { if (content == null) { return null; } if (as == null) { throw new IllegalArgumentException("Cannot cast content to null class"); } if (!as.isAssignableFrom(content.getClass())) { throw new IllegalArgumentException( "Cannot cast "+content.getClass().getName()+" to "+as.getName() ); } @SuppressWarnings("unchecked") T content = (T) get(); return content; } /**
/** * Returns the root object of the JAXB structure for the content * cast to a more specific class. * @param as the class of the object * @param <T> the type to return * @return the root JAXB object */ public <T> T get(Class<T> as) { if (content == null) { return null; } if (as == null) { throw new IllegalArgumentException("Cannot cast content to null class"); } if (!as.isAssignableFrom(content.getClass())) { throw new IllegalArgumentException( "Cannot cast "+content.getClass().getName()+" to "+as.getName() ); } @SuppressWarnings("unchecked") T content = (T) get(); return content; } /**
@Override public List<JobExecution> findJobExecutions(JobInstance jobInstance) { String uri = SPRING_BATCH_DIR + jobInstance.getId().toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); MarkLogicJobInstance mji = xmlDocMgr.read(uri, handle).get(); List<JobExecution> jobExecutions = mji.getJobExecutions(); Collections.reverse(mji.getJobExecutions()); return jobExecutions; }
@Override public JobInstance getJobInstance(Long instanceId) { String uri = SPRING_BATCH_DIR + instanceId.toString() + ".xml"; XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); DocumentDescriptor desc = xmlDocMgr.exists(uri); if (desc == null) { return null; } else { JAXBHandle<MarkLogicJobInstance> jaxbHandle = xmlDocMgr.read(uri, new JAXBHandle<MarkLogicJobInstance>(jaxbContext())); MarkLogicJobInstance mji = jaxbHandle.get(); return mji.getJobInstance(); } }
@Override public List<JobInstance> getJobInstances(String jobName, int start, int count) { QueryManager queryMgr = databaseClient.newQueryManager(); StringQueryDefinition querydef = queryMgr.newStringDefinition(SEARCH_OPTIONS_NAME); querydef.setCriteria("jobName: " + jobName + " AND sort:date"); logger.info(querydef.getCriteria()); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); List<JobInstance> jobInstances = new ArrayList<>(); MatchDocumentSummary[] summaries = results.getMatchResults(); MarkLogicJobInstance mji; if (start+count > summaries.length) { return jobInstances; } for (int i = start; i < start+count; i++) { JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summaries[i].getFirstSnippet(jaxbHandle); mji = jaxbHandle.get(); jobInstances.add(mji.getJobInstance()); } return jobInstances; }
JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(jaxbHandle); jobInstance = jaxbHandle.get(); try { jobInstances.add(jobInstance.getJobInstance());
@Override public JobExecution getJobExecution(Long executionId) { JobExecution jobExec = null; StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.rangeConstraint("jobExecutionId", Operator.EQ, executionId.toString()); QueryManager queryMgr = databaseClient.newQueryManager(); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); if (results.getTotalResults() > 0L) { MatchDocumentSummary[] summaries = results.getMatchResults(); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); MarkLogicJobInstance mji = summaries[0].getFirstSnippet(handle).get(); if (mji.getJobExecutions().size() >= 1) { for (JobExecution je : mji.getJobExecutions()) { if (je.getId().equals(executionId)) { jobExec = je; } } } } return jobExec; }
@Override public Set<JobExecution> findRunningJobExecutions(String jobName) { StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.and(qb.valueConstraint("jobName", jobName)); logger.info(querydef.serialize()); QueryManager queryMgr = databaseClient.newQueryManager(); SearchHandle results = queryMgr.search(querydef, new SearchHandle()); Set<JobExecution> jobExecutions = new HashSet<>(); for ( MatchDocumentSummary summary : results.getMatchResults() ) { JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(handle); MarkLogicJobInstance mji = handle.get(); for (JobExecution je : mji.getJobExecutions()) { if (je.getStatus().isRunning() && je.getEndTime() == null) { jobExecutions.add(je); } } } return jobExecutions; }
@Override public List<JobInstance> findJobInstancesByName(String jobName, int start, int count) { List<JobInstance> jobInstances = new ArrayList<>(); QueryManager queryMgr = databaseClient.newQueryManager(); StructuredQueryBuilder qb = new StructuredQueryBuilder(SEARCH_OPTIONS_NAME); StructuredQueryDefinition querydef = qb.and( qb.valueConstraint("jobName", jobName), qb.collection(COLLECTION_JOB_INSTANCE) ); queryMgr.setPageLength((long) count); SearchHandle results = queryMgr.search(querydef, new SearchHandle(), start); MatchDocumentSummary[] summaries = results.getMatchResults(); for (MatchDocumentSummary summary : summaries ) { JAXBHandle<MarkLogicJobInstance> jaxbHandle = new JAXBHandle<>(jaxbContext()); summary.getFirstSnippet(jaxbHandle); MarkLogicJobInstance mji = jaxbHandle.get(); jobInstances.add(mji.getJobInstance()); } return jobInstances; }
@Override public void saveJobExecution(JobExecution jobExecution) { validateJobExecution(jobExecution); jobExecution.incrementVersion(); jobExecution.setId(incrementer.nextLongValue()); XMLDocumentManager xmlDocMgr = databaseClient.newXMLDocumentManager(); String uri = SPRING_BATCH_DIR + jobExecution.getJobInstance().getId().toString() + ".xml"; DocumentDescriptor desc = xmlDocMgr.exists(uri); JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get(); mji.addJobExecution(jobExecution); //Set document metadata DocumentMetadataHandle jobInstanceMetadata = new DocumentMetadataHandle(); jobInstanceMetadata.getCollections().add(COLLECTION_JOB_INSTANCE); xmlDocMgr.write(desc, jobInstanceMetadata, handle); logger.info("insert JobExecution:" + uri + "," + desc.getVersion()); }
JAXBHandle<MarkLogicJobInstance> handle = new JAXBHandle<>(jaxbContext()); xmlDocMgr.read(uri, handle); MarkLogicJobInstance mji = handle.get(); mji.updateJobExecution(jobExecution);
Refers refers2 = (Refers) docMgr.read(docId, objectHandle).get(); assertTrue("Failed to read JAXB root", refers2 != null); assertEquals("JAXB document with different root", refers.name, refers2.name); refers2 = docMgr.read(docId, objectHandle2).get(); assertTrue("Failed to read JAXB root", refers2 != null); assertEquals("JAXB document with different root", refers.name, refers2.name);