--- /dev/null
+/*
+ * 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;
+ }
+}
--- /dev/null
+/*
+ * 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;
+++ /dev/null
-/*
- * 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;
- }
-}
+++ /dev/null
-/*
- * 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;
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;
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;
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;
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;
};
}
+ @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) {
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)
}
+
}
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;
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;
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;
--- /dev/null
+/*
+ * 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));
+ }
+}
+++ /dev/null
-/*
- * 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));
- }
-}
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
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;
--- /dev/null
+<dataset>
+
+</dataset>
--- /dev/null
+<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>
--- /dev/null
+<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>
--- /dev/null
+<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>
+++ /dev/null
-<dataset>
-
-</dataset>
+++ /dev/null
-<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>
+++ /dev/null
-<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>
+++ /dev/null
-<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>