http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/AbstractThriftMojo.java ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/AbstractThriftMojo.java b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/AbstractThriftMojo.java deleted file mode 100644 index 63451c3..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/AbstractThriftMojo.java +++ /dev/null @@ -1,377 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -package org.apache.thrift.maven; - -import com.google.common.base.Joiner; -import com.google.common.collect.ImmutableSet; -import org.apache.maven.artifact.Artifact; -import org.apache.maven.artifact.repository.ArtifactRepository; -import org.apache.maven.plugin.AbstractMojo; -import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectHelper; -import org.codehaus.plexus.util.cli.CommandLineException; -import org.codehaus.plexus.util.io.RawInputStreamFacade; -import java.io.File; -import java.io.FilenameFilter; -import java.io.IOException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.List; -import java.util.Set; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.collect.Sets.newHashSet; -import static java.lang.String.format; -import static java.util.Arrays.asList; -import static java.util.Collections.list; -import static org.codehaus.plexus.util.FileUtils.cleanDirectory; -import static org.codehaus.plexus.util.FileUtils.copyStreamToFile; -import static org.codehaus.plexus.util.FileUtils.getFiles; - -/** - * Abstract Mojo implementation. - * <p/> - * This class is extended by {@link org.apache.thrift.maven.ThriftCompileMojo} and - * {@link org.apache.thrift.maven.ThriftTestCompileMojo} in order to override the specific configuration for - * compiling the main or test classes respectively. - */ -abstract class AbstractThriftMojo extends AbstractMojo { - - private static final String THRIFT_FILE_SUFFIX = ".thrift"; - - private static final String DEFAULT_INCLUDES = "**/*" + THRIFT_FILE_SUFFIX; - - /** - * The current Maven project. - * - * @parameter default-value="${project}" - * @readonly - * @required - */ - protected MavenProject project; - - /** - * A helper used to add resources to the project. - * - * @component - * @required - */ - protected MavenProjectHelper projectHelper; - - /** - * This is the path to the {@code thrift} executable. By default it will search the {@code $PATH}. - * - * @parameter default-value="thrift" - * @required - */ - private String thriftExecutable; - - /** - * This string is passed to the {@code --gen} option of the {@code thrift} parameter. By default - * it will generate Java output. The main reason for this option is to be able to add options - * to the Java generator - if you generate something else, you're on your own. - * - * @parameter default-value="java:hashcode" - */ - private String generator; - - /** - * @parameter - */ - private File[] additionalThriftPathElements = new File[]{}; - - /** - * Since {@code thrift} cannot access jars, thrift files in dependencies are extracted to this location - * and deleted on exit. This directory is always cleaned during execution. - * - * @parameter property="${project.build.directory}/thrift-dependencies" - * @required - */ - private File temporaryThriftFileDirectory; - - /** - * This is the path to the local maven {@code repository}. - * - * @parameter default-value="${localRepository}" - * @required - */ - private ArtifactRepository localRepository; - - /** - * Set this to {@code false} to disable hashing of dependent jar paths. - * <p/> - * This plugin expands jars on the classpath looking for embedded .thrift files. - * Normally these paths are hashed (MD5) to avoid issues with long file names on windows. - * However if this property is set to {@code false} longer paths will be used. - * - * @parameter default-value="true" - * @required - */ - private boolean hashDependentPaths; - - /** - * @parameter - */ - private Set<String> includes = ImmutableSet.of(DEFAULT_INCLUDES); - - /** - * @parameter - */ - private Set<String> excludes = ImmutableSet.of(); - - /** - * @parameter - */ - private long staleMillis = 0; - - /** - * @parameter - */ - private boolean checkStaleness = false; - - /** - * Executes the mojo. - */ - public void execute() throws MojoExecutionException, MojoFailureException { - checkParameters(); - final File thriftSourceRoot = getThriftSourceRoot(); - if (thriftSourceRoot.exists()) { - try { - ImmutableSet<File> thriftFiles = findThriftFilesInDirectory(thriftSourceRoot); - final File outputDirectory = getOutputDirectory(); - ImmutableSet<File> outputFiles = findGeneratedFilesInDirectory(getOutputDirectory()); - - if (thriftFiles.isEmpty()) { - getLog().info("No thrift files to compile."); - } else if (checkStaleness && ((lastModified(thriftFiles) + staleMillis) < lastModified(outputFiles))) { - getLog().info("Skipping compilation because target directory newer than sources."); - attachFiles(); - } else { - ImmutableSet<File> derivedThriftPathElements = - makeThriftPathFromJars(temporaryThriftFileDirectory, getDependencyArtifactFiles()); - outputDirectory.mkdirs(); - - // Quick fix to fix issues with two mvn installs in a row (ie no clean) - // cleanDirectory(outputDirectory); - - Thrift thrift = new Thrift.Builder(thriftExecutable, outputDirectory) - .setGenerator(generator) - .addThriftPathElement(thriftSourceRoot) - .addThriftPathElements(derivedThriftPathElements) - .addThriftPathElements(asList(additionalThriftPathElements)) - .addThriftFiles(thriftFiles) - .build(); - final int exitStatus = thrift.compile(); - if (exitStatus != 0) { - getLog().error("thrift failed output: " + thrift.getOutput()); - getLog().error("thrift failed error: " + thrift.getError()); - throw new MojoFailureException( - "thrift did not exit cleanly. Review output for more information."); - } - attachFiles(); - } - } catch (IOException e) { - throw new MojoExecutionException("An IO error occurred", e); - } catch (IllegalArgumentException e) { - throw new MojoFailureException("thrift failed to execute because: " + e.getMessage(), e); - } catch (CommandLineException e) { - throw new MojoExecutionException("An error occurred while invoking thrift.", e); - } - } else { - getLog().info(format("%s does not exist. Review the configuration or consider disabling the plugin.", - thriftSourceRoot)); - } - } - - ImmutableSet<File> findGeneratedFilesInDirectory(File directory) throws IOException { - if (directory == null || !directory.isDirectory()) - return ImmutableSet.of(); - - List<File> javaFilesInDirectory = getFiles(directory, "**/*.java", null); - return ImmutableSet.copyOf(javaFilesInDirectory); - } - - private long lastModified(ImmutableSet<File> files) { - long result = 0; - for (File file : files) { - if (file.lastModified() > result) - result = file.lastModified(); - } - return result; - } - - private void checkParameters() { - checkNotNull(project, "project"); - checkNotNull(projectHelper, "projectHelper"); - checkNotNull(thriftExecutable, "thriftExecutable"); - checkNotNull(generator, "generator"); - final File thriftSourceRoot = getThriftSourceRoot(); - checkNotNull(thriftSourceRoot); - checkArgument(!thriftSourceRoot.isFile(), "thriftSourceRoot is a file, not a diretory"); - checkNotNull(temporaryThriftFileDirectory, "temporaryThriftFileDirectory"); - checkState(!temporaryThriftFileDirectory.isFile(), "temporaryThriftFileDirectory is a file, not a directory"); - final File outputDirectory = getOutputDirectory(); - checkNotNull(outputDirectory); - checkState(!outputDirectory.isFile(), "the outputDirectory is a file, not a directory"); - } - - protected abstract File getThriftSourceRoot(); - - protected abstract List<Artifact> getDependencyArtifacts(); - - protected abstract File getOutputDirectory(); - - protected abstract void attachFiles(); - - /** - * Gets the {@link File} for each dependency artifact. - * - * @return A set of all dependency artifacts. - */ - private ImmutableSet<File> getDependencyArtifactFiles() { - Set<File> dependencyArtifactFiles = newHashSet(); - for (Artifact artifact : getDependencyArtifacts()) { - dependencyArtifactFiles.add(artifact.getFile()); - } - return ImmutableSet.copyOf(dependencyArtifactFiles); - } - - /** - * @throws IOException - */ - ImmutableSet<File> makeThriftPathFromJars(File temporaryThriftFileDirectory, Iterable<File> classpathElementFiles) - throws IOException, MojoExecutionException { - checkNotNull(classpathElementFiles, "classpathElementFiles"); - // clean the temporary directory to ensure that stale files aren't used - if (temporaryThriftFileDirectory.exists()) { - cleanDirectory(temporaryThriftFileDirectory); - } - Set<File> thriftDirectories = newHashSet(); - for (File classpathElementFile : classpathElementFiles) { - // for some reason under IAM, we receive poms as dependent files - // I am excluding .xml rather than including .jar as there may be other extensions in use (sar, har, zip) - if (classpathElementFile.isFile() && classpathElementFile.canRead() && - !classpathElementFile.getName().endsWith(".xml")) { - - // create the jar file. the constructor validates. - JarFile classpathJar; - try { - classpathJar = new JarFile(classpathElementFile); - } catch (IOException e) { - throw new IllegalArgumentException(format( - "%s was not a readable artifact", classpathElementFile)); - } - for (JarEntry jarEntry : list(classpathJar.entries())) { - final String jarEntryName = jarEntry.getName(); - if (jarEntry.getName().endsWith(THRIFT_FILE_SUFFIX)) { - final File uncompressedCopy = - new File(new File(temporaryThriftFileDirectory, - truncatePath(classpathJar.getName())), jarEntryName); - uncompressedCopy.getParentFile().mkdirs(); - copyStreamToFile(new RawInputStreamFacade(classpathJar - .getInputStream(jarEntry)), uncompressedCopy); - thriftDirectories.add(uncompressedCopy.getParentFile()); - } - } - } else if (classpathElementFile.isDirectory()) { - File[] thriftFiles = classpathElementFile.listFiles(new FilenameFilter() { - public boolean accept(File dir, String name) { - return name.endsWith(THRIFT_FILE_SUFFIX); - } - }); - - if (thriftFiles.length > 0) { - thriftDirectories.add(classpathElementFile); - } - } - } - return ImmutableSet.copyOf(thriftDirectories); - } - - ImmutableSet<File> findThriftFilesInDirectory(File directory) throws IOException { - checkNotNull(directory); - checkArgument(directory.isDirectory(), "%s is not a directory", directory); - List<File> thriftFilesInDirectory = getFiles(directory, - Joiner.on(",").join(includes), - Joiner.on(",").join(excludes)); - return ImmutableSet.copyOf(thriftFilesInDirectory); - } - - ImmutableSet<File> findThriftFilesInDirectories(Iterable<File> directories) throws IOException { - checkNotNull(directories); - Set<File> thriftFiles = newHashSet(); - for (File directory : directories) { - thriftFiles.addAll(findThriftFilesInDirectory(directory)); - } - return ImmutableSet.copyOf(thriftFiles); - } - - /** - * Truncates the path of jar files so that they are relative to the local repository. - * - * @param jarPath the full path of a jar file. - * @return the truncated path relative to the local repository or root of the drive. - */ - String truncatePath(final String jarPath) throws MojoExecutionException { - - if (hashDependentPaths) { - try { - return toHexString(MessageDigest.getInstance("MD5").digest(jarPath.getBytes())); - } catch (NoSuchAlgorithmException e) { - throw new MojoExecutionException("Failed to expand dependent jar", e); - } - } - - String repository = localRepository.getBasedir().replace('\\', '/'); - if (!repository.endsWith("/")) { - repository += "/"; - } - - String path = jarPath.replace('\\', '/'); - int repositoryIndex = path.indexOf(repository); - if (repositoryIndex != -1) { - path = path.substring(repositoryIndex + repository.length()); - } - - // By now the path should be good, but do a final check to fix windows machines. - int colonIndex = path.indexOf(':'); - if (colonIndex != -1) { - // 2 = :\ in C:\ - path = path.substring(colonIndex + 2); - } - - return path; - } - - private static final char[] HEX_CHARS = "0123456789abcdef".toCharArray(); - - public static String toHexString(byte[] byteArray) { - final StringBuilder hexString = new StringBuilder(2 * byteArray.length); - for (final byte b : byteArray) { - hexString.append(HEX_CHARS[(b & 0xF0) >> 4]).append(HEX_CHARS[b & 0x0F]); - } - return hexString.toString(); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/Thrift.java ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/Thrift.java b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/Thrift.java deleted file mode 100644 index 6eea954..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/Thrift.java +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -package org.apache.thrift.maven; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import org.codehaus.plexus.util.cli.CommandLineException; -import org.codehaus.plexus.util.cli.CommandLineUtils; -import org.codehaus.plexus.util.cli.Commandline; -import java.io.File; -import java.util.List; -import java.util.Set; -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; -import static com.google.common.collect.Lists.newLinkedList; -import static com.google.common.collect.Sets.newHashSet; - -/** - * This class represents an invokable configuration of the {@code thrift} - * compiler. The actual executable is invoked using the plexus - * {@link Commandline}. - * <p/> - * This class currently only supports generating java source files. - */ -final class Thrift { - - final static String GENERATED_JAVA = "gen-java"; - - private final String executable; - private final String generator; - private final ImmutableSet<File> thriftPathElements; - private final ImmutableSet<File> thriftFiles; - private final File javaOutputDirectory; - private final CommandLineUtils.StringStreamConsumer output; - private final CommandLineUtils.StringStreamConsumer error; - - /** - * Constructs a new instance. This should only be used by the {@link Builder}. - * - * @param executable The path to the {@code thrift} executable. - * @param generator The value for the {@code --gen} option. - * @param thriftPath The directories in which to search for imports. - * @param thriftFiles The thrift source files to compile. - * @param javaOutputDirectory The directory into which the java source files - * will be generated. - */ - private Thrift(String executable, String generator, ImmutableSet<File> thriftPath, - ImmutableSet<File> thriftFiles, File javaOutputDirectory) { - this.executable = checkNotNull(executable, "executable"); - this.generator = checkNotNull(generator, "generator"); - this.thriftPathElements = checkNotNull(thriftPath, "thriftPath"); - this.thriftFiles = checkNotNull(thriftFiles, "thriftFiles"); - this.javaOutputDirectory = checkNotNull(javaOutputDirectory, "javaOutputDirectory"); - this.error = new CommandLineUtils.StringStreamConsumer(); - this.output = new CommandLineUtils.StringStreamConsumer(); - } - - /** - * Invokes the {@code thrift} compiler using the configuration specified at - * construction. - * - * @return The exit status of {@code thrift}. - * @throws CommandLineException - */ - public int compile() throws CommandLineException { - - for (File thriftFile : thriftFiles) { - Commandline cl = new Commandline(); - cl.setExecutable(executable); - cl.addArguments(buildThriftCommand(thriftFile).toArray(new String[]{})); - final int result = CommandLineUtils.executeCommandLine(cl, null, output, error); - - if (result != 0) { - return result; - } - } - - // result will always be 0 here. - return 0; - } - - /** - * Creates the command line arguments. - * <p/> - * This method has been made visible for testing only. - * - * @param thriftFile - * @return A list consisting of the executable followed by any arguments. - */ - ImmutableList<String> buildThriftCommand(final File thriftFile) { - final List<String> command = newLinkedList(); - // add the executable - for (File thriftPathElement : thriftPathElements) { - command.add("-I"); - command.add(thriftPathElement.toString()); - } - command.add("-out"); - command.add(javaOutputDirectory.toString()); - command.add("--gen"); - command.add(generator); - command.add(thriftFile.toString()); - return ImmutableList.copyOf(command); - } - - /** - * @return the output - */ - public String getOutput() { - return output.getOutput(); - } - - /** - * @return the error - */ - public String getError() { - return error.getOutput(); - } - - /** - * This class builds {@link Thrift} instances. - */ - static final class Builder { - private final String executable; - private final File javaOutputDirectory; - private Set<File> thriftPathElements; - private Set<File> thriftFiles; - private String generator; - - /** - * Constructs a new builder. The two parameters are present as they are - * required for all {@link Thrift} instances. - * - * @param executable The path to the {@code thrift} executable. - * @param javaOutputDirectory The directory into which the java source files - * will be generated. - * @throws NullPointerException If either of the arguments are {@code null}. - * @throws IllegalArgumentException If the {@code javaOutputDirectory} is - * not a directory. - */ - public Builder(String executable, File javaOutputDirectory) { - this.executable = checkNotNull(executable, "executable"); - this.javaOutputDirectory = checkNotNull(javaOutputDirectory); - checkArgument(javaOutputDirectory.isDirectory()); - this.thriftFiles = newHashSet(); - this.thriftPathElements = newHashSet(); - } - - /** - * Adds a thrift file to be compiled. Thrift files must be on the thriftpath - * and this method will fail if a thrift file is added without first adding a - * parent directory to the thriftpath. - * - * @param thriftFile - * @return The builder. - * @throws IllegalStateException If a thrift file is added without first - * adding a parent directory to the thriftpath. - * @throws NullPointerException If {@code thriftFile} is {@code null}. - */ - public Builder addThriftFile(File thriftFile) { - checkNotNull(thriftFile); - checkArgument(thriftFile.isFile()); - checkArgument(thriftFile.getName().endsWith(".thrift")); - checkThriftFileIsInThriftPath(thriftFile); - thriftFiles.add(thriftFile); - return this; - } - - /** - * Adds the option string for the Thrift executable's {@code --gen} parameter. - * - * @param generator - * @return The builder - * @throws NullPointerException If {@code generator} is {@code null}. - */ - public Builder setGenerator(String generator) { - checkNotNull(generator); - this.generator = generator; - return this; - } - - private void checkThriftFileIsInThriftPath(File thriftFile) { - assert thriftFile.isFile(); - checkState(checkThriftFileIsInThriftPathHelper(thriftFile.getParentFile())); - } - - private boolean checkThriftFileIsInThriftPathHelper(File directory) { - assert directory.isDirectory(); - if (thriftPathElements.contains(directory)) { - return true; - } else { - final File parentDirectory = directory.getParentFile(); - return (parentDirectory == null) ? false - : checkThriftFileIsInThriftPathHelper(parentDirectory); - } - } - - /** - * @see #addThriftFile(File) - */ - public Builder addThriftFiles(Iterable<File> thriftFiles) { - for (File thriftFile : thriftFiles) { - addThriftFile(thriftFile); - } - return this; - } - - /** - * Adds the {@code thriftPathElement} to the thriftPath. - * - * @param thriftPathElement A directory to be searched for imported thrift message - * buffer definitions. - * @return The builder. - * @throws NullPointerException If {@code thriftPathElement} is {@code null}. - * @throws IllegalArgumentException If {@code thriftPathElement} is not a - * directory. - */ - public Builder addThriftPathElement(File thriftPathElement) { - checkNotNull(thriftPathElement); - checkArgument(thriftPathElement.isDirectory()); - thriftPathElements.add(thriftPathElement); - return this; - } - - /** - * @see #addThriftPathElement(File) - */ - public Builder addThriftPathElements(Iterable<File> thriftPathElements) { - for (File thriftPathElement : thriftPathElements) { - addThriftPathElement(thriftPathElement); - } - return this; - } - - /** - * @return A configured {@link Thrift} instance. - * @throws IllegalStateException If no thrift files have been added. - */ - public Thrift build() { - checkState(!thriftFiles.isEmpty()); - return new Thrift(executable, generator, ImmutableSet.copyOf(thriftPathElements), - ImmutableSet.copyOf(thriftFiles), javaOutputDirectory); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java deleted file mode 100644 index b4f7571..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -package org.apache.thrift.maven; - -import java.io.File; -import java.util.List; -import org.apache.maven.artifact.Artifact; -import com.google.common.collect.ImmutableList; - -/** - * This mojo executes the {@code thrift} compiler for generating java sources - * from thrift definitions. It also searches dependency artifacts for - * thrift files and includes them in the thriftPath so that they can be - * referenced. Finally, it adds the thrift files to the project as resources so - * that they are included in the final artifact. - * - * @phase generate-sources - * @goal compile - * @requiresDependencyResolution compile - */ -public final class ThriftCompileMojo extends AbstractThriftMojo { - - /** - * The source directories containing the sources to be compiled. - * - * @parameter default-value="${basedir}/src/main/thrift" - * @required - */ - private File thriftSourceRoot; - - /** - * This is the directory into which the {@code .java} will be created. - * - * @parameter default-value="${project.build.directory}/generated-sources/thrift" - * @required - */ - private File outputDirectory; - - @Override - protected List<Artifact> getDependencyArtifacts() { - List<Artifact> compileArtifacts = project.getCompileArtifacts(); - return compileArtifacts; - } - - @Override - protected File getOutputDirectory() { - return outputDirectory; - } - - @Override - protected File getThriftSourceRoot() { - return thriftSourceRoot; - } - - @Override - protected void attachFiles() { - project.addCompileSourceRoot(outputDirectory.getAbsolutePath()); - projectHelper.addResource(project, thriftSourceRoot.getAbsolutePath(), - ImmutableList.of("**/*.thrift"), null); - } -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftTestCompileMojo.java ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftTestCompileMojo.java b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftTestCompileMojo.java deleted file mode 100644 index fb89d96..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/main/java/org/apache/thrift/maven/ThriftTestCompileMojo.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -package org.apache.thrift.maven; - -import java.io.File; -import java.util.List; -import org.apache.maven.artifact.Artifact; -import com.google.common.collect.ImmutableList; - -/** - * @phase generate-test-sources - * @goal testCompile - * @requiresDependencyResolution test - */ -public final class ThriftTestCompileMojo extends AbstractThriftMojo { - - /** - * The source directories containing the sources to be compiled. - * - * @parameter default-value="${basedir}/src/test/thrift" - * @required - */ - private File thriftTestSourceRoot; - - /** - * This is the directory into which the {@code .java} will be created. - * - * @parameter default-value="${project.build.directory}/generated-test-sources/thrift" - * @required - */ - private File outputDirectory; - - @Override - protected void attachFiles() { - project.addTestCompileSourceRoot(outputDirectory.getAbsolutePath()); - projectHelper.addTestResource(project, thriftTestSourceRoot.getAbsolutePath(), - ImmutableList.of("**/*.thrift"), null); - } - - @Override - protected List<Artifact> getDependencyArtifacts() { - // TODO(gak): maven-project needs generics - @SuppressWarnings("unchecked") - List<Artifact> testArtifacts = project.getTestArtifacts(); - return testArtifacts; - } - - @Override - protected File getOutputDirectory() { - return outputDirectory; - } - - @Override - protected File getThriftSourceRoot() { - return thriftTestSourceRoot; - } -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestThrift.java ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestThrift.java b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestThrift.java deleted file mode 100644 index 3ecd094..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/java/org/apache/thrift/maven/TestThrift.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ -package org.apache.thrift.maven; - -import org.codehaus.plexus.util.FileUtils; -import org.codehaus.plexus.util.cli.CommandLineException; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import java.io.File; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -public class TestThrift { - - private File testRootDir; - private File idlDir; - private File genJavaDir; - private Thrift.Builder builder; - - @Before - public void setup() throws Exception { - final File tmpDir = new File(System.getProperty("java.io.tmpdir")); - testRootDir = new File(tmpDir, "thrift-test"); - - if (testRootDir.exists()) { - FileUtils.cleanDirectory(testRootDir); - } else { - assertTrue("Failed to create output directory for test: " + testRootDir.getPath(), testRootDir.mkdir()); - } - - File testResourceDir = new File("src/test/resources"); - assertTrue("Unable to find test resources", testRootDir.exists()); - - String thriftExecutable = System.getProperty("thriftExecutable", "thrift"); - if (!(new File(thriftExecutable).exists())) { - thriftExecutable = "thrift"; - } - System.out.println("Thrift compiler: " + thriftExecutable); - - idlDir = new File(testResourceDir, "idl"); - genJavaDir = new File(testRootDir, Thrift.GENERATED_JAVA); - builder = new Thrift.Builder(thriftExecutable, testRootDir); - builder - .setGenerator("java") - .addThriftPathElement(idlDir); - } - - @Test - public void testThriftCompile() throws Exception { - executeThriftCompile(); - } - - @Test - public void testThriftCompileWithGeneratorOption() throws Exception { - builder.setGenerator("java:private-members,hashcode"); - executeThriftCompile(); - } - - private void executeThriftCompile() throws CommandLineException { - final File thriftFile = new File(idlDir, "shared.thrift"); - - builder.addThriftFile(thriftFile); - - final Thrift thrift = builder.build(); - - assertTrue("File not found: shared.thrift", thriftFile.exists()); - assertFalse("gen-java directory should not exist", genJavaDir.exists()); - - // execute the compile - final int result = thrift.compile(); - assertEquals(0, result); - - assertFalse("gen-java directory was not removed", genJavaDir.exists()); - assertTrue("generated java code doesn't exist", - new File(testRootDir, "shared/SharedService.java").exists()); - } - - @Test - public void testThriftMultipleFileCompile() throws Exception { - final File sharedThrift = new File(idlDir, "shared.thrift"); - final File tutorialThrift = new File(idlDir, "tutorial.thrift"); - - builder.addThriftFile(sharedThrift); - builder.addThriftFile(tutorialThrift); - - final Thrift thrift = builder.build(); - - assertTrue("File not found: shared.thrift", sharedThrift.exists()); - assertFalse("gen-java directory should not exist", genJavaDir.exists()); - - // execute the compile - final int result = thrift.compile(); - assertEquals(0, result); - - assertFalse("gen-java directory was not removed", genJavaDir.exists()); - assertTrue("generated java code doesn't exist", - new File(testRootDir, "shared/SharedService.java").exists()); - assertTrue("generated java code doesn't exist", - new File(testRootDir, "tutorial/InvalidOperation.java").exists()); - } - - @Test - public void testBadCompile() throws Exception { - final File thriftFile = new File(testRootDir, "missing.thrift"); - builder.addThriftPathElement(testRootDir); - - // Hacking around checks in addThrift file. - assertTrue(thriftFile.createNewFile()); - builder.addThriftFile(thriftFile); - assertTrue(thriftFile.delete()); - - final Thrift thrift = builder.build(); - - assertTrue(!thriftFile.exists()); - assertFalse("gen-java directory should not exist", genJavaDir.exists()); - - // execute the compile - final int result = thrift.compile(); - assertEquals(1, result); - } - - @Test - public void testFileInPathPreCondition() throws Exception { - final File thriftFile = new File(testRootDir, "missing.thrift"); - - // Hacking around checks in addThrift file. - assertTrue(thriftFile.createNewFile()); - try { - builder.addThriftFile(thriftFile); - fail("Expected IllegalStateException"); - } catch (IllegalStateException e) { - } - } - - @After - public void cleanup() throws Exception { - if (testRootDir.exists()) { - FileUtils.cleanDirectory(testRootDir); - assertTrue("Failed to delete output directory for test: " + testRootDir.getPath(), testRootDir.delete()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/shared.thrift ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/shared.thrift b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/shared.thrift deleted file mode 100644 index 475e7f8..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/shared.thrift +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -/** - * This Thrift file can be included by other Thrift files that want to share - * these definitions. - */ - -namespace cpp shared -namespace java shared -namespace perl shared - -struct SharedStruct { - 1: i32 key - 2: string value -} - -service SharedService { - SharedStruct getStruct(1: i32 key) -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/tutorial.thrift ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/tutorial.thrift b/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/tutorial.thrift deleted file mode 100644 index 86e433d..0000000 --- a/depends/thirdparty/thrift/contrib/thrift-maven-plugin/src/test/resources/idl/tutorial.thrift +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -# Thrift Tutorial -# Mark Slee ([email protected]) -# -# This file aims to teach you how to use Thrift, in a .thrift file. Neato. The -# first thing to notice is that .thrift files support standard shell comments. -# This lets you make your thrift file executable and include your Thrift build -# step on the top line. And you can place comments like this anywhere you like. -# -# Before running this file, you will need to have installed the thrift compiler -# into /usr/local/bin. - -/** - * The first thing to know about are types. The available types in Thrift are: - * - * bool Boolean, one byte - * byte Signed byte - * i16 Signed 16-bit integer - * i32 Signed 32-bit integer - * i64 Signed 64-bit integer - * double 64-bit floating point value - * string String - * binary Blob (byte array) - * map<t1,t2> Map from one type to another - * list<t1> Ordered list of one type - * set<t1> Set of unique elements of one type - * - * Did you also notice that Thrift supports C style comments? - */ - -// Just in case you were wondering... yes. We support simple C comments too. - -/** - * Thrift files can reference other Thrift files to include common struct - * and service definitions. These are found using the current path, or by - * searching relative to any paths specified with the -I compiler flag. - * - * Included objects are accessed using the name of the .thrift file as a - * prefix. i.e. shared.SharedObject - */ -include "shared.thrift" - -/** - * Thrift files can namespace, package, or prefix their output in various - * target languages. - */ -namespace cpp tutorial -namespace java tutorial -namespace php tutorial -namespace perl tutorial -namespace smalltalk.category Thrift.Tutorial - -/** - * Thrift lets you do typedefs to get pretty names for your types. Standard - * C style here. - */ -typedef i32 MyInteger - -/** - * Thrift also lets you define constants for use across languages. Complex - * types and structs are specified using JSON notation. - */ -const i32 INT32CONSTANT = 9853 -const map<string,string> MAPCONSTANT = {'hello':'world', 'goodnight':'moon'} - -/** - * You can define enums, which are just 32 bit integers. Values are optional - * and start at 1 if not supplied, C style again. - */ -enum Operation { - ADD = 1, - SUBTRACT = 2, - MULTIPLY = 3, - DIVIDE = 4 -} - -/** - * Structs are the basic complex data structures. They are comprised of fields - * which each have an integer identifier, a type, a symbolic name, and an - * optional default value. - * - * Fields can be declared "optional", which ensures they will not be included - * in the serialized output if they aren't set. Note that this requires some - * manual management in some languages. - */ -struct Work { - 1: i32 num1 = 0, - 2: i32 num2, - 3: Operation op, - 4: optional string comment, -} - -/** - * Structs can also be exceptions, if they are nasty. - */ -exception InvalidOperation { - 1: i32 what, - 2: string why -} - -/** - * Ahh, now onto the cool part, defining a service. Services just need a name - * and can optionally inherit from another service using the extends keyword. - */ -service Calculator extends shared.SharedService { - - /** - * A method definition looks like C code. It has a return type, arguments, - * and optionally a list of exceptions that it may throw. Note that argument - * lists and exception lists are specified using the exact same syntax as - * field lists in struct or exception definitions. - */ - - void ping(), - - i32 add(1:i32 num1, 2:i32 num2), - - i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch), - - /** - * This method has a oneway modifier. That means the client only makes - * a request and does not listen for any response at all. Oneway methods - * must be void. - */ - oneway void zip() - -} - -/** - * That just about covers the basics. Take a look in the test/ folder for more - * detailed examples. After you run this file, your generated code shows up - * in folders with names gen-<language>. The generated code isn't too scary - * to look at. It even has pretty indentation. - */ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift.el ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift.el b/depends/thirdparty/thrift/contrib/thrift.el deleted file mode 100644 index 941a99f..0000000 --- a/depends/thirdparty/thrift/contrib/thrift.el +++ /dev/null @@ -1,140 +0,0 @@ -;;; thrift.el --- Major mode for Apache Thrift files - -;; Keywords: files - -;; Licensed to the Apache Software Foundation (ASF) under one -;; or more contributor license agreements. See the NOTICE file -;; distributed with this work for additional information -;; regarding copyright ownership. The ASF licenses this file -;; to you 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. -;; - -;;; Commentary: - -;; - -;;; Code: - -(require 'font-lock) - -(defvar thrift-mode-hook nil) -;;;###autoload -(add-to-list 'auto-mode-alist '("\\.thrift\\'" . thrift-mode)) - -(defvar thrift-indent-level 2 - "Defines 2 spaces for thrift indentation.") - -;; syntax coloring -(defconst thrift-font-lock-keywords - (list - '("\\<\\(include\\|struct\\|exception\\|typedef\\|const\\|enum\\|service\\|extends\\|void\\|oneway\\|throws\\|optional\\|required\\)\\>" . font-lock-keyword-face) ;; keywords - '("\\<\\(bool\\|byte\\|i16\\|i32\\|i64\\|double\\|string\\|binary\\|map\\|list\\|set\\)\\>" . font-lock-type-face) ;; built-in types - '("\\<\\([0-9]+\\)\\>" . font-lock-variable-name-face) ;; ordinals - '("\\<\\(\\w+\\)\\s-*(" (1 font-lock-function-name-face)) ;; functions - ) - "Thrift Keywords.") - -;; indentation -(defun thrift-indent-line () - "Indent current line as Thrift code." - (interactive) - (beginning-of-line) - (if (bobp) - (indent-line-to 0) - (let ((not-indented t) cur-indent) - (if (looking-at "^[ \t]*\\(}\\|throws\\)") - (if (looking-at "^[ \t]*}") - (progn - (save-excursion - (forward-line -1) - (setq cur-indent (- (current-indentation) thrift-indent-level))) - (if (< cur-indent 0) - (setq cur-indent 0))) - (progn - (save-excursion - (forward-line -1) - (if (looking-at "^[ \t]*[\\.<>[:word:]]+[ \t]+[\\.<>[:word:]]+[ \t]*(") - (setq cur-indent (+ (current-indentation) thrift-indent-level)) - (setq cur-indent (current-indentation)))))) - (save-excursion - (while not-indented - (forward-line -1) - (if (looking-at "^[ \t]*}") - (progn - (setq cur-indent (current-indentation)) - (setq not-indented nil)) - (if (looking-at "^.*{[^}]*$") - (progn - (setq cur-indent (+ (current-indentation) thrift-indent-level)) - (setq not-indented nil)) - (if (bobp) - (setq not-indented nil))) - (if (looking-at "^[ \t]*throws") - (progn - (setq cur-indent (- (current-indentation) thrift-indent-level)) - (if (< cur-indent 0) - (setq cur-indent 0)) - (setq not-indented nil)) - (if (bobp) - (setq not-indented nil))) - (if (looking-at "^[ \t]*[\\.<>[:word:]]+[ \t]+[\\.<>[:word:]]+[ \t]*([^)]*$") - (progn - (setq cur-indent (+ (current-indentation) thrift-indent-level)) - (setq not-indented nil)) - (if (bobp) - (setq not-indented nil))) - (if (looking-at "^[ \t]*\\/\\*") - (progn - (setq cur-indent (+ (current-indentation) 1)) - (setq not-indented nil)) - (if (bobp) - (setq not-indented nil))) - (if (looking-at "^[ \t]*\\*\\/") - (progn - (setq cur-indent (- (current-indentation) 1)) - (setq not-indented nil)) - (if (bobp) - (setq not-indented nil))) - )))) - (if cur-indent - (indent-line-to cur-indent) - (indent-line-to 0))))) - -;; C/C++- and sh-style comments; also allowing underscore in words -(defvar thrift-mode-syntax-table - (let ((thrift-mode-syntax-table (make-syntax-table))) - (modify-syntax-entry ?_ "w" thrift-mode-syntax-table) - (modify-syntax-entry ?# "<" thrift-mode-syntax-table) ; sh-style comments - (modify-syntax-entry ?/ ". 124" thrift-mode-syntax-table) ; c/c++-style comments - (modify-syntax-entry ?* ". 23b" thrift-mode-syntax-table) - (modify-syntax-entry ?\n ">" thrift-mode-syntax-table) - thrift-mode-syntax-table) - "Syntax table for thrift-mode") - -;;;###autoload -(defun thrift-mode () - "Mode for editing Thrift files." - (interactive) - (kill-all-local-variables) - (set-syntax-table thrift-mode-syntax-table) - (set (make-local-variable 'font-lock-defaults) '(thrift-font-lock-keywords)) - (setq major-mode 'thrift-mode) - (setq mode-name "Thrift") - (run-hooks 'thrift-mode-hook) - (set (make-local-variable 'indent-line-function) 'thrift-indent-line) - ) - -(provide 'thrift) -;;; thrift.el ends here - http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift.spec ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift.spec b/depends/thirdparty/thrift/contrib/thrift.spec deleted file mode 100644 index dab3275..0000000 --- a/depends/thirdparty/thrift/contrib/thrift.spec +++ /dev/null @@ -1,238 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you 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. -# - -%define without_java 1 -%define without_python 1 -%define without_tests 1 - -%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} -%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} - -Name: thrift -License: Apache License v2.0 -Group: Development -Summary: RPC and serialization framework -Version: 0.9.3 -Release: 0 -URL: http://thrift.apache.org -Packager: Thrift Developers <[email protected]> -Source0: %{name}-%{version}.tar.gz - -BuildRequires: gcc >= 3.4.6 -BuildRequires: gcc-c++ - -%if 0%{!?without_java:1} -BuildRequires: java-devel >= 0:1.5.0 -BuildRequires: ant >= 0:1.6.5 -%endif - -%if 0%{!?without_python:1} -BuildRequires: python-devel -%endif - -%if 0%{!?without_ruby:1} -%define gem_name %{name} -BuildRequires: ruby-devel -BuildRequires: rubygems-devel -%endif - -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) - -%description -Thrift is a software framework for scalable cross-language services -development. It combines a powerful software stack with a code generation -engine to build services that work efficiently and seamlessly between C++, -Java, C#, Python, Ruby, Perl, PHP, Objective C/Cocoa, Smalltalk, Erlang, -Objective Caml, and Haskell. - -%files -%defattr(-,root,root) -%{_bindir}/thrift - - -%package lib-cpp -Summary: Thrift C++ library -Group: Libraries - -%description lib-cpp -C++ libraries for Thrift. - -%files lib-cpp -%defattr(-,root,root) -%{_libdir}/libthrift*.so.* -%{_libdir}/libthrift*.so - - -%package lib-cpp-devel -Summary: Thrift C++ library development files -Group: Libraries -Requires: %{name} = %{version}-%{release} -Requires: boost-devel -%if 0%{!?without_libevent:1} -Requires: libevent-devel >= 1.2 -%endif -%if 0%{!?without_zlib:1} -Requires: zlib-devel -%endif - -%description lib-cpp-devel -C++ static libraries and headers for Thrift. - -%files lib-cpp-devel -%defattr(-,root,root) -%{_includedir}/thrift/ -%{_libdir}/libthrift*.*a -%{_libdir}/pkgconfig/thrift*.pc - - -%if 0%{!?without_java:1} -%package lib-java -Summary: Thrift Java library -Group: Libraries -Requires: java >= 0:1.5.0 - -%description lib-java -Java libraries for Thrift. - -%files lib-java -%defattr(-,root,root) -%{_javadir}/* -%endif - - -%if 0%{!?without_python:1} -%package lib-python -Summary: Thrift Python library -Group: Libraries - -%description lib-python -Python libraries for Thrift. - -%files lib-python -%defattr(-,root,root) -%{python_sitearch}/* -%endif - - -%if 0%{!?without_ruby:1} -%package -n rubygem-%{gem_name} -Summary: Thrift Ruby library -Group: Libraries -Obsoletes: %{name}-lib-ruby - -%description -n rubygem-%{gem_name} -Ruby libraries for Thrift. - -%files -n rubygem-%{gem_name} -%defattr(-,root,root) -%{gem_dir}/* -%endif - - -%if 0%{!?without_php:1} -%package lib-php -Summary: Thrift PHP library -Group: Libraries - -%description lib-php -PHP libraries for Thrift. - -%files lib-php -%defattr(-,root,root) -/usr/lib/php/* -%endif - - -%prep -%setup -q - -%build -[[ -e Makefile.in ]] || ./bootstrap.sh -export GEM_HOME=${PWD}/.gem-home -export RUBYLIB=${PWD}/lib/rb/lib -%configure \ - %{?without_libevent: --without-libevent } \ - %{?without_zlib: --without-zlib } \ - %{?without_tests: --without-tests } \ - %{?without_java: --without-java } \ - %{?without_python: --without-python } \ - %{?without_ruby: --without-ruby } \ - %{?without_php: --without-php } \ - %{!?without_php: PHP_PREFIX=${RPM_BUILD_ROOT}/usr/lib/php } \ - --without-csharp \ - --without-erlang \ - -make %{?_smp_mflags} - -%if 0%{!?without_java:1} -cd lib/java -%ant -cd ../.. -%endif - -%if 0%{!?without_python:1} -cd lib/py -CFLAGS="%{optflags}" %{__python} setup.py build -cd ../.. -%endif - -%if 0%{!?without_ruby:1} -%gem_install -n lib/rb/thrift*.gem -%endif - -%install -export GEM_HOME=${PWD}/.gem-home -export RUBYLIB=${PWD}/lib/rb/lib -%makeinstall -ln -s libthrift-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthrift.so.0 -ln -s libthriftnb-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthriftnb.so.0 -ln -s libthriftz-%{version}.so ${RPM_BUILD_ROOT}%{_libdir}/libthriftz.so.0 - -%if 0%{!?without_java:1} -mkdir -p $RPM_BUILD_ROOT%{_javadir} -cp -p lib/java/build/*.jar $RPM_BUILD_ROOT%{_javadir} -%endif - -%if 0%{!?without_python:1} -cd lib/py -%{__python} setup.py install -O1 --skip-build --root $RPM_BUILD_ROOT -cd ../.. -%endif - -%if 0%{!?without_ruby:1} -mkdir -p %{buildroot}%{gem_dir} -cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/ -%endif - -%clean -rm -rf ${RPM_BUILD_ROOT} - - -%post -umask 007 -/sbin/ldconfig > /dev/null 2>&1 - - -%postun -umask 007 -/sbin/ldconfig > /dev/null 2>&1 - -%changelog -* Wed Sept 25 2015 Thrift Dev <[email protected]> -- Thrift 0.9.3 release. http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift.vim ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift.vim b/depends/thirdparty/thrift/contrib/thrift.vim deleted file mode 100644 index 3000b46..0000000 --- a/depends/thirdparty/thrift/contrib/thrift.vim +++ /dev/null @@ -1,91 +0,0 @@ -" Vim syntax file -" Language: Thrift -" Maintainer: Martin Smith <[email protected]> -" Last Change: $Date: $ -" Copy to ~/.vim/ -" Add to ~/.vimrc -" au BufRead,BufNewFile *.thrift set filetype=thrift -" au! Syntax thrift source ~/.vim/thrift.vim -" -" $Id: $ -" -" Licensed to the Apache Software Foundation (ASF) under one -" or more contributor license agreements. See the NOTICE file -" distributed with this work for additional information -" regarding copyright ownership. The ASF licenses this file -" to you 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. -" - -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -" Todo -syn keyword thriftTodo TODO todo FIXME fixme XXX xxx contained - -" Comments -syn match thriftComment "#.*" contains=thriftTodo -syn region thriftComment start="/\*" end="\*/" contains=thriftTodo -syn match thriftComment "//.\{-}\(?>\|$\)\@=" - -" String -syn region thriftStringDouble matchgroup=None start=+"+ end=+"+ - -" Number -syn match thriftNumber "-\=\<\d\+\>" contained - -" Keywords -syn keyword thriftKeyword namespace -syn keyword thriftKeyword xsd_all xsd_optional xsd_nillable xsd_attrs -syn keyword thriftKeyword include cpp_include cpp_type const optional required -syn keyword thriftBasicTypes void bool byte i16 i32 i64 double string binary -syn keyword thriftStructure map list set struct typedef exception enum throws union - -" Special -syn match thriftSpecial "\d\+:" - -" Structure -syn keyword thriftStructure service oneway extends -"async" { return tok_async; } -"exception" { return tok_xception; } -"extends" { return tok_extends; } -"throws" { return tok_throws; } -"service" { return tok_service; } -"enum" { return tok_enum; } -"const" { return tok_const; } - -if version >= 508 || !exists("did_thrift_syn_inits") - if version < 508 - let did_thrift_syn_inits = 1 - command! -nargs=+ HiLink hi link <args> - else - command! -nargs=+ HiLink hi def link <args> - endif - - HiLink thriftComment Comment - HiLink thriftKeyword Special - HiLink thriftBasicTypes Type - HiLink thriftStructure StorageClass - HiLink thriftTodo Todo - HiLink thriftString String - HiLink thriftNumber Number - HiLink thriftSpecial Special - HiLink thriftStructure Structure - - delcommand HiLink -endif - -let b:current_syntax = "thrift" http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/thrift_dump.cpp ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/thrift_dump.cpp b/depends/thirdparty/thrift/contrib/thrift_dump.cpp deleted file mode 100644 index 59c8ac8..0000000 --- a/depends/thirdparty/thrift/contrib/thrift_dump.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -#include <cstdlib> -#include <iostream> - -#include <thrift/transport/TBufferTransports.h> -#include <thrift/transport/TFDTransport.h> -#include <thrift/protocol/TBinaryProtocol.h> -#include <thrift/protocol/TDebugProtocol.h> -#include <thrift/protocol/TProtocolTap.h> - -using namespace std; -using boost::shared_ptr; -using namespace apache::thrift::transport; -using namespace apache::thrift::protocol; - -void usage() { - fprintf(stderr, - "usage: thrift_dump {-b|-f|-s} < input > ouput\n" - " -b TBufferedTransport messages\n" - " -f TFramedTransport messages\n" - " -s Raw structures\n"); - exit(EXIT_FAILURE); -} - -int main(int argc, char *argv[]) { - if (argc != 2) { - usage(); - } - - shared_ptr<TTransport> stdin_trans(new TFDTransport(STDIN_FILENO)); - shared_ptr<TTransport> itrans; - - if (argv[1] == std::string("-b") || argv[1] == std::string("-s")) { - itrans.reset(new TBufferedTransport(stdin_trans)); - } else if (argv[1] == std::string("-f")) { - itrans.reset(new TFramedTransport(stdin_trans)); - } else { - usage(); - } - - shared_ptr<TProtocol> iprot(new TBinaryProtocol(itrans)); - shared_ptr<TProtocol> oprot( - new TDebugProtocol( - shared_ptr<TTransport>(new TBufferedTransport( - shared_ptr<TTransport>(new TFDTransport(STDOUT_FILENO)))))); - - TProtocolTap tap(iprot, oprot); - - try { - if (argv[1] == std::string("-s")) { - for (;;) { - tap.skip(T_STRUCT); - } - } else { - std::string name; - TMessageType messageType; - int32_t seqid; - for (;;) { - tap.readMessageBegin(name, messageType, seqid); - tap.skip(T_STRUCT); - tap.readMessageEnd(); - } - } - } catch (TProtocolException exn) { - cout << "Protocol Exception: " << exn.what() << endl; - } catch (...) { - oprot->getTransport()->flush(); - } - - cout << endl; - - return 0; -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/README.md ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/README.md b/depends/thirdparty/thrift/contrib/transport-sample/README.md deleted file mode 100644 index a1dfc0a..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/README.md +++ /dev/null @@ -1,61 +0,0 @@ -Thrift transport sample project -------------------------------- - -This cross-platform project has been built with Windows Visual Studio 10 and -OSX 10.7.1's g++. The client and server support socket and pipe transports -through command-line switches. - -Windows supports both named & anonymous pipes; *NIX gets only named -'pipes' at this time. - -Windows-only at this time: -The client & server are double-ended. Both sides run a server and client to -enable full duplex bidirectional event signaling. They are simple command -line apps. The server runs until it's aborted (Ctl-C). The client connects to -the server, informs the server of its listening pipe/port, runs some more RPCs -and exits. The server also makes RPC calls to the client to demonstrate -bidirectional operation. - -Prequisites: -Boost -- tested with Boost 1.47, other versions may work. -libthrift library -- build the library under "thrift/lib/cpp/" -thrift IDL compiler -- download from http://thrift.apache.org/download/ - or build from "thrift/compiler/cpp". The IDL compiler version should - match the thrift source distribution's version. For instance, thrift-0.9.0 - has a different directory structure than thrift-0.8.0 and the generated - files are not compatible. - -Note: Bulding the thrift IDL compiler and library are beyond the scope -of this article. Please refer to the Thrift documentation in the respective -directories and online. - - -Microsoft Windows with Visual Studio 10 ----------------------------------------- -Copy the IDL compiler 'thrift.exe' to this project folder or to a location in the path. -Run thriftme.bat to generate the interface source from the thrift files. - -Open transport-sample.sln and... -Adapt the Boost paths for the client and server projects. Right-click on each project, select -Properties, then: -Configuration Properties -> C/C++ -> General -> Additional Include Directories -Configuration Properties -> Linker -> General -> Additional Include Directories - -The stock path assumes that Boost is located at the same level as the thrift repo root. - -Run the following in separate command prompts from the Release or Debug -build folder: - server.exe -np test - client.exe -np test - - -*NIX flavors ------------- -Build the thrift cpp library. -Build the IDL compiler and copy it to this project folder. -Run thriftme.sh to generate the interface source from the thrift files. -Run 'make' - -Run the following in separate shells: - server/server -np /tmp/test - client/client -np /tmp/test http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/Sample.thrift ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/Sample.thrift b/depends/thirdparty/thrift/contrib/transport-sample/Sample.thrift deleted file mode 100644 index 3040e25..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/Sample.thrift +++ /dev/null @@ -1,39 +0,0 @@ -/* - transport-sample thrift IDL file . - Execute thriftme.bat under Windows to generate the cpp stubs from this IDL. - */ - -// See thrift/tutorial/tutorial.thrift and shared.thrift for more extensive examples. - - -namespace cpp Sample -namespace java Sample -namespace perl Sample - -//This struct is not used in the sample. Shown here for illustrative purposes only. -// -struct SampleStruct -{ - 1: i32 key - 2: string value -} - - -//A service contains the RPC(s). -// -service SampleService -{ - string HelloThere(1:string HelloString), - void ServerDoSomething(), - - //Client calls this to tell server which port to connect back on. - void ClientSideListenPort(1:i16 Port), - //Named pipe version - void ClientSidePipeName(1:string name), -} - -//Sample RPC on the 'client' side that the master server can call. -service SampleCallback -{ - void pingclient(), -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.cpp ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.cpp b/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.cpp deleted file mode 100644 index 60ebf7a..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// ThriftCommon.cpp : Common functions for sample Thrift client and server -// - -#include "ThriftCommon.h" - -namespace thriftcommon -{ - //---------------------------------------------------------------------------- - //Launch child process and pass R/W anonymous pipe handles on cmd line. - //This is a simple example and does not include elevation or other - //advanced features. - // - bool LaunchAnonPipeChild(std::string app, boost::shared_ptr<TServerTransport> transport) - { -#ifdef _WIN32 - PROCESS_INFORMATION pi; - STARTUPINFOA si; - GetStartupInfoA(&si); //set startupinfo for the spawned process - char handles[MAX_PATH]; //Stores pipe handles converted to text - - sprintf(handles, "%s %d %d", app.c_str(), - (int)boost::shared_dynamic_cast<TPipeServer>(transport)->getClientRdPipeHandle(), - (int)boost::shared_dynamic_cast<TPipeServer>(transport)->getClientWrtPipeHandle()); - - //spawn the child process - if (!CreateProcessA(NULL, handles, NULL,NULL,TRUE,0,NULL,NULL,&si,&pi)) - { - GlobalOutput.perror("TPipeServer CreateProcess failed, GLE=", GetLastError()); - return false; - } - - CloseHandle(pi.hThread); - CloseHandle(pi.hProcess); -#endif - return true; - } -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.h ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.h b/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.h deleted file mode 100644 index d24d1a7..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/ThriftCommon.h +++ /dev/null @@ -1,207 +0,0 @@ -// ThriftCommon.h : Common includes, namespaces and templates -// for sample Thrift client and server -// -// Add the following paths to the Project's properties: -// -// Configuration Properties -> C/C++ -> General-> Additional Include Directories -- -// ../;../../../lib/cpp/src;../../../../boost;../../../../boost/boost/tr1; -// -// Configuration Properties -> Linker -> General -> Additional Library Directories -- -// ../../../lib/cpp/$(Configuration);../../../../Boost/lib -// -// Configuration Properties -> Linker -> Input -> Additional Dependencies -- -// libthrift.lib -// -// ... adjust relative paths as necessary. -// - -#ifdef _WIN32 //thrift is crashing when using boost threads on Mac OSX -# define USE_BOOST_THREAD 1 -# include <boost/thread.hpp> -#else -# include <sys/socket.h> -# include <netinet/in.h> -#endif - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Required Includes -//'server' side #includes -#include <thrift/concurrency/ThreadManager.h> -#include <thrift/concurrency/PlatformThreadFactory.h> -#include <thrift/server/TThreadPoolServer.h> -#include <thrift/server/TSimpleServer.h> -//'client' side #includes -#include <thrift/transport/TPipeServer.h> -#include <thrift/transport/TPipe.h> -#include <thrift/transport/TBufferTransports.h> -#include <thrift/transport/TSocket.h> -#include <thrift/transport/TTransport.h> - -#include <thrift/protocol/TBinaryProtocol.h> - - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Required Namespaces -//'server' side namespaces -using namespace apache::thrift::server; -using namespace apache::thrift::concurrency; -//common namespaces -using namespace apache::thrift; -using namespace apache::thrift::protocol; -using namespace apache::thrift::transport; -//using namespace boost; //using ns boost can introduce type conflicts -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -namespace thriftcommon -{ - //---------------------------------------------------------------------------- - // - //Start the thrift 'server' (both server & client side run one for bidir event signaling) - // *** This function template will block *** - // - template <class MyHandler, class MyProcessor> - void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, - int NumThreads, - boost::shared_ptr<TServerTransport> transport, - boost::shared_ptr<TServer> &server) - { -#ifdef _WIN32 - if (!hndlr.get()) - throw std::exception("RunThriftServer() invalid handler"); - if (!transport.get()) - throw std::exception("RunThriftServer() invalid transport"); -#else - if ( !hndlr.get() || !transport.get() ) - throw std::exception(); -#endif - - boost::shared_ptr<MyHandler> handler(hndlr); - boost::shared_ptr<TProcessor> processor(new MyProcessor(handler)); - boost::shared_ptr<TTransportFactory> tfactory(new TBufferedTransportFactory()); - boost::shared_ptr<TProtocolFactory> pfactory(new TBinaryProtocolFactory()); - - if(NumThreads <= 1) - { //Single-threaded server - server.reset(new TSimpleServer(processor, transport, tfactory, pfactory)); - } - else - { //Multi-threaded server - boost::shared_ptr<ThreadManager> threadManager = ThreadManager::newSimpleThreadManager(NumThreads); - boost::shared_ptr<PlatformThreadFactory> threadFactory = boost::shared_ptr<PlatformThreadFactory>(new PlatformThreadFactory()); - threadManager->threadFactory(threadFactory); - threadManager->start(); - server.reset(new TThreadPoolServer(processor, transport, tfactory, pfactory, threadManager)); - } - - printf("Starting the 'server'...\n"); - server->serve(); - printf("done.\n"); - } - - // Thrift server wrapper function that accepts a pipe name. - // A handler must be passed in to this version. - template <class MyHandler, class MyProcessor> - void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, std::string pipename, boost::shared_ptr<TServer> &svr) - { -#ifndef _WIN32 //Mac, *nix - unlink(pipename.c_str()); -#endif - boost::shared_ptr<TServerTransport> transport(new TPipeServer(pipename, 1024, NumThreads)); //Named pipe - RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, svr); - } - - // Thrift server wrapper function that accepts a pipe name. - // This version instantiates its own handler. - template <class MyHandler, class MyProcessor> - void RunThriftServer (int NumThreads, std::string pipename) - { - boost::shared_ptr<MyHandler> handler(new MyHandler()); - boost::shared_ptr<TServer> server; - - RunThriftServer<MyHandler, MyProcessor>(handler, NumThreads, pipename, server); - } - - // Thrift server wrapper function that accepts a socket port number. - // A handler must be passed in to this version. - template <class MyHandler, class MyProcessor> - void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, int Port) - { - boost::shared_ptr<TServerTransport> transport(new TServerSocket(Port)); - boost::shared_ptr<TServer> server; - RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, server); - } - - // Thrift server wrapper function that accepts a socket port number. - // This version instantiates its own handler. - template <class MyHandler, class MyProcessor> - void RunThriftServer (int NumThreads, int Port) - { - boost::shared_ptr<MyHandler> handler(new MyHandler()); - - RunThriftServer<MyHandler, MyProcessor>(handler, NumThreads, Port); - } - - // - template <class MyHandler, class MyProcessor> - void RunThriftServer (boost::shared_ptr<MyHandler> hndlr, int NumThreads, boost::shared_ptr<TServerTransport> transport) - { - boost::shared_ptr<TServer> server; - RunThriftServer<MyHandler, MyProcessor>(hndlr, NumThreads, transport, server); - } - - //---------------------------------------------------------------------------- - //Connect to thrift 'server' - Socket version - //(both server & client side run one for bidir event signaling) - // - template <class MyClient, class MyTransport> - void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, int Port) - { - //Client side connection using sockets transport. - boost::shared_ptr<TTransport> socket(new TSocket("localhost", Port)); - transport.reset(new TBufferedTransport(socket)); - boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); - - client.reset(new MyClient(protocol)); - } - - //Connect to thrift 'server' - Named Pipe version - template <class MyClient, class MyTransport> - void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, std::string pipename) - { - //Client side connection using Named Pipe transport. - boost::shared_ptr<TTransport> pipe(new TPipe(pipename)); - transport.reset(new TBufferedTransport(pipe)); - boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); - - client.reset(new MyClient(protocol)); - } - - //Connect to thrift 'server' - Anonymous Pipe version - //Currently only supported under Windows -#ifdef _WIN32 - template <class MyClient, class MyTransport> - void ConnectToServer (boost::shared_ptr<MyClient> &client, boost::shared_ptr<MyTransport> &transport, HANDLE RdPipe, HANDLE WrtPipe) - { - //Client side connection using sockets transport. -#ifdef _WIN32 - boost::shared_ptr<TTransport> pipe(new TPipe((int)RdPipe, (int)WrtPipe)); - transport.reset(new TBufferedTransport(pipe)); -#else - boost::shared_ptr<TTransport> socket(new TSocket("localhost")); - transport.reset(new TBufferedTransport(socket)); -#endif - boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport)); - - client.reset(new MyClient(protocol)); - } -#endif - - //---------------------------------------------------------------------------- - //Launch child process and pass R/W anonymous pipe handles on cmd line. - //Currently only supported under Windows -#ifdef _WIN32 - bool LaunchAnonPipeChild(std::string app, boost::shared_ptr<TServerTransport> transport); -#endif -} http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/client/ReadMe.txt ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/client/ReadMe.txt b/depends/thirdparty/thrift/contrib/transport-sample/client/ReadMe.txt deleted file mode 100644 index 6c49a96..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/client/ReadMe.txt +++ /dev/null @@ -1,40 +0,0 @@ -======================================================================== - CONSOLE APPLICATION : client Project Overview -======================================================================== - -AppWizard has created this client application for you. - -This file contains a summary of what you will find in each of the files that -make up your client application. - - -client.vcxproj - This is the main project file for VC++ projects generated using an Application Wizard. - It contains information about the version of Visual C++ that generated the file, and - information about the platforms, configurations, and project features selected with the - Application Wizard. - -client.vcxproj.filters - This is the filters file for VC++ projects generated using an Application Wizard. - It contains information about the association between the files in your project - and the filters. This association is used in the IDE to show grouping of files with - similar extensions under a specific node (for e.g. ".cpp" files are associated with the - "Source Files" filter). - -client.cpp - This is the main application source file. - -///////////////////////////////////////////////////////////////////////////// -Other standard files: - -StdAfx.h, StdAfx.cpp - These files are used to build a precompiled header (PCH) file - named client.pch and a precompiled types file named StdAfx.obj. - -///////////////////////////////////////////////////////////////////////////// -Other notes: - -AppWizard uses "TODO:" comments to indicate parts of the source code you -should add to or customize. - -///////////////////////////////////////////////////////////////////////////// http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/72ea8afd/depends/thirdparty/thrift/contrib/transport-sample/client/client.cpp ---------------------------------------------------------------------- diff --git a/depends/thirdparty/thrift/contrib/transport-sample/client/client.cpp b/depends/thirdparty/thrift/contrib/transport-sample/client/client.cpp deleted file mode 100644 index 45fbef1..0000000 --- a/depends/thirdparty/thrift/contrib/transport-sample/client/client.cpp +++ /dev/null @@ -1,195 +0,0 @@ -// client->cpp : Defines the entry point for the console application. -// -// sample client command line app using Thrift IPC. -// Quick n Dirty example, may not have very robust error handling -// for the sake of simplicity. - -#ifdef _WIN32 -# include "stdafx.h" -#else -# include "config.h" -#endif - - -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -//Include this before the generated includes -#include "ThriftCommon.h" -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -//Tailor these to your generated files -#include "../gen-cpp/SampleService.h" -#include "../gen-cpp/SampleCallback.h" - -using namespace Sample; //declared in .thrift file -//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -void ClientListenerThreadProc(); -bool bSocket = false; -bool bAnonPipe = false; -int srvPort; -std::string pipename; -std::string pipename_client; -#ifdef _WIN32 - HANDLE hConsole; -#endif - -//Customized version of printf that changes the text color -//This depends on hConsole global being initialized -void hlprintf(const char* _Format, ...) -{ -#ifdef _WIN32 - SetConsoleTextAttribute(hConsole, 0xE); -#endif - va_list ap; - int r; - va_start (ap, _Format); - r = vprintf (_Format, ap); - va_end (ap); -#ifdef _WIN32 - SetConsoleTextAttribute(hConsole, 7); -#endif -} - -//----------------------------------------------------------------------------- -// Client-side RPC implementations: Called by the server to the client for -// bidirectional eventing. -// -class SampleCallbackHandler : virtual public SampleCallbackIf { - public: - SampleCallbackHandler() { - // initialization goes here - } - - void pingclient() - { - hlprintf("<<<Ping received from server (server-to-client event).\n"); - } - -}; -//----------------------------------------------------------------------------- - - -#ifdef _WIN32 -int _tmain(int argc, _TCHAR* argv[]) -#else -int main(int argc, char **argv) -#endif -{ - //Process cmd line args to determine named vs anon pipes. - bool usage = false; -#ifdef _WIN32 - HANDLE ReadPipe, WritePipe; - hConsole = GetStdHandle(STD_OUTPUT_HANDLE); -#endif - - //Process command line params - if(argc > 1) - { - if(_tcscmp(argv[1], TEXT("-sp")) == 0) - { //Socket Port specified - srvPort = _tstoi(argv[2]); - bSocket = true; - } - else if(_tcscmp(argv[1], TEXT("-np")) == 0) - { //Named Pipe specified -#ifdef _WIN32 - std::wstring wpipe(argv[2]); - pipename.resize(wpipe.length()); - std::copy(wpipe.begin(), wpipe.end(), pipename.begin()); -#else - pipename = argv[2]; -#endif - pipename_client = pipename + "_client"; - } - else if(argc == 3) - { //Anonymous Pipe specified -#ifdef _WIN32 - ReadPipe = (HANDLE)_tstoi(argv[1]); - WritePipe = (HANDLE)_tstoi(argv[2]); - bAnonPipe = true; -#else - printf("Anonymous pipes not (yet) supported under *NIX\n"); -#endif - } - else - usage = true; - } - else - usage = true; - - if(usage) - { - hlprintf("Thrift sample client usage:\n\n"); - hlprintf("Socket Port to connect to: -sp <port#>\n"); - hlprintf("Named Pipe to connect to: -np <pipename> (e.g. affpipe)\n"); - hlprintf("Anonymous Pipe (must be launched by anon pipe creator):\n"); - hlprintf(" <Read Handle> <Write Handle>\n"); - return 0; - } - - //Client side connection to server. - boost::shared_ptr<SampleServiceClient> client; //Client class from Thrift-generated code. - boost::shared_ptr<TTransport> transport; - - if(bSocket) - { //Socket transport -#ifdef _WIN32 - TWinsockSingleton::create(); -#endif - hlprintf("Using socket transport port %d\n", srvPort); - thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, srvPort); - } - else if(!bAnonPipe) - { - hlprintf("Using Named Pipe %s\n", pipename.c_str()); - thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, pipename); - } - else - { -#ifdef _WIN32 - hlprintf("Using Anonymous Pipe transport\n"); - thriftcommon::ConnectToServer<SampleServiceClient, TTransport>(client, transport, ReadPipe, WritePipe); -#endif - } - -#ifdef _WIN32 - //Start a thread to receive inbound connection from server for 2-way event signaling. - boost::thread ClientListenerThread(ClientListenerThreadProc); -#endif - - try { - transport->open(); - - //Notify server what to connect back on. - if(bSocket) - client->ClientSideListenPort(srvPort + 1); //Socket - else if(!bAnonPipe) - client->ClientSidePipeName(pipename_client); //Named Pipe - - //Run some more RPCs - std::string hellostr = "Hello how are you?"; - std::string returnstr; - client->HelloThere(returnstr, hellostr); - hlprintf("\n>>>Sent: %s\n", hellostr.c_str()); - hlprintf("<<<Received: %s\n", returnstr.c_str()); - - hlprintf("\n>>>Calling ServerDoSomething() which delays for 5 seconds.\n"); - client->ServerDoSomething(); - hlprintf(">>>ServerDoSomething() done.\n\n"); - - transport->close(); - } catch (TException &tx) { - hlprintf("ERROR: %s\n", tx.what()); - } - - return 0; -} - - -//Thread Routine -void ClientListenerThreadProc() -{ - if(bSocket) - thriftcommon::RunThriftServer<SampleCallbackHandler, SampleCallbackProcessor>(1, srvPort + 1); - else if(!bAnonPipe) - thriftcommon::RunThriftServer<SampleCallbackHandler, SampleCallbackProcessor>(1, pipename_client); -}
