From: <bsc...@us...> - 2008-01-21 20:55:49
|
Revision: 2184 http://unicore.svn.sourceforge.net/unicore/?rev=2184&view=rev Author: bschuller Date: 2008-01-21 12:55:41 -0800 (Mon, 21 Jan 2008) Log Message: ----------- full support for multiple xlogins with user choice using the jsdl-posix:UserName element; xlogins are expected to be encoded as "name1;name2;..." in the xuudb Modified Paths: -------------- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/FileTransferImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/job/JobManagementImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/ContextualStorageImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/rp/XLoginResourceProperty.java unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/security/SecurityManager.java Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/FileTransferImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/FileTransferImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/fts/FileTransferImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -119,13 +119,7 @@ */ public static final String INIT_OVERWRITE="uas.filetransfer.impl.sms.overwrite"; - /** - * Init parameter: client making the request - */ - public static final String INIT_CLIENT="uas.filetransfer.impl.client"; - - /** * Configuration key: maps protocol to implementation class. * For example, the config entry * "uas.filetransfer.protocol.HTTP=my.class.for.http" @@ -205,7 +199,7 @@ properties.put(RPParentSMS, new ImmutableResourceProperty(parent)); initialiseSourceAndTarget(rawsource, rawtarget); - client=(Client)map.get(INIT_CLIENT); + client=(Client)map.get(INITPARAM_CLIENT); } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/UASWSResourceImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -105,6 +105,12 @@ private X500Principal owner; /** + * the xlogin used + */ + @Persist + private String xlogin; + + /** * the EPR of this resource */ @Persist @@ -133,7 +139,12 @@ */ public static final String INITPARAM_XNJS_REFERENCE=UASWSResourceImpl.class.getName()+".xnjsReference"; + /** + * used for passing the XNJS client + */ + public static final String INITPARAM_CLIENT=UASWSResourceImpl.class.getName()+".publish"; + public static final String SCOPE_REQUEST="request"; public static final String SCOPE_SERVER="server"; @@ -150,6 +161,7 @@ try{ SecurityTokens tokens=getSecurityTokens(); client=SecurityManager.createAndAuthoriseClient(tokens); + client.setUserName(xlogin); logger.finer("Client is "+client.getDistinguishedName()); return client; }catch(Exception e){ @@ -280,6 +292,15 @@ setSecurityContext(secContext); setDefaultOwner(); } + try{ + //if given, store the xlogin to access this resource + Client c=(Client)initParams.get(INITPARAM_CLIENT); + setXlogin(c.getUserName()); + logger.fine("Setting xlogin to "+getXlogin()); + }catch(Exception e){ + + } + xnjsReference = (String)initParams.get(INITPARAM_XNJS_REFERENCE); properties.put(BPSupportImpl.RPWsResourceInterfaces, @@ -363,4 +384,12 @@ s.add(BPSupportImpl.RPWsResourceInterfaces); return s; } + + public String getXlogin() { + return xlogin; + } + + public void setXlogin(String xlogin) { + this.xlogin = xlogin; + } } \ No newline at end of file Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/job/JobManagementImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/job/JobManagementImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/job/JobManagementImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -89,7 +89,6 @@ protected static final long serialVersionUID=12347L; protected static Logger logger=Logger.getLogger(JobManagementImpl.class.getName()); - public static final String INITPARAM_CLIENT="uas.jobmanagement.client"; public static final String INITPARAM_ACTION="uas.jobmanagement.action"; public static final String INITPARAM_TSS_UNIQUEID="uas.jobmanagement.TSS"; public static final String INITPARAM_STORAGE_REFERENCE="uas.jobmanagement.SMS"; @@ -190,6 +189,7 @@ } //submit to XNJS... XNJSFacade.get(xnjsReference).getManager().add(action,client); + }catch(Exception e){ logger.log(Level.SEVERE,"Could not submit job to XNJS.",e); try{ Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/ContextualStorageImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/ContextualStorageImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/ContextualStorageImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -5,7 +5,6 @@ import de.fzj.unicore.uas.util.AddOnStorageDescriptionFactory; import de.fzj.unicore.uas.xnjs.XNJSFacade; -import de.fzj.unicore.xnjs.aaa.Client; /** * A storage defined by an environment setting for the current user.<br/> @@ -51,7 +50,7 @@ protected String getStorageRoot() { if(directory==null){ try{ - String xlogin=getClient().getAttributes().get(Client.ATTRIBUTE_XLOGIN); + String xlogin=getClient().getXlogin().getUserName(null); directory=XNJSFacade.get(xnjsReference).getGrounder(). incarnatePath("",variableName,null,getClient()); if(logger.isLoggable(Level.FINER)){ Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/HomeStorageImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -25,7 +25,7 @@ protected String getStorageRoot() { if(homeDirectory==null){ try{ - String xlogin=getClient().getAttributes().get(Client.ATTRIBUTE_XLOGIN); + String xlogin=getClient().getXlogin().getUserName(null); homeDirectory=XNJSFacade.get(xnjsReference).getGrounder(). incarnatePath("","HOME",null,getClient()); if(logger.isLoggable(Level.FINER)){ Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/sms/SMSBaseImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -251,7 +251,7 @@ map.put(FileTransferImpl.INIT_SMS_WORKDIR, getStorageRoot()); map.put(FileTransferImpl.INIT_IS_EXPORT, Boolean.TRUE); map.put(INITPARAM_SECURITYCONTEXT, getSecurityContext()); - map.put(FileTransferImpl.INIT_CLIENT, getClient()); + map.put(INITPARAM_CLIENT, getClient()); map.put(INITPARAM_XNJS_REFERENCE, xnjsReference); if(logger.isLoggable(Level.INFO)){ @@ -289,7 +289,7 @@ map.put(FileTransferImpl.INIT_OVERWRITE, Boolean.TRUE); map.put(INITPARAM_SECURITYCONTEXT, getSecurityContext()); - map.put(FileTransferImpl.INIT_CLIENT, getClient()); + map.put(INITPARAM_CLIENT, getClient()); map.put(INITPARAM_XNJS_REFERENCE, xnjsReference); if(logger.isLoggable(Level.INFO)){ @@ -333,7 +333,7 @@ map.put(FileTransferImpl.INIT_IS_EXPORT, Boolean.FALSE); map.put(INITPARAM_SECURITYCONTEXT, getSecurityContext()); - map.put(FileTransferImpl.INIT_CLIENT, getClient()); + map.put(INITPARAM_CLIENT, getClient()); map.put(INITPARAM_XNJS_REFERENCE, xnjsReference); //create transfer resource... @@ -369,7 +369,7 @@ map.put(FileTransferImpl.INIT_IS_EXPORT, Boolean.TRUE); map.put(INITPARAM_SECURITYCONTEXT, getSecurityContext()); - map.put(FileTransferImpl.INIT_CLIENT, getClient()); + map.put(INITPARAM_CLIENT, getClient()); map.put(INITPARAM_XNJS_REFERENCE, xnjsReference); // create transfer resource... @@ -578,7 +578,6 @@ String fsname=(String)initobjs.get(SMSBaseImpl.INIT_STORAGENAME); if(fsname==null)fsname="USPACE"; - properties.put(RPFileSystem, makeFileSystemRP(fsname)); } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/TargetSystemImpl.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -196,7 +196,7 @@ Client client = getClient(); Action action = XNJSFacade.get(xnjsReference).makeAction(doc); - map.put(JobManagementImpl.INITPARAM_CLIENT,client); + map.put(INITPARAM_CLIENT,client); map.put(JobManagementImpl.INITPARAM_ACTION,action); map.put(JobManagementImpl.INITPARAM_TSS_UNIQUEID, getUniqueID()); map.put(INITPARAM_XNJS_REFERENCE, xnjsReference); Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/rp/XLoginResourceProperty.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/rp/XLoginResourceProperty.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/impl/tss/rp/XLoginResourceProperty.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -1,13 +1,11 @@ package de.fzj.unicore.uas.impl.tss.rp; -import java.util.Map; - import org.apache.xmlbeans.XmlObject; import org.unigrids.x2006.x04.services.tss.XloginDocument; import de.fzj.unicore.uas.impl.tss.TargetSystemImpl; import de.fzj.unicore.wsrflite.xmlbeans.ResourceProperty; -import de.fzj.unicore.xnjs.aaa.Client; +import de.fzj.unicore.xnjs.aaa.Xlogin; /** * Support publishing xlogins as TSS properties. @@ -33,13 +31,17 @@ return this; } - //TODO + private void getXlogins(){ - Map<String,String>attr=((TargetSystemImpl)parentWSResource).getClient().getAttributes(); - String logins=attr.get(Client.ATTRIBUTE_XLOGIN); - //assume one for now - XloginDocument x1=XloginDocument.Factory.newInstance(); - x1.setXlogin(logins); - xdoc=new XloginDocument[]{x1}; + Xlogin xlogin=((TargetSystemImpl)parentWSResource).getClient().getXlogin(); + String[] logins=xlogin.getLogins(); + xdoc=new XloginDocument[logins.length]; + int i=0; + for(String xl: logins){ + XloginDocument xLoginDoc=XloginDocument.Factory.newInstance(); + xLoginDoc.setXlogin(xl); + xdoc[i]=xLoginDoc; + i++; + } } } Modified: unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/security/SecurityManager.java =================================================================== --- unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/security/SecurityManager.java 2008-01-21 20:52:25 UTC (rev 2183) +++ unicorex/uas-core/trunk/src/main/java/de/fzj/unicore/uas/security/SecurityManager.java 2008-01-21 20:55:41 UTC (rev 2184) @@ -71,6 +71,7 @@ import de.fzj.unicore.xnjs.aaa.AuthToken; import de.fzj.unicore.xnjs.aaa.Client; import de.fzj.unicore.xnjs.aaa.Role; +import de.fzj.unicore.xnjs.aaa.Xlogin; /** * access to security components @@ -252,6 +253,9 @@ if(!isServer(client)){ Map<String,String> map=authorise(tokens); client.setAttributes(map); + String xlogin=client.getAttributes().get(Client.ATTRIBUTE_XLOGIN); + logger.fine("Got encoded xlogin: "+xlogin); + client.setXlogin(new Xlogin(xlogin)); Role r=new Role(); String roleName=map.get(SecurityTokens.ATTRIBUTE_ROLE); if(roleName!=null){ @@ -283,9 +287,10 @@ logger.fine("Client info: "+client); try{ - logger.fine("TD Chain length="+((SecurityTokens)client.getAuthToken().getToken()).getTrustDelegationTokens().size()); + SecurityTokens st=((SecurityTokens)client.getAuthToken().getToken()); + if(st!=null)logger.fine("TD Chain length="+st.getTrustDelegationTokens().size()); }catch(Exception e){ - logger.fine("No TD? "+e.getMessage()); + logger.fine("No TD."); } return client; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |