]> source.dussan.org Git - sonarqube.git/commitdiff
rename package org.sonar.server.component.persistence to org.sonar.server.component.db
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 11 Sep 2014 14:46:49 +0000 (16:46 +0200)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Thu, 11 Sep 2014 14:47:12 +0000 (16:47 +0200)
33 files changed:
server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/component/db/package-info.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/component/persistence/ComponentDao.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/component/persistence/package-info.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/db/DbClient.java
server/sonar-server/src/main/java/org/sonar/server/duplication/ws/DuplicationsJsonWriter.java
server/sonar-server/src/main/java/org/sonar/server/duplication/ws/DuplicationsParser.java
server/sonar-server/src/main/java/org/sonar/server/duplication/ws/ShowAction.java
server/sonar-server/src/main/java/org/sonar/server/issue/db/IssueAuthorizationDao.java
server/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java
server/sonar-server/src/main/java/org/sonar/server/qualitygate/QualityGates.java
server/sonar-server/src/test/java/org/sonar/server/batch/ProjectReferentialsActionTest.java
server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java [new file with mode: 0644]
server/sonar-server/src/test/java/org/sonar/server/component/persistence/ComponentDaoTest.java [deleted file]
server/sonar-server/src/test/java/org/sonar/server/component/ws/ComponentAppActionTest.java
server/sonar-server/src/test/java/org/sonar/server/duplication/ws/DuplicationsJsonWriterTest.java
server/sonar-server/src/test/java/org/sonar/server/duplication/ws/DuplicationsParserTest.java
server/sonar-server/src/test/java/org/sonar/server/duplication/ws/DuplicationsWsTest.java
server/sonar-server/src/test/java/org/sonar/server/duplication/ws/ShowActionTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/IssueServiceMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/db/IssueBackendMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/index/IssueIndexMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/issue/ws/IssuesWsMediumTest.java
server/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java
server/sonar-server/src/test/java/org/sonar/server/qualitygate/QualityGatesTest.java
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/empty.xml [new file with mode: 0644]
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/insert-result.xml [new file with mode: 0644]
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/multi-modules.xml [new file with mode: 0644]
server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared.xml [new file with mode: 0644]
server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/empty.xml [deleted file]
server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/insert-result.xml [deleted file]
server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/multi-modules.xml [deleted file]
server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/shared.xml [deleted file]

diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java b/server/sonar-server/src/main/java/org/sonar/server/component/db/ComponentDao.java
new file mode 100644 (file)
index 0000000..fc14d1a
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.component.db;
+
+import org.sonar.api.ServerComponent;
+import org.sonar.api.utils.System2;
+import org.sonar.core.component.AuthorizedComponentDto;
+import org.sonar.core.component.ComponentDto;
+import org.sonar.core.component.db.ComponentMapper;
+import org.sonar.core.persistence.DaoComponent;
+import org.sonar.core.persistence.DbSession;
+import org.sonar.server.db.BaseDao;
+import org.sonar.server.exceptions.NotFoundException;
+
+import javax.annotation.CheckForNull;
+
+import java.util.List;
+
+/**
+ * @since 4.3
+ */
+public class ComponentDao extends BaseDao<ComponentMapper, ComponentDto, String> implements ServerComponent, DaoComponent {
+
+  public ComponentDao(System2 system) {
+    super(ComponentMapper.class, system);
+  }
+
+  public ComponentDto getById(Long id, DbSession session) {
+    ComponentDto componentDto = getNullableById(id, session);
+    if (componentDto == null) {
+      throw new NotFoundException(String.format("Project with id '%s' not found", id));
+    }
+    return componentDto;
+  }
+
+  @CheckForNull
+  public ComponentDto getNullableById(Long id, DbSession session) {
+    return mapper(session).selectById(id);
+  }
+
+  public boolean existsById(Long id, DbSession session) {
+    return mapper(session).countById(id) > 0;
+  }
+
+  /**
+   * Return null only if the component does not exists.
+   * If the component if a root project, it will return itself.
+   */
+  @CheckForNull
+  public ComponentDto getNullableRootProjectByKey(String componentKey, DbSession session) {
+    return mapper(session).selectRootProjectByKey(componentKey);
+  }
+
+  public ComponentDto getRootProjectByKey(String componentKey, DbSession session) {
+    ComponentDto componentDto = getNullableRootProjectByKey(componentKey, session);
+    if (componentDto == null) {
+      throw new NotFoundException(String.format("Root project for project '%s' not found", componentKey));
+    }
+    return componentDto;
+  }
+
+  @CheckForNull
+  public ComponentDto getParentModuleByKey(String componentKey, DbSession session) {
+    return mapper(session).selectParentModuleByKey(componentKey);
+  }
+
+  public List<ComponentDto> findModulesByProject(String projectKey, DbSession session) {
+    return mapper(session).findModulesByProject(projectKey);
+  }
+
+  @CheckForNull
+  public AuthorizedComponentDto getNullableAuthorizedComponentById(Long id, DbSession session) {
+    return mapper(session).selectAuthorizedComponentById(id);
+  }
+
+  public AuthorizedComponentDto getAuthorizedComponentById(Long id, DbSession session) {
+    AuthorizedComponentDto componentDto = getNullableAuthorizedComponentById(id, session);
+    if (componentDto == null) {
+      throw new NotFoundException(String.format("Project with id '%s' not found", id));
+    }
+    return componentDto;
+  }
+
+  @CheckForNull
+  public AuthorizedComponentDto getNullableAuthorizedComponentByKey(String key, DbSession session) {
+    return mapper(session).selectAuthorizedComponentByKey(key);
+  }
+
+  public AuthorizedComponentDto getAuthorizedComponentByKey(String key, DbSession session) {
+    AuthorizedComponentDto componentDto = getNullableAuthorizedComponentByKey(key, session);
+    if (componentDto == null) {
+      throw new NotFoundException(String.format("Project with key '%s' not found", key));
+    }
+    return componentDto;
+  }
+
+  @Override
+  @CheckForNull
+  protected ComponentDto doGetNullableByKey(DbSession session, String key) {
+    return mapper(session).selectByKey(key);
+  }
+
+  @Override
+  protected ComponentDto doInsert(DbSession session, ComponentDto item) {
+    mapper(session).insert(item);
+    return item;
+  }
+}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/db/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/component/db/package-info.java
new file mode 100644 (file)
index 0000000..40b3a85
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+@ParametersAreNonnullByDefault
+package org.sonar.server.component.db;
+
+import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/persistence/ComponentDao.java b/server/sonar-server/src/main/java/org/sonar/server/component/persistence/ComponentDao.java
deleted file mode 100644 (file)
index edcbe52..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.component.persistence;
-
-import org.sonar.api.ServerComponent;
-import org.sonar.api.utils.System2;
-import org.sonar.core.component.AuthorizedComponentDto;
-import org.sonar.core.component.ComponentDto;
-import org.sonar.core.component.db.ComponentMapper;
-import org.sonar.core.persistence.DaoComponent;
-import org.sonar.core.persistence.DbSession;
-import org.sonar.server.db.BaseDao;
-import org.sonar.server.exceptions.NotFoundException;
-
-import javax.annotation.CheckForNull;
-import java.util.List;
-
-/**
- * @since 4.3
- */
-public class ComponentDao extends BaseDao<ComponentMapper, ComponentDto, String> implements ServerComponent, DaoComponent {
-
-  public ComponentDao(System2 system) {
-    super(ComponentMapper.class, system);
-  }
-
-  public ComponentDto getById(Long id, DbSession session) {
-    ComponentDto componentDto = getNullableById(id, session);
-    if (componentDto == null) {
-      throw new NotFoundException(String.format("Project with id '%s' not found", id));
-    }
-    return componentDto;
-  }
-
-  @CheckForNull
-  public ComponentDto getNullableById(Long id, DbSession session) {
-    return mapper(session).selectById(id);
-  }
-
-  public boolean existsById(Long id, DbSession session) {
-    return mapper(session).countById(id) > 0;
-  }
-
-  /**
-   * Return null only if the component does not exists.
-   * If the component if a root project, it will return itself.
-   */
-  @CheckForNull
-  public ComponentDto getNullableRootProjectByKey(String componentKey, DbSession session) {
-    return mapper(session).selectRootProjectByKey(componentKey);
-  }
-
-  public ComponentDto getRootProjectByKey(String componentKey, DbSession session) {
-    ComponentDto componentDto = getNullableRootProjectByKey(componentKey, session);
-    if (componentDto == null) {
-      throw new NotFoundException(String.format("Root project for project '%s' not found", componentKey));
-    }
-    return componentDto;
-  }
-
-  @CheckForNull
-  public ComponentDto getParentModuleByKey(String componentKey, DbSession session) {
-    return mapper(session).selectParentModuleByKey(componentKey);
-  }
-
-  public List<ComponentDto> findModulesByProject(String projectKey, DbSession session) {
-    return mapper(session).findModulesByProject(projectKey);
-  }
-
-  @CheckForNull
-  public AuthorizedComponentDto getNullableAuthorizedComponentById(Long id, DbSession session) {
-    return mapper(session).selectAuthorizedComponentById(id);
-  }
-
-  public AuthorizedComponentDto getAuthorizedComponentById(Long id, DbSession session) {
-    AuthorizedComponentDto componentDto = getNullableAuthorizedComponentById(id, session);
-    if (componentDto == null) {
-      throw new NotFoundException(String.format("Project with id '%s' not found", id));
-    }
-    return componentDto;
-  }
-
-  @CheckForNull
-  public AuthorizedComponentDto getNullableAuthorizedComponentByKey(String key, DbSession session) {
-    return mapper(session).selectAuthorizedComponentByKey(key);
-  }
-
-  public AuthorizedComponentDto getAuthorizedComponentByKey(String key, DbSession session) {
-    AuthorizedComponentDto componentDto = getNullableAuthorizedComponentByKey(key, session);
-    if (componentDto == null) {
-      throw new NotFoundException(String.format("Project with key '%s' not found", key));
-    }
-    return componentDto;
-  }
-
-  @Override
-  @CheckForNull
-  protected ComponentDto doGetNullableByKey(DbSession session, String key) {
-    return mapper(session).selectByKey(key);
-  }
-
-  @Override
-  protected ComponentDto doInsert(DbSession session, ComponentDto item) {
-    mapper(session).insert(item);
-    return item;
-  }
-}
diff --git a/server/sonar-server/src/main/java/org/sonar/server/component/persistence/package-info.java b/server/sonar-server/src/main/java/org/sonar/server/component/persistence/package-info.java
deleted file mode 100644 (file)
index 4be4a89..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-
-@ParametersAreNonnullByDefault
-package org.sonar.server.component.persistence;
-
-import javax.annotation.ParametersAreNonnullByDefault;
index 38ba30fc39e154c6618ba6c2bbf230ac91d23f6f..e8a4de33c07bebe23614ad5e0fcaa26b1f980b3f 100644 (file)
@@ -34,7 +34,7 @@ import org.sonar.core.template.LoadedTemplateDao;
 import org.sonar.core.user.AuthorizationDao;
 import org.sonar.core.user.UserDao;
 import org.sonar.server.activity.db.ActivityDao;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.issue.db.IssueAuthorizationDao;
 import org.sonar.server.issue.db.IssueDao;
 import org.sonar.server.measure.persistence.MeasureDao;
index 2c6addbbfb461254add9b6d595e007f17cb98a8e..2846364056734fed40adfb3ba168c5d17538c621 100644 (file)
@@ -25,7 +25,7 @@ import org.sonar.api.ServerComponent;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 
 import javax.annotation.Nullable;
 
index fd448b98f91253f1367f3d4645cfec1e53f912cc..55dec878986386c831b1254c10a3591fe6e58afb 100644 (file)
@@ -27,7 +27,7 @@ import org.codehaus.staxmate.in.SMInputCursor;
 import org.sonar.api.ServerComponent;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 
 import javax.annotation.CheckForNull;
 import javax.annotation.Nullable;
index f6c228ab57f639ca962544866bf1c409f01a8c89..4b3f6f69d6fa0384805efff91f89d43d615a492a 100644 (file)
@@ -33,7 +33,7 @@ import org.sonar.core.measure.db.MeasureDto;
 import org.sonar.core.measure.db.MeasureKey;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.persistence.MyBatis;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.measure.persistence.MeasureDao;
index e3d3535163a8b2efb90ea103bc2dac0948fba35e..6ff7ca364006b9820c04ff2343e3eb5a6f99d37a 100644 (file)
@@ -95,6 +95,14 @@ public class IssueAuthorizationDao extends BaseDao<IssueAuthorizationMapper, Iss
     };
   }
 
+  @Override
+  protected Map getSynchronizationParams(Date date) {
+    Map<String, Object> params = super.getSynchronizationParams(date);
+    params.put("permission", UserRole.USER);
+    params.put("anyone", DefaultGroups.ANYONE);
+    return params;
+  }
+
   @Override
   public List<IssueAuthorizationDto> findAfterDate(DbSession session, Date date) {
 
@@ -130,11 +138,8 @@ public class IssueAuthorizationDao extends BaseDao<IssueAuthorizationMapper, Iss
     return ImmutableList.<IssueAuthorizationDto>copyOf(authorizationDtoMap.values());
   }
 
-  @Override
-  protected Map getSynchronizationParams(Date date) {
-    Map<String, Object> params = super.getSynchronizationParams(date);
-    params.put("permission", UserRole.USER);
-    params.put("anyone", DefaultGroups.ANYONE);
-    return params;
+  protected void doDeleteByKey(DbSession session, String key) {
+    // Nothing to do on db side, only remove the index (done in BaseDao)
   }
+
 }
index 2009a7e741c9246356a1c188ec74987c0e8e2117..6a289ce04645bd9fb41153b8ff6332a0a4a1e6f8 100644 (file)
@@ -84,7 +84,7 @@ import org.sonar.server.batch.ProjectReferentialsAction;
 import org.sonar.server.charts.ChartFactory;
 import org.sonar.server.component.DefaultComponentFinder;
 import org.sonar.server.component.DefaultRubyComponentService;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.component.ws.*;
 import org.sonar.server.config.ws.PropertiesWs;
 import org.sonar.server.db.DatabaseChecker;
index 8ce814ba46cfcab83a58c05b5f46ccdaac58bd4e..871ba29313957b8c25fdabd0ee74069e8027073a 100644 (file)
@@ -40,7 +40,7 @@ import org.sonar.core.qualitygate.db.QualityGateConditionDao;
 import org.sonar.core.qualitygate.db.QualityGateConditionDto;
 import org.sonar.core.qualitygate.db.QualityGateDao;
 import org.sonar.core.qualitygate.db.QualityGateDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.exceptions.*;
 import org.sonar.server.user.UserSession;
 import org.sonar.server.util.Validation;
