From: Steve L. <st...@us...> - 2005-09-28 15:16:41
|
Update of /cvsroot/smartfrog/core/components/deployapi/src/org/smartfrog/services/deployapi/engine In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1738/components/deployapi/src/org/smartfrog/services/deployapi/engine Modified Files: Job.java JobRepository.java Log Message: fixed WS-A problems. Index: JobRepository.java =================================================================== RCS file: /cvsroot/smartfrog/core/components/deployapi/src/org/smartfrog/services/deployapi/engine/JobRepository.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** JobRepository.java 27 Sep 2005 23:31:50 -0000 1.9 --- JobRepository.java 28 Sep 2005 15:16:30 -0000 1.10 *************** *** 23,26 **** --- 23,31 ---- import org.smartfrog.services.deployapi.system.Constants; import org.smartfrog.services.deployapi.system.Utils; + import org.smartfrog.services.deployapi.transport.faults.FaultRaiser; + import org.smartfrog.services.deployapi.transport.faults.BaseException; + import org.apache.commons.logging.Log; + import org.apache.commons.logging.LogFactory; + import org.apache.axis2.addressing.EndpointReference; import java.net.MalformedURLException; *************** *** 31,34 **** --- 36,40 ---- import java.util.Iterator; import java.util.Set; + import java.rmi.RemoteException; /** *************** *** 46,49 **** --- 52,58 ---- private URL systemsURL; public static final String JOB_ID_PARAM = "job"; + public static final String SEARCH_STRING = JOB_ID_PARAM + "="; + Log log= LogFactory.getLog(JobRepository.class); + public JobRepository(URL systemsURL) { *************** *** 114,118 **** jobs.remove(uri.toString()); } ! public void remove(Job job) { jobs.remove(job.getId()); --- 123,127 ---- jobs.remove(uri.toString()); } ! public void remove(Job job) { jobs.remove(job.getId()); *************** *** 129,132 **** --- 138,155 ---- /** + * Thread safe termination of job and removal from the stack + * @param job + * @param reason + */ + public synchronized boolean terminate(Job job,String reason) throws + RemoteException { + log.info("Terminating " + job.getId() + " with reason:" + reason); + + boolean result=job.terminate(reason); + remove(job); + return result; + } + + /** * list all the jobs * *************** *** 177,179 **** --- 200,263 ---- return job; } + + + + public String extractJobIDFromQuery(String query) { + if (query == null) { + throw FaultRaiser.raiseNoSuchApplicationFault("No job in address"); + } + int index = query.indexOf(SEARCH_STRING); + if (index == -1) { + String message = "Didn't find query (" + + SEARCH_STRING + + ") in " + + query; + log.debug(message); + throw FaultRaiser.raiseNoSuchApplicationFault(message); + } + int start = index + SEARCH_STRING.length(); + int end = query.indexOf("&", start); + if (end == -1) { + end = query.length(); + } + String substrate = query.substring(start, end).trim(); + if(substrate.length()==0) { + throw FaultRaiser.raiseNoSuchApplicationFault("Empty job in "+query); + } + + return substrate; + } + + /** + * Look up the job ID in a query + * @param query + * @return the job if it is present, null if not + * @throws org.smartfrog.services.deployapi.transport.faults.BaseException on bad data + */ + public Job lookupJobFromQuery(String query) { + String jobID=extractJobIDFromQuery(query); + log.debug("job is [" + jobID + "]"); + Job job=lookup(jobID); + return job; + } + + /** + * Go from an EPR to a job + * @param epr + * @return the job if it is present, null if not + * @throws org.smartfrog.services.deployapi.transport.faults.BaseException on bad data + */ + public Job lookupJobFromEndpointer(EndpointReference epr) { + String address = epr.getAddress(); + URL url = null; + try { + url = new URL(address); + } catch (MalformedURLException e) { + throw new BaseException("Couldn't turn an addr into a URL " + + address, e); + } + String query = url.getQuery(); + Job job = lookupJobFromQuery(query); + return job; + } } Index: Job.java =================================================================== RCS file: /cvsroot/smartfrog/core/components/deployapi/src/org/smartfrog/services/deployapi/engine/Job.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Job.java 27 Sep 2005 23:31:50 -0000 1.7 --- Job.java 28 Sep 2005 15:16:30 -0000 1.8 *************** *** 649,653 **** * @throws java.rmi.RemoteException */ ! public boolean terminate(String reason) throws RemoteException { Prim target = resolvePrimNonFaulting(); --- 649,653 ---- * @throws java.rmi.RemoteException */ ! public synchronized boolean terminate(String reason) throws RemoteException { Prim target = resolvePrimNonFaulting(); *************** *** 680,684 **** } ! public RunResponseDocument run() throws RemoteException{ Prim target = resolvePrim(); try { --- 680,684 ---- } ! public synchronized RunResponseDocument run() throws RemoteException{ Prim target = resolvePrim(); try { |