001    package org.apache.archiva.security;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *  http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import org.apache.archiva.admin.model.beans.ManagedRepository;
023    
024    import java.util.List;
025    
026    /**
027     * UserRepositories 
028     *
029     *
030     */
031    public interface UserRepositories
032    {
033        /**
034         * Get the list of observable repository ids for the user specified.
035         * 
036         * @param principal the principle to obtain the observable repository ids from.
037         * @return the list of observable repository ids.
038         * @throws PrincipalNotFoundException
039         * @throws AccessDeniedException
040         * @throws ArchivaSecurityException
041         */
042        List<String> getObservableRepositoryIds( String principal )
043            throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException;
044        
045        /**
046         * Get the list of writable repository ids for the user specified.
047         * 
048         * @param principal the principle to obtain the observable repository ids from.
049         * @return the list of observable repository ids.
050         * @throws PrincipalNotFoundException
051         * @throws AccessDeniedException
052         * @throws ArchivaSecurityException
053         */
054        List<String> getManagableRepositoryIds( String principal )
055            throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException;
056        
057        /**
058         * Create any missing repository roles for the provided repository id.
059         * 
060         * @param repoId the repository id to work off of.
061         * @throws ArchivaSecurityException if there was a problem creating the repository roles.
062         */
063        void createMissingRepositoryRoles( String repoId )
064            throws ArchivaSecurityException;
065        
066        /**
067         * Check if user is authorized to upload artifacts in the repository.
068         * 
069         * @param principal
070         * @param repoId
071         * @return
072         * @throws PrincipalNotFoundException
073         * @throws ArchivaSecurityException
074         */
075        boolean isAuthorizedToUploadArtifacts( String principal, String repoId)
076            throws PrincipalNotFoundException, ArchivaSecurityException;
077         
078        /**
079         * Check if user is authorized to delete artifacts in the repository.
080         * 
081         * @param principal
082         * @param repoId
083         * @return
084         * @throws ArchivaSecurityException 
085         * @throws AccessDeniedException 
086         */
087        boolean isAuthorizedToDeleteArtifacts( String principal, String repoId )
088            throws AccessDeniedException, ArchivaSecurityException;
089    
090        /**
091         *
092         * @param principal
093         * @since 1.4-M3
094         * @return
095         * @throws ArchivaSecurityException
096         * @throws AccessDeniedException
097         * @throws PrincipalNotFoundException
098         */
099        List<ManagedRepository> getAccessibleRepositories( String principal )
100                throws ArchivaSecurityException, AccessDeniedException, PrincipalNotFoundException;
101        
102    }