index 34125be594b8581eee91e7cc8dd80bf6bd92928e..67651e2e5f32cd1001c51e2ac92fded6b8b6596f 100644 (file)
@@ -38,7 +38,7 @@ import org.sonar.core.properties.PropertiesDao;
 import org.sonar.core.properties.PropertyDto;
 import org.sonar.core.qualityprofile.db.ActiveRuleKey;
 import org.sonar.core.qualityprofile.db.QualityProfileDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.qualityprofile.ActiveRule;
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/db/ComponentDaoTest.java
new file mode 100644 (file)
index 0000000..f710f66
--- /dev/null
@@ -0,0 +1,279 @@
+/*
+ * SonarQube, open source software quality management tool.
+ * Copyright (C) 2008-2014 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * SonarQube is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * SonarQube is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+package org.sonar.server.component.db;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.sonar.api.utils.DateUtils;
+import org.sonar.api.utils.System2;
+import org.sonar.core.component.AuthorizedComponentDto;
+import org.sonar.core.component.ComponentDto;
+import org.sonar.core.persistence.AbstractDaoTestCase;
+import org.sonar.core.persistence.DbSession;
+import org.sonar.server.exceptions.NotFoundException;
+
+import java.util.Date;
+import java.util.List;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class ComponentDaoTest extends AbstractDaoTestCase {
+
+  DbSession session;
+
+  ComponentDao dao;
+
+  System2 system2;
+
+  @Before
+  public void createDao() throws Exception {
+    session = getMyBatis().openSession(false);
+    system2 = mock(System2.class);
+    dao = new ComponentDao(system2);
+  }
+
+  @After
+  public void tearDown() throws Exception {
+    session.close();
+  }
+
+  @Test
+  public void get_by_key() {
+    setupData("shared");
+
+    ComponentDto result = dao.getNullableByKey(session, "org.struts:struts-core:src/org/struts/RequestContext.java");
+    assertThat(result).isNotNull();
+    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
+    assertThat(result.path()).isEqualTo("src/org/struts/RequestContext.java");
+    assertThat(result.name()).isEqualTo("RequestContext.java");
+    assertThat(result.longName()).isEqualTo("org.struts.RequestContext");
+    assertThat(result.qualifier()).isEqualTo("FIL");
+    assertThat(result.scope()).isEqualTo("FIL");
+    assertThat(result.language()).isEqualTo("java");
+    assertThat(result.subProjectId()).isEqualTo(2);
+    assertThat(result.projectId()).isEqualTo(1);
+
+    assertThat(dao.getNullableByKey(session, "unknown")).isNull();
+  }
+
+  @Test
+  public void get_by_key_on_a_root_project() {
+    setupData("shared");
+
+    ComponentDto result = dao.getNullableByKey(session, "org.struts:struts");
+    assertThat(result).isNotNull();
+    assertThat(result.key()).isEqualTo("org.struts:struts");
+    assertThat(result.path()).isNull();
+    assertThat(result.name()).isEqualTo("Struts");
+    assertThat(result.longName()).isEqualTo("Apache Struts");
+    assertThat(result.qualifier()).isEqualTo("TRK");
+    assertThat(result.scope()).isEqualTo("PRJ");
+    assertThat(result.language()).isNull();
+    assertThat(result.subProjectId()).isNull();
+    assertThat(result.projectId()).isEqualTo(1);
+    assertThat(result.getAuthorizationUpdatedAt()).isEqualTo(DateUtils.parseDate("2014-06-18"));
+  }
+
+  @Test
+  public void get_by_id() {
+    setupData("shared");
+
+    assertThat(dao.getById(4L, session)).isNotNull();
+  }
+
+  @Test(expected = NotFoundException.class)
+  public void fail_to_get_by_id_when_project_not_found() {
+    setupData("shared");
+
+    dao.getById(111L, session);
+  }
+
+  @Test
+  public void get_nullable_by_id() {
+    setupData("shared");
+
+    assertThat(dao.getNullableById(4L, session)).isNotNull();
+    assertThat(dao.getNullableById(111L, session)).isNull();
+  }
+
+  @Test
+  public void count_by_id() {
+    setupData("shared");
+
+    assertThat(dao.existsById(4L, session)).isTrue();
+    assertThat(dao.existsById(111L, session)).isFalse();
+  }
+
+  @Test
+  public void find_modules_by_project() throws Exception {
+    setupData("multi-modules");
+
+    List<ComponentDto> results = dao.findModulesByProject("org.struts:struts", session);
+    assertThat(results).hasSize(1);
+    assertThat(results.get(0).getKey()).isEqualTo("org.struts:struts-core");
+
+    results = dao.findModulesByProject("org.struts:struts-core", session);
+    assertThat(results).hasSize(1);
+    assertThat(results.get(0).getKey()).isEqualTo("org.struts:struts-data");
+
+    assertThat(dao.findModulesByProject("org.struts:struts-data", session)).isEmpty();
+
+    assertThat(dao.findModulesByProject("unknown", session)).isEmpty();
+  }
+
+  @Test
+  public void get_nullable_root_project_by_key() throws Exception {
+    setupData("multi-modules");
+
+    assertThat(dao.getNullableRootProjectByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts");
+    assertThat(dao.getNullableRootProjectByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
+
+    // Root project of a project is itself
+    assertThat(dao.getNullableRootProjectByKey("org.struts:struts", session).getKey()).isEqualTo("org.struts:struts");
+
+    assertThat(dao.getNullableRootProjectByKey("unknown", session)).isNull();
+  }
+
+  @Test
+  public void get_root_project_by_key() throws Exception {
+    setupData("multi-modules");
+
+    assertThat(dao.getRootProjectByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts");
+    assertThat(dao.getRootProjectByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
+
+    // Root project of a project is itself
+    assertThat(dao.getRootProjectByKey("org.struts:struts", session).getKey()).isEqualTo("org.struts:struts");
+  }
+
+  @Test(expected = NotFoundException.class)
+  public void get_root_project_by_key_on_unknown_project() throws Exception {
+    dao.getRootProjectByKey("unknown", session);
+  }
+
+  @Test
+  public void get_parent_module_by_key() throws Exception {
+    setupData("multi-modules");
+
+    assertThat(dao.getParentModuleByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts-core");
+    assertThat(dao.getParentModuleByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
+    assertThat(dao.getParentModuleByKey("org.struts:struts", session)).isNull();
+
+    assertThat(dao.getParentModuleByKey("unknown", session)).isNull();
+  }
+
+  @Test
+  public void get_nullable_authorized_component_by_id() {
+    setupData("shared");
+
+    AuthorizedComponentDto result = dao.getNullableAuthorizedComponentById(4L, session);
+    assertThat(result).isNotNull();
+    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
+
+    assertThat(dao.getNullableAuthorizedComponentById(111L, session)).isNull();
+  }
+
+  @Test
+  public void get_authorized_component_by_id() {
+    setupData("shared");
+
+    assertThat(dao.getAuthorizedComponentById(4L, session)).isNotNull();
+  }
+
+  @Test(expected = NotFoundException.class)
+  public void fail_to_get_authorized_component_by_id_when_project_not_found() {
+    setupData("shared");
+
+    dao.getAuthorizedComponentById(111L, session);
+  }
+
+  @Test
+  public void get_nullable_authorized_component_by_key() {
+    setupData("shared");
+
+    AuthorizedComponentDto result = dao.getNullableAuthorizedComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java", session);
+    assertThat(result).isNotNull();
+    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
+
+    assertThat(dao.getNullableAuthorizedComponentByKey("unknown", session)).isNull();
+  }
+
+  @Test
+  public void get_authorized_component_by_key() {
+    setupData("shared");
+
+    assertThat(dao.getAuthorizedComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java", session)).isNotNull();
+  }
+
+  @Test(expected = NotFoundException.class)
+  public void fail_to_get_authorized_component_by_key_when_project_not_found() {
+    setupData("shared");
+
+    dao.getAuthorizedComponentByKey("unknown", session);
+  }
+
+  @Test
+  public void insert() {
+    when(system2.now()).thenReturn(DateUtils.parseDate("2014-06-18").getTime());
+    setupData("empty");
+
+    ComponentDto componentDto = new ComponentDto()
+      .setId(1L)
+      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+      .setName("RequestContext.java")
+      .setLongName("org.struts.RequestContext")
+      .setQualifier("FIL")
+      .setScope("FIL")
+      .setLanguage("java")
+      .setPath("src/org/struts/RequestContext.java")
+      .setSubProjectId(3L)
+      .setEnabled(true)
+      .setAuthorizationUpdatedAt(DateUtils.parseDate("2014-06-18"));
+
+    dao.insert(session, componentDto);
+    session.commit();
+
+    assertThat(componentDto.getId()).isNotNull();
+    checkTables("insert", "projects");
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void update() {
+    dao.update(session, new ComponentDto()
+      .setId(1L)
+      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+      );
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void delete() {
+    dao.delete(session, new ComponentDto()
+      .setId(1L)
+      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
+      );
+  }
+
+  @Test(expected = IllegalStateException.class)
+  public void synchronize_after() {
+    dao.synchronizeAfter(session, new Date(0L));
+  }
+}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/component/persistence/ComponentDaoTest.java b/server/sonar-server/src/test/java/org/sonar/server/component/persistence/ComponentDaoTest.java
deleted file mode 100644 (file)
index cbb7d8e..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * SonarQube is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- */
-package org.sonar.server.component.persistence;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.sonar.api.utils.DateUtils;
-import org.sonar.api.utils.System2;
-import org.sonar.core.component.AuthorizedComponentDto;
-import org.sonar.core.component.ComponentDto;
-import org.sonar.core.persistence.AbstractDaoTestCase;
-import org.sonar.core.persistence.DbSession;
-import org.sonar.server.exceptions.NotFoundException;
-
-import java.util.Date;
-import java.util.List;
-
-import static org.fest.assertions.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class ComponentDaoTest extends AbstractDaoTestCase {
-
-  DbSession session;
-
-  ComponentDao dao;
-
-  System2 system2;
-
-  @Before
-  public void createDao() throws Exception {
-    session = getMyBatis().openSession(false);
-    system2 = mock(System2.class);
-    dao = new ComponentDao(system2);
-  }
-
-  @After
-  public void tearDown() throws Exception {
-    session.close();
-  }
-
-  @Test
-  public void get_by_key() {
-    setupData("shared");
-
-    ComponentDto result = dao.getNullableByKey(session, "org.struts:struts-core:src/org/struts/RequestContext.java");
-    assertThat(result).isNotNull();
-    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
-    assertThat(result.path()).isEqualTo("src/org/struts/RequestContext.java");
-    assertThat(result.name()).isEqualTo("RequestContext.java");
-    assertThat(result.longName()).isEqualTo("org.struts.RequestContext");
-    assertThat(result.qualifier()).isEqualTo("FIL");
-    assertThat(result.scope()).isEqualTo("FIL");
-    assertThat(result.language()).isEqualTo("java");
-    assertThat(result.subProjectId()).isEqualTo(2);
-    assertThat(result.projectId()).isEqualTo(1);
-
-    assertThat(dao.getNullableByKey(session, "unknown")).isNull();
-  }
-
-  @Test
-  public void get_by_key_on_a_root_project() {
-    setupData("shared");
-
-    ComponentDto result = dao.getNullableByKey(session, "org.struts:struts");
-    assertThat(result).isNotNull();
-    assertThat(result.key()).isEqualTo("org.struts:struts");
-    assertThat(result.path()).isNull();
-    assertThat(result.name()).isEqualTo("Struts");
-    assertThat(result.longName()).isEqualTo("Apache Struts");
-    assertThat(result.qualifier()).isEqualTo("TRK");
-    assertThat(result.scope()).isEqualTo("PRJ");
-    assertThat(result.language()).isNull();
-    assertThat(result.subProjectId()).isNull();
-    assertThat(result.projectId()).isEqualTo(1);
-    assertThat(result.getAuthorizationUpdatedAt()).isEqualTo(DateUtils.parseDate("2014-06-18"));
-  }
-
-  @Test
-  public void get_by_id() {
-    setupData("shared");
-
-    assertThat(dao.getById(4L, session)).isNotNull();
-  }
-
-  @Test(expected = NotFoundException.class)
-  public void fail_to_get_by_id_when_project_not_found() {
-    setupData("shared");
-
-    dao.getById(111L, session);
-  }
-
-  @Test
-  public void get_nullable_by_id() {
-    setupData("shared");
-
-    assertThat(dao.getNullableById(4L, session)).isNotNull();
-    assertThat(dao.getNullableById(111L, session)).isNull();
-  }
-
-  @Test
-  public void count_by_id() {
-    setupData("shared");
-
-    assertThat(dao.existsById(4L, session)).isTrue();
-    assertThat(dao.existsById(111L, session)).isFalse();
-  }
-
-  @Test
-  public void find_modules_by_project() throws Exception {
-    setupData("multi-modules");
-
-    List<ComponentDto> results = dao.findModulesByProject("org.struts:struts", session);
-    assertThat(results).hasSize(1);
-    assertThat(results.get(0).getKey()).isEqualTo("org.struts:struts-core");
-
-    results = dao.findModulesByProject("org.struts:struts-core", session);
-    assertThat(results).hasSize(1);
-    assertThat(results.get(0).getKey()).isEqualTo("org.struts:struts-data");
-
-    assertThat(dao.findModulesByProject("org.struts:struts-data", session)).isEmpty();
-
-    assertThat(dao.findModulesByProject("unknown", session)).isEmpty();
-  }
-
-  @Test
-  public void get_nullable_root_project_by_key() throws Exception {
-    setupData("multi-modules");
-
-    assertThat(dao.getNullableRootProjectByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts");
-    assertThat(dao.getNullableRootProjectByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
-
-    // Root project of a project is itself
-    assertThat(dao.getNullableRootProjectByKey("org.struts:struts", session).getKey()).isEqualTo("org.struts:struts");
-
-    assertThat(dao.getNullableRootProjectByKey("unknown", session)).isNull();
-  }
-
-  @Test
-  public void get_root_project_by_key() throws Exception {
-    setupData("multi-modules");
-
-    assertThat(dao.getRootProjectByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts");
-    assertThat(dao.getRootProjectByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
-
-    // Root project of a project is itself
-    assertThat(dao.getRootProjectByKey("org.struts:struts", session).getKey()).isEqualTo("org.struts:struts");
-  }
-
-  @Test(expected = NotFoundException.class)
-  public void get_root_project_by_key_on_unknown_project() throws Exception {
-    dao.getRootProjectByKey("unknown", session);
-  }
-
-  @Test
-  public void get_parent_module_by_key() throws Exception {
-    setupData("multi-modules");
-
-    assertThat(dao.getParentModuleByKey("org.struts:struts-data", session).getKey()).isEqualTo("org.struts:struts-core");
-    assertThat(dao.getParentModuleByKey("org.struts:struts-core", session).getKey()).isEqualTo("org.struts:struts");
-    assertThat(dao.getParentModuleByKey("org.struts:struts", session)).isNull();
-
-    assertThat(dao.getParentModuleByKey("unknown", session)).isNull();
-  }
-
-  @Test
-  public void get_nullable_authorized_component_by_id() {
-    setupData("shared");
-
-    AuthorizedComponentDto result = dao.getNullableAuthorizedComponentById(4L, session);
-    assertThat(result).isNotNull();
-    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
-
-    assertThat(dao.getNullableAuthorizedComponentById(111L, session)).isNull();
-  }
-
-  @Test
-  public void get_authorized_component_by_id() {
-    setupData("shared");
-
-    assertThat(dao.getAuthorizedComponentById(4L, session)).isNotNull();
-  }
-
-  @Test(expected = NotFoundException.class)
-  public void fail_to_get_authorized_component_by_id_when_project_not_found() {
-    setupData("shared");
-
-    dao.getAuthorizedComponentById(111L, session);
-  }
-
-  @Test
-  public void get_nullable_authorized_component_by_key() {
-    setupData("shared");
-
-    AuthorizedComponentDto result = dao.getNullableAuthorizedComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java", session);
-    assertThat(result).isNotNull();
-    assertThat(result.key()).isEqualTo("org.struts:struts-core:src/org/struts/RequestContext.java");
-
-    assertThat(dao.getNullableAuthorizedComponentByKey("unknown", session)).isNull();
-  }
-
-  @Test
-  public void get_authorized_component_by_key() {
-    setupData("shared");
-
-    assertThat(dao.getAuthorizedComponentByKey("org.struts:struts-core:src/org/struts/RequestContext.java", session)).isNotNull();
-  }
-
-  @Test(expected = NotFoundException.class)
-  public void fail_to_get_authorized_component_by_key_when_project_not_found() {
-    setupData("shared");
-
-    dao.getAuthorizedComponentByKey("unknown", session);
-  }
-
-  @Test
-  public void insert() {
-    when(system2.now()).thenReturn(DateUtils.parseDate("2014-06-18").getTime());
-    setupData("empty");
-
-    ComponentDto componentDto = new ComponentDto()
-      .setId(1L)
-      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
-      .setName("RequestContext.java")
-      .setLongName("org.struts.RequestContext")
-      .setQualifier("FIL")
-      .setScope("FIL")
-      .setLanguage("java")
-      .setPath("src/org/struts/RequestContext.java")
-      .setSubProjectId(3L)
-      .setEnabled(true)
-      .setAuthorizationUpdatedAt(DateUtils.parseDate("2014-06-18"));
-
-    dao.insert(session, componentDto);
-    session.commit();
-
-    assertThat(componentDto.getId()).isNotNull();
-    checkTables("insert", "projects");
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void update() {
-    dao.update(session, new ComponentDto()
-      .setId(1L)
-      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
-      );
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void delete() {
-    dao.delete(session, new ComponentDto()
-      .setId(1L)
-      .setKey("org.struts:struts-core:src/org/struts/RequestContext.java")
-      );
-  }
-
-  @Test(expected = IllegalStateException.class)
-  public void synchronize_after() {
-    dao.synchronizeAfter(session, new Date(0L));
-  }
-}
index edb05332e3edf40111fcea836d7acd605fe2a372..d69f1b5b54261c96ee051bd2df3522f9f6c64da0 100644 (file)
@@ -51,7 +51,7 @@ import org.sonar.core.resource.ResourceDao;
 import org.sonar.core.resource.SnapshotDto;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.core.timemachine.Periods;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.issue.IssueService;
 import org.sonar.server.issue.RulesAggregation;
index 226f7d4ecec0bcf96ec587d651928b36c8e45f84..287a40b24723022125b59ee2c5363f04409cbf93 100644 (file)
@@ -30,7 +30,7 @@ import org.skyscreamer.jsonassert.JSONAssert;
 import org.sonar.api.utils.text.JsonWriter;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 
 import java.io.StringWriter;
 import java.util.Collections;
index 1e04f073c7da102683272a520f17063b684a513f..aa31f8dec1203c1d4420969089e9fa4322709643 100644 (file)
@@ -32,7 +32,7 @@ import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.sonar.core.component.ComponentDto;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 
 import javax.annotation.Nullable;
 
index 8f392dbedaf5bd2489139bb42c23b233ad50d94b..3e77df4394127f4c6cd8cce25fbb3d4b01688887 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.server.duplication.ws;
 
 import org.junit.Test;
 import org.sonar.api.server.ws.WebService;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.measure.persistence.MeasureDao;
 import org.sonar.server.ws.WsTester;
index 987a387b69d9fdf815dd57618f48cf2808c2de05..d5c75738840e2fc3870de20f8fe577318afab550 100644 (file)
@@ -33,7 +33,7 @@ import org.sonar.core.component.ComponentDto;
 import org.sonar.core.measure.db.MeasureDto;
 import org.sonar.core.measure.db.MeasureKey;
 import org.sonar.core.persistence.DbSession;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.NotFoundException;
 import org.sonar.server.measure.persistence.MeasureDao;
index b6fb6e7dc62e0ae1bd05ec029c56128d9ce94878..4e313a65763d75bd1c73493a7fcb505dfc3c2ec2 100644 (file)
@@ -33,7 +33,7 @@ import org.sonar.core.issue.db.IssueDto;
 import org.sonar.core.permission.PermissionFacade;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.issue.db.IssueDao;
 import org.sonar.server.rule.RuleTesting;
index 0d667e41a2e3722a0bb4c50ae668733af2188db1..80fe1f10446793e05035e9b94829b41d99754d1f 100644 (file)
@@ -30,7 +30,7 @@ import org.sonar.core.component.ComponentDto;
 import org.sonar.core.issue.db.IssueDto;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.issue.index.IssueIndex;
 import org.sonar.server.platform.Platform;
index cf8058d72cd628d844c6c1a86589a4feae012a1a..fcdc2b7e3fd2f1ca5836c5cb784e8224aabcc6c1 100644 (file)
@@ -36,7 +36,7 @@ import org.sonar.core.persistence.DbSession;
 import org.sonar.core.rule.RuleDto;
 import org.sonar.core.user.GroupDto;
 import org.sonar.core.user.UserDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.rule.RuleTesting;
 import org.sonar.server.rule.db.RuleDao;
index 094bb6c66c12abe4f248d78662c991156ab91045..eb3747a7bfe19d59279b908d20146165defc322f 100644 (file)
@@ -33,7 +33,7 @@ import org.sonar.core.permission.GlobalPermissions;
 import org.sonar.core.permission.PermissionFacade;
 import org.sonar.core.persistence.DbSession;
 import org.sonar.core.rule.RuleDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.rule.RuleTesting;
 import org.sonar.server.rule.db.RuleDao;
index 609a073f7084d1a612ce0b59303b21591bac9eec..d78d72cd0b04125bd14a00cf2fac514fed6e8b02 100644 (file)
@@ -45,7 +45,7 @@ import org.sonar.core.resource.ResourceDto;
 import org.sonar.core.user.GroupDto;
 import org.sonar.core.user.UserDao;
 import org.sonar.core.user.UserDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.db.DbClient;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
index 99d5b8319e0b7f0a825b2b528023a1ec4dd99a34..bfe3863e048dc1a170afe8a403217c612b764d56 100644 (file)
@@ -45,7 +45,7 @@ import org.sonar.core.qualitygate.db.QualityGateConditionDao;
 import org.sonar.core.qualitygate.db.QualityGateConditionDto;
 import org.sonar.core.qualitygate.db.QualityGateDao;
 import org.sonar.core.qualitygate.db.QualityGateDto;
-import org.sonar.server.component.persistence.ComponentDao;
+import org.sonar.server.component.db.ComponentDao;
 import org.sonar.server.exceptions.BadRequestException;
 import org.sonar.server.exceptions.ForbiddenException;
 import org.sonar.server.exceptions.NotFoundException;
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/empty.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/empty.xml
new file mode 100644 (file)
index 0000000..871dedc
--- /dev/null
@@ -0,0 +1,3 @@
+<dataset>
+
+</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/insert-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/insert-result.xml
new file mode 100644 (file)
index 0000000..741a3eb
--- /dev/null
@@ -0,0 +1,9 @@
+<dataset>
+
+  <projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" name="RequestContext.java" long_name="org.struts.RequestContext"
+      qualifier="FIL" scope="FIL" language="java" path="src/org/struts/RequestContext.java" root_id="3"
+      description="[null]" enabled="[true]" copy_resource_id="[null]" person_id="[null]" deprecated_kee="[null]"
+      authorization_updated_at="2014-06-18" created_at="2014-06-18"
+      />
+
+</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/multi-modules.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/multi-modules.xml
new file mode 100644 (file)
index 0000000..771faf6
--- /dev/null
@@ -0,0 +1,89 @@
+<dataset>
+
+  <!-- Struts projects is authorized for all user -->
+  <group_roles id="1" group_id="[null]" resource_id="1" role="user"/>
+
+
+  <!-- root project -->
+  <projects id="1" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
+            description="the description" long_name="Apache Struts"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="[null]" />
+  <snapshots id="1" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path=""/>
+  <snapshots id="10" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+             status="P" islast="[false]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-01 13:58:00.00" build_date="2008-12-01 13:58:00.00"
+             version="[null]" path=""/>
+
+  <!-- module -->
+  <projects id="2" root_id="1" kee="org.struts:struts-core" name="Struts Core"
+            scope="PRJ" qualifier="BRC" long_name="Struts Core"
+            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
+  <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1."/>
+
+  <!-- sub module -->
+  <projects id="3" root_id="1" kee="org.struts:struts-data" name="Struts Data"
+            scope="PRJ" qualifier="BRC" long_name="Struts Data"
+            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
+  <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1.2."/>
+
+  <!-- directory -->
+  <projects long_name="org.struts" id="4" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
+            name="src/org/struts" root_id="3"
+            description="[null]"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="src/org/struts" authorization_updated_at="[null]" />
+  <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="DIR" qualifier="PAC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1.2.3."/>
+
+  <!-- file -->
+  <projects long_name="org.struts.RequestContext" id="5" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
+            name="RequestContext.java" root_id="3"
+            description="[null]"
+            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]" />
+
+  <snapshots id="5" project_id="5" parent_snapshot_id="4" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="FIL" qualifier="CLA" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1.2.3.4."/>
+
+</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/db/ComponentDaoTest/shared.xml
new file mode 100644 (file)
index 0000000..77ef9f1
--- /dev/null
@@ -0,0 +1,75 @@
+<dataset>
+
+  <!-- Struts projects is authorized for all user -->
+  <group_roles id="1" group_id="[null]" resource_id="1" role="user"/>
+
+
+  <!-- root project -->
+  <projects id="1" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
+            description="the description" long_name="Apache Struts"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="2014-06-18" />
+  <snapshots id="1" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path=""/>
+  <snapshots id="10" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
+             status="P" islast="[false]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-01 13:58:00.00" build_date="2008-12-01 13:58:00.00"
+             version="[null]" path=""/>
+
+  <!-- module -->
+  <projects id="2" root_id="1" kee="org.struts:struts-core" name="Struts Core"
+            scope="PRJ" qualifier="BRC" long_name="Struts Core"
+            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
+  <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1."/>
+
+  <!-- directory -->
+  <projects long_name="org.struts" id="3" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
+            name="src/org/struts" root_id="2"
+            description="[null]"
+            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="src/org/struts" authorization_updated_at="[null]" />
+  <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="DIR" qualifier="PAC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1.2."/>
+
+  <!-- file -->
+  <projects long_name="org.struts.RequestContext" id="4" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
+            name="RequestContext.java" root_id="2"
+            description="[null]"
+            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]" />
+
+  <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
+             status="P" islast="[true]" purge_status="[null]"
+             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
+             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
+             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
+             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
+             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
+             depth="[null]" scope="FIL" qualifier="CLA" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
+             version="[null]" path="1.2.3."/>
+
+</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/empty.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/empty.xml
deleted file mode 100644 (file)
index 871dedc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<dataset>
-
-</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/insert-result.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/insert-result.xml
deleted file mode 100644 (file)
index 741a3eb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<dataset>
-
-  <projects id="1" kee="org.struts:struts-core:src/org/struts/RequestContext.java" name="RequestContext.java" long_name="org.struts.RequestContext"
-      qualifier="FIL" scope="FIL" language="java" path="src/org/struts/RequestContext.java" root_id="3"
-      description="[null]" enabled="[true]" copy_resource_id="[null]" person_id="[null]" deprecated_kee="[null]"
-      authorization_updated_at="2014-06-18" created_at="2014-06-18"
-      />
-
-</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/multi-modules.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/multi-modules.xml
deleted file mode 100644 (file)
index 771faf6..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<dataset>
-
-  <!-- Struts projects is authorized for all user -->
-  <group_roles id="1" group_id="[null]" resource_id="1" role="user"/>
-
-
-  <!-- root project -->
-  <projects id="1" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
-            description="the description" long_name="Apache Struts"
-            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="[null]" />
-  <snapshots id="1" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path=""/>
-  <snapshots id="10" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
-             status="P" islast="[false]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-01 13:58:00.00" build_date="2008-12-01 13:58:00.00"
-             version="[null]" path=""/>
-
-  <!-- module -->
-  <projects id="2" root_id="1" kee="org.struts:struts-core" name="Struts Core"
-            scope="PRJ" qualifier="BRC" long_name="Struts Core"
-            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
-  <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1."/>
-
-  <!-- sub module -->
-  <projects id="3" root_id="1" kee="org.struts:struts-data" name="Struts Data"
-            scope="PRJ" qualifier="BRC" long_name="Struts Data"
-            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
-  <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1.2."/>
-
-  <!-- directory -->
-  <projects long_name="org.struts" id="4" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
-            name="src/org/struts" root_id="3"
-            description="[null]"
-            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="src/org/struts" authorization_updated_at="[null]" />
-  <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="DIR" qualifier="PAC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1.2.3."/>
-
-  <!-- file -->
-  <projects long_name="org.struts.RequestContext" id="5" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
-            name="RequestContext.java" root_id="3"
-            description="[null]"
-            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]" />
-
-  <snapshots id="5" project_id="5" parent_snapshot_id="4" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="FIL" qualifier="CLA" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1.2.3.4."/>
-
-</dataset>
diff --git a/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/shared.xml b/server/sonar-server/src/test/resources/org/sonar/server/component/persistence/ComponentDaoTest/shared.xml
deleted file mode 100644 (file)
index 77ef9f1..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-<dataset>
-
-  <!-- Struts projects is authorized for all user -->
-  <group_roles id="1" group_id="[null]" resource_id="1" role="user"/>
-
-
-  <!-- root project -->
-  <projects id="1" root_id="[null]" scope="PRJ" qualifier="TRK" kee="org.struts:struts" name="Struts"
-            description="the description" long_name="Apache Struts"
-            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="[null]" authorization_updated_at="2014-06-18" />
-  <snapshots id="1" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path=""/>
-  <snapshots id="10" project_id="1" parent_snapshot_id="[null]" root_project_id="1" root_snapshot_id="[null]"
-             status="P" islast="[false]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="TRK" created_at="2008-12-01 13:58:00.00" build_date="2008-12-01 13:58:00.00"
-             version="[null]" path=""/>
-
-  <!-- module -->
-  <projects id="2" root_id="1" kee="org.struts:struts-core" name="Struts Core"
-            scope="PRJ" qualifier="BRC" long_name="Struts Core"
-            description="[null]" enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" authorization_updated_at="[null]" />
-  <snapshots id="2" project_id="2" parent_snapshot_id="1" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="PRJ" qualifier="BRC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1."/>
-
-  <!-- directory -->
-  <projects long_name="org.struts" id="3" scope="DIR" qualifier="DIR" kee="org.struts:struts-core:src/org/struts"
-            name="src/org/struts" root_id="2"
-            description="[null]"
-            enabled="[true]" language="[null]" copy_resource_id="[null]" person_id="[null]" path="src/org/struts" authorization_updated_at="[null]" />
-  <snapshots id="3" project_id="3" parent_snapshot_id="2" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="DIR" qualifier="PAC" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1.2."/>
-
-  <!-- file -->
-  <projects long_name="org.struts.RequestContext" id="4" scope="FIL" qualifier="FIL" kee="org.struts:struts-core:src/org/struts/RequestContext.java"
-            name="RequestContext.java" root_id="2"
-            description="[null]"
-            enabled="[true]" language="java" copy_resource_id="[null]" person_id="[null]" path="src/org/struts/RequestContext.java" authorization_updated_at="[null]" />
-
-  <snapshots id="4" project_id="4" parent_snapshot_id="3" root_project_id="1" root_snapshot_id="1"
-             status="P" islast="[true]" purge_status="[null]"
-             period1_mode="[null]" period1_param="[null]" period1_date="[null]"
-             period2_mode="[null]" period2_param="[null]" period2_date="[null]"
-             period3_mode="[null]" period3_param="[null]" period3_date="[null]"
-             period4_mode="[null]" period4_param="[null]" period4_date="[null]"
-             period5_mode="[null]" period5_param="[null]" period5_date="[null]"
-             depth="[null]" scope="FIL" qualifier="CLA" created_at="2008-12-02 13:58:00.00" build_date="2008-12-02 13:58:00.00"
-             version="[null]" path="1.2.3."/>
-
-</dataset>