Mercurial > hg > release > heapstats-2.1
changeset 238:55773172374f
Bug 3219: Upload artifacts to the Maven Central Repository
Reviewed-by: yasuenag
GitHub: https://github.com/HeapStats/heapstats/pull/105
line wrap: on
line diff
--- a/ChangeLog Mon Jun 26 16:53:50 2017 +0900 +++ b/ChangeLog Mon Jun 26 21:05:32 2017 +0900 @@ -1,6 +1,10 @@ +2017-06-26 KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp> + + * Bug 3219: Upload artifacts to the Maven Central Repository + 2017-06-26 Yasumasa Suenaga <yasuenag@gmail.com> - * Bug 3405: HeapStats Agent cannot be built on CentOS 6 after Bug 3403 + * Bug 3407: [TEST] jcmd should not be run for safepoint in ThreadExhausted tests 2017-06-21 KUBOTA Yuji <kubota.yuji@lab.ntt.co.jp>
--- a/Makefile.am Mon Jun 26 16:53:50 2017 +0900 +++ b/Makefile.am Mon Jun 26 21:05:32 2017 +0900 @@ -32,6 +32,7 @@ $(INSTALL_DATA) $(ANALYZER_DIR)/heapstats.properties $(DESTDIR)/$(libexecdir) $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-core.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-mbean.jar $(DESTDIR)/$(libexecdir)/lib + $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-jmx-helper.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(ANALYZER_DIR)/lib/jgraphx.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(CLI_DIR)/heapstats-cli.jar $(DESTDIR)/$(libexecdir) $(INSTALL_PROGRAM) $(srcdir)/analyzer/cli/heapstats-cli $(DESTDIR)/$(bindir)
--- a/Makefile.in Mon Jun 26 16:53:50 2017 +0900 +++ b/Makefile.in Mon Jun 26 21:05:32 2017 +0900 @@ -534,7 +534,7 @@ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir @@ -560,7 +560,7 @@ @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -578,7 +578,7 @@ distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -588,7 +588,7 @@ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac @@ -807,6 +807,7 @@ $(INSTALL_DATA) $(ANALYZER_DIR)/heapstats.properties $(DESTDIR)/$(libexecdir) $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-core.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-mbean.jar $(DESTDIR)/$(libexecdir)/lib + $(INSTALL_DATA) $(ANALYZER_DIR)/lib/heapstats-jmx-helper.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(ANALYZER_DIR)/lib/jgraphx.jar $(DESTDIR)/$(libexecdir)/lib $(INSTALL_DATA) $(CLI_DIR)/heapstats-cli.jar $(DESTDIR)/$(libexecdir) $(INSTALL_PROGRAM) $(srcdir)/analyzer/cli/heapstats-cli $(DESTDIR)/$(bindir)
--- a/analyzer/cli/heapstats-cli.iml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/heapstats-cli.iml Mon Jun 26 21:05:32 2017 +0900 @@ -10,7 +10,8 @@ </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="heapstats-jmx" /> <orderEntry type="module" module-name="heapstats-mbean" /> <orderEntry type="module" module-name="heapstats-core" /> </component> -</module> \ No newline at end of file +</module>
--- a/analyzer/cli/pom.xml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -23,14 +23,47 @@ <parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats</artifactId> - <version>2.0.trunk</version> + <version>2.1-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats-cli</artifactId> + <version>2.1-SNAPSHOT</version> <packaging>jar</packaging> + <name>HeapStats CLI</name> + <description>Command Line Interface for HeapStats Analyzer</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> @@ -42,6 +75,24 @@ <name>NTT OSS Center</name> </organization> + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-jmx-helper</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-mbean</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-core</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + <build> <plugins> <plugin> @@ -74,7 +125,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> - <version>2.5.5</version> + <version>3.0.0</version> <configuration> <descriptors> <descriptor>src/main/assembly/distribution.xml</descriptor> @@ -91,19 +142,78 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.3</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>deploy</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <phase>deploy</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> - - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>heapstats-mbean</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>heapstats-core</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>
--- a/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/CliMain.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/CliMain.java Mon Jun 26 21:05:32 2017 +0900 @@ -79,7 +79,7 @@ Throwable rootCause = thrwbl; // Find root cause of exception. - // Exceptions is recuesive. So we need to track exception(s) through Throwable#getCause(). + // Exceptions is recursive. So we need to track exception(s) through Throwable#getCause(). while(rootCause.getCause() != null){ rootCause = rootCause.getCause(); }
--- a/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/Options.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/Options.java Mon Jun 26 21:05:32 2017 +0900 @@ -178,9 +178,9 @@ System.out.println(" -end : End ID"); System.out.println(); System.out.println("mode:"); - System.out.println(" -log : Processs HeapStats resource log file."); - System.out.println(" -snapshot: Processs HeapStats snapshot file."); - System.out.println(" -event : Processs HeapStats thread recorder file."); + System.out.println(" -log : Process HeapStats resource log file."); + System.out.println(" -snapshot: Process HeapStats snapshot file."); + System.out.println(" -event : Process HeapStats thread recorder file."); System.out.println(" -jmx : Control remote HeapStats agent through JMX."); System.out.println(); System.out.println("options:"); @@ -204,7 +204,7 @@ System.out.println(" -d <p|c>: Select the direction to traverse references. p means parent, c means child."); System.out.println(" -e <CSV file> : Dump class histogram(s) as CSV."); System.out.println(" -g <CSV file> : Dump GC information as CSV."); - System.out.println(" -event: Processs HeapStats thread recorder file."); + System.out.println(" -event: Process HeapStats thread recorder file."); System.out.println(" -showids : List all IDs in files."); System.out.println(" -threads: List all thread IDs in files."); System.out.println(" -id <ID>: Choose specified thread ID.");
--- a/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/processor/CliProcessor.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/processor/CliProcessor.java Mon Jun 26 21:05:32 2017 +0900 @@ -18,7 +18,7 @@ package jp.co.ntt.oss.heapstats.cli.processor; /** - * Interfafce of CLI Processor. + * Interface of CLI Processor. * CLI task should implement this interface. * * @author Yasumasa Suenaga
--- a/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/processor/ThreadRecordProcessor.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/cli/src/main/java/jp/co/ntt/oss/heapstats/cli/processor/ThreadRecordProcessor.java Mon Jun 26 21:05:32 2017 +0900 @@ -46,8 +46,6 @@ public ThreadRecordProcessor(Options options) { this.options = options; } - - /** * {@inheritDoc}
--- a/analyzer/core/heapstats-core.iml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/heapstats-core.iml Mon Jun 26 21:05:32 2017 +0900 @@ -9,6 +9,5 @@ </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> - <orderEntry type="module" module-name="heapstats-mbean" /> </component> -</module> \ No newline at end of file +</module>
--- a/analyzer/core/pom.xml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -23,14 +23,60 @@ <parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats</artifactId> - <version>2.0.trunk</version> + <version>2.1-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats-core</artifactId> + <version>2.1-SNAPSHOT</version> <packaging>jar</packaging> + <name>HeapStats Analyzer Core</name> + + <description>A core Java library for HeapStats analyzer</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> + + <distributionManagement> + <snapshotRepository> + <id>ossrh</id> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </snapshotRepository> + <repository> + <id>ossrh</id> + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + </repository> + </distributionManagement> + <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> @@ -39,13 +85,6 @@ <organization> <name>NTT OSS Center</name> </organization> - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>heapstats-mbean</artifactId> - <version>${project.version}</version> - </dependency> - </dependencies> <build> <plugins> <plugin> @@ -62,10 +101,90 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> + </plugin> + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>1.6.7</version> + <extensions>true</extensions> <configuration> - <finalName>heapstats-core</finalName> + <serverId>ossrh</serverId> + <nexusUrl>https://oss.sonatype.org/</nexusUrl> + <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.3</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>deploy</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <phase>deploy</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/ArchiveData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/ArchiveData.java Mon Jun 26 21:05:32 2017 +0900 @@ -87,7 +87,7 @@ * Constructor of ArchiveData. * * @param log LogData. This value must be included archive data. - * @throws java.io.IOException + * @throws java.io.IOException if heapstats_archive is not found */ public ArchiveData(LogData log) throws IOException{ this(log, null); @@ -280,7 +280,12 @@ } } - + + /** + * Build zip entry. + * + * @throws IOException + */ private void processZipEntry(ZipFile archive, ZipEntry entry) throws IOException{ switch(entry.getName()){ case "envInfo.txt": @@ -315,7 +320,7 @@ /** * Parsing Archive data. - * @throws java.io.IOException + * @throws java.io.IOException if could not read or/and write archive. */ public void parseArchive() throws IOException{ @@ -336,6 +341,9 @@ parsed = true; } + /** + * {@inheritDoc} + */ @Override protected void finalize() throws Throwable { try { @@ -387,7 +395,7 @@ * * @param file File to be got. * @return Contents of file. - * @throws IOException + * @throws IOException if file not found. */ public String getFileContents(String file) throws IOException{ Path filePath = Paths.get(extractPath.getAbsolutePath(), file);
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/DiffData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/DiffData.java Mon Jun 26 21:05:32 2017 +0900 @@ -62,8 +62,8 @@ * Constructor of DiffData. * Each fields is based on "current - prev" . * - * @param prev - * @param current + * @param prev Previous log data + * @param current Current log data */ public DiffData(LogData prev, LogData current){ dateTime = current.getDateTime(); @@ -143,7 +143,6 @@ /** * Get %user of java process. - * * @return %user */ public double getJavaUserUsage() {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/LogData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/LogData.java Mon Jun 26 21:05:32 2017 +0900 @@ -82,7 +82,7 @@ * * @param csv CSV data to be parsed. * @param logdir Directory to deflate if parser finds log archive. - * @throws IllegalArgumentException + * @throws IllegalArgumentException If given csv data is not valid. */ public void parseFromCSV(String csv, String logdir) throws IllegalArgumentException{ String[] csvArray = csv.split(","); @@ -236,7 +236,7 @@ /** * Get soft IRQ time of system. - * @return soft IRQ time of system. + * @return Soft IRQ time of system. */ public long getSystemSoftIRQTime() { return systemSoftIRQTime; @@ -291,7 +291,7 @@ } /** - * Get archive path when trouble occurrs. + * Get archive path when trouble occurs. * @return Archive path. */ public String getArchivePath() { @@ -299,11 +299,11 @@ } /** - * This method compares with another LogData. + * Compares with another LogData. * This method is based on dateTime field. * - * @param o - * @return + * @param o Log data + * @return Compared result. */ @Override public int compareTo(LogData o) {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/SummaryData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/log/SummaryData.java Mon Jun 26 21:05:32 2017 +0900 @@ -22,7 +22,7 @@ import java.util.List; /** - * Summary data class.<br/> + * Summary data class. * This class holds process summary information. * It shows at process summary table. * @author Yasumasa Suenaga @@ -118,7 +118,7 @@ } /** - * Get average virtual memoly size (VSZ) of java process. + * Get average virtual memory size (VSZ) of java process. * @return Average of VSZ */ public double getAverageVSZ() { @@ -166,7 +166,7 @@ } /** - * Statistics class for SnapSHot diff calculation. + * Statistics class for SnapShot diff calculation. */ private class DiffSummaryStatistics{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/ChildObjectData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/ChildObjectData.java Mon Jun 26 21:05:32 2017 +0900 @@ -46,7 +46,6 @@ /** * Get tag of this child class. - * * @return Tag of this child class. */ public long getTag() { @@ -63,7 +62,6 @@ /** * Get total size of this child class. - * * @return Total size of this child class. */ public long getTotalSize() {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/DiffData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/DiffData.java Mon Jun 26 21:05:32 2017 +0900 @@ -44,7 +44,7 @@ /** * Constructor of DiffData. - * + * * @param diffDate Date time of this difference data. * @param prev Previous data. * @param current Current data. @@ -62,6 +62,17 @@ this.ranked = isRanked; } + /** + * Constructor of DiffData. + * + * @param tag Tag number. + * @param diffDate Date time of this difference data. + * @param className Class name. + * @param classLoaderName Classloader name. + * @param instances Amount of instances. + * @param totalSize Total heap size of this object data. + * @param ranked true if this object data is ranked in. + */ public DiffData(long tag, LocalDateTime diffDate, String className, String classLoaderName, Long instances, long totalSize, boolean ranked) { this.tag = tag; this.diffDate = diffDate;
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/ObjectData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/ObjectData.java Mon Jun 26 21:05:32 2017 +0900 @@ -31,8 +31,8 @@ import java.util.logging.Logger; /** - * implements {@link Serializable}, {@link Cloneable} <br> - * <br> + * implements {@link Serializable}, {@link Cloneable} + * * Contains information about the classes loaded in the java virtual machine. */ public class ObjectData implements Serializable, Cloneable { @@ -254,6 +254,9 @@ this.referenceList = referenceList; } + /** + * {@inheritDoc} + */ @Override public final String toString() { return (new StringJoiner(",")).add(Long.toHexString(tag)) @@ -265,6 +268,9 @@ .toString(); } + /** + * {@inheritDoc} + */ @Override public final ObjectData clone() { @@ -303,7 +309,7 @@ * Equals method of this ObjectData. * This method is based on Tag. * - * @param obj + * @param obj Object. * @return true if object equals. */ @Override
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/SnapShotHeader.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/SnapShotHeader.java Mon Jun 26 21:05:32 2017 +0900 @@ -298,6 +298,7 @@ } /** + * Get GC cause by string. * @return Return the GC Cause */ public final String getCauseString() { @@ -527,7 +528,7 @@ * FILE_FORMAT_NO_CHILD, FILE_FORMAT_HAVE_CHILD, * FILE_FORMAT_HAVE_CHILD_AND_METASPACE * - * @param snapShotType + * @param snapShotType SnapShot type. */ public void setSnapShotType(byte snapShotType) { this.snapShotType = snapShotType; @@ -563,7 +564,7 @@ /** * Set size of SnapShot header. * - * @param snapShotHeaderSize + * @param snapShotHeaderSize Size of SnapShot header. */ public void setSnapShotHeaderSize(long snapShotHeaderSize) { this.snapShotHeaderSize = snapShotHeaderSize; @@ -630,22 +631,36 @@ public void setSnapShot(Map<Long, ObjectData> snapShot) { this.snapShotCache = new SoftReference<>(snapShot); } - + + /** + * Get true if this snapshot data has a reference data. + * @return true if has a reference data. + */ public boolean hasReferenceData(){ final byte extended_reftree = EXTENDED_FORMAT | EXTENDED_FORMAT_FLAG_REFTREE; return (snapShotType == FILE_FORMAT_1_1) || ((snapShotType & extended_reftree) == extended_reftree); } - + /** + * Get true if this snapshot data has a safepoint time. + * @return true if has a safepoint time. + */ public boolean hasSafepointTime(){ return (snapShotType & EXTENDED_FORMAT_FLAG_SAFEPOINT_TIME) == EXTENDED_FORMAT_FLAG_SAFEPOINT_TIME; } + /** + * Get true if this snapshot data has a metaspace data. + * @return true if has a metaspace data. + */ public boolean hasMetaspaceData(){ return (snapShotType != FILE_FORMAT_1_0); } + /** + * {@inheritDoc} + */ @Override public final String toString() { StringBuilder buf = new StringBuilder(); @@ -692,14 +707,17 @@ * Compare function for SnapShotHeader. This method is based on * snapShotDate. * - * @param o - * @return + * @param o SnapHotHeader. + * @return Compared result. */ @Override public int compareTo(SnapShotHeader o) { return snapShotDate.compareTo(o.snapShotDate); } + /** + * {@inheritDoc} + */ @Override public int hashCode() { return snapShotDate.hashCode(); @@ -709,8 +727,8 @@ * equals method of this SnapShotHeader. This method is based on * snapShotDate. * - * @param obj - * @return + * @param obj Object + * @return Compared result. */ @Override public boolean equals(Object obj) {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/SummaryData.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/snapshot/SummaryData.java Mon Jun 26 21:05:32 2017 +0900 @@ -25,11 +25,11 @@ import java.util.stream.IntStream; /** - * Summary data class.<br/> - * This class holds process summary information. It shows at process summary - * table. + * Summary data class. + * This class holds process summary information. + * It shows at process summary table. * - * @author Yasu + * @author Yasumasa Suenaga */ public class SummaryData {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/threadrecord/ThreadStat.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/container/threadrecord/ThreadStat.java Mon Jun 26 21:05:32 2017 +0900 @@ -106,11 +106,17 @@ return additionalData; } + /** + * {@inheritDoc} + */ @Override public int compareTo(ThreadStat o) { return time.compareTo(o.time); } + /** + * {@inheritDoc} + */ @Override public String toString() { return String.format("%d: %s: %s (%d)", id, time.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME), event.toString(), additionalData);
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/jmx/JMXHelper.java Mon Jun 26 16:53:50 2017 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* - * Copyright (C) 2015 Yasumasa Suenaga - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU 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 jp.co.ntt.oss.heapstats.jmx; - -import java.io.IOException; -import java.io.UncheckedIOException; -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.MalformedURLException; -import java.nio.ByteBuffer; -import java.nio.channels.AsynchronousServerSocketChannel; -import java.nio.channels.AsynchronousSocketChannel; -import java.nio.channels.SeekableByteChannel; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import javax.management.MBeanServerConnection; -import javax.management.MBeanServerInvocationHandler; -import javax.management.MalformedObjectNameException; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import jp.co.ntt.oss.heapstats.lambda.SupplierWrapper; -import jp.co.ntt.oss.heapstats.mbean.HeapStatsMBean; - -/** - * Helper class for JMX access to HeapStats agent. - * @author Yasumasa Suenaga - */ -public class JMXHelper implements AutoCloseable{ - - public static final String DEFAULT_OBJECT_NAME = "heapstats:type=HeapStats"; - - private JMXServiceURL url; - - private JMXConnector connector; - - private final HeapStatsMBean mbean; - - /** - * Constructor of JMXHelper. - * - * @param url JMX URL to connect. - * - * @throws MalformedURLException - * @throws IOException - * @throws MalformedObjectNameException - */ - public JMXHelper(String url) throws MalformedURLException, IOException, MalformedObjectNameException{ - this(new JMXServiceURL(url)); - } - - /** - * Constructor of JMXHelper. - * @param url JMX URL to connect. - * - * @throws IOException - * @throws MalformedObjectNameException - */ - public JMXHelper(JMXServiceURL url) throws IOException, MalformedObjectNameException{ - this.url = url; - connector = JMXConnectorFactory.connect(url); - MBeanServerConnection connection = connector.getMBeanServerConnection(); - mbean = MBeanServerInvocationHandler.newProxyInstance(connection, new ObjectName(DEFAULT_OBJECT_NAME), HeapStatsMBean.class, false); - } - - /** - * {@inheritDoc} - */ - @Override - public void close() throws IOException { - connector.close(); - } - - /** - * Get HeapStats MBean instance. - * - * @return Instance of HeapStatsMBean. - */ - public HeapStatsMBean getMbean() { - return mbean; - } - - private void receiveFile(Path path, AsynchronousSocketChannel socket){ - try(SeekableByteChannel ch = Files.newByteChannel(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)){ - ByteBuffer buffer = ByteBuffer.allocate(1024); - - while(socket.read(buffer).get() != -1){ - buffer.flip(); - ch.write(buffer); - buffer.rewind(); - } - - } catch (IOException ex) { - throw new UncheckedIOException(ex); - } catch (InterruptedException | ExecutionException ex) { - throw new RuntimeException(ex); - } - } - - private void getFileInternal(Path path, boolean isSnapShot) throws IOException, InterruptedException, ExecutionException{ - try(AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open()){ - server.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0)); - CompletableFuture<Void> receiveFuture = CompletableFuture.supplyAsync(new SupplierWrapper<>(() -> server.accept().get())) - .thenAccept(s -> receiveFile(path, s)); - InetSocketAddress addr = (InetSocketAddress)server.getLocalAddress(); - - if(isSnapShot){ - mbean.getSnapShot(addr.getAddress(), addr.getPort()); - } - else{ - mbean.getResourceLog(addr.getAddress(), addr.getPort()); - } - - receiveFuture.get(); - } - } - - /** - * Get SnapShot from remote. - * - * @param path Path to save file. - * - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - public void getSnapShot(Path path) throws IOException, InterruptedException, ExecutionException{ - getFileInternal(path, true); - } - - /** - * Get Resource log from remote. - * - * @param path Path to save file. - * - * @throws IOException - * @throws InterruptedException - * @throws ExecutionException - */ - public void getResourceLog(Path path) throws IOException, InterruptedException, ExecutionException{ - getFileInternal(path, false); - } - - /** - * Change configuration of remote HeapStats. - * - * @param key Key name. - * @param value Value string. - */ - public void changeConfigurationThroughString(String key, String value){ - Object currentObj = mbean.getConfiguration(key); - Object newObj = value; - - if(currentObj instanceof Integer){ - newObj = Integer.valueOf(value); - } - else if(currentObj instanceof Long){ - newObj = Long.valueOf(value); - } - else if(currentObj instanceof Boolean){ - newObj = Boolean.valueOf(value); - } - else if(currentObj instanceof HeapStatsMBean.LogLevel){ - newObj = HeapStatsMBean.LogLevel.valueOf(value); - } - else if(currentObj instanceof HeapStatsMBean.RankOrder){ - newObj = HeapStatsMBean.RankOrder.valueOf(value); - } - - mbean.changeConfiguration(key, newObj); - } - - /** - * Get JMX URL. - * - * @return JMX URL - */ - public JMXServiceURL getUrl() { - return url; - } - -}
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/ConsumerWrapper.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/ConsumerWrapper.java Mon Jun 26 21:05:32 2017 +0900 @@ -31,6 +31,9 @@ this.consumer = consumer; } + /** + * {@inheritDoc} + */ @Override public void accept(T t) { try{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/FunctionWrapper.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/FunctionWrapper.java Mon Jun 26 21:05:32 2017 +0900 @@ -31,6 +31,9 @@ this.function = function; } + /** + * {@inheritDoc} + */ @Override public R apply(T t) { try{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/PredicateWrapper.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/PredicateWrapper.java Mon Jun 26 21:05:32 2017 +0900 @@ -31,6 +31,9 @@ this.predicate = predicate; } + /** + * {@inheritDoc} + */ @Override public boolean test(T t) { try{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/RunnableWrapper.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/RunnableWrapper.java Mon Jun 26 21:05:32 2017 +0900 @@ -29,6 +29,9 @@ this.runnable = runnable; } + /** + * {@inheritDoc} + */ @Override public void run() { try{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/SupplierWrapper.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/lambda/SupplierWrapper.java Mon Jun 26 21:05:32 2017 +0900 @@ -31,6 +31,9 @@ this.supplier = supplier; } + /** + * {@inheritDoc} + */ @Override public T get() { try{
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/parser/SnapShotParser.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/parser/SnapShotParser.java Mon Jun 26 21:05:32 2017 +0900 @@ -77,7 +77,7 @@ * * @param ch Channel to be read. * @param size Read size. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ private void readLong(SeekableByteChannel ch, int size) throws IOException{ longBuffer.position(0); @@ -91,7 +91,7 @@ * * @param ch Channel to be read. * @return read value. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ private int readInt(SeekableByteChannel ch) throws IOException{ ch.read(intBuffer); @@ -107,7 +107,7 @@ * @param header SnapShotHeader to parse. * @param handler SnapShot handler. * @return true if parsing is succeeded. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ public boolean parseSingle(SnapShotHeader header, SnapShotParserEventHandler handler) throws IOException {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/parser/ThreadRecordParser.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/parser/ThreadRecordParser.java Mon Jun 26 21:05:32 2017 +0900 @@ -57,7 +57,7 @@ * @param ch Channel to read. * @param buffer ByteBuffer to use. * @return ByteOrder in this channel. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ private ByteOrder getByteOrder(SeekableByteChannel ch, ByteBuffer buffer) throws IOException{ buffer.position(buffer.capacity() - 1); @@ -70,7 +70,7 @@ /** * Get Thread ID - Thread Name map entry from channel. - * This method may throw UncheckedIOException if IOException occurrs. + * This method may throw UncheckedIOException if IOException occurs. * * @param ch Channel to read. * @param buffer ByteBuffer to use. @@ -111,7 +111,7 @@ * @param ch Channel to read. * @param buffer ByteBuffer to use. * @return Thread ID - Thread Name map. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ private Map<Long, String> getThreadIdMap(SeekableByteChannel ch, ByteBuffer buffer) throws IOException{ int capacity = buffer.capacity(); @@ -136,7 +136,7 @@ * @param ch Channel to read. * @param buffer ByteBuffer to use. * @return Thread Stat list. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ private List<ThreadStat> getThreadStatList(SeekableByteChannel ch, ByteBuffer buffer) throws IOException{ List<ThreadStat> result = new ArrayList<>(); @@ -166,7 +166,7 @@ * Parse HeapStats Thread Recorder file. * * @param path Path to recorder file. - * @throws IOException + * @throws IOException If some other I/O error occurs. */ public void parse(Path path) throws IOException{ ByteBuffer buffer = ByteBuffer.allocateDirect(1024 * 1024); // 1MB
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/DiffCalculator.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/DiffCalculator.java Mon Jun 26 21:05:32 2017 +0900 @@ -94,7 +94,7 @@ } /** - * Build TopN data from givien snapshot header. + * Build TopN data from given snapshot header. * * @param header SnapShot header to build. */
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ParseHeader.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ParseHeader.java Mon Jun 26 21:05:32 2017 +0900 @@ -48,7 +48,7 @@ * * @param files List of HeapStats SnapShot files. * @param needJavaStyle true if class name should be converted to Java-Style - * @param parseAsPossible Parse SnapShot before occuring error. + * @param parseAsPossible Parse SnapShot before occurring error. */ public ParseHeader(List<String> files, boolean needJavaStyle, boolean parseAsPossible) { this.files = files;
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ParseLogFile.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ParseLogFile.java Mon Jun 26 21:05:32 2017 +0900 @@ -51,7 +51,7 @@ * Constructor of LogFileParser. * * @param fileList List of log to be parsed. - * @param parseAsPossible Parse log before occuring error. + * @param parseAsPossible Parse log before occurring error. */ public ParseLogFile(List<File> fileList, boolean parseAsPossible){ logEntries = new ArrayList<>(); @@ -61,7 +61,7 @@ } /** - * This method addes log value from CSV. + * This method adds log value from CSV. * * @param csvLine CSV data to be added. This value must be 1-raw (1-record). * @param logdir Log directory. This value is used to store log value. @@ -76,9 +76,9 @@ /** * Parse log file. * - * @param logfile Log to be parsedd. - * @param progress - * @throws java.io.IOException + * @param logfile Log to be parsed. + * @param progress Amount of progressed parsing. + * @throws java.io.IOException If some other I/O error occurs. */ protected void parse(String logfile, AtomicLong progress) throws IOException{ Path logPath = Paths.get(logfile); @@ -101,7 +101,6 @@ /** * Returns diff entries of resulting on this task. - * * @return results of this task. */ public List<DiffData> getDiffEntries() {
--- a/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ProgressRunnable.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/core/src/main/java/jp/co/ntt/oss/heapstats/task/ProgressRunnable.java Mon Jun 26 21:05:32 2017 +0900 @@ -55,8 +55,8 @@ } /** - * Set progress notificator. - * @param updateProgress Progress notificator + * Set progress notification. + * @param updateProgress Progress notification. */ public void setUpdateProgress(Consumer<Long> updateProgress){ this.updateProgress = Optional.ofNullable(updateProgress);
--- a/analyzer/fx/heapstats-analyzer.iml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/heapstats-analyzer.iml Mon Jun 26 21:05:32 2017 +0900 @@ -11,6 +11,7 @@ </content> <orderEntry type="inheritedJdk" /> <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="heapstats-jmx" /> <orderEntry type="module" module-name="heapstats-mbean" /> <orderEntry type="module" module-name="heapstats-core" /> <orderEntry type="module-library"> @@ -23,4 +24,4 @@ </library> </orderEntry> </component> -</module> \ No newline at end of file +</module>
--- a/analyzer/fx/pom.xml Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -23,15 +23,47 @@ <parent> <artifactId>heapstats</artifactId> <groupId>jp.co.ntt.oss.heapstats</groupId> - <version>2.0.trunk</version> + <version>2.1-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats-analyzer</artifactId> + <version>2.1-SNAPSHOT</version> <packaging>jar</packaging> <name>HeapStats Analyzer</name> + <description>HeapStats JavaFX GUI analyzer</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> @@ -44,6 +76,31 @@ <name>NTT OSS Center</name> </organization> + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-jmx-helper</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-mbean</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-core</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.mxgraph</groupId> + <artifactId>jgraphx</artifactId> + <version>3.3.1.1</version> + <scope>system</scope> + <systemPath>${pom.basedir}/lib/jgraphx.jar</systemPath> + </dependency> + </dependencies> + <build> <plugins> <plugin> @@ -91,18 +148,16 @@ <Class-Path>lib/jgraphx.jar</Class-Path> </manifestEntries> </archive> - <finalName>heapstats-analyzer</finalName> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> - <version>2.5.5</version> + <version>3.0.0</version> <configuration> <descriptors> <descriptor>src/main/assembly/distribution.xml</descriptor> </descriptors> - <finalName>heapstats-analyzer-${project.version}</finalName> <attach>false</attach> </configuration> <executions> @@ -115,25 +170,89 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>1.6.7</version> + <extensions>true</extensions> + <configuration> + <serverId>ossrh</serverId> + <nexusUrl>https://oss.sonatype.org/</nexusUrl> + <autoReleaseAfterClose>true</autoReleaseAfterClose> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.3</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>deploy</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <phase>deploy</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> - <dependencies> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>heapstats-mbean</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>${project.groupId}</groupId> - <artifactId>heapstats-core</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>com.mxgraph</groupId> - <artifactId>jgraphx</artifactId> - <version>3.3.1.1</version> - <scope>system</scope> - <systemPath>${pom.basedir}/lib/jgraphx.jar</systemPath> - </dependency> - </dependencies> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/PluginController.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/PluginController.java Mon Jun 26 21:05:32 2017 +0900 @@ -82,7 +82,7 @@ * Setter of veil region. * This region is used for veiling (e.g. showing progress) * - * @param veil + * @param veil veiling region. */ public void setVeil(Region veil){ this.veil = veil; @@ -92,7 +92,7 @@ * Setter of progress indicator. * This region is used for veiling (e.g. showing progress) * - * @param progress + * @param progress progress indicator. */ public void setProgress(ProgressIndicator progress){ this.progress = progress;
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/JVMLiveConfig.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/JVMLiveConfig.java Mon Jun 26 21:05:32 2017 +0900 @@ -50,7 +50,7 @@ * * @param key configuration key. * @param defaultValue default value of configuration key. - * @throws HeapStatsConfigException + * @throws HeapStatsConfigException when invalid HeapStats config is set. */ private static void setupNumericProperty(String key, int defaultValue) throws HeapStatsConfigException{ String valStr = prop.getProperty(key); @@ -72,8 +72,8 @@ /** * Load configuration from <HeapStats home directory>/jvmlive.properties . * - * @throws IOException - * @throws HeapStatsConfigException + * @throws IOException when properties file cannot be read. + * @throws HeapStatsConfigException when invalid HeapStats config is set. */ public static void load() throws IOException, HeapStatsConfigException{ Path properties = Paths.get(HeapStatsUtils.getHeapStatsHomeDirectory().toString(), "jvmlive.properties"); @@ -91,7 +91,7 @@ } /** - * Wait duration for JDP packet. + * Get a Wait duration for JDP packet. * This value uses as duration for JdpValidatorService. * * @return Wait duration for JDP packet. @@ -101,6 +101,7 @@ } /** + * Get a wait duration time for JDP packet. * @return Await time for threadpool shutdown. */ public static int getThreadpoolShutdownAwaitTime(){ @@ -108,6 +109,7 @@ } /** + * Get a prot of error report server. * @return Port for error report receiver. */ public static int getErrorReportServerPort(){
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/errorreporter/ErrorReportDecoder.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/errorreporter/ErrorReportDecoder.java Mon Jun 26 21:05:32 2017 +0900 @@ -101,7 +101,7 @@ * @param crashList List of crash jvms. * @param ch AsynchronousSocketChannel to crash jvm. * - * @throws IOException + * @throws IOException If an I/O error occurs */ public ErrorReportDecoder(ObservableList<ErrorReportDecoder> crashList, AsynchronousSocketChannel ch) throws IOException{ crashedTime = LocalDateTime.now(); @@ -127,7 +127,7 @@ /** * Parse header information in error report data. * - * @param buf Received data + * @param buf Received data */ private void parseHeader(ByteBuffer buf){
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/jdp/JdpReceiver.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/jvmlive/jdp/JdpReceiver.java Mon Jun 26 21:05:32 2017 +0900 @@ -99,7 +99,7 @@ * @param jconsolePath Path to JConsole. * @param jmxPool ThreadPool which processes JMX access. * - * @throws UnknownHostException + * @throws UnknownHostException Invalid host information to access. */ public JdpReceiver(ListView<JdpDecoder> jdpList, ExecutorService threadPool, Optional<String> jconsolePath, ExecutorService jmxPool) throws UnknownHostException{ this(InetAddress.getByName(Optional.ofNullable(System.getProperty(JDP_ADDRESS_PROP_NAME)).orElse(JDP_DEFAULT_ADDRESS)),
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/log/LogDataConverter.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/log/LogDataConverter.java Mon Jun 26 21:05:32 2017 +0900 @@ -38,8 +38,8 @@ /** * This class DO NOT support this method. * - * @param string - * @return UnsupportedOperationException. + * @param string String + * @return UnsupportedOperationException This class cannot convert from string. */ @Override public LogData fromString(String string) {
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/snapshot/SnapShotHeaderConverter.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/snapshot/SnapShotHeaderConverter.java Mon Jun 26 21:05:32 2017 +0900 @@ -23,7 +23,7 @@ import jp.co.ntt.oss.heapstats.utils.HeapStatsUtils; /** - * StringConverter for LocalDateTime of SnapShotHeader. <br/> + * StringConverter for LocalDateTime of SnapShotHeader. * This class is used at JavaFX controls. * * @author Yasumasa Suenaga
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/threadrecorder/ThreadRecorderController.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/plugin/builtin/threadrecorder/ThreadRecorderController.java Mon Jun 26 21:05:32 2017 +0900 @@ -143,7 +143,7 @@ /** * Event handler for open button. - * @param event + * @param event Pushing open button event. */ @FXML public void onOpenBtnClick(ActionEvent event){ @@ -185,7 +185,7 @@ /** * Event handler for OK button. - * @param event + * @param event Pushing ok button event. */ @FXML private void onOkBtnClick(ActionEvent event){
--- a/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/utils/ThreadStatConverter.java Mon Jun 26 16:53:50 2017 +0900 +++ b/analyzer/fx/src/main/java/jp/co/ntt/oss/heapstats/utils/ThreadStatConverter.java Mon Jun 26 21:05:32 2017 +0900 @@ -21,9 +21,9 @@ import jp.co.ntt.oss.heapstats.container.threadrecord.ThreadStat; /** - * StringConverter for LocalDateTime of SnapShotHeader. <br/> + * StringConverter for LocalDateTime of SnapShotHeader. * This class is used at JavaFX controls. - * + * * @author Yasumasa Suenaga */ public class ThreadStatConverter extends StringConverter<ThreadStat>{
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/analyzer/jmx-helper/heapstats-jmx.iml Mon Jun 26 21:05:32 2017 +0900 @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="heapstats-mbean" /> + <orderEntry type="module" module-name="heapstats-core" /> + </component> +</module> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/analyzer/jmx-helper/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + Copyright (C) 2017 Nippon Telegraph and Telephone Corporation + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU 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. +--> + +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>jp.co.ntt.oss.heapstats</groupId> + <artifactId>heapstats</artifactId> + <version>2.1-SNAPSHOT</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <groupId>jp.co.ntt.oss.heapstats</groupId> + <artifactId>heapstats-jmx-helper</artifactId> + <version>2.1-SNAPSHOT</version> + <packaging>jar</packaging> + + <name>HeapStats JMX Helper</name> + <description>HeapStats JMX Helper</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + </properties> + + <organization> + <name>NTT OSS Center</name> + </organization> + + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-mbean</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>heapstats-core</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>3.3</version> + <configuration> + <compilerArgs> + <arg>-Xlint:all</arg> + </compilerArgs> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <version>2.6</version> + </plugin> + <plugin> + <groupId>org.sonatype.plugins</groupId> + <artifactId>nexus-staging-maven-plugin</artifactId> + <version>1.6.7</version> + <extensions>true</extensions> + <configuration> + <serverId>ossrh</serverId> + <nexusUrl>https://oss.sonatype.org/</nexusUrl> + <autoReleaseAfterClose>true</autoReleaseAfterClose> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.3</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>deploy</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <phase>deploy</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> +</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/analyzer/jmx-helper/src/main/java/jp/co/ntt/oss/heapstats/jmx/JMXHelper.java Mon Jun 26 21:05:32 2017 +0900 @@ -0,0 +1,200 @@ +/* + * Copyright (C) 2015 Yasumasa Suenaga + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU 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 jp.co.ntt.oss.heapstats.jmx; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.MalformedURLException; +import java.nio.ByteBuffer; +import java.nio.channels.AsynchronousServerSocketChannel; +import java.nio.channels.AsynchronousSocketChannel; +import java.nio.channels.SeekableByteChannel; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import javax.management.MBeanServerConnection; +import javax.management.MBeanServerInvocationHandler; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; +import javax.management.remote.JMXServiceURL; +import jp.co.ntt.oss.heapstats.lambda.SupplierWrapper; +import jp.co.ntt.oss.heapstats.mbean.HeapStatsMBean; + +/** + * Helper class for JMX access to HeapStats agent. + * @author Yasumasa Suenaga + */ +public class JMXHelper implements AutoCloseable{ + + public static final String DEFAULT_OBJECT_NAME = "heapstats:type=HeapStats"; + + private JMXServiceURL url; + + private JMXConnector connector; + + private final HeapStatsMBean mbean; + + /** + * Constructor of JMXHelper. + * + * @param url JMX URL to connect. + * + * @throws MalformedURLException if <code>url</code> is malformed. + * @throws MalformedObjectNameException if <code>url</code> does not correspond to a valid ObjectName. + */ + public JMXHelper(String url) throws IOException, MalformedObjectNameException{ + this(new JMXServiceURL(url)); + } + + /** + * Constructor of JMXHelper. + * @param url JMX URL to connect. + * + * @throws IOException if could not connect to <code>url</code>. + * @throws MalformedObjectNameException if <code>url</code> does not correspond to a valid ObjectName. + */ + public JMXHelper(JMXServiceURL url) throws IOException, MalformedObjectNameException{ + this.url = url; + connector = JMXConnectorFactory.connect(url); + MBeanServerConnection connection = connector.getMBeanServerConnection(); + mbean = MBeanServerInvocationHandler.newProxyInstance(connection, new ObjectName(DEFAULT_OBJECT_NAME), HeapStatsMBean.class, false); + } + + /** + * {@inheritDoc} + */ + @Override + public void close() throws IOException { + connector.close(); + } + + /** + * Get HeapStats MBean instance. + * + * @return Instance of HeapStatsMBean. + */ + public HeapStatsMBean getMbean() { + return mbean; + } + + private void receiveFile(Path path, AsynchronousSocketChannel socket){ + try(SeekableByteChannel ch = Files.newByteChannel(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE)){ + ByteBuffer buffer = ByteBuffer.allocate(1024); + + while(socket.read(buffer).get() != -1){ + buffer.flip(); + ch.write(buffer); + buffer.rewind(); + } + + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } catch (InterruptedException | ExecutionException ex) { + throw new RuntimeException(ex); + } + } + + private void getFileInternal(Path path, boolean isSnapShot) throws IOException, InterruptedException, ExecutionException{ + try(AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open()){ + server.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0)); + CompletableFuture<Void> receiveFuture = CompletableFuture.supplyAsync(new SupplierWrapper<>(() -> server.accept().get())) + .thenAccept(s -> receiveFile(path, s)); + InetSocketAddress addr = (InetSocketAddress)server.getLocalAddress(); + + if(isSnapShot){ + mbean.getSnapShot(addr.getAddress(), addr.getPort()); + } + else{ + mbean.getResourceLog(addr.getAddress(), addr.getPort()); + } + + receiveFuture.get(); + } + } + + /** + * Get SnapShot from remote. + * + * @param path Path to save file. + * + * @throws IOException Could not read or/and write a given SnapShot file. + * @throws InterruptedException Something interrupt has occurred. + * @throws ExecutionException Could not get a given SnapShot file. + */ + public void getSnapShot(Path path) throws IOException, InterruptedException, ExecutionException{ + getFileInternal(path, true); + } + + /** + * Get Resource log from remote. + * + * @param path Path to save file. + * + * @throws IOException Could not read a given resource log file. + * @throws InterruptedException Something interrupt has occurred. + * @throws ExecutionException Could not get a given resource log file. + */ + public void getResourceLog(Path path) throws IOException, InterruptedException, ExecutionException{ + getFileInternal(path, false); + } + + /** + * Change configuration of remote HeapStats. + * + * @param key Key name. + * @param value Value string. + */ + public void changeConfigurationThroughString(String key, String value){ + Object currentObj = mbean.getConfiguration(key); + Object newObj = value; + + if(currentObj instanceof Integer){ + newObj = Integer.valueOf(value); + } + else if(currentObj instanceof Long){ + newObj = Long.valueOf(value); + } + else if(currentObj instanceof Boolean){ + newObj = Boolean.valueOf(value); + } + else if(currentObj instanceof HeapStatsMBean.LogLevel){ + newObj = HeapStatsMBean.LogLevel.valueOf(value); + } + else if(currentObj instanceof HeapStatsMBean.RankOrder){ + newObj = HeapStatsMBean.RankOrder.valueOf(value); + } + + mbean.changeConfiguration(key, newObj); + } + + /** + * Get JMX URL. + * + * @return JMX URL + */ + public JMXServiceURL getUrl() { + return url; + } + +}
--- a/mbean/java/pom.xml Mon Jun 26 16:53:50 2017 +0900 +++ b/mbean/java/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -23,22 +23,59 @@ <parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats</artifactId> - <version>2.0.trunk</version> + <version>2.1-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats-mbean</artifactId> + <version>2.1-SNAPSHOT</version> <packaging>jar</packaging> + <name>HeapStats MBean Java Module</name> + + <description>A mbean module for HeapStats</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> + <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> </properties> + <organization> <name>NTT OSS Center</name> </organization> + <build> <plugins> <plugin> @@ -59,6 +96,79 @@ <finalName>heapstats-mbean</finalName> </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-source-plugin</artifactId> + <version>2.3</version> + <executions> + <execution> + <id>attach-sources</id> + <phase>deploy</phase> + <goals> + <goal>jar-no-fork</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.9.1</version> + <executions> + <execution> + <id>attach-javadocs</id> + <phase>deploy</phase> + <goals> + <goal>jar</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.8.2</version> + <executions> + <execution> + <id>deploy</id> + <phase>deploy</phase> + <goals> + <goal>deploy</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project> +
--- a/mbean/java/src/main/java/jp/co/ntt/oss/heapstats/mbean/HeapStatsMBean.java Mon Jun 26 16:53:50 2017 +0900 +++ b/mbean/java/src/main/java/jp/co/ntt/oss/heapstats/mbean/HeapStatsMBean.java Mon Jun 26 21:05:32 2017 +0900 @@ -122,26 +122,30 @@ public boolean invokeAllLogCollection(); /** + * Create a MBean service. * This function is for WildFly/JBoss. - * @throws java.lang.Exception + * @throws java.lang.Exception if cannot create service. */ public void create() throws Exception; /** + * Start a MBean service. * This function is for WildFly/JBoss. - * @throws java.lang.Exception + * @throws java.lang.Exception if cannot start service. */ public void start() throws Exception; /** + * Stop a MBean service. * This function is for WildFly/JBoss. - * @throws java.lang.Exception + * @throws java.lang.Exception if cannot stop service. */ public void stop() throws Exception; /** + * Destory a MBean service. * This function is for WildFly/JBoss. - * @throws java.lang.Exception + * @throws java.lang.Exception if cannot destroy service. */ public void destroy() throws Exception;
--- a/pom.xml Mon Jun 26 16:53:50 2017 +0900 +++ b/pom.xml Mon Jun 26 21:05:32 2017 +0900 @@ -22,15 +22,85 @@ <modelVersion>4.0.0</modelVersion> <groupId>jp.co.ntt.oss.heapstats</groupId> <artifactId>heapstats</artifactId> - <version>2.0.trunk</version> + <version>2.1-SNAPSHOT</version> <packaging>pom</packaging> + <name>HeapStats</name> + <description>A lightweight monitoring and analysis tool for the HotSpot JVM</description> + <url>http://icedtea.classpath.org/wiki/HeapStats</url> + <licenses> + <license> + <name>GNU General Public License, version 2</name> + <url>https://www.gnu.org/licenses/gpl-2.0.html</url> + <distribution>repo</distribution> + </license> + </licenses> + <developers> + <developer> + <name>Yasumasa Suenaga</name> + <email>yasuenag@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + <developer> + <name>KUBOTA Yuji</name> + <email>kubota.yuji@gmail.com</email> + <organization>icedtea</organization> + <organizationUrl>http://www.icedtea.classpath.org</organizationUrl> + </developer> + </developers> + <scm> + <url>http://icedtea.classpath.org/hg/heapstats</url> + <connection>scm:hg:http://icedtea.classpath.org/hg/heapstats</connection> + <developerConnection>scm:hg:ssh://icedtea.classpath.org/hg/heapstats</developerConnection> + </scm> + <distributionManagement> + <snapshotRepository> + <id>ossrh</id> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </snapshotRepository> + <repository> + <id>ossrh</id> + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> + </repository> + </distributionManagement> <modules> <module>mbean/java</module> <module>analyzer/core</module> <module>analyzer/cli</module> <module>analyzer/fx</module> + <module>analyzer/jmx-helper</module> </modules> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> + <profiles> + <profile> + <id>release-sign-artifacts</id> + <!-- releasing for maven repository, mvn -DperformRelease=true deploy --> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.5</version> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> </project>
--- a/specs/heapstats.spec Mon Jun 26 16:53:50 2017 +0900 +++ b/specs/heapstats.spec Mon Jun 26 21:05:32 2017 +0900 @@ -76,7 +76,7 @@ # We do not privide FX analyzer. # So we install CLI analyzer manually. mkdir -p ${RPM_BUILD_ROOT}/%{_libexecdir}/heapstats -cp -fR ./analyzer/cli/target/heapstats-cli-%{version}-bin/heapstats-cli-%{version}/* \ +cp -fR ./analyzer/cli/target/heapstats-cli-*-bin/heapstats-cli-*/* \ ${RPM_BUILD_ROOT}%{_libexecdir}/heapstats/ cp -f ./analyzer/cli/heapstats-cli ${RPM_BUILD_ROOT}%{_bindir} chmod a+x ${RPM_BUILD_ROOT}%{_bindir}/heapstats-cli @@ -119,6 +119,7 @@ %dir %{_libexecdir}/heapstats/lib/ %{_libexecdir}/heapstats/lib/heapstats-core.jar %{_libexecdir}/heapstats/lib/heapstats-mbean.jar +%{_libexecdir}/heapstats/lib/heapstats-jmx-helper.jar %changelog