• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • ← Previous Changeset
  • Next Changeset →

Changeset 2616

Show
Ignore:
Timestamp:
07/11/08 11:24:07 (2 months ago)
Author:
jmoore
Message:

ShareService? : interface changes from my git branch

These are the interface changes made on my local branch
to the IShare interface. Open to improvements.

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  
    6767 
    6868      dictionary<string, IObjectList> IObjectListMap; 
    69  
     69       
     70      dictionary<string, Ice::LongSeq> IdListMap; 
     71       
    7072    ["java:type:java.util.ArrayList"] 
    7173      sequence<omero::model::Image> ImageList; 
     74 
     75    ["java:type:java.util.ArrayList"] 
     76      sequence<omero::model::Session> SessionList; 
    7277 
    7378    ["java:type:java.util.ArrayList<String>:java.util.List<String>"] 
    … …  
    277282        StringSet getInputKeys(string sess) throws ServerError; 
    278283        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       
    279335      }; 
    280336 
    … …  
    553609      { 
    554610        // Central OMERO.blitz stateless services. 
    555         IScript*   getScriptService() throws ServerError; 
    556611        IAdmin*    getAdminService() throws ServerError; 
    557612        IConfig*   getConfigService() throws ServerError; 
    … …  
    559614        IPojos*    getPojosService() throws ServerError; 
    560615        IQuery*    getQueryService() throws ServerError; 
    561         IRenderingSettings* getRenderingSettingsService() throws ServerError; 
     616    IRenderingSettings* getRenderingSettingsService() throws ServerError; 
    562617        IRepositoryInfo* getRepositoryInfoService() throws ServerError; 
     618        IScript*   getScriptService() throws ServerError; 
    563619        ISession*  getSessionService() throws ServerError; 
     620        IShare*    getShareService() throws ServerError; 
    564621        ITypes*    getTypesService() throws ServerError; 
    565622        IUpdate*   getUpdateService() throws ServerError; 
  • trunk/components/blitz/resources/omero/Constants.ice

    r2593 r2616  
    4141    const string QUERYSERVICE     = "omero.api.IQuery"; 
    4242    const string SESSIONSERVICE   = "omero.api.ISession"; 
     43    const string SHARESERVICE     = "omero.api.IShare"; 
    4344    const string TYPESSERVICE     = "omero.api.ITypes"; 
    4445    const string UPDATESERVICE    = "omero.api.IUpdate"; 
  • trunk/components/blitz/src/ome/services/blitz/impl/ServiceFactoryI.java

    r2597 r2616  
    5353import omero.api.ISessionPrx; 
    5454import omero.api.ISessionPrxHelper; 
     55import omero.api.ISharePrx; 
     56import omero.api.ISharePrxHelper; 
    5557import omero.api.ITypesPrx; 
    5658import omero.api.ITypesPrxHelper; 
    … …  
    8991import omero.constants.SEARCH; 
    9092import omero.constants.SESSIONSERVICE; 
     93import omero.constants.SHARESERVICE; 
    9194import omero.constants.THUMBNAILSTORE; 
    9295import omero.constants.TYPESSERVICE; 
    … …  
    248251    public ISessionPrx getSessionService(Current current) throws ServerError { 
    249252        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, 
    250258                current)); 
    251259    } 
  • trunk/components/common/src/ome/api/IShare.java

    r2559 r2616  
    77package ome.api; 
    88 
    9 // Java imports 
     9import java.sql.Timestamp; 
    1010import java.util.List; 
    11  
    12 // Third-party libraries 
    13  
    14 // Application-internal dependencies 
     11import java.util.Map; 
     12import java.util.Set; 
     13 
    1514import ome.annotations.NotNull; 
     15import ome.annotations.Validate; 
     16import ome.conditions.ValidationException; 
    1617import ome.model.IObject; 
    1718import ome.model.annotations.Annotation; 
     19import ome.model.annotations.TextAnnotation; 
     20import ome.model.internal.Details; 
    1821import ome.model.meta.Experimenter; 
    1922import ome.model.meta.Session; 
    … …  
    2326 * projects. 
    2427 *  
    25  * @author <br> 
    26  *         Josh Moore &nbsp;&nbsp;&nbsp;&nbsp; <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 
    3132 */ 
    3233public interface IShare extends ServiceInterface { 
    3334 
    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: 
    68115     * {@link ome.model.annotations.Annotation comments}, 
    69      * {@link ome.model.meta.Experimenter members}. 
     116     * {@link ome.model.meta.Experimenter members}, fully loaded. 
    70117     *  
    71118     * @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    // ========================================================================= 
    76156 
    77157    /** 
    78158     * Creates {@link ome.model.meta.Session share} with all related: 
    79159     * {@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    // ========================================================================= 
    125199 
    126200    /** 
    … …  
    128202     * {@link ome.model.meta.Session share}. 
    129203     *  
    130      * @param share 
    131      * @param items 
    132      */ 
    133     void addItems(@NotNull 
    134     Session share, List<IObject> items); 
     204     * @param shareId 
     205     * @param objects 
     206     */ 
     207    <T extends IObject> void addObjects(long shareId, @NotNull 
     208    T... objects); 
    135209 
    136210    /** 
    … …  
    138212     * {@link ome.model.meta.Session share}. 
    139213     *  
    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}. 
    149232     *  
    150233     * @param share 
    151234     * @param item 
    152235     */ 
    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}. 
    163245     *  
    164246     * @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}. 
    173254     *  
    174255     * @param share 
    175256     * @param comment 
    176257     */ 
    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 
    184266     * @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. 
    191277     *  
    192278     * @param comment 
    … …  
    195281    Annotation comment); 
    196282 
    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; 
    199308 
    200309    /** 
    … …  
    205314     * @param exps 
    206315     */ 
    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 
    212328     * {@link ome.model.meta.Session share} 
    213329     *  
    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); 
    219343 
    220344    /** 
    … …  
    222346     * {@link ome.model.meta.Session share} 
    223347     *  
    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 
    232363     * {@link ome.model.meta.Session share} 
    233364     *  
    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); 
    239377 
    240378} 
  • trunk/components/common/src/ome/system/ServiceFactory.java

    r2321 r2616  
    1010// Java imports 
    1111import java.util.Properties; 
     12 
    1213import ome.api.IAdmin; 
    1314import ome.api.IAnalysis; 
    … …  
    2122import ome.api.IRepositoryInfo; 
    2223import ome.api.ISession; 
     24import ome.api.IShare; 
    2325import ome.api.ITypes; 
    2426import ome.api.IUpdate; 
    … …  
    204206    } 
    205207 
     208    public IShare getShareService() { 
     209        return get