From: <bsc...@us...> - 2007-02-12 11:43:34
|
Revision: 252 http://svn.sourceforge.net/unicore/?rev=252&view=rev Author: bschuller Date: 2007-02-12 03:43:29 -0800 (Mon, 12 Feb 2007) Log Message: ----------- make the clients more convenient to use Modified Paths: -------------- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/UAS.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/JobClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RByteIOClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/TSSClient.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/UASClientFactory.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/rp/ProtocolRP.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/registry/RegistryEntryImpl.java Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/UAS.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/UAS.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/UAS.java 2007-02-12 11:43:29 UTC (rev 252) @@ -36,7 +36,9 @@ import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.InputStream; +import java.util.ArrayList; import java.util.Collection; +import java.util.Observer; import java.util.Properties; import java.util.logging.Level; import java.util.logging.Logger; @@ -125,7 +127,6 @@ public static final String EXTERNAL_REGISTRY_KEY_RESID="uas.externalregistry.epr.resid"; - /** * you need to add the protocol to this one to get the right service * e.g. FTS_BASE+"RBYTEIO" = "FileTransferRBYTEIO" @@ -136,6 +137,8 @@ private static IUASSecurityProperties securityProperties; + private static ArrayList<Observer>obs=new ArrayList<Observer>(); + public static final String writeHeader(){ return "\n UNICORE Atomic Services Implementation "+VERSION+ "\n (c) Forschungszentrum Juelich 2006" + @@ -158,6 +161,10 @@ properties.put(key,value); } + public void addObserver(Observer o) + { + obs.add(o); + } public static IUASSecurityProperties getSecurityProperties(){ if(securityProperties==null)securityProperties=new UASSecurityProperties(); @@ -311,6 +318,9 @@ } + private void notifyInitDone(){ + for(Observer o: obs)o.update(null,null); + } /** * run the uas using default settings @@ -331,6 +341,7 @@ }catch(Exception e){ System.err.println("Error: could not read properties from " +propertiesFile+". Reason: "+e.getMessage()); + System.exit(1); } } @@ -365,6 +376,7 @@ Thread.sleep(500); runStartupCode(); logger.info("***** Server started. *****"); + notifyInitDone(); }catch(Exception e){ e.printStackTrace(); } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/JobClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/JobClient.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/JobClient.java 2007-02-12 11:43:29 UTC (rev 252) @@ -41,6 +41,7 @@ import org.unigrids.x2006.x04.services.jms.JobPropertiesDocument; import org.unigrids.x2006.x04.services.jms.ResumeDocument; import org.unigrids.x2006.x04.services.jms.StartDocument; +import org.unigrids.x2006.x04.services.jms.WorkingDirectoryReferenceDocument; import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.uas.JobManagement; @@ -66,12 +67,21 @@ */ public JobClient(String url, EndpointReferenceType address, IUASSecurityProperties sec)throws Exception { super(url, address,sec); + initDocs(); + } + + private void initDocs(){ holdDoc=HoldDocument.Factory.newInstance(); holdDoc.addNewHold(); abortDoc=AbortDocument.Factory.newInstance(); abortDoc.addNewAbort(); startDoc=StartDocument.Factory.newInstance(); startDoc.addNewStart(); resumeDoc=ResumeDocument.Factory.newInstance(); resumeDoc.addNewResume(); - } - + } + + public JobClient(EndpointReferenceType epr)throws Exception{ + super(epr); + initDocs(); + } + /** * returns the service's JobPropertiesDocument * @param endpointUrl @@ -85,6 +95,19 @@ return doc; } + /** + * get a client for the Uspace SMS + * + * @return StorageClient + * @throws Exception + */ + public StorageClient getUspaceClient()throws Exception{ + String address=getResourceProperty(JobManagement.RPWorkingDir); + WorkingDirectoryReferenceDocument uEpr= + WorkingDirectoryReferenceDocument.Factory.parse(address); + StorageClient storageClient=new StorageClient(uEpr.getWorkingDirectoryReference(), securityProperties); + return storageClient; + } //job mgmnt functions @@ -131,5 +154,32 @@ throw BaseFault.createFault(e.getMessage()); } } - + + /** + * convenience method that waits until a job has finished + * and returns the final status (SUCCESSFUL or FAILED) + * @param timeout in milliseconds (null for no timeout) + * @return + */ + public String waitUntilDone(int timeout){ + String status=null; + long start=System.currentTimeMillis(); + long elapsed=0; + try{ + while(true){ + //check timeout + if(timeout>0 && elapsed>timeout)break; + elapsed=System.currentTimeMillis()-start; + //print status + status=getResourceProperty(JobManagement.RPStatusInfo); + if(status.contains("SUCCESSFUL")) break; + else if(status.contains("FAILED"))throw new Exception("Job failed"); + Thread.sleep(200); + } + return status; + }catch(Exception e){ + logger.log(Level.SEVERE,"Error waiting for job completion",e); + } + return null; + } } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RByteIOClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RByteIOClient.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/RByteIOClient.java 2007-02-12 11:43:29 UTC (rev 252) @@ -32,6 +32,8 @@ package de.fzj.unicore.uas.client; +import java.io.IOException; +import java.io.OutputStream; import java.math.BigInteger; import java.util.logging.Level; @@ -136,4 +138,24 @@ return fts.append(req); } + /** + * convenience method that reads all data and writes it to an output stream + * @param os + */ + public void readAllData(OutputStream os)throws IOException{ + try{ + long offset=0; + while(true){ + byte[] data=read(offset,1,128000,0); + if(data==null || data.length==0)break; + offset+=data.length; + logger.info("Read "+data.length+" bytes."); + os.write(data); + } + }catch(Exception e){ + logger.log(Level.SEVERE,"IO error",e); + throw new IOException("IO Error: "+e.getMessage()); + } + } + } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/StorageClient.java 2007-02-12 11:43:29 UTC (rev 252) @@ -33,6 +33,7 @@ package de.fzj.unicore.uas.client; +import java.io.IOException; import java.util.logging.Level; import javax.xml.namespace.QName; @@ -41,12 +42,15 @@ import org.oasisOpen.docs.wsrf.rp2.GetResourcePropertyDocumentResponseDocument; import org.unigrids.services.atomic.types.GridFileType; import org.unigrids.services.atomic.types.ProtocolDocument; +import org.unigrids.services.atomic.types.ProtocolType; import org.unigrids.x2006.x04.services.sms.ExportFileDocument; import org.unigrids.x2006.x04.services.sms.ExportFileResponseDocument; import org.unigrids.x2006.x04.services.sms.ImportFileDocument; import org.unigrids.x2006.x04.services.sms.ImportFileResponseDocument; import org.unigrids.x2006.x04.services.sms.ListDirectoryDocument; import org.unigrids.x2006.x04.services.sms.StoragePropertiesDocument; +import org.unigrids.x2006.x04.services.sms.ExportFileDocument.ExportFile; +import org.unigrids.x2006.x04.services.sms.ImportFileDocument.ImportFile; import org.w3.x2005.x08.addressing.EndpointReferenceType; import de.fzj.unicore.uas.StorageManagement; @@ -67,6 +71,15 @@ */ public StorageClient(String url, EndpointReferenceType address,IUASSecurityProperties sec) throws Exception{ super(url, address,sec); + doInit(); + } + + public StorageClient(EndpointReferenceType address,IUASSecurityProperties sec) throws Exception{ + super(address.getAddress().getStringValue(),address,sec); + doInit(); + } + + private void doInit(){ try{ sms=(StorageManagement)makeProxy(StorageManagement.class); }catch(Exception e){ @@ -157,4 +170,46 @@ } } + /** + * create a rbyteio client for exporting from the given path + * @param path + * @return + */ + public RByteIOClient getExport(String path)throws IOException{ + try{ + ExportFileDocument efd=ExportFileDocument.Factory.newInstance(); + ExportFile export=efd.addNewExportFile(); + export.setIsPipe(false); + export.setProtocol(ProtocolType.RBYTEIO); + export.setSource(path); + EndpointReferenceType epr=ExportFile(efd).getExportFileResponse().getExportEPR(); + String url=epr.getAddress().getStringValue(); + return new RByteIOClient(url,epr,securityProperties); + }catch(Exception e){ + logger.log(Level.SEVERE,"Could not create export.", e); + throw new IOException(e.getMessage()); + } + } + + /** + * create a rbyteio client for importing to the given path + * @param path + * @return + */ + public RByteIOClient getImport(String path)throws IOException{ + try{ + ImportFileDocument ifd=ImportFileDocument.Factory.newInstance(); + ImportFile in=ifd.addNewImportFile(); + in.setIsPipe(false); + in.setProtocol(ProtocolType.RBYTEIO); + in.setDestination(path); + EndpointReferenceType epr=ImportFile(ifd).getImportFileResponse().getImportEPR(); + String url=epr.getAddress().getStringValue(); + return new RByteIOClient(url,epr,securityProperties); + }catch(Exception e){ + logger.log(Level.SEVERE,"Could not create import.", e); + throw new IOException(e.getMessage()); + } + } + } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/TSSClient.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/TSSClient.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/TSSClient.java 2007-02-12 11:43:29 UTC (rev 252) @@ -79,6 +79,15 @@ } /** + * @param endpointUrl + * @param epr + */ + public TSSClient(EndpointReferenceType epr)throws Exception { + super(epr); + this.epr=epr; + } + + /** * returns the service's TargetSystemPropertiesDocument * @param endpointUrl * @param epr Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/UASClientFactory.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/UASClientFactory.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/client/UASClientFactory.java 2007-02-12 11:43:29 UTC (rev 252) @@ -63,12 +63,12 @@ Handler h=(Handler)clazz.newInstance(); ((UGSSecurityOutHandler)h).doInit(security); list.add(h); - logger.info("Sucessfully added security handler <"+outHandlerClassName+">"); + logger.finer("Sucessfully added security handler <"+outHandlerClassName+">"); }catch(Exception e){ logger.log(Level.SEVERE,"Could not setup outgoing security handler!",e); } } - else logger.info("No security headers added."); + else logger.finer("No security headers added."); } return list; Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/rp/ProtocolRP.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/rp/ProtocolRP.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/rp/ProtocolRP.java 2007-02-12 11:43:29 UTC (rev 252) @@ -44,6 +44,8 @@ */ public class ProtocolRP extends ResourceProperty{ + private static final long serialVersionUID = -3186248112485716127L; + private XmlObject[] xdoc; private ProtocolType.Enum[] protocols; @@ -54,8 +56,6 @@ ProtocolType.Enum protocol= protocols[i]; ProtocolDocument pd=ProtocolDocument.Factory.newInstance(); pd.setProtocol(protocol); - System.out.println("protocol "+protocol.toString()); - xdoc[i]=pd; } } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/registry/RegistryEntryImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/registry/RegistryEntryImpl.java 2007-02-12 11:42:17 UTC (rev 251) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/registry/RegistryEntryImpl.java 2007-02-12 11:43:29 UTC (rev 252) @@ -41,7 +41,6 @@ import de.fzj.unicore.wsrflite.Kernel; import de.fzj.unicore.wsrflite.messaging.Message; import de.fzj.unicore.wsrflite.utils.Utilities; -import de.fzj.unicore.wsrflite.xmlbeans.WSResource; import de.fzj.unicore.wsrflite.xmlbeans.sg.impl.ServiceGroupEntryImpl; public class RegistryEntryImpl extends ServiceGroupEntryImpl{ @@ -84,7 +83,6 @@ Message m=new Message(null,null,getUniqueID()); Kernel.getMessaging().getQueue(id).publish(m); logger.info(this.getUniqueID() +" Sending message to "+id); - System.out.println(this); } catch(Exception e){ logger.severe("Could not send internal message."); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |