Merge branch 'stable-2.11' * stable-2.11: xdocs: Fix a race condition in generating the temporary file name Change-Id: Ifa6317db83cfd154e47a2ee99e5d3513e7f278a3
diff --git a/BUCK b/BUCK index 3cca9ac..2bd5f04 100644 --- a/BUCK +++ b/BUCK
@@ -6,10 +6,12 @@ ASCIIDOCTOR = '//lib/asciidoctor:asciidoc_lib' DAISYDIFF = '//lib/daisydiff:daisydiff_lib' DOCX4J = '//lib/docx4j:docx4j_lib' + COMMONS_IO = '//lib/commons:io' else: ASCIIDOCTOR = '//plugins/x-docs/lib/asciidoctor:asciidoc_lib' DAISYDIFF = '//plugins/x-docs/lib/daisydiff:daisydiff_lib' DOCX4J = '//plugins/x-docs/lib/docx4j:docx4j_lib' + COMMONS_IO = '//plugins/x-docs/lib/commons:io' gerrit_plugin( name = 'x-docs', @@ -17,9 +19,7 @@ resources = glob(['src/main/**/*']), gwt_module = MODULE, manifest_entries = [ - 'Gerrit-PluginName: xdocs', 'Gerrit-ApiType: plugin', - 'Gerrit-ApiVersion: 2.11', 'Gerrit-HttpModule: com.googlesource.gerrit.plugins.xdocs.HttpModule', 'Gerrit-Module: com.googlesource.gerrit.plugins.xdocs.Module', 'Gerrit-InitStep: com.googlesource.gerrit.plugins.xdocs.XDocInit', @@ -28,6 +28,7 @@ ASCIIDOCTOR, DAISYDIFF, DOCX4J, + COMMONS_IO, ], )
diff --git a/VERSION b/VERSION index 920fe49..9df7bf7 100644 --- a/VERSION +++ b/VERSION
@@ -1,5 +1,5 @@ # Used by BUCK to include "Implementation-Version" in plugin Manifest. # If this file doesn't exist the output of 'git describe' is used # instead. -PLUGIN_VERSION = '2.11' +PLUGIN_VERSION = '2.12-SNAPSHOT'
diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK index e48e352..f1ab768 100644 --- a/lib/gerrit/BUCK +++ b/lib/gerrit/BUCK
@@ -1,12 +1,12 @@ include_defs('//bucklets/maven_jar.bucklet') -VER = '2.11.7' +VER = '2.12' REPO = MAVEN_CENTRAL maven_jar( name = 'plugin-api', id = 'com.google.gerrit:gerrit-plugin-api:' + VER, - sha1 = 'e49e930c5c4ce74fc2c4c1cde1ddfb3ff77d0d63', + sha1 = '8ce1f6e65078bbcf03a1758f96b3ebca19b7fe3c', attach_source = False, repository = REPO, license = 'Apache2.0', @@ -15,7 +15,7 @@ maven_jar( name = 'gwtui-api', id = 'com.google.gerrit:gerrit-plugin-gwtui:' + VER, - sha1 = '1dc70f829c0b5310141dd9bd12e1bafcda48724f', + sha1 = 'a7e7d82746b847678022242ec9eb44d1f16e8639', attach_source = False, repository = REPO, license = 'Apache2.0',
diff --git a/pom.xml b/pom.xml deleted file mode 100644 index f3eb9e2..0000000 --- a/pom.xml +++ /dev/null
@@ -1,355 +0,0 @@ -<!-- -Copyright (C) 2014 The Android Open Source Project - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - - <groupId>com.googlesource.gerrit.plugins.xdocs</groupId> - <artifactId>xdocs</artifactId> - <packaging>jar</packaging> - <version>2.11.7</version> - <name>xdocs</name> - - <properties> - <Gerrit-ApiType>plugin</Gerrit-ApiType> - <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion> - </properties> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-jar-plugin</artifactId> - <version>2.4</version> - <configuration> - <archive> - <manifestEntries> - <Gerrit-PluginName>xdocs</Gerrit-PluginName> - <Gerrit-HttpModule>com.googlesource.gerrit.plugins.xdocs.HttpModule</Gerrit-HttpModule> - <Gerrit-Module>com.googlesource.gerrit.plugins.xdocs.Module</Gerrit-Module> - <Gerrit-InitStep>com.googlesource.gerrit.plugins.xdocs.XDocInit</Gerrit-InitStep> - - <Implementation-Vendor>Gerrit Code Review</Implementation-Vendor> - <Implementation-URL>http://code.google.com/p/gerrit/</Implementation-URL> - - <Implementation-Title>${Gerrit-ApiType} ${project.artifactId}</Implementation-Title> - <Implementation-Version>${project.version}</Implementation-Version> - - <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType> - <Gerrit-ApiVersion>${Gerrit-ApiVersion}</Gerrit-ApiVersion> - </manifestEntries> - </archive> - </configuration> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>2.3.2</version> - <configuration> - <source>1.7</source> - <target>1.7</target> - <encoding>UTF-8</encoding> - </configuration> - </plugin> - - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>gwt-maven-plugin</artifactId> - <version>2.7.0</version> - <configuration> - <module>com.googlesource.gerrit.plugins.xdocs.XDocs</module> - <disableClassMetadata>true</disableClassMetadata> - <disableCastChecking>true</disableCastChecking> - <webappDirectory>${project.build.directory}/classes/static</webappDirectory> - </configuration> - <executions> - <execution> - <goals> - <goal>compile</goal> - </goals> - </execution> - </executions> - </plugin> - - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-shade-plugin</artifactId> - <version>2.3</version> - <configuration> - <promoteTransitiveDependencies>true</promoteTransitiveDependencies> - <createDependencyReducedPom>false</createDependencyReducedPom> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>shade</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - - <dependencies> - <dependency> - <groupId>com.google.gerrit</groupId> - <artifactId>gerrit-${Gerrit-ApiType}-api</artifactId> - <version>${Gerrit-ApiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.google.gerrit</groupId> - <artifactId>gerrit-plugin-gwtui</artifactId> - <version>${Gerrit-ApiVersion}</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.google.gwt</groupId> - <artifactId>gwt-user</artifactId> - <version>2.7.0</version> - <scope>provided</scope> - </dependency> - - <dependency> - <groupId>org.asciidoctor</groupId> - <artifactId>asciidoctorj</artifactId> - <version>1.5.1</version> - </dependency> - - <dependency> - <groupId>org.outerj.daisy</groupId> - <artifactId>daisydiff</artifactId> - <version>1.1</version> - </dependency> - - <dependency> - <groupId>org.docx4j</groupId> - <artifactId>docx4j</artifactId> - <version>3.2.1</version> - </dependency> - <dependency> - <groupId>org.antlr</groupId> - <artifactId>antlr</artifactId> - <version>3.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.antlr</groupId> - <artifactId>antlr-runtime</artifactId> - <version>3.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.antlr</groupId> - <artifactId>stringtemplate</artifactId> - <version>3.2</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.apache.avalon.framework</groupId> - <artifactId>avalon-framework-api</artifactId> - <version>4.3.1</version> - </dependency> - <dependency> - <groupId>org.apache.avalon.framework</groupId> - <artifactId>avalon-framework-impl</artifactId> - <version>4.3.1</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-anim</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-awt-util</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-bridge</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-css</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-dom</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-ext</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-extension</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-gvt</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-js</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-parser</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-script</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-svg-dom</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-svggen</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-transcoder</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-util</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>batik-xml</artifactId> - <version>1.7</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>fop</artifactId> - <version>1.1</version> - </dependency> - <dependency> - <groupId>org.apache.xmlgraphics</groupId> - <artifactId>xmlgraphics-commons</artifactId> - <version>1.5</version> - </dependency> - <dependency> - <groupId>org.apache.poi</groupId> - <artifactId>poi</artifactId> - <version>3.10.1</version> - </dependency> - <dependency> - <groupId>org.apache.poi</groupId> - <artifactId>poi-scratchpad</artifactId> - <version>3.10.1</version> - </dependency> - <dependency> - <groupId>commons-codec</groupId> - <artifactId>commons-codec</artifactId> - <version>1.4</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>1.4</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>commons-lang</groupId> - <artifactId>commons-lang</artifactId> - <version>2.5</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - <version>18.0</version> - <scope>provided</scope> - </dependency> - <dependency> - <groupId>org.plutext</groupId> - <artifactId>jaxb-svg11</artifactId> - <version>1.0.2</version> - </dependency> - <dependency> - <groupId>org.plutext</groupId> - <artifactId>jaxb-xmldsig-core</artifactId> - <version>1.0.0</version> - </dependency> - <dependency> - <groupId>org.plutext</groupId> - <artifactId>jaxb-xslfo</artifactId> - <version>1.0.1</version> - </dependency> - <dependency> - <groupId>net.engio</groupId> - <artifactId>mbassador</artifactId> - <version>1.2.0</version> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-api</artifactId> - <version>1.7.7</version> - </dependency> - <dependency> - <groupId>net.arnx</groupId> - <artifactId>wmf2svg</artifactId> - <version>0.9.7</version> - </dependency> - <dependency> - <groupId>xalan</groupId> - <artifactId>xalan</artifactId> - <version>2.7.2</version> - </dependency> - <dependency> - <groupId>xalan</groupId> - <artifactId>serializer</artifactId> - <version>2.7.2</version> - </dependency> - <dependency> - <groupId>xml-apis</groupId> - <artifactId>xml-apis</artifactId> - <version>1.3.04</version> - </dependency> - </dependencies> - - <repositories> - <repository> - <id>snapshot-repository</id> - <url>https://oss.sonatype.org/content/repositories/snapshots/</url> - </repository> - <repository> - <id>atlassian</id> - <url>https://maven.atlassian.com/content/repositories/atlassian-3rdparty</url> - </repository> - </repositories> -</project>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java index 70506c5..b90db61 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
@@ -18,6 +18,7 @@ import com.google.gerrit.extensions.annotations.Exports; import com.google.gerrit.extensions.annotations.PluginName; import com.google.gerrit.extensions.client.GerritTopMenu; +import com.google.gerrit.extensions.config.FactoryModule; import com.google.gerrit.extensions.registration.DynamicMap; import com.google.gerrit.extensions.registration.DynamicSet; import com.google.gerrit.extensions.webui.BranchWebLink; @@ -25,7 +26,6 @@ import com.google.gerrit.extensions.webui.FileWebLink; import com.google.gerrit.extensions.webui.ProjectWebLink; import com.google.gerrit.extensions.webui.TopMenu; -import com.google.gerrit.server.config.FactoryModule; import com.google.inject.Inject; import com.googlesource.gerrit.plugins.xdocs.formatter.AsciidoctorFormatter;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocInit.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocInit.java index 0a3323b..d916d1d 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocInit.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocInit.java
@@ -44,7 +44,8 @@ @Override public void run() throws Exception { - File pluginConfig = new File(sitePaths.etc_dir, pluginName + ".config"); + File pluginConfig = new File( + sitePaths.etc_dir.toFile(), pluginName + ".config"); if (!pluginConfig.exists()) { ui.message("\n"); ui.header("%s plugin", pluginName); @@ -57,11 +58,14 @@ pluginConfig.getAbsolutePath()); } - extract(new File(sitePaths.static_dir, "xdocs/css/unified.css"), + extract(new File(sitePaths.static_dir.toFile(), + "xdocs/css/unified.css").toPath(), XDocInit.class, "diff/unified.css"); - extract(new File(sitePaths.static_dir, "xdocs/css/sidebyside-a.css"), + extract(new File(sitePaths.static_dir.toFile(), + "xdocs/css/sidebyside-a.css").toPath(), XDocInit.class, "diff/sidebyside-a.css"); - extract(new File(sitePaths.static_dir, "xdocs/css/sidebyside-b.css"), + extract(new File(sitePaths.static_dir.toFile(), + "xdocs/css/sidebyside-b.css").toPath(), XDocInit.class, "diff/sidebyside-b.css"); }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java index d63502d..ebae46c 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -141,8 +141,7 @@ projectControl); String revB = getRevision(key.revisionB, projectControl); - Repository repo = repoManager.openRepository(key.project); - try { + try (Repository repo = repoManager.openRepository(key.project)) { ObjectId revId = resolveRevision(repo, key.diffMode == DiffMode.NO_DIFF @@ -185,8 +184,6 @@ } rsc.send(req, res); return; - } finally { - repo.close(); } } catch (RepositoryNotFoundException | NoSuchProjectException | ResourceNotFoundException | AuthException | RevisionSyntaxException e) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java index 1d7cf4e..5ec6172 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
@@ -113,36 +113,31 @@ } Project.NameKey p = new Project.NameKey(projectName); - try { - Repository repo = repoManager.openRepository(p); - try { - ObjectId revId = repo.resolve(revision); - if (revId == null) { - return null; - } - Resource rsc = docCache.get(formatter, p, fileName, revId, null, null); - if (rsc != Resource.NOT_FOUND) { - StringBuilder url = new StringBuilder(); - if (framed) { - url.append("#/x/"); - } else { - url.append("plugins/"); - } - url.append(pluginName); - url.append(XDocServlet.PATH_PREFIX); - url.append(Url.encode(projectName)); - if (revision != null && !Constants.HEAD.equals(revision)) { - url.append("/rev/"); - url.append(Url.encode(revision)); - } - url.append("/"); - url.append(fileName); - return url.toString(); + try (Repository repo = repoManager.openRepository(p)) { + ObjectId revId = repo.resolve(revision); + if (revId == null) { + return null; + } + Resource rsc = docCache.get(formatter, p, fileName, revId, null, null); + if (rsc != Resource.NOT_FOUND) { + StringBuilder url = new StringBuilder(); + if (framed) { + url.append("#/x/"); } else { - return null; + url.append("plugins/"); } - } finally { - repo.close(); + url.append(pluginName); + url.append(XDocServlet.PATH_PREFIX); + url.append(Url.encode(projectName)); + if (revision != null && !Constants.HEAD.equals(revision)) { + url.append("/rev/"); + url.append(Url.encode(revision)); + } + url.append("/"); + url.append(fileName); + return url.toString(); + } else { + return null; } } catch (IOException e) { log.error("Failed to check for project documentation", e);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java index d95b5f4..a4507a5 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java
@@ -41,7 +41,6 @@ public final boolean isOpen() { switch (getStatus()) { case NEW: - case SUBMITTED: case DRAFT: return true; default:
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md index 4c56ed6..8b5de99 100644 --- a/src/main/resources/Documentation/build.md +++ b/src/main/resources/Documentation/build.md
@@ -1,10 +1,7 @@ Build ===== -This plugin can be built with Buck or Maven. - -Buck ----- +This plugin is built using Buck. Two build modes are supported: Standalone and in Gerrit tree. The standalone build mode is recommended, as this mode doesn't require @@ -62,16 +59,3 @@ ``` ./tools/eclipse/project.py ``` - -Maven ------ - -Note that the Maven build is provided for compatibility reasons, but -it is considered to be deprecated and will be removed in a future -version of this plugin. - -To build with Maven, run - -``` -mvn clean package -```