Class Verifier


  • public class Verifier
    extends java.lang.Object
    Author:
    Jason van Zyl, Brett Porter
    • Constructor Summary

      Constructors 
      Constructor Description
      Verifier​(java.lang.String basedir)  
      Verifier​(java.lang.String basedir, boolean debug)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug, boolean forkJvm)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug, boolean forkJvm, java.lang.String[] defaultCliArguments)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug, java.lang.String mavenHome)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug, java.lang.String[] defaultCliArguments)  
      Verifier​(java.lang.String basedir, java.lang.String settingsFile, boolean debug, java.lang.String mavenHome, java.lang.String[] defaultCliArguments)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      void addCliArgument​(java.lang.String cliArgument)
      Add a command line argument, each argument must be set separately one by one.
      void addCliArguments​(java.lang.String... cliArguments)
      Add a command line arguments, each argument must be set separately one by one.
      void addCliOption​(java.lang.String option)
      Deprecated.
      void deleteArtifact​(java.lang.String org, java.lang.String name, java.lang.String version, java.lang.String ext)  
      void deleteArtifacts​(java.lang.String gid)
      Deletes all artifacts in the specified group id from the local repository.
      void deleteArtifacts​(java.lang.String gid, java.lang.String aid, java.lang.String version)
      Deletes all artifacts in the specified g:a:v from the local repository.
      void deleteDirectory​(java.lang.String path)
      Deletes the specified directory.
      void displayStreamBuffers()
      Deprecated.
      will be removed without replacement
      void execute()
      Execute Maven.
      void executeGoal​(java.lang.String goal)
      Deprecated.
      will be removed.
      void executeGoal​(java.lang.String goal, java.util.Map<java.lang.String,​java.lang.String> envVars)
      Deprecated.
      will be removed.
      void executeGoals​(java.util.List<java.lang.String> goals)
      Deprecated.
      will be removed
      void executeGoals​(java.util.List<java.lang.String> goals, java.util.Map<java.lang.String,​java.lang.String> envVars)
      Deprecated.
      will be removed
      java.io.File filterFile​(java.lang.String srcPath, java.lang.String dstPath, java.lang.String fileEncoding)
      Filters a text file by replacing some user-defined tokens.
      java.io.File filterFile​(java.lang.String srcPath, java.lang.String dstPath, java.lang.String fileEncoding, java.util.Map<java.lang.String,​java.lang.String> filterMap)
      Filters a text file by replacing some user-defined tokens.
      java.io.File filterFile​(java.lang.String srcPath, java.lang.String dstPath, java.lang.String fileEncoding, java.util.Properties filterProperties)
      java.util.List<java.lang.String> getArtifactFileNameList​(java.lang.String org, java.lang.String name, java.lang.String version, java.lang.String ext)  
      java.lang.String getArtifactMetadataPath​(java.lang.String gid, java.lang.String aid)
      Gets the path to the local artifact metadata.
      java.lang.String getArtifactMetadataPath​(java.lang.String gid, java.lang.String aid, java.lang.String version)
      Gets the path to the local artifact metadata.
      java.lang.String getArtifactMetadataPath​(java.lang.String gid, java.lang.String aid, java.lang.String version, java.lang.String filename)
      Gets the path to a file in the local artifact directory.
      java.lang.String getArtifactPath​(java.lang.String groupId, java.lang.String artifactId, java.lang.String version, java.lang.String ext)  
      java.lang.String getArtifactPath​(java.lang.String gid, java.lang.String aid, java.lang.String version, java.lang.String ext, java.lang.String classifier)
      Returns the absolute path to the artifact denoted by groupId, artifactId, version, extension and classifier.
      java.lang.String getBasedir()  
      java.util.List<java.lang.String> getCliOptions()
      Deprecated.
      will be removed without replacement, for arguments adding please use addCliArgument(String), addCliArguments(String...)
      java.util.Map<java.lang.String,​java.lang.String> getEnvironmentVariables()  
      java.lang.String getExecutable()  
      java.lang.String getLocalRepoLayout()  
      java.lang.String getLocalRepository()  
      java.lang.String getLogFileName()
      Gets the name of the file used to log build output.
      protected org.apache.maven.shared.verifier.MavenLauncher getMavenLauncher​(java.util.Map<java.lang.String,​java.lang.String> envVars)  
      java.lang.String getMavenVersion()  
      java.util.Properties getSystemProperties()  
      java.util.Properties getVerifierProperties()  
      boolean isAutoclean()  
      boolean isDebugJvm()  
      boolean isMavenDebug()
      Deprecated.
      will be removed without replacement
      java.util.List<java.lang.String> loadFile​(java.io.File file, boolean hasCommand)  
      java.util.List<java.lang.String> loadFile​(java.lang.String basedir, java.lang.String filename, boolean hasCommand)  
      java.util.List<java.lang.String> loadLines​(java.lang.String filename, java.lang.String encoding)
      Loads the (non-empty) lines of the specified text file.
      java.util.Properties loadProperties​(java.lang.String filename)  
      java.util.Map<java.lang.String,​java.lang.String> newDefaultFilterMap()
      Gets a new copy of the default filter map.
      java.util.Properties newDefaultFilterProperties()
      Deprecated.
      void resetStreams()
      Deprecated.
      will be removed without replacement
      void setAutoclean​(boolean autoclean)
      Clean project before execution by adding CLEAN_CLI_ARGUMENT to command line.
      void setCliOptions​(java.util.List<java.lang.String> cliOptions)
      Deprecated.
      will be removed
      void setDebug​(boolean debug)
      Deprecated.
      will be removed without replacement
      void setDebugJvm​(boolean debugJvm)  
      void setEnvironmentVariable​(java.lang.String key, java.lang.String value)  
      void setEnvironmentVariables​(java.util.Map<java.lang.String,​java.lang.String> environmentVariables)  
      void setForkJvm​(boolean forkJvm)  
      void setLocalRepo​(java.lang.String localRepo)  
      void setLocalRepoLayout​(java.lang.String localRepoLayout)  
      void setLogFileName​(java.lang.String logFileName)
      Sets the name of the file used to log build output.
      void setMavenDebug​(boolean mavenDebug)
      Deprecated.
      will be removed without replacement.
      void setSystemProperties​(java.util.Properties systemProperties)  
      void setSystemProperty​(java.lang.String key, java.lang.String value)  
      void setVerifierProperties​(java.util.Properties verifierProperties)  
      static java.lang.String stripAnsi​(java.lang.String msg)  
      void verify​(boolean chokeOnErrorOutput)  
      void verifyArtifactContent​(java.lang.String groupId, java.lang.String artifactId, java.lang.String version, java.lang.String ext, java.lang.String content)
      Verifies that the artifact given by its Maven coordinates exists and contains the given content.
      void verifyArtifactNotPresent​(java.lang.String groupId, java.lang.String artifactId, java.lang.String version, java.lang.String ext)
      Verifies that the artifact given through its Maven coordinates does not exist.
      void verifyArtifactPresent​(java.lang.String groupId, java.lang.String artifactId, java.lang.String version, java.lang.String ext)
      Verifies that the artifact given through its Maven coordinates exists.
      void verifyErrorFreeLog()  
      void verifyFileContentMatches​(java.lang.String file, java.lang.String regex)
      Verifies the given file's content matches an regular expression.
      void verifyFileNotPresent​(java.lang.String file)
      Verifies that the given file does not exist.
      void verifyFilePresent​(java.lang.String file)
      Verifies that the given file exists.
      void verifyTextInLog​(java.lang.String text)
      Throws an exception if the text is not present in the log.
      void writeFile​(java.lang.String path, java.lang.String contents)
      Writes a text file with the specified contents.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • setLocalRepo

        public void setLocalRepo​(java.lang.String localRepo)
      • resetStreams

        @Deprecated
        public void resetStreams()
        Deprecated.
        will be removed without replacement
      • displayStreamBuffers

        @Deprecated
        public void displayStreamBuffers()
        Deprecated.
        will be removed without replacement
      • verifyTextInLog

        public void verifyTextInLog​(java.lang.String text)
                             throws VerificationException
        Throws an exception if the text is not present in the log.
        Parameters:
        text - the text to assert present
        Throws:
        VerificationException - if text is not found in log
      • stripAnsi

        public static java.lang.String stripAnsi​(java.lang.String msg)
      • loadLines

        public java.util.List<java.lang.String> loadLines​(java.lang.String filename,
                                                          java.lang.String encoding)
                                                   throws java.io.IOException
        Loads the (non-empty) lines of the specified text file.
        Parameters:
        filename - The path to the text file to load, relative to the base directory, must not be null.
        encoding - The character encoding of the file, may be null or empty to use the platform default encoding.
        Returns:
        The list of (non-empty) lines from the text file, can be empty but never null.
        Throws:
        java.io.IOException - If the file could not be loaded.
        Since:
        1.2
      • getArtifactPath

        public java.lang.String getArtifactPath​(java.lang.String groupId,
                                                java.lang.String artifactId,
                                                java.lang.String version,
                                                java.lang.String ext)
      • getArtifactPath

        public java.lang.String getArtifactPath​(java.lang.String gid,
                                                java.lang.String aid,
                                                java.lang.String version,
                                                java.lang.String ext,
                                                java.lang.String classifier)
        Returns the absolute path to the artifact denoted by groupId, artifactId, version, extension and classifier.
        Parameters:
        gid - The groupId, must not be null.
        aid - The artifactId, must not be null.
        version - The version, must not be null.
        ext - The extension, must not be null.
        classifier - The classifier, may be null to be omitted.
        Returns:
        the absolute path to the artifact denoted by groupId, artifactId, version, extension and classifier, never null.
      • getArtifactFileNameList

        public java.util.List<java.lang.String> getArtifactFileNameList​(java.lang.String org,
                                                                        java.lang.String name,
                                                                        java.lang.String version,
                                                                        java.lang.String ext)
      • getArtifactMetadataPath

        public java.lang.String getArtifactMetadataPath​(java.lang.String gid,
                                                        java.lang.String aid,
                                                        java.lang.String version)
        Gets the path to the local artifact metadata. Note that the method does not check whether the returned path actually points to existing metadata.
        Parameters:
        gid - The group id, must not be null.
        aid - The artifact id, must not be null.
        version - The artifact version, may be null.
        Returns:
        The (absolute) path to the local artifact metadata, never null.
      • getArtifactMetadataPath

        public java.lang.String getArtifactMetadataPath​(java.lang.String gid,
                                                        java.lang.String aid,
                                                        java.lang.String version,
                                                        java.lang.String filename)
        Gets the path to a file in the local artifact directory. Note that the method does not check whether the returned path actually points to an existing file.
        Parameters:
        gid - The group id, must not be null.
        aid - The artifact id, may be null.
        version - The artifact version, may be null.
        filename - The filename to use, must not be null.
        Returns:
        The (absolute) path to the local artifact metadata, never null.
      • getArtifactMetadataPath

        public java.lang.String getArtifactMetadataPath​(java.lang.String gid,
                                                        java.lang.String aid)
        Gets the path to the local artifact metadata. Note that the method does not check whether the returned path actually points to existing metadata.
        Parameters:
        gid - The group id, must not be null.
        aid - The artifact id, must not be null.
        Returns:
        The (absolute) path to the local artifact metadata, never null.
      • deleteArtifact

        public void deleteArtifact​(java.lang.String org,
                                   java.lang.String name,
                                   java.lang.String version,
                                   java.lang.String ext)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • deleteArtifacts

        public void deleteArtifacts​(java.lang.String gid)
                             throws java.io.IOException
        Deletes all artifacts in the specified group id from the local repository.
        Parameters:
        gid - The group id whose artifacts should be deleted, must not be null.
        Throws:
        java.io.IOException - If the artifacts could not be deleted.
        Since:
        1.2
      • deleteArtifacts

        public void deleteArtifacts​(java.lang.String gid,
                                    java.lang.String aid,
                                    java.lang.String version)
                             throws java.io.IOException
        Deletes all artifacts in the specified g:a:v from the local repository.
        Parameters:
        gid - The group id whose artifacts should be deleted, must not be null.
        aid - The artifact id whose artifacts should be deleted, must not be null.
        version - The (base) version whose artifacts should be deleted, must not be null.
        Throws:
        java.io.IOException - If the artifacts could not be deleted.
        Since:
        1.3
      • deleteDirectory

        public void deleteDirectory​(java.lang.String path)
                             throws java.io.IOException
        Deletes the specified directory.
        Parameters:
        path - The path to the directory to delete, relative to the base directory, must not be null.
        Throws:
        java.io.IOException - If the directory could not be deleted.
        Since:
        1.2
      • writeFile

        public void writeFile​(java.lang.String path,
                              java.lang.String contents)
                       throws java.io.IOException
        Writes a text file with the specified contents. The contents will be encoded using UTF-8.
        Parameters:
        path - The path to the file, relative to the base directory, must not be null.
        contents - The contents to write, must not be null.
        Throws:
        java.io.IOException - If the file could not be written.
        Since:
        1.2
      • filterFile

        public java.io.File filterFile​(java.lang.String srcPath,
                                       java.lang.String dstPath,
                                       java.lang.String fileEncoding)
                                throws java.io.IOException
        Filters a text file by replacing some user-defined tokens. This method is equivalent to:
             filterFile( srcPath, dstPath, fileEncoding, verifier.newDefaultFilterMap() )
         
        Parameters:
        srcPath - The path to the input file, relative to the base directory, must not be null.
        dstPath - The path to the output file, relative to the base directory and possibly equal to the input file, must not be null.
        fileEncoding - The file encoding to use, may be null or empty to use the platform's default encoding.
        Returns:
        The path to the filtered output file, never null.
        Throws:
        java.io.IOException - If the file could not be filtered.
        Since:
        2.0
      • filterFile

        public java.io.File filterFile​(java.lang.String srcPath,
                                       java.lang.String dstPath,
                                       java.lang.String fileEncoding,
                                       java.util.Map<java.lang.String,​java.lang.String> filterMap)
                                throws java.io.IOException
        Filters a text file by replacing some user-defined tokens.
        Parameters:
        srcPath - The path to the input file, relative to the base directory, must not be null.
        dstPath - The path to the output file, relative to the base directory and possibly equal to the input file, must not be null.
        fileEncoding - The file encoding to use, may be null or empty to use the platform's default encoding.
        filterMap - The mapping from tokens to replacement values, must not be null.
        Returns:
        The path to the filtered output file, never null.
        Throws:
        java.io.IOException - If the file could not be filtered.
        Since:
        1.2
      • filterFile

        @Deprecated
        public java.io.File filterFile​(java.lang.String srcPath,
                                       java.lang.String dstPath,
                                       java.lang.String fileEncoding,
                                       java.util.Properties filterProperties)
                                throws java.io.IOException
        There are 226 references to this method in Maven core ITs. In most (all?) cases it is used together with newDefaultFilterProperties(). Need to remove both methods and update all clients eventually/
        Parameters:
        srcPath - The path to the input file, relative to the base directory, must not be null.
        dstPath - The path to the output file, relative to the base directory and possibly equal to the input file, must not be null.
        fileEncoding - The file encoding to use, may be null or empty to use the platform's default encoding.
        filterProperties - The mapping from tokens to replacement values, must not be null.
        Returns:
        The path to the filtered output file, never null.
        Throws:
        java.io.IOException - If the file could not be filtered.
      • newDefaultFilterProperties

        @Deprecated
        public java.util.Properties newDefaultFilterProperties()
        Deprecated.
        Gets a new copy of the default filter properties. These default filter properties map the tokens "@basedir@" and "@baseurl@" to the test's base directory and its base file: URL, respectively.
        Returns:
        The (modifiable) map with the default filter properties, never null.
        Since:
        1.2
      • newDefaultFilterMap

        public java.util.Map<java.lang.String,​java.lang.String> newDefaultFilterMap()
        Gets a new copy of the default filter map. These default filter map, contains the tokens "@basedir@" and "@baseurl@" to the test's base directory and its base file: URL, respectively.
        Returns:
        The (modifiable) map with the default filter map, never null.
        Since:
        2.0
      • verifyFilePresent

        public void verifyFilePresent​(java.lang.String file)
                               throws VerificationException
        Verifies that the given file exists.
        Parameters:
        file - the path of the file to check
        Throws:
        VerificationException - in case the given file does not exist
      • verifyFileContentMatches

        public void verifyFileContentMatches​(java.lang.String file,
                                             java.lang.String regex)
                                      throws VerificationException
        Verifies the given file's content matches an regular expression. Note this method also checks that the file exists and is readable.
        Parameters:
        file - the path of the file to check
        regex - a regular expression
        Throws:
        VerificationException - in case the file was not found or its content does not match the given pattern
        See Also:
        Pattern
      • verifyFileNotPresent

        public void verifyFileNotPresent​(java.lang.String file)
                                  throws VerificationException
        Verifies that the given file does not exist.
        Parameters:
        file - the path of the file to check
        Throws:
        VerificationException - if the given file exists
      • verifyArtifactPresent

        public void verifyArtifactPresent​(java.lang.String groupId,
                                          java.lang.String artifactId,
                                          java.lang.String version,
                                          java.lang.String ext)
                                   throws VerificationException
        Verifies that the artifact given through its Maven coordinates exists.
        Parameters:
        groupId - the groupId of the artifact (must not be null)
        artifactId - the artifactId of the artifact (must not be null)
        version - the version of the artifact (must not be null)
        ext - the extension of the artifact (must not be null)
        Throws:
        VerificationException - if the given artifact does not exist
      • verifyArtifactNotPresent

        public void verifyArtifactNotPresent​(java.lang.String groupId,
                                             java.lang.String artifactId,
                                             java.lang.String version,
                                             java.lang.String ext)
                                      throws VerificationException
        Verifies that the artifact given through its Maven coordinates does not exist.
        Parameters:
        groupId - the groupId of the artifact (must not be null)
        artifactId - the artifactId of the artifact (must not be null)
        version - the version of the artifact (must not be null)
        ext - the extension of the artifact (must not be null)
        Throws:
        VerificationException - if the given artifact exists
      • executeGoal

        @Deprecated
        public void executeGoal​(java.lang.String goal)
                         throws VerificationException
        Deprecated.
        will be removed.

        For replacement please use:

           verifier.addCliArgument( "goal" );
           verifier.execute();
         
        Execute Maven.
        Throws:
        VerificationException
      • executeGoal

        @Deprecated
        public void executeGoal​(java.lang.String goal,
                                java.util.Map<java.lang.String,​java.lang.String> envVars)
                         throws VerificationException
        Deprecated.
        will be removed.

        For replacement please use:

           verifier.addCliArgument( "goal" );
           verifier.setEnvironmentVariable( "key1", "value1" );
           verifier.setEnvironmentVariable( "key2", "value2" );
           verifier.execute();
         
        Execute Maven.
        Throws:
        VerificationException
      • executeGoals

        @Deprecated
        public void executeGoals​(java.util.List<java.lang.String> goals)
                          throws VerificationException
        Deprecated.
        will be removed

        For replacement please use:

           verifier.addCliArguments( "goal1", "goal2" );
           verifier.execute();
         
        Execute Maven.
        Throws:
        VerificationException
      • getExecutable

        public java.lang.String getExecutable()
      • executeGoals

        @Deprecated
        public void executeGoals​(java.util.List<java.lang.String> goals,
                                 java.util.Map<java.lang.String,​java.lang.String> envVars)
                          throws VerificationException
        Deprecated.
        will be removed

        For replacement please use:

           verifier.addCliArguments( "goal1", "goal2" );
           verifier.setEnvironmentVariable( "key1", "value1" );
           verifier.setEnvironmentVariable( "key2", "value2" );
           verifier.execute();
         
        Execute Maven.
        Throws:
        VerificationException
      • getMavenLauncher

        protected org.apache.maven.shared.verifier.MavenLauncher getMavenLauncher​(java.util.Map<java.lang.String,​java.lang.String> envVars)
                                                                           throws org.apache.maven.shared.verifier.LauncherException
        Throws:
        org.apache.maven.shared.verifier.LauncherException
      • verifyArtifactContent

        public void verifyArtifactContent​(java.lang.String groupId,
                                          java.lang.String artifactId,
                                          java.lang.String version,
                                          java.lang.String ext,
                                          java.lang.String content)
                                   throws java.io.IOException,
                                          VerificationException
        Verifies that the artifact given by its Maven coordinates exists and contains the given content.
        Parameters:
        groupId - the groupId of the artifact (must not be null)
        artifactId - the artifactId of the artifact (must not be null)
        version - the version of the artifact (must not be null)
        ext - the extension of the artifact (must not be null)
        content - the expected content
        Throws:
        java.io.IOException - if reading from the artifact fails
        VerificationException - if the content of the artifact differs
      • setCliOptions

        @Deprecated
        public void setCliOptions​(java.util.List<java.lang.String> cliOptions)
        Deprecated.
        will be removed
      • addCliOption

        @Deprecated
        public void addCliOption​(java.lang.String option)
        Deprecated.
        Add a command line argument, each argument must be set separately one by one.

        ${basedir} in argument will be replaced by value of getBasedir() during execution.

        Parameters:
        option - an argument to add
      • addCliArgument

        public void addCliArgument​(java.lang.String cliArgument)
        Add a command line argument, each argument must be set separately one by one.

        ${basedir} in argument will be replaced by value of getBasedir() during execution.

        Parameters:
        cliArgument - an argument to add
      • addCliArguments

        public void addCliArguments​(java.lang.String... cliArguments)
        Add a command line arguments, each argument must be set separately one by one.

        ${basedir} in argument will be replaced by value of getBasedir() during execution.

        Parameters:
        cliArguments - an arguments list to add
      • getSystemProperties

        public java.util.Properties getSystemProperties()
      • setSystemProperties

        public void setSystemProperties​(java.util.Properties systemProperties)
      • setSystemProperty

        public void setSystemProperty​(java.lang.String key,
                                      java.lang.String value)
      • getEnvironmentVariables

        public java.util.Map<java.lang.String,​java.lang.String> getEnvironmentVariables()
      • setEnvironmentVariables

        public void setEnvironmentVariables​(java.util.Map<java.lang.String,​java.lang.String> environmentVariables)
      • setEnvironmentVariable

        public void setEnvironmentVariable​(java.lang.String key,
                                           java.lang.String value)
      • getVerifierProperties

        public java.util.Properties getVerifierProperties()
      • setVerifierProperties

        public void setVerifierProperties​(java.util.Properties verifierProperties)
      • isAutoclean

        public boolean isAutoclean()
      • setAutoclean

        public void setAutoclean​(boolean autoclean)
        Clean project before execution by adding CLEAN_CLI_ARGUMENT to command line.

        By default, options is enabled.

        Parameters:
        autoclean - indicate if option is enabled
      • getBasedir

        public java.lang.String getBasedir()
      • getLogFileName

        public java.lang.String getLogFileName()
        Gets the name of the file used to log build output.
        Returns:
        The name of the log file, relative to the base directory, never null.
        Since:
        1.2
      • setLogFileName

        public void setLogFileName​(java.lang.String logFileName)
        Sets the name of the file used to log build output.
        Parameters:
        logFileName - The name of the log file, relative to the base directory, must not be empty or null.
        Since:
        1.2
      • setDebug

        @Deprecated
        public void setDebug​(boolean debug)
        Deprecated.
        will be removed without replacement
      • isMavenDebug

        @Deprecated
        public boolean isMavenDebug()
        Deprecated.
        will be removed without replacement
      • setMavenDebug

        @Deprecated
        public void setMavenDebug​(boolean mavenDebug)
        Deprecated.
        will be removed without replacement.
        For replacement please use:
             verifier.addCliArgument( "-X" );
         
      • setForkJvm

        public void setForkJvm​(boolean forkJvm)
      • isDebugJvm

        public boolean isDebugJvm()
      • setDebugJvm

        public void setDebugJvm​(boolean debugJvm)
      • getLocalRepoLayout

        public java.lang.String getLocalRepoLayout()
      • setLocalRepoLayout

        public void setLocalRepoLayout​(java.lang.String localRepoLayout)
      • getLocalRepository

        public java.lang.String getLocalRepository()