# Java Client API ### Maven To use the SCM-Manager Java Client API you have to configure the SCM-Manager maven repository in your pom.xml: ```xml maven.scm-manager.org scm-manager release repository http://maven.scm-manager.org/nexus/content/groups/public ``` And you have to define the dependency to the api and one implementation: ```xml sonia.scm.clients scm-client-api 1.60 sonia.scm.clients scm-client-impl 1.60 ``` ### Usage First you have to create a session to your SCM-Manager instance: ```java String url = "http://localhost:8080/scm"; String username = "scmadmin"; String password = "scmadmin"; ScmClientSession session = ScmClient.createSession(url, username, password); ``` After you have successfully created a client session you can nearly execute every action which is available from the web interface. But do not forget to close the session after you have finished your work: ```java session.close(); ``` ### Examples Create a new repository: ```java Repository repository = new Repository(); repository.setName("scm-manager"); repository.setType("hg"); repository.setDescription("The easiest way to share and manage your Git, Mercurial and Subversion repositories over http."); // set permissions for user sdorra to owner List permissions = new ArrayList(); permissions.add(new Permission("sdorra", PermissionType.OWNER)); repository.setPermissions(permissions); session.getRepositoryHandler().create(repository); ``` Get the last 20 commits of a repository: ```java RepositoryClientHandler repositoryHandler = session.getRepositoryHandler(); // get the mercurial (hg) repository scm-manager Repository repository = repositoryHandler.get("hg", "scm-manager"); ClientChangesetHandler changesetHandler = repositoryHandler.getChangesetHandler(repository); // get 20 changesets started by 0 ChangesetPagingResult changesets = changesetHandler.getChangesets(0, 20); for ( Changeset c : changesets ){ System.out.println( c.getId() + ": " + c.getDescription() ); ``` Print the content of a file in a repository: ```java RepositoryClientHandler repositoryHandler = session.getRepositoryHandler(); // get the mercurial (hg) repository scm-manager Repository repository = repositoryHandler.get("hg", "scm-manager"); ClientRepositoryBrowser browser = repositoryHandler.getRepositoryBrowser(repository); BufferedReader reader = null; try { // get the content of the file pom.xml at revision tip reader = new BufferedReader(new InputStreamReader(browser.getContent("tip", "pom.xml"))); String line = reader.readLine(); while ( line != null ){ System.out.println( line ); line = reader.readLine(); } } finally { if ( reader != null ){ reader.close(); } } ``` Create a new user: ```java User user = new User("tuser", "Test User", "test.user@test.net"); user.setPassword("test123"); session.getUserHandler().create( user ); ``` Add a user to an existing group: ```java GroupClientHandler groupHandler = session.getGroupHandler(); Group group = groupHandler.get("developers"); group.getMembers().add("tuser"); groupHandler.modify(group); ```