From a76ddc66f2aa8344d326f148cf3899b1f3274ce9 Mon Sep 17 00:00:00 2001 From: David Mason Date: Wed, 30 Jan 2013 11:07:43 +1000 Subject: [PATCH 1/6] rhbz896299 make labels consistent for input and display of source control URLs --- zanata-war/src/main/resources/messages.properties | 6 ++---- .../src/main/webapp/WEB-INF/layout/project_edit_form.xhtml | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/zanata-war/src/main/resources/messages.properties b/zanata-war/src/main/resources/messages.properties index 725758125c..020bd0e5d7 100644 --- a/zanata-war/src/main/resources/messages.properties +++ b/zanata-war/src/main/resources/messages.properties @@ -564,10 +564,8 @@ jsf.Slug=Slug jsf.SourceCheckoutUrl=Source Checkout jsf.SourceDocuments=Source Documents jsf.SourceDocs=Source Docs -jsf.SourceUrlHumanReadable=Source URL (human-readable) -jsf.SourceUrlHumanReadableExample=e.g. https://github.com/zanata/zanata -jsf.SourceUrlMachineReadable=Source URL (machine-readable) -jsf.SourceUrlMachineReadableExample=e.g. git@github.com:zanata/zanata.git +jsf.SourceUrlHumanReadableExample=Link to human-readable source, e.g. https://github.com/zanata/zanata +jsf.SourceUrlMachineReadableExample=URL for checkout of source by version control software, e.g. git@github.com:zanata/zanata.git jsf.Start=Start jsf.Statistics=Statistics jsf.Status=Status diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/project_edit_form.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/project_edit_form.xhtml index c91f23f7d4..2c7bc6998f 100644 --- a/zanata-war/src/main/webapp/WEB-INF/layout/project_edit_form.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/layout/project_edit_form.xhtml @@ -47,7 +47,7 @@ - #{messages['jsf.SourceUrlHumanReadable']} + #{messages['jsf.viewSourceFiles']} @@ -58,7 +58,7 @@ - #{messages['jsf.SourceUrlMachineReadable']} + #{messages['jsf.SourceCheckoutUrl']} From 722c0a42328b6e812405a03c17b013687c2b31cf Mon Sep 17 00:00:00 2001 From: David Mason Date: Wed, 30 Jan 2013 11:54:26 +1000 Subject: [PATCH 2/6] rhbz896299 change source checkout url label to include download --- zanata-war/src/main/resources/messages.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zanata-war/src/main/resources/messages.properties b/zanata-war/src/main/resources/messages.properties index 020bd0e5d7..5aa793b4b4 100644 --- a/zanata-war/src/main/resources/messages.properties +++ b/zanata-war/src/main/resources/messages.properties @@ -561,7 +561,7 @@ jsf.SignUp=Sign Up jsf.SiteMap=Site map jsf.SizeMembers=#{languageTeamAction.locale.members.size} members jsf.Slug=Slug -jsf.SourceCheckoutUrl=Source Checkout +jsf.SourceCheckoutUrl=Source Download/Checkout jsf.SourceDocuments=Source Documents jsf.SourceDocs=Source Docs jsf.SourceUrlHumanReadableExample=Link to human-readable source, e.g. https://github.com/zanata/zanata From 1aef3f008af8da4c5f1f7a81e50d9fc96035bee6 Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Wed, 30 Jan 2013 11:54:57 +1000 Subject: [PATCH 3/6] fix test failure --- pom.xml | 2 +- .../zanata/rest/service/CopyTransRestTest.java | 8 ++++---- .../org/zanata/rest/service/RestUtilsTest.java | 3 ++- .../zanata/rest/service/raw/FileRestTest.java | 2 +- .../rest/service/raw/StatisticsRestTest.java | 16 ++++++++-------- .../service/impl/StatisticsServiceImplTest.java | 8 ++++---- .../test/model/TextFlowTestData.dbunit.xml | 4 ++-- 7 files changed, 22 insertions(+), 21 deletions(-) diff --git a/pom.xml b/pom.xml index bb5ad11561..23c84c3296 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 2.2.2.Final 2.1.1-SNAPSHOT - 1.6.0 + 2.0.2-SNAPSHOT 2.1.1 3.3.3.Final diff --git a/zanata-war/src/test/java/org/zanata/rest/service/CopyTransRestTest.java b/zanata-war/src/test/java/org/zanata/rest/service/CopyTransRestTest.java index 04d72ac5aa..453088cbb3 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/CopyTransRestTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/CopyTransRestTest.java @@ -96,7 +96,7 @@ public void startCopyTrans() { CopyTransResource copyTransResource = getClientRequestFactory().createProxy(CopyTransResource.class); - copyTransResource.startCopyTrans("sample-project", "1.0", "/my/path/document.txt"); + copyTransResource.startCopyTrans("sample-project", "1.0", "my/path/document.txt"); verify(mockIdentity).getCredentials(); } @@ -105,10 +105,10 @@ public void startCopyTransAndCheckStatus() { CopyTransResource copyTransResource = getClientRequestFactory().createProxy(CopyTransResource.class); - copyTransResource.startCopyTrans("sample-project", "1.0", "/my/path/document.txt"); + copyTransResource.startCopyTrans("sample-project", "1.0", "my/path/document.txt"); verify(mockIdentity).getCredentials(); - CopyTransStatus status = copyTransResource.getCopyTransStatus("sample-project", "1.0", "/my/path/document.txt"); + CopyTransStatus status = copyTransResource.getCopyTransStatus("sample-project", "1.0", "my/path/document.txt"); assertThat(status, notNullValue()); verify(mockIdentity, atLeast(1)).checkPermission(eq("copy-trans"), anyVararg()); } @@ -137,7 +137,7 @@ public void unauthorizedStartCopyTrans() try { - copyTransResource.startCopyTrans("sample-project", "1.0", "/my/path/document.txt"); + copyTransResource.startCopyTrans("sample-project", "1.0", "my/path/document.txt"); assertThat("startCopyTrans should have returned 401 in the form of an exception.", false); } catch (ClientResponseFailure failure) diff --git a/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java b/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java index a06e0dea2c..69c55ebcee 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/RestUtilsTest.java @@ -11,6 +11,7 @@ import javax.ws.rs.core.MediaType; +import org.jboss.resteasy.core.Headers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.DataProvider; @@ -69,7 +70,7 @@ private void testRestUtilUnmarshall(T entity, Class log.info("expect:" + testStr); messageBody = new ByteArrayInputStream(testStr.getBytes("UTF-8")); - T unmarshall = (T) RestUtils.unmarshall(type, messageBody, MediaType.APPLICATION_XML_TYPE, null); + T unmarshall = (T) RestUtils.unmarshall(type, messageBody, MediaType.APPLICATION_XML_TYPE, new Headers()); Log.info("got:" + unmarshall.toString()); assertThat(entity.toString(), is(testStr)); } diff --git a/zanata-war/src/test/java/org/zanata/rest/service/raw/FileRestTest.java b/zanata-war/src/test/java/org/zanata/rest/service/raw/FileRestTest.java index 0ec709a34c..17d0511139 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/raw/FileRestTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/raw/FileRestTest.java @@ -62,7 +62,7 @@ public void getPo() throws Exception protected void prepareRequest(EnhancedMockHttpServletRequest request) { request.setQueryString(""); // Need to add this when using query params or else the test fails - request.addQueryParameter("docId", "/my/path/document.txt"); + request.addQueryParameter("docId", "my/path/document.txt"); } @Override diff --git a/zanata-war/src/test/java/org/zanata/rest/service/raw/StatisticsRestTest.java b/zanata-war/src/test/java/org/zanata/rest/service/raw/StatisticsRestTest.java index dd27664045..72ea371749 100644 --- a/zanata-war/src/test/java/org/zanata/rest/service/raw/StatisticsRestTest.java +++ b/zanata-war/src/test/java/org/zanata/rest/service/raw/StatisticsRestTest.java @@ -141,7 +141,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) public void getDocumentStatisticsXml() throws Exception { new ResourceRequestEnvironment.ResourceRequest(unauthorizedEnvironment, ResourceRequestEnvironment.Method.GET, - "/restv1/stats/proj/sample-project/iter/1.0/doc//my/path/document.txt") + "/restv1/stats/proj/sample-project/iter/1.0/doc/my/path/document.txt") { @Override protected void prepareRequest(EnhancedMockHttpServletRequest request) @@ -156,7 +156,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) assertJaxbUnmarshal(response, ContainerTranslationStatistics.class); ContainerTranslationStatistics stats = jaxbUnmarshal(response, ContainerTranslationStatistics.class); - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); assertThat(stats.getRefs().size(), greaterThan(0)); assertThat(stats.getDetailedStats(), nullValue()); // No detailed stats assertThat(stats.getStats().size(), greaterThan(0)); @@ -178,7 +178,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) public void getDocumentStatisticsXmlWithDetails() throws Exception { new ResourceRequestEnvironment.ResourceRequest(unauthorizedEnvironment, ResourceRequestEnvironment.Method.GET, - "/restv1/stats/proj/sample-project/iter/1.0/doc//my/path/document.txt") + "/restv1/stats/proj/sample-project/iter/1.0/doc/my/path/document.txt") { @Override protected void prepareRequest(EnhancedMockHttpServletRequest request) @@ -194,7 +194,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) assertJaxbUnmarshal(response, ContainerTranslationStatistics.class); ContainerTranslationStatistics stats = jaxbUnmarshal(response, ContainerTranslationStatistics.class); - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); assertThat(stats.getRefs().size(), greaterThan(0)); //assertThat(stats.getDetailedStats().size(), greaterThan(0)); // No detailed stats (maybe later) assertThat(stats.getStats().size(), greaterThan(0)); @@ -303,7 +303,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) public void getDocumentStatisticsJson() throws Exception { new ResourceRequestEnvironment.ResourceRequest(unauthorizedEnvironment, ResourceRequestEnvironment.Method.GET, - "/restv1/stats/proj/sample-project/iter/1.0/doc//my/path/document.txt") + "/restv1/stats/proj/sample-project/iter/1.0/doc/my/path/document.txt") { @Override protected void prepareRequest(EnhancedMockHttpServletRequest request) @@ -318,7 +318,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) assertJsonUnmarshal(response, ContainerTranslationStatistics.class); ContainerTranslationStatistics stats = jsonUnmarshal(response, ContainerTranslationStatistics.class); - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); assertThat(stats.getRefs().size(), greaterThan(0)); assertThat(stats.getDetailedStats(), nullValue()); // No detailed stats assertThat(stats.getStats().size(), greaterThan(0)); @@ -340,7 +340,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) public void getDocumentStatisticsJsonWithDetails() throws Exception { new ResourceRequestEnvironment.ResourceRequest(unauthorizedEnvironment, ResourceRequestEnvironment.Method.GET, - "/restv1/stats/proj/sample-project/iter/1.0/doc//my/path/document.txt") + "/restv1/stats/proj/sample-project/iter/1.0/doc/my/path/document.txt") { @Override protected void prepareRequest(EnhancedMockHttpServletRequest request) @@ -356,7 +356,7 @@ protected void onResponse(EnhancedMockHttpServletResponse response) assertJsonUnmarshal(response, ContainerTranslationStatistics.class); ContainerTranslationStatistics stats = jsonUnmarshal(response, ContainerTranslationStatistics.class); - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); assertThat(stats.getRefs().size(), greaterThan(0)); //assertThat(stats.getDetailedStats().size(), greaterThan(0)); // No detailed stats (maybe later) assertThat(stats.getStats().size(), greaterThan(0)); diff --git a/zanata-war/src/test/java/org/zanata/service/impl/StatisticsServiceImplTest.java b/zanata-war/src/test/java/org/zanata/service/impl/StatisticsServiceImplTest.java index c0534d925a..40e45af848 100644 --- a/zanata-war/src/test/java/org/zanata/service/impl/StatisticsServiceImplTest.java +++ b/zanata-war/src/test/java/org/zanata/service/impl/StatisticsServiceImplTest.java @@ -159,10 +159,10 @@ public void getSimpleDocumentStatisticsForAllLocales() { StatisticsServiceImpl statisticsService = seam.autowire(StatisticsServiceImpl.class); ContainerTranslationStatistics stats = - statisticsService.getStatistics("sample-project", "1.0", "/my/path/document.txt", false, new String[]{}); + statisticsService.getStatistics("sample-project", "1.0", "my/path/document.txt", false, new String[]{}); // Make sure the id matches - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); // Make sure there are links assertThat(stats.getRefs().size(), greaterThan(0)); @@ -187,10 +187,10 @@ public void getDetailedDocumentStatisticsForSpecificLocales() StatisticsServiceImpl statisticsService = seam.autowire(StatisticsServiceImpl.class); ContainerTranslationStatistics stats = - statisticsService.getStatistics("sample-project", "1.0", "/my/path/document.txt", true, locales); + statisticsService.getStatistics("sample-project", "1.0", "my/path/document.txt", true, locales); // Make sure the id matches - assertThat(stats.getId(), is("/my/path/document.txt")); + assertThat(stats.getId(), is("my/path/document.txt")); // Make sure there are links assertThat(stats.getRefs().size(), greaterThan(0)); diff --git a/zanata-war/src/test/resources/org/zanata/test/model/TextFlowTestData.dbunit.xml b/zanata-war/src/test/resources/org/zanata/test/model/TextFlowTestData.dbunit.xml index c6b26e614d..3944e263c7 100644 --- a/zanata-war/src/test/resources/org/zanata/test/model/TextFlowTestData.dbunit.xml +++ b/zanata-war/src/test/resources/org/zanata/test/model/TextFlowTestData.dbunit.xml @@ -6,10 +6,10 @@ creationDate="2009-09-01 20:30:16" lastChanged="2009-09-01 20:30:16" contentType="text/plain" - docId="/my/path/document.txt" + docId="my/path/document.txt" locale="4" name="document.txt" - path="/my/path" + path="my/path" project_iteration_id="1" revision="1" obsolete="0" From 34f06cb9dd8bbd813c71a23f375196b5894f9bbc Mon Sep 17 00:00:00 2001 From: David Mason Date: Thu, 31 Jan 2013 10:20:58 +1000 Subject: [PATCH 4/6] prevent project source control URLs being overwritten by null values from clients --- .../java/org/zanata/rest/service/ProjectService.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/rest/service/ProjectService.java b/zanata-war/src/main/java/org/zanata/rest/service/ProjectService.java index 5090be9092..0b1b96d286 100644 --- a/zanata-war/src/main/java/org/zanata/rest/service/ProjectService.java +++ b/zanata-war/src/main/java/org/zanata/rest/service/ProjectService.java @@ -246,8 +246,16 @@ public static void transfer(Project from, HProject to) to.setDefaultProjectType(from.getDefaultType()); // TODO Currently all Projects are created as Current // to.setStatus(from.getStatus()); - to.setSourceViewURL(from.getSourceViewURL()); - to.setSourceCheckoutURL(from.getSourceCheckoutURL()); + + // keep source URLs unless they are specifically overwritten + if (from.getSourceViewURL() != null) + { + to.setSourceViewURL(from.getSourceViewURL()); + } + if (from.getSourceCheckoutURL() != null) + { + to.setSourceCheckoutURL(from.getSourceCheckoutURL()); + } } public static void transfer(HProject from, Project to) From 400a31ac1dd915db43eabd987a0db61799fc990f Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Thu, 31 Jan 2013 10:59:44 +1000 Subject: [PATCH 5/6] change HQL so that it will work in H2 --- .../main/java/org/zanata/dao/DocumentDAO.java | 16 ++++++---------- zanata-war/src/test/resources/log4j.xml | 6 ++++++ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/dao/DocumentDAO.java b/zanata-war/src/main/java/org/zanata/dao/DocumentDAO.java index 0b4f6a10c6..5d335e1fb9 100644 --- a/zanata-war/src/main/java/org/zanata/dao/DocumentDAO.java +++ b/zanata-war/src/main/java/org/zanata/dao/DocumentDAO.java @@ -151,22 +151,18 @@ public Long getTotalWordCountForDocument(HDocument document) public HTextFlowTarget getLastTranslated(long docId, LocaleId localeId) { - StringBuilder queryStr = new StringBuilder( - "select tft, max(tft.lastChanged)" + - "from HTextFlowTarget tft " + - "where tft.textFlow.document.id = :docId " + - "and tft.locale.localeId = :localeId" - - ); + String query = "from HTextFlowTarget tft " + + "where tft.textFlow.document.id = :docId and tft.locale.localeId = :localeId and " + + "tft.lastChanged = (select max(t.lastChanged) from HTextFlowTarget t " + + "where t.id = :docId and t.locale.localeId = :localeId )"; - Query q = getSession().createQuery( queryStr.toString() ); + Query q = getSession().createQuery( query ); q.setParameter("docId", docId); q.setParameter("localeId", localeId); q.setCacheable(true); q.setComment("DocumentDAO.getLastTranslated"); - Object[] obj = (Object[]) q.uniqueResult(); - return (HTextFlowTarget) obj[0]; + return (HTextFlowTarget) q.uniqueResult(); } diff --git a/zanata-war/src/test/resources/log4j.xml b/zanata-war/src/test/resources/log4j.xml index 3a5dc16777..cef8d3c293 100644 --- a/zanata-war/src/test/resources/log4j.xml +++ b/zanata-war/src/test/resources/log4j.xml @@ -21,6 +21,12 @@ --> + + From d6090585dcf928681fbc8449810454aa474c1228 Mon Sep 17 00:00:00 2001 From: David Mason Date: Thu, 31 Jan 2013 12:13:15 +1000 Subject: [PATCH 6/6] rhbz896356 use stream size when creating blob for document upload --- .../src/main/java/org/zanata/rest/service/FileService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zanata-war/src/main/java/org/zanata/rest/service/FileService.java b/zanata-war/src/main/java/org/zanata/rest/service/FileService.java index f920ba94cd..df101623d5 100644 --- a/zanata-war/src/main/java/org/zanata/rest/service/FileService.java +++ b/zanata-war/src/main/java/org/zanata/rest/service/FileService.java @@ -419,7 +419,7 @@ private HDocumentUpload saveFirstUploadPart(String projectSlug, String iteration private void saveUploadPart(DocumentFileUploadForm uploadForm, HDocumentUpload upload) throws IOException { Blob partContent; - partContent = Hibernate.createBlob(uploadForm.getFileStream()); + partContent = Hibernate.createBlob(uploadForm.getFileStream(), uploadForm.getSize().intValue()); HDocumentUploadPart newPart = new HDocumentUploadPart(); newPart.setContent(partContent); upload.getParts().add(newPart);