Changeset 2616
- Timestamp:
- 07/11/08 11:24:07 (2 months ago)
- Location:
- trunk/components
- Files:
-
- 2 added
- 5 modified
-
blitz/resources/omero/API.ice (modified) (4 diffs)
-
blitz/resources/omero/Constants.ice (modified) (1 diff)
-
blitz/src/ome/services/blitz/impl/ServiceFactoryI.java (modified) (3 diffs)
-
common/src/ome/api/IShare.java (modified) (7 diffs)
-
common/src/ome/system/ServiceFactory.java (modified) (3 diffs)
-
server/test/ome/server/itests/sharing (added)
-
server/test/ome/server/itests/sharing/SharingTest.java (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/components/blitz/resources/omero/API.ice
r2609 r2616 67 67 68 68 dictionary<string, IObjectList> IObjectListMap; 69 69 70 dictionary<string, Ice::LongSeq> IdListMap; 71 70 72 ["java:type:java.util.ArrayList"] 71 73 sequence<omero::model::Image> ImageList; 74 75 ["java:type:java.util.ArrayList"] 76 sequence<omero::model::Session> SessionList; 72 77 73 78 ["java:type:java.util.ArrayList<String>:java.util.List<String>"] … … 277 282 StringSet getInputKeys(string sess) throws ServerError; 278 283 StringSet getOutputKeys(string sess) throws ServerError; 284 }; 285 286 interface IShare extends ServiceInterface 287 { 288 void activate(long shareId); 289 omero::model::Session getShare(long sessionId); 290 SessionList getAllShares(bool active); 291 SessionList getOwnShares(bool active); 292 SessionList getMemberShares(bool active); 293 SessionList getSharesOwnedBy(omero::model::Experimenter user, bool active); 294 SessionList getMemberSharesFor(omero::model::Experimenter user, bool active); 295 IObjectList getContents(long shareId); 296 IObjectList getContentSubList(long shareId, int start, int finish); 297 int getContentSize(long shareId); 298 IdListMap getContentMap(long shareId); 299 300 long createShare(string description, 301 omero::RTime expiration, 302 IObjectList items, 303 ExperimenterList exps, 304 Ice::StringSeq guests, 305 bool enabled); 306 void setDescription(long shareId, string description); 307 void setExpiration(long shareId, omero::RTime expiration); 308 void setActive(long shareId, bool active); 309 void closeShare(long shareId); 310 311 void addObjects(long shareId, IObjectList iobjects); 312 void addObject(long shareId, omero::model::IObject iobject); 313 void removeObjects(long shareId, IObjectList iobjects); 314 void removeObject(long shareId, omero::model::IObject iobject); 315 316 AnnotationList getComments(long shareId); 317 omero::model::TextAnnotation addComment(long shareId, string comment); 318 omero::model::TextAnnotation addReply(long shareId, 319 string comment, 320 omero::model::TextAnnotation replyTo); 321 void deleteComment(omero::model::Annotation comment); 322 323 ExperimenterList getAllMembers(long shareId); 324 Ice::StringSeq getAllGuests(long shareId); 325 Ice::StringSeq getAllUsers(long shareId) throws ValidationException; 326 void addUsers(long shareId, ExperimenterList exps); 327 void addGuests(long shareId, Ice::StringSeq emailAddresses); 328 void removeUsers(long shareId, ExperimenterList exps); 329 void removeGuests(long shareId, Ice::StringSeq emailAddresses); 330 void addUser(long shareId, omero::model::Experimenter exp); 331 void addGuest(long shareId, string emailAddress); 332 void removeUser(long shareId, omero::model::Experimenter exp); 333 void removeGuest(long shareId, string emailAddress); 334 279 335 }; 280 336 … … 553 609 { 554 610 // Central OMERO.blitz stateless services. 555 IScript* getScriptService() throws ServerError;556 611 IAdmin* getAdminService() throws ServerError; 557 612 IConfig* getConfigService() throws ServerError; … … 559 614 IPojos* getPojosService() throws ServerError; 560 615 IQuery* getQueryService() throws ServerError; 561 IRenderingSettings* getRenderingSettingsService() throws ServerError;616 IRenderingSettings* getRenderingSettingsService() throws ServerError; 562 617 IRepositoryInfo* getRepositoryInfoService() throws ServerError; 618 IScript* getScriptService() throws ServerError; 563 619 ISession* getSessionService() throws ServerError; 620 IShare* getShareService() throws ServerError; 564 621 ITypes* getTypesService() throws ServerError; 565 622 IUpdate* getUpdateService() throws ServerError; -
trunk/components/blitz/resources/omero/Constants.ice
r2593 r2616 41 41 const string QUERYSERVICE = "omero.api.IQuery"; 42 42 const string SESSIONSERVICE = "omero.api.ISession"; 43 const string SHARESERVICE = "omero.api.IShare"; 43 44 const string TYPESSERVICE = "omero.api.ITypes"; 44 45 const string UPDATESERVICE = "omero.api.IUpdate"; -
trunk/components/blitz/src/ome/services/blitz/impl/ServiceFactoryI.java
r2597 r2616 53 53 import omero.api.ISessionPrx; 54 54 import omero.api.ISessionPrxHelper; 55 import omero.api.ISharePrx; 56 import omero.api.ISharePrxHelper; 55 57 import omero.api.ITypesPrx; 56 58 import omero.api.ITypesPrxHelper; … … 89 91 import omero.constants.SEARCH; 90 92 import omero.constants.SESSIONSERVICE; 93 import omero.constants.SHARESERVICE; 91 94 import omero.constants.THUMBNAILSTORE; 92 95 import omero.constants.TYPESSERVICE; … … 248 251 public ISessionPrx getSessionService(Current current) throws ServerError { 249 252 return ISessionPrxHelper.uncheckedCast(getByName(SESSIONSERVICE.value, 253 current)); 254 } 255 256 public ISharePrx getShareService(Current current) throws ServerError { 257 return ISharePrxHelper.uncheckedCast(getByName(SHARESERVICE.value, 250 258 current)); 251 259 } -
trunk/components/common/src/ome/api/IShare.java
r2559 r2616 7 7 package ome.api; 8 8 9 // Java imports 9 import java.sql.Timestamp; 10 10 import java.util.List; 11 12 // Third-party libraries 13 14 // Application-internal dependencies 11 import java.util.Map; 12 import java.util.Set; 13 15 14 import ome.annotations.NotNull; 15 import ome.annotations.Validate; 16 import ome.conditions.ValidationException; 16 17 import ome.model.IObject; 17 18 import ome.model.annotations.Annotation; 19 import ome.model.annotations.TextAnnotation; 20 import ome.model.internal.Details; 18 21 import ome.model.meta.Experimenter; 19 22 import ome.model.meta.Session; … … 23 26 * projects. 24 27 * 25 * @author <br> 26 * Josh Moore <a 27 * href="mailto:josh.moore@gmx.de"> josh.moore@gmx.de</a> 28 * @version 3.0 <small> (<b>Internal version:</b> $Revision: 1552 $ $Date: 29 * 2007-05-23 09:43:33 +0100 (Wed, 23 May 2007) $) </small> 30 * @since OME4.0 28 * @author Aleksandra Tarkowska, aleksandrat at lifesci.dundee.ac.uk 29 * @author Josh Moore, josh at glencoesoftware.com 30 * 31 * @since 3.0-Beta4 31 32 */ 32 33 public interface IShare extends ServiceInterface { 33 34 34 // ~ Getting shares 35 // ========================================================================= 36 37 /** 38 * Looks up all {@link ome.model.meta.Session shares} present. 39 * 40 * @return list 41 */ 42 List<Session> lookupShares(); 43 44 /** 45 * Gets all owned {@link ome.model.meta.Session shares} for specified 46 * {@link ome.model.meta.Experimenter experimenter}. 47 * 48 * @param exp 49 * @return list 50 */ 51 List<Session> getOwnedShares(@NotNull 52 Experimenter exp); 53 54 /** 55 * Gets all {@link ome.model.meta.Session shares} where specified 56 * experimenter is a member of 57 * {@link ome.model.meta.Experimenter experimenter}. 58 * 59 * @param exp 60 * @return list 61 */ 62 List<Session> getMemberShares(@NotNull 63 Experimenter exp); 64 65 /** 66 * Gets {@link ome.model.meta.Session shares} and all related: 67 * {@link ome.model.IObject items}, 35 /** 36 * Turns on the access control lists attached to the given share for the 37 * current session. Warning: this will slow down the execution of the 38 * current session for all database reads. Writing to the database will not 39 * be allowed. 40 * 41 * @param shareId 42 */ 43 void activate(long shareId); 44 45 // ~ Admin 46 // ========================================================================= 47 48 /** 49 * Looks up all shares present. Requires administrative privileges. 50 * 51 * @param active 52 * if true, then only shares which can be used for login will be 53 * returned. All "draft" shares (see 54 * {@link #createShare(String, Timestamp, List, List, List, boolean)} 55 * and {@link #closeShare(long) closed shares} will be filtered. 56 * @return set of shares. Never null. May be empty. 57 */ 58 Set<Session> getAllShares(boolean active); 59 60 // ~ Getting shares and objects (READ) 61 // ========================================================================= 62 63 /** 64 * Gets all owned shares for the current {@link Experimenter} 65 * 66 * @param active 67 * if true, then only shares which can be used for login will be 68 * returned. All "draft" shares (see 69 * {@link #createShare(String, Timestamp, List, List, List, boolean)} 70 * and {@link #closeShare(long) closed shares} will be filtered. 71 * @return set of shares. Never null. May be empty. 72 */ 73 Set<Session> getOwnShares(boolean active); 74 75 /** 76 * Gets all shares where current {@link Experimenter} is a member. 77 * 78 * @param active 79 * if true, then only shares which can be used for login will be 80 * returned. All "draft" shares (see 81 * {@link #createShare(String, Timestamp, List, List, List, boolean)} 82 * and {@link #closeShare(long) closed shares} will be filtered. 83 * @return set of shares. Never null. May be empty. 84 */ 85 Set<Session> getMemberShares(boolean active); 86 87 /** 88 * Gets all shares owned by the given {@link Experimenter}. 89 * 90 * @param active 91 * if true, then only shares which can be used for login will be 92 * returned. All "draft" shares (see 93 * {@link #createShare(String, Timestamp, List, List, List, boolean)} 94 * and {@link #closeShare(long) closed shares} will be filtered. 95 * @return set of shares. Never null. May be empty. 96 */ 97 Set<Session> getSharesOwnedBy(@NotNull 98 Experimenter user, boolean active); 99 100 /** 101 * Gets all shares where given {@link Experimenter} is a member. 102 * 103 * @param active 104 * if true, then only shares which can be used for login will be 105 * returned. All "draft" shares (see 106 * {@link #createShare(String, Timestamp, List, List, List, boolean)} 107 * and {@link #closeShare(long) closed shares} will be filtered. 108 * @return set of shares. Never null. May be empty. 109 */ 110 Set<Session> getMemberSharesFor(@NotNull 111 Experimenter user, boolean active); 112 113 /** 114 * Gets a share as a {@link Session} with all related: 68 115 * {@link ome.model.annotations.Annotation comments}, 69 * {@link ome.model.meta.Experimenter members} .116 * {@link ome.model.meta.Experimenter members}, fully loaded. 70 117 * 71 118 * @param sessionId 72 * @return 73 */ 74 Session getShare(@NotNull 75 Long sessionId); 119 * @return a {@link Session} with id and {@link Details} set. The owner in 120 * the Details object is the true owner, and the group in the 121 * Details has all member users linked. {@link Annotation} instances 122 * of the share are linked to the {@link Session}. Missing is a 123 * list of share guests. 124 */ 125 Session getShare(long sessionId); 126 127 /** 128 * Looks up all {@link ome.model.IObject items} belong to the 129 * {@link ome.model.meta.Session share}. 130 * 131 * @param shareId 132 * @return list of objects. Not null. Probably not empty. 133 */ 134 <T extends IObject> List<T> getContents(long shareId); 135 136 /** 137 * Returns a range of items from the share. 138 * 139 * @see #getContents(long) 140 */ 141 <T extends IObject> List<T> getContentSubList(long shareId, int start, 142 int finish); 143 144 /** 145 * Returns the number of items in the share. 146 */ 147 int getContentSize(long shareId); 148 149 /** 150 * Returns the contents of the share keyed by type. 151 */ 152 <T extends IObject> Map<Class<T>, List<Long>> getContentMap(long shareId); 153 154 // ~ Creating share (WRITE) 155 // ========================================================================= 76 156 77 157 /** 78 158 * Creates {@link ome.model.meta.Session share} with all related: 79 159 * {@link ome.model.IObject items}, 80 * {@link ome.model.meta.Experimenter members}. 81 * 82 * @param share 83 * @param items 84 * @param exps 85 */ 86 void createShare(@NotNull 87 Session share, List<IObject> items, List<Experimenter> exps); 88 89 /** 90 * Updates {@link ome.model.meta.Session share} 91 * 92 * @param share 93 */ 94 void updateShare(@NotNull 95 Session share); 96 97 /** 98 * Closes {@link ome.model.meta.Session share} 99 * 100 * @param share 101 */ 102 void closeShare(@NotNull 103 Session share); 104 105 /** 106 * Drafts {@link ome.model.meta.Session share}. 107 * 108 * @param share 109 */ 110 void draftShare(@NotNull 111 Session share); 112 113 // ~ Getting items 114 // ========================================================================= 115 116 /** 117 * Looks up all {@link ome.model.IObject items} belonge to the 118 * {@link ome.model.meta.Session share}. 119 * 120 * @param share 121 * @return list 122 */ 123 List<IObject> lookupItems(@NotNull 124 Session share); 160 * {@link ome.model.meta.Experimenter members}, and guests. 161 * 162 * @param description 163 * @param expiration 164 * @param exps 165 * @param guests 166 * @param enabled 167 * if true, then the share is immediately available for use. If 168 * false, then the share is in draft state. All methods on this 169 * interface will work for shares <em>except</em> 170 * {@link #activate(long)}. Similarly, the share password cannot 171 * be used by guests to login. 172 */ 173 <T extends IObject> long createShare(@NotNull 174 String description, Timestamp expiration, @Validate(IObject.class) 175 List<T> items, @Validate(Experimenter.class) 176 List<Experimenter> exps, @Validate(String.class) 177 List<String> guests, boolean enabled); 178 179 void setDescription(long shareId, @NotNull 180 String description); 181 182 void setExpiration(long shareId, @NotNull 183 Timestamp expiration); 184 185 void setActive(long shareId, boolean active); 186 187 /** 188 * Closes {@link ome.model.meta.Session share}. No further logins will be 189 * possible and all getters (e.g. 190 * {@link #getMemberShares(boolean), {@link #getAllShares(boolean), ...} 191 * will filter these results if "active" is true. 192 * 193 * @param shareId 194 */ 195 void closeShare(long shareId); 196 197 // ~ Getting items 198 // ========================================================================= 125 199 126 200 /** … … 128 202 * {@link ome.model.meta.Session share}. 129 203 * 130 * @param share 131 * @param items132 */ 133 void addItems(@NotNull134 Session share, List<IObject> items);204 * @param shareId 205 * @param objects 206 */ 207 <T extends IObject> void addObjects(long shareId, @NotNull 208 T... objects); 135 209 136 210 /** … … 138 212 * {@link ome.model.meta.Session share}. 139 213 * 140 * @param share 141 * @param items 142 */ 143 void addItem(@NotNull 144 Session share, IObject items); 145 146 /** 147 * Deletes existing {@link ome.model.IObject item} from the 148 * {@link ome.model.meta.Session shares} 214 * @param shareId 215 * @param object 216 */ 217 <T extends IObject> void addObject(long shareId, @NotNull 218 T object); 219 220 /** 221 * Remove existing items from the share. 222 * 223 * @param shareId 224 * @param objects 225 */ 226 <T extends IObject> void removeObjects(long shareId, @NotNull 227 T... objects); 228 229 /** 230 * Removes existing {@link ome.model.IObject item} from the 231 * {@link ome.model.meta.Session share}. 149 232 * 150 233 * @param share 151 234 * @param item 152 235 */ 153 void deleteItem(@NotNull 154 Session share, @NotNull 155 IObject item); 156 157 // ~ Getting comments 158 // ========================================================================= 159 160 /** 161 * Looks up all {@link ome.model.annotations.Annotation comments} belonge to 162 * the {@link ome.model.meta.Session shares} 236 <T extends IObject> void removeObject(long shareId, @NotNull 237 T object); 238 239 // ~ Getting comments 240 // ========================================================================= 241 242 /** 243 * Looks up all {@link ome.model.annotations.Annotation comments} which 244 * belong to the {@link ome.model.meta.Session share}. 163 245 * 164 246 * @param share 165 * @return 166 */ 167 List<Annotation> lookupComments(@NotNull 168 Session share); 169 170 /** 171 * Creates {@link ome.model.annotations.Annotation comment} for 172 * {@link ome.model.meta.Session share} 247 * @return list of Annotation 248 */ 249 List<Annotation> getComments(long shareId); 250 251 /** 252 * Creates {@link ome.model.annotations.TextAnnotation comment} for 253 * {@link ome.model.meta.Session share}. 173 254 * 174 255 * @param share 175 256 * @param comment 176 257 */ 177 void createComment(@NotNull 178 Session share, @NotNull 179 Annotation comment); 180 181 /** 182 * Edits {@link ome.model.annotations.Annotation comment} 183 * 258 TextAnnotation addComment(long shareId, @NotNull 259 String comment); 260 261 /** 262 * Creates {@link TextAnnotation comment} which replies to an existing 263 * comment. 264 * 265 * @param shareId 184 266 * @param comment 185 */ 186 void editComment(@NotNull 187 Annotation comment); 188 189 /** 190 * Deletes {@link ome.model.annotations.Annotation comment} 267 * @param replyTo 268 * @return 269 */ 270 TextAnnotation addReply(long shareId, @NotNull 271 String comment, @NotNull 272 TextAnnotation replyTo); 273 274 /** 275 * Deletes {@link ome.model.annotations.Annotation comment} from the 276 * database. 191 277 * 192 278 * @param comment … … 195 281 Annotation comment); 196 282 197 // ~ Getting members 198 // ========================================================================= 283 // ~ Member administration 284 // ========================================================================= 285 286 /** 287 * Get all {@link Experimenter users} who are a member of the share. 288 */ 289 Set<Experimenter> getAllMembers(long shareId); 290 291 /** 292 * Get the email addresses for all share guests. 293 */ 294 Set<String> getAllGuests(long shareId); 295 296 /** 297 * Get a single set containing the 298 * {@link Experimenter#getOmeName() login names} of the 299 * {@link Experimenters} as well email addresses for guests. 300 * 301 * @param shareId 302 * @return 303 * @throws ValidationException 304 * if there is a conflict between email addresses and user 305 * names. 306 */ 307 Set<String> getAllUsers(long shareId) throws ValidationException; 199 308 200 309 /** … … 205 314 * @param exps 206 315 */ 207 void addUsers(@NotNull 208 Session share, List<Experimenter> exps); 209 210 /** 211 * Deletes {@link ome.model.meta.Experimenter experimenters} from 316 void addUsers(long shareId, Experimenter... exps); 317 318 /** 319 * Adds guest email addresses to the share. 320 * 321 * @param shareId 322 * @param emailAddresses 323 */ 324 void addGuests(long shareId, String... emailAddresses); 325 326 /** 327 * Removes {@link ome.model.meta.Experimenter experimenters} from 212 328 * {@link ome.model.meta.Session share} 213 329 * 214 * @param share 215 * @param exps 216 */ 217 void deleteUsers(@NotNull 218 Session share, List<Experimenter> exps); 330 * @param shareId 331 * @param exps 332 */ 333 void removeUsers(long shareId, @Validate(Experimenter.class) 334 List<Experimenter> exps); 335 336 /** 337 * Removes guest email addresses from the share. 338 * 339 * @param shareId 340 * @param exp 341 */ 342 void removeGuests(long shareId, String... emailAddresses); 219 343 220 344 /** … … 222 346 * {@link ome.model.meta.Session share} 223 347 * 224 * @param share 225 * @param exps 226 */ 227 void addUser(@NotNull 228 Session share, Experimenter exp); 229 230 /** 231 * Deletes {@link ome.model.meta.Experimenter experimenter} from 348 * @param shareId 349 * @param exps 350 */ 351 void addUser(long shareId, Experimenter exp); 352 353 /** 354 * Add guest email address to the share. 355 * 356 * @param shareId 357 * @param emailAddress 358 */ 359 void addGuest(long shareId, String emailAddress); 360 361 /** 362 * Removes {@link ome.model.meta.Experimenter experimenter} from 232 363 * {@link ome.model.meta.Session share} 233 364 * 234 * @param share 235 * @param exps 236 */ 237 void deleteUser(@NotNull 238 Session share, Experimenter exp); 365 * @param shareId 366 * @param exps 367 */ 368 void removeUser(long shareId, Experimenter exp); 369 370 /** 371 * Removes guest email address from share. 372 * 373 * @param shareId 374 * @param emailAddress 375 */ 376 void removeGuest(long shareId, String emailAddress); 239 377 240 378 } -
trunk/components/common/src/ome/system/ServiceFactory.java
r2321 r2616 10 10 // Java imports 11 11 import java.util.Properties; 12 12 13 import ome.api.IAdmin; 13 14 import ome.api.IAnalysis; … … 21 22 import ome.api.IRepositoryInfo; 22 23 import ome.api.ISession; 24 import ome.api.IShare; 23 25 import ome.api.ITypes; 24 26 import ome.api.IUpdate; … … 204 206 } 205 207 208 public IShare getShareService() { 209 return get
