From aa471150ea99d81102939e17fdbc251bd1218b44 Mon Sep 17 00:00:00 2001 From: Giridharan Kesavan Date: Fri, 3 Jul 2009 08:54:20 +0000 Subject: [PATCH] Move eclipse-plugin from common to mapreduce git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@790831 13f79535-47bb-0310-9956-ffa450edef68 --- src/contrib/eclipse-plugin/.classpath | 10 - src/contrib/eclipse-plugin/.project | 28 - .../.settings/org.eclipse.jdt.core.prefs | 262 ----- .../.settings/org.eclipse.jdt.ui.prefs | 6 - .../org.eclipse.wst.validation.prefs | 6 - .../eclipse-plugin/META-INF/MANIFEST.MF | 29 - src/contrib/eclipse-plugin/build.properties | 7 - src/contrib/eclipse-plugin/build.xml | 80 -- src/contrib/eclipse-plugin/ivy.xml | 36 - .../eclipse-plugin/ivy/libraries.properties | 5 - src/contrib/eclipse-plugin/plugin.xml | 287 ------ .../resources/Components/Conf.png | Bin 1006 -> 0 bytes .../resources/Components/Export.png | Bin 2500 -> 0 bytes .../resources/Components/Import.png | Bin 2288 -> 0 bytes .../resources/Components/New.png | Bin 359 -> 0 bytes .../resources/Components/Reload.png | Bin 1455 -> 0 bytes .../resources/Components/Tool.png | Bin 853 -> 0 bytes .../resources/Components/Tools.png | Bin 1202 -> 0 bytes .../eclipse-plugin/resources/ConnectDFS.xml | 32 - .../eclipse-plugin/resources/CreateProj.xml | 62 -- .../resources/Elephant-16x16.png | Bin 866 -> 0 bytes .../resources/Elephant-24x24.png | Bin 1671 -> 0 bytes .../resources/Elephant-32x32.png | Bin 2513 -> 0 bytes .../resources/Elephant-64x64.png | Bin 31779 -> 0 bytes .../resources/Elephant-small-16x16.png | Bin 809 -> 0 bytes .../eclipse-plugin/resources/Elephant.jpg | Bin 4105 -> 0 bytes .../resources/Elephant100x100.gif | Bin 7553 -> 0 bytes .../resources/Elephant16x16.gif | Bin 1080 -> 0 bytes .../resources/Elephant2-136x136.png | Bin 23414 -> 0 bytes .../resources/Elephant2-16x16.png | Bin 790 -> 0 bytes .../resources/Elephant2-24x24.png | Bin 1416 -> 0 bytes .../resources/Elephant2-32x32.png | Bin 2165 -> 0 bytes .../resources/Elephant2-64x64.png | Bin 6662 -> 0 bytes .../eclipse-plugin/resources/Elephant2.jpg | Bin 3562 -> 0 bytes .../resources/Elephant3-122x122.png | Bin 16171 -> 0 bytes .../resources/Elephant3-16x16.png | Bin 777 -> 0 bytes .../resources/Elephant3-24x24.png | Bin 1324 -> 0 bytes .../eclipse-plugin/resources/HelloWorld.xml | 121 --- .../eclipse-plugin/resources/MAP100x100.gif | Bin 6978 -> 0 bytes .../eclipse-plugin/resources/MAP16x15.gif | Bin 1065 -> 0 bytes .../eclipse-plugin/resources/RunProj.xml | 24 - .../resources/SetHadoopPath.xml | 25 - .../eclipse-plugin/resources/Setup.xml | 18 - .../eclipse-plugin/resources/download.png | Bin 661 -> 0 bytes .../eclipse-plugin/resources/drive100x100.gif | Bin 5903 -> 0 bytes .../eclipse-plugin/resources/drive16x16.gif | Bin 1071 -> 0 bytes .../eclipse-plugin/resources/driver.png | Bin 820 -> 0 bytes .../eclipse-plugin/resources/driverwiz.png | Bin 4431 -> 0 bytes .../resources/elephantblue16x16.gif | Bin 1053 -> 0 bytes .../eclipse-plugin/resources/files.gif | Bin 339 -> 0 bytes .../resources/hadoop-logo-16x16.png | Bin 808 -> 0 bytes .../resources/hadoop-logo-24x24.png | Bin 1422 -> 0 bytes .../resources/hadoop-logo-85x85.png | Bin 10725 -> 0 bytes .../eclipse-plugin/resources/hadoop-logo.jpg | Bin 9443 -> 0 bytes .../eclipse-plugin/resources/hadoop.gif | Bin 1465 -> 0 bytes .../eclipse-plugin/resources/hadoop_small.gif | Bin 1072 -> 0 bytes src/contrib/eclipse-plugin/resources/job.gif | Bin 59 -> 0 bytes .../resources/location-edit-16x16.png | Bin 930 -> 0 bytes .../resources/location-new-16x16.png | Bin 888 -> 0 bytes .../eclipse-plugin/resources/map16x16.gif | Bin 1032 -> 0 bytes .../eclipse-plugin/resources/mapper16.png | Bin 851 -> 0 bytes .../eclipse-plugin/resources/mapwiz.png | Bin 4378 -> 0 bytes .../eclipse-plugin/resources/new-folder.png | Bin 456 -> 0 bytes .../eclipse-plugin/resources/projwiz.png | Bin 6867 -> 0 bytes .../resources/reduce100x100.gif | Bin 7166 -> 0 bytes .../eclipse-plugin/resources/reduce16x16.gif | Bin 1077 -> 0 bytes .../resources/reducer-16x16.gif | Bin 988 -> 0 bytes .../eclipse-plugin/resources/reducer16.png | Bin 853 -> 0 bytes .../eclipse-plugin/resources/reducewiz.png | Bin 4470 -> 0 bytes .../eclipse-plugin/resources/refresh.png | Bin 986 -> 0 bytes .../resources/spite_overcloud.png | Bin 838 -> 0 bytes .../eclipse-plugin/resources/spitesmall.gif | Bin 162 -> 0 bytes .../eclipse-plugin/resources/spitesmall.png | Bin 395 -> 0 bytes .../eclipse-plugin/resources/upload.png | Bin 745 -> 0 bytes .../org/apache/hadoop/eclipse/Activator.java | 77 -- .../hadoop/eclipse/ErrorMessageDialog.java | 45 - .../eclipse/HadoopPerspectiveFactory.java | 95 -- .../apache/hadoop/eclipse/ImageLibrary.java | 252 ----- .../hadoop/eclipse/MapReduceNature.java | 146 --- .../hadoop/eclipse/NewDriverWizard.java | 99 -- .../hadoop/eclipse/NewDriverWizardPage.java | 263 ----- .../eclipse/NewMapReduceProjectWizard.java | 411 -------- .../hadoop/eclipse/NewMapperWizard.java | 181 ---- .../hadoop/eclipse/NewReducerWizard.java | 184 ---- .../apache/hadoop/eclipse/PropertyTester.java | 43 - .../hadoop/eclipse/actions/DFSActionImpl.java | 478 --------- .../eclipse/actions/EditLocationAction.java | 73 -- .../eclipse/actions/NewLocationAction.java | 64 -- .../actions/OpenNewMRClassWizardAction.java | 76 -- .../actions/OpenNewMRProjectAction.java | 48 - .../hadoop/eclipse/dfs/ActionProvider.java | 193 ---- .../apache/hadoop/eclipse/dfs/DFSActions.java | 44 - .../apache/hadoop/eclipse/dfs/DFSContent.java | 32 - .../eclipse/dfs/DFSContentProvider.java | 244 ----- .../apache/hadoop/eclipse/dfs/DFSFile.java | 350 ------- .../apache/hadoop/eclipse/dfs/DFSFolder.java | 213 ---- .../hadoop/eclipse/dfs/DFSLocation.java | 108 -- .../hadoop/eclipse/dfs/DFSLocationsRoot.java | 150 --- .../apache/hadoop/eclipse/dfs/DFSMessage.java | 57 - .../apache/hadoop/eclipse/dfs/DFSPath.java | 160 --- .../HadoopApplicationLaunchShortcut.java | 142 --- .../launch/LocalMapReduceLaunchTabGroup.java | 182 ---- .../hadoop/eclipse/launch/MutexRule.java | 37 - .../launch/StartHadoopLaunchTabGroup.java | 47 - .../preferences/MapReducePreferencePage.java | 64 -- .../preferences/PreferenceConstants.java | 34 - .../preferences/PreferenceInitializer.java | 33 - .../hadoop/eclipse/server/ConfProp.java | 147 --- .../hadoop/eclipse/server/HadoopJob.java | 346 ------- .../hadoop/eclipse/server/HadoopPathPage.java | 124 --- .../hadoop/eclipse/server/HadoopServer.java | 510 --------- .../hadoop/eclipse/server/IJobListener.java | 36 - .../hadoop/eclipse/server/JarModule.java | 146 --- .../eclipse/servers/HadoopLocationWizard.java | 972 ------------------ ...oopServerSelectionListContentProvider.java | 76 -- .../servers/IHadoopServerListener.java | 28 - .../eclipse/servers/RunOnHadoopWizard.java | 355 ------- .../eclipse/servers/ServerRegistry.java | 203 ---- .../eclipse/view/servers/ServerView.java | 460 --------- 119 files changed, 9066 deletions(-) delete mode 100644 src/contrib/eclipse-plugin/.classpath delete mode 100644 src/contrib/eclipse-plugin/.project delete mode 100644 src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.core.prefs delete mode 100644 src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.ui.prefs delete mode 100644 src/contrib/eclipse-plugin/.settings/org.eclipse.wst.validation.prefs delete mode 100644 src/contrib/eclipse-plugin/META-INF/MANIFEST.MF delete mode 100644 src/contrib/eclipse-plugin/build.properties delete mode 100644 src/contrib/eclipse-plugin/build.xml delete mode 100644 src/contrib/eclipse-plugin/ivy.xml delete mode 100644 src/contrib/eclipse-plugin/ivy/libraries.properties delete mode 100644 src/contrib/eclipse-plugin/plugin.xml delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Conf.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Export.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Import.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/New.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Reload.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Tool.png delete mode 100644 src/contrib/eclipse-plugin/resources/Components/Tools.png delete mode 100644 src/contrib/eclipse-plugin/resources/ConnectDFS.xml delete mode 100644 src/contrib/eclipse-plugin/resources/CreateProj.xml delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant-24x24.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant-32x32.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant-64x64.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant-small-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant.jpg delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant100x100.gif delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2-136x136.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2-24x24.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2-32x32.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2-64x64.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant2.jpg delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant3-122x122.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant3-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/Elephant3-24x24.png delete mode 100644 src/contrib/eclipse-plugin/resources/HelloWorld.xml delete mode 100644 src/contrib/eclipse-plugin/resources/MAP100x100.gif delete mode 100644 src/contrib/eclipse-plugin/resources/MAP16x15.gif delete mode 100644 src/contrib/eclipse-plugin/resources/RunProj.xml delete mode 100644 src/contrib/eclipse-plugin/resources/SetHadoopPath.xml delete mode 100644 src/contrib/eclipse-plugin/resources/Setup.xml delete mode 100644 src/contrib/eclipse-plugin/resources/download.png delete mode 100644 src/contrib/eclipse-plugin/resources/drive100x100.gif delete mode 100644 src/contrib/eclipse-plugin/resources/drive16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/driver.png delete mode 100644 src/contrib/eclipse-plugin/resources/driverwiz.png delete mode 100644 src/contrib/eclipse-plugin/resources/elephantblue16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/files.gif delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop-logo-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop-logo-24x24.png delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop-logo-85x85.png delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop-logo.jpg delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop.gif delete mode 100644 src/contrib/eclipse-plugin/resources/hadoop_small.gif delete mode 100644 src/contrib/eclipse-plugin/resources/job.gif delete mode 100644 src/contrib/eclipse-plugin/resources/location-edit-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/location-new-16x16.png delete mode 100644 src/contrib/eclipse-plugin/resources/map16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/mapper16.png delete mode 100644 src/contrib/eclipse-plugin/resources/mapwiz.png delete mode 100644 src/contrib/eclipse-plugin/resources/new-folder.png delete mode 100644 src/contrib/eclipse-plugin/resources/projwiz.png delete mode 100644 src/contrib/eclipse-plugin/resources/reduce100x100.gif delete mode 100644 src/contrib/eclipse-plugin/resources/reduce16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/reducer-16x16.gif delete mode 100644 src/contrib/eclipse-plugin/resources/reducer16.png delete mode 100644 src/contrib/eclipse-plugin/resources/reducewiz.png delete mode 100644 src/contrib/eclipse-plugin/resources/refresh.png delete mode 100644 src/contrib/eclipse-plugin/resources/spite_overcloud.png delete mode 100644 src/contrib/eclipse-plugin/resources/spitesmall.gif delete mode 100644 src/contrib/eclipse-plugin/resources/spitesmall.png delete mode 100644 src/contrib/eclipse-plugin/resources/upload.png delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/Activator.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/ErrorMessageDialog.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/HadoopPerspectiveFactory.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/ImageLibrary.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/MapReduceNature.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizardPage.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapReduceProjectWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapperWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewReducerWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/PropertyTester.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/DFSActionImpl.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/EditLocationAction.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/NewLocationAction.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRClassWizardAction.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRProjectAction.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/ActionProvider.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSActions.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContent.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContentProvider.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFile.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFolder.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocation.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocationsRoot.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSMessage.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSPath.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/LocalMapReduceLaunchTabGroup.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/MutexRule.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/StartHadoopLaunchTabGroup.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/MapReducePreferencePage.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceConstants.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceInitializer.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/ConfProp.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopJob.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopPathPage.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/IJobListener.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/JarModule.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopLocationWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopServerSelectionListContentProvider.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/IHadoopServerListener.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/RunOnHadoopWizard.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/ServerRegistry.java delete mode 100644 src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/view/servers/ServerView.java diff --git a/src/contrib/eclipse-plugin/.classpath b/src/contrib/eclipse-plugin/.classpath deleted file mode 100644 index 6d635836044..00000000000 --- a/src/contrib/eclipse-plugin/.classpath +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/contrib/eclipse-plugin/.project b/src/contrib/eclipse-plugin/.project deleted file mode 100644 index 2f8ba51f62f..00000000000 --- a/src/contrib/eclipse-plugin/.project +++ /dev/null @@ -1,28 +0,0 @@ - - - MapReduceTools - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.pde.ManifestBuilder - - - - - org.eclipse.pde.SchemaBuilder - - - - - - org.eclipse.pde.PluginNature - org.eclipse.jdt.core.javanature - - diff --git a/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.core.prefs b/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index f22875ee534..00000000000 --- a/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,262 +0,0 @@ -#Sat Oct 13 13:37:43 CEST 2007 -eclipse.preferences.version=1 -instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.formatter.align_type_members_on_columns=false -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_assignment=16 -org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 -org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 -org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 -org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 -org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 -org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 -org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 -org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 -org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_after_package=1 -org.eclipse.jdt.core.formatter.blank_lines_before_field=1 -org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 -org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 -org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 -org.eclipse.jdt.core.formatter.blank_lines_before_method=1 -org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 -org.eclipse.jdt.core.formatter.blank_lines_before_package=0 -org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 -org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 -org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line -org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false -org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.format_block_comments=true -org.eclipse.jdt.core.formatter.comment.format_header=false -org.eclipse.jdt.core.formatter.comment.format_html=true -org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true -org.eclipse.jdt.core.formatter.comment.format_line_comments=true -org.eclipse.jdt.core.formatter.comment.format_source_code=true -org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false -org.eclipse.jdt.core.formatter.comment.indent_root_tags=true -org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert -org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert -org.eclipse.jdt.core.formatter.comment.line_length=77 -org.eclipse.jdt.core.formatter.compact_else_if=true -org.eclipse.jdt.core.formatter.continuation_indentation=2 -org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 -org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true -org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true -org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_empty_lines=false -org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true -org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true -org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true -org.eclipse.jdt.core.formatter.indentation.size=4 -org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert -org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert -org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert -org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert -org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert -org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert -org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert -org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert -org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert -org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert -org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert -org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert -org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert -org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false -org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false -org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false -org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false -org.eclipse.jdt.core.formatter.lineSplit=77 -org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false -org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false -org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 -org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 -org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=2 -org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false -org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true diff --git a/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.ui.prefs b/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index ea2f6cf903b..00000000000 --- a/src/contrib/eclipse-plugin/.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Aug 14 19:41:15 PDT 2007 -eclipse.preferences.version=1 -formatter_profile=_Lucene -formatter_settings_version=11 -instance/org.eclipse.core.net/org.eclipse.core.net.hasMigrated=true -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/src/contrib/eclipse-plugin/.settings/org.eclipse.wst.validation.prefs b/src/contrib/eclipse-plugin/.settings/org.eclipse.wst.validation.prefs deleted file mode 100644 index dd7d0cfd3ed..00000000000 --- a/src/contrib/eclipse-plugin/.settings/org.eclipse.wst.validation.prefs +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Aug 14 19:41:15 PDT 2007 -DELEGATES_PREFERENCE=delegateValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator\=org.eclipse.wst.xsd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator\=org.eclipse.wst.wsdl.validation.internal.eclipse.Validator; -USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator; -USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.wst.xsd.core.internal.validation.eclipse.XSDDelegatingValidator;org.eclipse.jst.jsp.core.internal.validation.JSPContentValidator;org.eclipse.wst.html.internal.validation.HTMLValidator;org.eclipse.wst.xml.core.internal.validation.eclipse.Validator;org.eclipse.jst.jsf.validation.internal.appconfig.AppConfigValidator;org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator;org.eclipse.wst.dtd.core.internal.validation.eclipse.Validator;org.eclipse.wst.wsi.ui.internal.WSIMessageValidator;org.eclipse.wst.wsdl.validation.internal.eclipse.WSDLDelegatingValidator;org.eclipse.jst.jsf.validation.internal.JSPSemanticsValidator; -USER_PREFERENCE=overrideGlobalPreferencesfalse -eclipse.preferences.version=1 diff --git a/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF b/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF deleted file mode 100644 index 77b7ede6d73..00000000000 --- a/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF +++ /dev/null @@ -1,29 +0,0 @@ -Manifest-Version: 1.0 -Bundle-ManifestVersion: 2 -Bundle-Name: MapReduce Tools for Eclipse -Bundle-SymbolicName: org.apache.hadoop.eclipse;singleton:=true -Bundle-Version: 0.18 -Bundle-Activator: org.apache.hadoop.eclipse.Activator -Bundle-Localization: plugin -Require-Bundle: org.eclipse.ui, - org.eclipse.core.runtime, - org.eclipse.jdt.launching, - org.eclipse.debug.core, - org.eclipse.jdt, - org.eclipse.jdt.core, - org.eclipse.core.resources, - org.eclipse.ui.ide, - org.eclipse.jdt.ui, - org.eclipse.debug.ui, - org.eclipse.jdt.debug.ui, - org.eclipse.core.expressions, - org.eclipse.ui.cheatsheets, - org.eclipse.ui.console, - org.eclipse.ui.navigator, - org.eclipse.core.filesystem, - org.apache.commons.logging -Eclipse-LazyStart: true -Bundle-ClassPath: classes/, - lib/commons-cli-2.0-SNAPSHOT.jar, - lib/hadoop-core.jar -Bundle-Vendor: Apache Hadoop diff --git a/src/contrib/eclipse-plugin/build.properties b/src/contrib/eclipse-plugin/build.properties deleted file mode 100644 index b632af332a1..00000000000 --- a/src/contrib/eclipse-plugin/build.properties +++ /dev/null @@ -1,7 +0,0 @@ -output.. = bin/ -bin.includes = META-INF/,\ - plugin.xml,\ - resources/,\ - classes/,\ - classes/,\ - lib/ diff --git a/src/contrib/eclipse-plugin/build.xml b/src/contrib/eclipse-plugin/build.xml deleted file mode 100644 index 8fca9908113..00000000000 --- a/src/contrib/eclipse-plugin/build.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/contrib/eclipse-plugin/ivy.xml b/src/contrib/eclipse-plugin/ivy.xml deleted file mode 100644 index 900e741e29c..00000000000 --- a/src/contrib/eclipse-plugin/ivy.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - Apache Hadoop - - - - - - - - - - - - - - - - - - - - - diff --git a/src/contrib/eclipse-plugin/ivy/libraries.properties b/src/contrib/eclipse-plugin/ivy/libraries.properties deleted file mode 100644 index a470b372ad3..00000000000 --- a/src/contrib/eclipse-plugin/ivy/libraries.properties +++ /dev/null @@ -1,5 +0,0 @@ -#This properties file lists the versions of the various artifacts used by streaming. -#It drives ivy and the generation of a maven POM - -#Please list the dependencies name with version if they are different from the ones -#listed in the global libraries.properties file (in alphabetical order) diff --git a/src/contrib/eclipse-plugin/plugin.xml b/src/contrib/eclipse-plugin/plugin.xml deleted file mode 100644 index 193734e1cec..00000000000 --- a/src/contrib/eclipse-plugin/plugin.xml +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/contrib/eclipse-plugin/resources/Components/Conf.png b/src/contrib/eclipse-plugin/resources/Components/Conf.png deleted file mode 100644 index b23c4ec2d81893e0f72b31bd6731416bf0101dfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1006 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z78E;dnp!CU00VAGL_t(Y$IX@fPg`Xa$3M5brMDL-X@!`%5TGXNjENWmt?^~SDIxx3 z{8vyDohCEBY?;$IqFYp!&4Diy7d7(*SuA2;(n9N2Ca{5{O$RHbwNMJ}=*IDf(WPZ{ zV{;~clk>xUZl3df&N<(64*U-wIhKWbM;-s+^Q;sgx+#)*B^HZu_S^&y+U zcPBcxE=B7qDba1~kH#G{7*uCp@ z0s3=Et}E2g(2xO8M1=bK`YQl#x7*-wI97CBm(M?IC!J1`T3WnzXMTPTlSyMHJk5aH zOILT#0$|A_@Or&!U0vPfTr!WxQzRmYi0*Vc=K#!Rv+V!iT>!dIxG)uMV(Wtsky@N* zDV1W+-Vd)i&+7vbDH0*6dkBL&LI&s7|MIPEiz56h*c@;RK+!x0gs{mI1ey zV_zSms@hH}m8Q9=u@ndavp3SRtnC#=Q6v})aAw%YO!y+*CtM5+c$k@qU@5cU^ZEGr z!23*1hsk6z96oY13RD;hNE4seechSeelM;2S^=o7eVB@J8zrSBywK9ZrF5F9=`f+t z6o-!-jQ}g_MIeE|BtQM|ErkZ$)j}WQly8s*=VR19QcwKv7_MKs@%vBn$-$1i8YpYi zvg73zqS0vHfP3@p_p&l&(DOTgo;gi2xj-;*9)P9P)egTHjxZaE=Ba2?4#Cce@pHuE zQHF;{@cB;Ra6F3LUPF=5!06aGs;bh})y>>ooIQK@VKl1P?y}xR|{LVY&LcM z>^ceD4eVM!f>&OoSl0>;I8D<;RaKJ7qyorOjgRB%>AL__<}{dPy>YDo*sNBjr^B3| z7~#t=+8G@i%lqHa(NVMN8~|5OUlh=C99uRt;I?mnQZ}$A@41tUp3ctB>`Q5DYtwFJ cb^d4g2WbPH^YU*<;{X5v07*qoM6N<$f+uv>#{d8T diff --git a/src/contrib/eclipse-plugin/resources/Components/Export.png b/src/contrib/eclipse-plugin/resources/Components/Export.png deleted file mode 100644 index acddba0a48bd472f71938cc049b4ea288dcffeae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2500 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 diff --git a/src/contrib/eclipse-plugin/resources/Components/Reload.png b/src/contrib/eclipse-plugin/resources/Components/Reload.png deleted file mode 100644 index aa19bf71986eb0b5103cf0ac2ba76099052ec089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1455 zcmV;g1yK5lP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM) z02extr-9o500l2eL_t(Y$Ay(^Y!p=(hM#lhva{Q5yIb0>rPl41QfUMdytKA~C`3g; z6k~*ViHZIYQDb7FCThGzqQ;n*sL^;K@e(4zMENB|qDCW#h1v^LF6!E9g>Ji-cDuXX z*`1x^kCxIZ=$p)+Ip=%M$MF3_bSHc?<`!X`TDaByUbvbfEoSA}?f z-G#HPrsw-qbfUn&;J?N5s^i6eT084_tgV`ZgK37xZIILJQV65~4S^;>x$t&(f+ojh z_m&nmzI_rRKF0SO@ zor}5hnZxLFH!gp+hZpW&PC#?ndpwEPkn=$^hbVRSodU8&m(GPg{3|t9U*xAavo;Ig z{Qe1*uJP00lYG`6$74uJGY~@x3@I3$a;6RS>J(i?(N(jbpK}#0RVGl!P_mt5SL?kd0%kS{3^pev;w z-@4p0CWu&c=|w!?FpNeOM-;FCJu@s z3e%NLItq#odT%Uq-JTzZx#!+?y8oIaRRB#W3@P~HM4bB3B%j}1PFq{stgR!lqK(Z_8!H1uZ%k5{8Bk;5)3poG`d;pk~zyM4htFhJ)^ zeMB7tA`8ys6Y?dxqZtM+ETgliAZMdXun3nE%_ySd4rtnRrc+s}oC2FRw9f-KZT(V3 zV>xJTfNUOw1Vex(06~5cx4dykebal2 zr9Kya|7ALxB?Yc~c9RPy4?uIRfnH_l$N2g5%88-^B_I!Ev!EFy<5R?vxn!uyR|W9o zO|?9{#)p)W|C8&w=$0m^@+e5#rcwUS4_l~HNN5?8N z@fs4Zp<(I*129orWVq6Lt9_B5!GR&D_Cd~``2`g$xrncNVr+h7uNq6{cFhI9yYq

oPzVR0NB0zklOfiA1hwjOwYb3q;0Sy=mz*S{Kp3|e;uK7 zX^5iZkePC*S+j^ME)P?sD}t7!!qh0!C4NIN8I5ywN8{O%)N=KE>eRI>xOGhnAAWQM z0$wmQ@M!qUH4MLpvhfK5KAqO)Y8G0OS`(^$l5$Pr)1kuBm>8X;*^(@~q+ZNAv;Bpo zl(v75$l0{t&SOBh&IJ$;&W{ztD(~uwp4j?r_BA#LBhe0~72+jJU z%{6J)C$FClh|Grfp8F0@ou8XGET$*#qH-mKAqaX5YE41F(x|j_yt+geieFERknI}c zwj0AlBK2bKte>YuB5_|&PwzVqY>RSoQW0LegqF5N6e@jGC@@8d3%r72VuIo57-s)4 zm$e4D>y`+SNJRYeA~~l91_o4j_h0PTJIbMfG~<~99$jLY8a`9f-00`}l?%CcRSgXd zp;Raosyf##^`DAHqbi+F<2Vjd%Gt;3^%4jKKCP*#*>t|zzX8A55ypr_;CTQ5002ov JPDHLkV1oLwr=$P? diff --git a/src/contrib/eclipse-plugin/resources/Components/Tool.png b/src/contrib/eclipse-plugin/resources/Components/Tool.png deleted file mode 100644 index 4993aabd16323c111feb745fba84b7376ed1ea2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z78DLTDV_=d000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}00088NklQZ=+z+)Kw3q^G3ph9Vo2zlyccrc*#bQ<&L@JdMONpO_5MA1dCM)7Bl~oOhuQSuaSX>aHV8DVb z6>2Ae07|hNrU96I`QkZePWzesJcg&H4uHK?9$YRLuY<3+ezP?ub2G&PoYFE@hX>!_ zJyOq9Wc;55PfZ=+aF|=I9RP}2Bp?T50OdmCCGxqy`)z#U6HU!6G&Q#n4u?76Yq0XQ zQk++j!iu@s84(Hwth&1j&XPUYyk%Q{WdjI+?AmYpdrex10=NOQloDB>96&t&1BbJm zXHOp^J*rj$e#wt_?gUVF_Ix8oJWiFTj;_1y0ET^q(%N?vNAZfkuBp7sa78(^9#c)00000NkvXXu0mjf+tpu* diff --git a/src/contrib/eclipse-plugin/resources/Components/Tools.png b/src/contrib/eclipse-plugin/resources/Components/Tools.png deleted file mode 100644 index 0240ed21b78e20d35aeb870ad045302d4ebc7cca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1202 zcmV;j1Wo&iP)P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z76&+#d`bZT00c5gL_t(Y$E}rrNStLHz(4PKp1-zi-i&Z|bDP5^q*J57&^fKOur(YB z(Fn?Dg9@etCu3<8vlc;-ek}NFT6b8=lOn~@9!x7r{(c@@cDe$?e=9d!vpRK`PBhWuLhZ)pN}XDhbVvv z5N)j&7#!&4v-;YPfIc8j%2!+_lL;Y2f=*Awr2z3j8X$VRJ4FBWF45L{L9;3*k^+~@ z6(i4_2Of=dPLYrpy!XP zi-&iWmLvT=4XBzGUauFk*$jZyYOP91Nog<`47gk_Dk>_LK%NIqTARL2OG~qmkg%4J z8X_qv8C6wrIse8!I7H2{kCB-c0PX~XLB(h^uB)u9yfrvDxL;9}p6KXkVKf?qt ztLwiEl))|szSGr+04B!&@rc=(Y0>>#n>bNlwcIIX#CMKzTy;zeS1Wuhjdxnh`3xPR5 zcDtRUwZ{SW0V_6EU3Ph^<2|u z-CNF=yV@g25Il?#(Ou19WU;| zabpSK2jHRv_<{SnS)m7MLoG%=Vk*2&ih$1d>#YFH-J7AQ{yh!wHQ<$y*$6eD4ZT?T z@Q{Sh=?}#MFNJmAY9L3>`$XNadg!I-vMg3AOO#D*K?d3{Ulh`h)Q4IB0;Frh>o9n? QMgRZ+07*qoM6N<$f)(l@)Bpeg diff --git a/src/contrib/eclipse-plugin/resources/ConnectDFS.xml b/src/contrib/eclipse-plugin/resources/ConnectDFS.xml deleted file mode 100644 index f9ca7723e77..00000000000 --- a/src/contrib/eclipse-plugin/resources/ConnectDFS.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - This tutorial informs you how to set the default Hadoop - directory for the plugin. - - - - - Define a MapReduce cluster [if you have not done so already] - by opening the MapReduce Servers view and clicking on the - blue elephant in the upper right. - - Use the following embedded command to create a new Hadoop Server: - - - - - - - - Project Explorer view shows an elephant icon for each defined - server. Opening a server entry will open a connection to - the root of that server's DFS tree. You can then explore the - DFS tree. - - - - diff --git a/src/contrib/eclipse-plugin/resources/CreateProj.xml b/src/contrib/eclipse-plugin/resources/CreateProj.xml deleted file mode 100644 index 652c9979d1b..00000000000 --- a/src/contrib/eclipse-plugin/resources/CreateProj.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - This tutorial guides you through the creation of a simple - MapReduce project with three MapReduce classes: a Mapper, a - Reducer, and a Driver. - - - - - - Select Window->Open Perspective->MapReduce in the menubar at - the top of the workbench. This step changes the perspective - to set up the Eclipse workbench for MapReduce development. - - - - - - The first thing you will need is a MapReduce Project. If you - already have a MapReduce project in your workspace that you - would like to use, you may skip this step by clicking the - "Click to Skip" button. If not, select File->New->Project - and choose MapReduce Project in the list. Complete the - subsequent pages as required. - - - - - - You should now have a MapReduce project in your workspace. - The next thing to do is creating a package. Use the Eclipse - tools by selecting File -> New ->Package action. Specify the - source folder (the project containing the package). Then, - give the package a name, such as "mapreduce.test", and click - the "Finish" button. If you already have a project with a - package you might as well skip this step. - - - - - Now you should be set up for creating your MapReduce - application. The MapReduce application consists of three - classes: a Mapper class, a Reducer class and a Driver class. - In this step you will create the three classes. Use the - class wizard by selecting File -> New -> Class. - Repeat this for every class. - - - - - - - - diff --git a/src/contrib/eclipse-plugin/resources/Elephant-16x16.png b/src/contrib/eclipse-plugin/resources/Elephant-16x16.png deleted file mode 100644 index 5721a7a38a6f529661301b69cc8ed8b3c99a8352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 866 zcmV-o1D*VdP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z2Ph1>Fi)NU000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0008LNkl3uhE z#vaC^?X*z%ig0)<0D^V<6*Mi5s;X811VU6`+Y_Jn?D5YH4D`Pygn$BwOi#~j=e$C5 z`Hv8iL(?~aPz{Vl;QQr&xSD1n5;@*FGt>6${Q29%N-07C__~EOuTQ9lhSE1E@F-Ytr>F2qEyiHE`~rSbU6{nqvSM zlu`iHpVHKTQWB=Qi7YLxwCMmmN{hdIKi>?D!?uIMbuBFx>w;m_KuQiu836Kk2N#qY zs5mRG!Rn4sA%sXIoF~!9ee7(Ho$2pS)LT}0lG1v(ZVrSfNa;aJADoxrc`K081EDt2 zbn%_0QmH$++;TEAXQHL0{nP2wr&bB6t1uQrA^!o6GxCYCiRWu;lWwK5h*D`DoUeni ztkc`ueVGmp4xT)8@bFosbf;!xtTZ+@*6ewWM}0pBorR!jdqY>R?(eazpO1tnfO8L& znqaKF(ABj&M*+}@$+z3$aqU+!*^$X+7o$Q14BP(7L!tRuLUuK#Quj{iI<*ZW4%3`l z(KG{$Ex!N&Iy`*mZYHB1ZrS2rGYr$ebm`(ZP5V(&%F#MHDo+7Pip9nu!!TMoFDc7f zeWR3s=jo7A5Zge?KFB15&U;S+V&blmGw#07*qoM6N<$g3uFu<^TWy diff --git a/src/contrib/eclipse-plugin/resources/Elephant-24x24.png b/src/contrib/eclipse-plugin/resources/Elephant-24x24.png deleted file mode 100644 index 0a48eaac75b23a150ac52d8e4a1cfa93db585a83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1671 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 b|M~bgbqs5jbx-1a00000NkvXXu0mjfp_ZAs diff --git a/src/contrib/eclipse-plugin/resources/Elephant-64x64.png b/src/contrib/eclipse-plugin/resources/Elephant-64x64.png deleted file mode 100644 index 7e261188f926d8c781f4d7129867d9854e77be45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31779 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 diff --git a/src/contrib/eclipse-plugin/resources/Elephant-small-16x16.png b/src/contrib/eclipse-plugin/resources/Elephant-small-16x16.png deleted file mode 100644 index 0c349c7690ebfb6844e5ab65e6b9cd5585a0e837..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 809 zcmV+^1J?YBP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z76uL5)W2f@00OB=L_t(I%XN}HZyZ$=hM#lqo&6k-KjU~46BH|7L<(|%f+EBcE|Dk@ z1;2rs|3FDifskks5)Cwr*4slM~xY)(5hue=br`fS3*b%!w`{D;ixW%mH;0IHGS_9GvC7Wn+DlD#Jl|EGTe zM#o?b_*xi_Ve^XN+_JE`WND)6?t$vBd#b9ce|y~N_#b>a1N{E@n6fPCxQua;@ct)o za0pLEvxK*9Ler>PE8+k`P<{8qhOfUVxN$AzFb^!wDL+0klvSkHwHSex10izfUPA~% ze$=P~`0}3T`yJ2it%7{mrr(X!HDqamDFpjhQ3aee%%#HJ?lAm`o#S zIwfhhu;TdRspl|nh_S_D2EKyH6w)p<7K~I3^Jex3QHAwEWcx*UdMyYGqPDj19&pi8V7oVl4|j*u0+c{AEYtIuy0x>V_~__H4hb%=H7-M)EPN zuR*H?&Iv|D#8;854`-IzlBELD=F)jbOB#|yczsLQdP%r^LGZP5W5X~%C-@r7{hun$ z$AQh~+RW;};7q}-n-x_MF047yF1)#IupA>gC22+0SCx}8Vm|(&;^Mi6EERmEIyq4e zM-|gDlJ*Q!uNVV`hy7t7OFiH2RGeL~6lH^Z`>ih4K$aQ~hA^K(yA98rwd_2!WPL#d njwWCQI!R>bmzs_9Q2NN9e;hUT5Xtsz00000NkvXXu0mjfw61Qz diff --git a/src/contrib/eclipse-plugin/resources/Elephant.jpg b/src/contrib/eclipse-plugin/resources/Elephant.jpg deleted file mode 100644 index 530baf999331e3189f7536b7e2de1b554958535f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4105 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 O{bLqL6{WDBP5l>7`(Hu; diff --git a/src/contrib/eclipse-plugin/resources/Elephant100x100.gif b/src/contrib/eclipse-plugin/resources/Elephant100x100.gif deleted file mode 100644 index 77e2e0d1c7b83880445e4775bb74b7a922bdf078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7553 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 diff --git a/src/contrib/eclipse-plugin/resources/Elephant16x16.gif b/src/contrib/eclipse-plugin/resources/Elephant16x16.gif deleted file mode 100644 index 80f650e0b1b30e9d94e21b3ae26e43bf214b87ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 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 W^iAQJD_1lC0000$Tnh diff --git a/src/contrib/eclipse-plugin/resources/Elephant2-32x32.png b/src/contrib/eclipse-plugin/resources/Elephant2-32x32.png deleted file mode 100644 index 036469a0ec4ae555e702785874a0b92b0f93a5bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2165 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 Q@Bjb+07*qoM6N<$g59jrRR910 diff --git a/src/contrib/eclipse-plugin/resources/Elephant2.jpg b/src/contrib/eclipse-plugin/resources/Elephant2.jpg deleted file mode 100644 index fdf8a41f11f558f67272b53cb74c9528c8792878..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3562 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 diff --git a/src/contrib/eclipse-plugin/resources/Elephant3-16x16.png b/src/contrib/eclipse-plugin/resources/Elephant3-16x16.png deleted file mode 100644 index 8ec09d4d8a5cd1f318ca809c593021fab9ae667d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 zcmV+k1NQuhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z5daN{!46;m00N0gL_t(I%f*vROcPNQhW|TrXQor8r7t>S!3Ih}?ZS5=nr?uQ_+X=n z3!^6NUAcDS&cwYYE=(}$%BX?FlCUwxL=qHHu>~s;Q_7o`zNhoLt{^^$E?juFC*PNo zbIuR^?;?L{z8Fio6qnQ5-74$DiB#OwSyQ-`JsBA2G5;#KdoLM(J&}DRQ9IiaX?#|x zJFYW8@W{2Rg{pBRvPZpj>0;O1j)KQeQ)k~y8N=i6SIEZdECK-;hYlQsZI+SxG>^sQ z9OCig-@1>v<8&v%OgbORmz+f89q{`)(6Y-1uOh&$G((nUY>Z8zP$FT*q-OqCcB^Ko_hk~$v+QHC+bpP_YHL7VK<*JT+t^!I$@YF^o zvx2U6AG%MpW={9FgdGxL0I)qlX3>^&dE@@lN}bpiLwma$hmWd=M!g7!T~LE6V*6Y- zO_Q}uyv?+1aod8IuRet8Ce(6S1E`KlxsGbZ0^v*$@K9A5)tWU~saRxft#opWqluAs z=LCU&UNZO~M+AgI9$01-wha_F4G0ng7zO2d1pM4Wv1AnlDs5knin7z!=xMY9f;7Ld zw5lr#FV+nib&Z1AHnK}KC@u$A-DSf$9wZ=X1lm=zYXHIe5q z$P-r#TQ~iPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z5i~6bh238O00gW_L_t(Y$L*C%Y*bYo#=m>ceaxM?b7%UR=?sKv~%1`35)^T@F?`(3~NDKpA0^!93x-M{%RD`0{sRO0_iaQKr#dSc2tG&r2! zk~E3`zqSgaHv2@AcwYtYlP9`n@#q=2A0Z(}ll0d5e%gIm_sZeJVS{`{VGr^t;2 zHJk64DTQX!^&t}qLr*|avj_qcVWSF_yU4V~p_>9;SO<|figUuOl*PdDFD_E~pWx$@ zTz&V0;clO2K#2-Xl|d-bs_Mw34a7_tEiK(3GDDY~gwNvV!HR$*1i?E zZh|BIcpuk8F0`0PSrW^hhVll^QNzYC_keXzS46He8(j>30Ag z)~r|tDJ>yxlJC2-k^m51VO=FSc64f0{*w2R-IQS49#S1LQYi(wZVe45#9}o-G^QY( z>V!gdM54}ET({>WMEgwBdRgo`;q22lRJN-`|`gk}wSN7$W`0A;8Eyy(-V5V3{d%FTXCLwAl5QGVC$#zFd ziA(SxNaP>@cz!bsxVAh91A6wnwR~iF=73*%Ep=Uy) iYUCDIDr5hBkN*K=#VN2}doVfx0000 - - - - IBM(R) MapReduce Tools for Eclipse enables you to write - distributed applications based on the MapReduce paradigm - using the Apache Hadoop runtime. This cheat sheet will walk - you through the steps needed to write a MapReduce - application and run it on a Hadoop server. - - - - - - - This task takes you through the steps to setup the - Hadoop environment with the MapReduce Tools. If you - already have Hadoop installed and linked to Eclipse, you - can skip this task. - - - Congratulations! You have now installed Hadoop on your - computer and linked it with the MapReduce Tools. - - - - Hadoop must be downloaded to a place where Eclipse - can access its libraries. This task covers the steps - needed to execute this task. - - - - - The plugin currently supports Hadoop v0.7.2 through - 0.12.2. Now click on the top-most link that you feel - comfortable installing. - - - - ... - - This tutorial informs you how to set the default - Hadoop directory for the plugin. - - - - - - - - This section walks you through the steps to create and - run your MapReduce project. - - - - - This tutorial guides you through the creation of a - simple MapReduce project with three MapReduce - classes: a Mapper, a Reducer, and a Driver. - - - - - Congratulations! You have now mastered the steps for - creating a Hadoop project. - - - - - - Congratulations! You have now mastered the steps for - implementing a Hadoop application. - - - - - - - - The MapReduce Tools for Eclipse plugin lets you - browse and upload files to the DFS of a MapReduce cluster. - - - Congratulations! You have completed the tutorials on using a - MapReduce Cluster. - - - - This tutorial explains how to show files in the DFS of a - MapReduce cluster. - - - - - - - Simply double-click on any file in the DFS in the Project - Explorer view. - - - - - Right-click on an existing directory in the DFS.
- Choose the Import from local directory option. -
- Note that files can only be uploaded to the HDFS at this time. -
-
-
-
-
\ No newline at end of file diff --git a/src/contrib/eclipse-plugin/resources/MAP100x100.gif b/src/contrib/eclipse-plugin/resources/MAP100x100.gif deleted file mode 100644 index 71cb60d0c3c8e54e2f4aca0a994e395ccdc66f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6978 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 diff --git a/src/contrib/eclipse-plugin/resources/MAP16x15.gif b/src/contrib/eclipse-plugin/resources/MAP16x15.gif deleted file mode 100644 index b2d3c047da945902ce5f2d6cb7725e5911b4fa79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1065 zcmd7R{WIGK9Ki9fwP$tfPB=6yEJ2>uDk7Dr*3t@EX}i|LJX}>`Gt|1O9+$>bq#hFL zlIX1anySz-)J~OMPuDG+R+na*qiHZ|tA~-2lbAfIe0JSmvDaVl{^cEWJenEC!yp*M ztVRIrSN(BvHqD}`D#3fff^4w-V_9S{z%XnsKRp*NWspUI#BbvxU~}H8SMa>whi%)- zUt|WO(Y~w!=nxaI>xPZF7cW{O0xCRR`PC^mKHLxAq=Q*!7akMg+${PQ37s_dd=lC} z-P+n}pn8GbuAiTSnOZ*8cPKXCrvyepd&L*-?l3O0+wG<8MKB-{2KZfebKOAG(ywH< zoI2DLL!bXmqU|qQtIq>cAWzGhODl1#&O-f(^9 z{Om|Q%^&52-Hr?G&5i5KWY^tnTQzJ97N_4Wj0f8~*fw(o@i5zKwwm>G_xg)cbj2|} zu?H@c=g+HT#(xZ)q{Q>h72|DHJ)z#(_S}q0@wE?p1f>_@epzcYV|;2>cz_CVEzP#9T?(pA(g%c@()`7eZ?$OmIuEk=K zGO5i255a7Bz~@f($>C9*kWSh7LuD*GQ9<^3o=TI_$vmtVJj{pYG_ZDy$+%5j6M7`b zXtID=U!W+-aL2wJMYoqGUe}%ib&=t(X;_qTm@Jt6+4kTfOh`>X$l=Fom?-ve_=Af&{{S_eK{H0xYpj!Ez4h7G}U)0;IF5%vkE#xkTzYOh<^K~k5OH z-edN@;9;lHo9TuA$X+(jQ|df|#f`Zron5K)QsH=9jpr>cns7Fi{)rY#-k(pOc2F+4 zgkjEWPEV}Jh4EtJZLcR)yUKl!=H1O}V`2PKoZcp}NYUCFd?fz@EkS_a9eCU}qrzm> c_Og;h@0?wF_12f6lw_h~Bdd$OE=0or1 - - - - This tutorial informs you how to run your newly created - MapReduce Project in one of two fashions: locally as a Java - Application, or on a Hadoop Server. - - - - - To run your MapReduce application locally, right-click on - your Driver class in the Package Explorer and select Run as - / Java Application. - - - - - To run your MapReduce application on a Hadoop server, right-click on - your Driver class in the Package Explorer and select Run as - / Run on Hadoop. - - - diff --git a/src/contrib/eclipse-plugin/resources/SetHadoopPath.xml b/src/contrib/eclipse-plugin/resources/SetHadoopPath.xml deleted file mode 100644 index 743d4c1b985..00000000000 --- a/src/contrib/eclipse-plugin/resources/SetHadoopPath.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - This tutorial informs you how to set the default Hadoop - directory for the plugin. - - - - - To set the default Hadoop directory, open the plugin - preferences from the menu option - Window > Preferences.
- Go to the Hadoop Home Directory - preference, and enter the installation directory there. - - Use the following embedded command to open the Preferences - window: -
- - -
-
diff --git a/src/contrib/eclipse-plugin/resources/Setup.xml b/src/contrib/eclipse-plugin/resources/Setup.xml deleted file mode 100644 index 677a1519521..00000000000 --- a/src/contrib/eclipse-plugin/resources/Setup.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - This cheat sheet launches a browser to the Hadoop website. - - - - Go to http://hadoop.apache.org/core/, and follow - links to download the latest stable distribution of - Hadoop. - - - Use the following embedded command to launch the Hadoop Web site - in a browser - - - diff --git a/src/contrib/eclipse-plugin/resources/download.png b/src/contrib/eclipse-plugin/resources/download.png deleted file mode 100644 index d9f1de878fbb30f95fa5dc290228c1eada6eacaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 661 zcmV;G0&4wPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z7BDOxp*~0e00I?BL_t(I%gs|yOVnWye&+qXyPNL1x@xp31&R>~f*tJxB-F7(b?^g- zAl4zeb*e952dP8Qp;M6^^ir3Sr8Yz}Dbx@n++0`Pb$4<1_x_y@ngn^MQ_W%iG4n9b z3NNjZ6G#kNhUVs)0yn&(x_l};`(6k&Tjw@CbI)w9W9Ru zjI~@1O^uPUYlD4Lp{}RiE#_v+Ms{c3uOgjFv=@q{zOK&Jhl$1**7IdMKaBC{F)-^Z3gk-V_{&Xjl(TV=E9X-wQ1~?5=wQ3UEy9%X> z$M>xe^UE6r?|pgU3(n1b%EgPD#rwxwQ{w@|_;ztG^vsp%nWbGB2!z`1UqNdFfFXzw zYI|qsa{toZ$ zhn25eh&M!_t%uSMo*B`IL{tVa&O<2+DFVb~0Bt;q)e!le3L+^{qbJkzCrjnpMWu~0 v#@SHYx^v$DB+ZBF(0~t|?sPKy?;r376s!*{(^7E$00000NkvXXu0mjfC+-_1 diff --git a/src/contrib/eclipse-plugin/resources/drive100x100.gif b/src/contrib/eclipse-plugin/resources/drive100x100.gif deleted file mode 100644 index 1f36b5472d2cd13973e1452979d7b2a15233534f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5903 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 OUu6xxst6MR-Twiyx4ql| diff --git a/src/contrib/eclipse-plugin/resources/drive16x16.gif b/src/contrib/eclipse-plugin/resources/drive16x16.gif deleted file mode 100644 index 15d5718e685f9065f0a1ed36828030d187a9221f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1071 zcmZ?wbhEHb6krfw_)#>xL7^3v3`?cBlyi`dz(UcEG!d&w?$y|hMP?6Nm{_Q|R`q3x@7+LiAP?7q{qW`~S; zlw;6LNr`}n{r@!^w?}nvRn|_h3~x?a`QIR{Ct%96r-vrX%O$!`Ij*JF>{oP5SGUu7 z($%P0pQr9Urjt2+^0tFlPwdcB?K4kmJau5R_l##pcdas+aKUKi*i*;J-@jja^WoP0dz0#ugC@QF_2cX8#q%#-JiqPgQ&rtC9mjGJVS6j>jVg+T zj&=9;J$xP7dS6|w?CF}=1?O+QI=#p)?0|c8o{~mvNZlouuBVh&aXS@{TS zgRP2+sVZ85u4$_icfQ`TVd=^RQ*@^s{Wwcrr+e$ttvgIK7lifR*>L>Av!_o2=Y39{ z`a5>bKdXj=i!R>t-tyC_=6>{ymoXEb8@t!(n52jZxT@$!7%aHtu;|T$6%huyQ~YX9 zg|Gf>QFzAOWSMW)zLQ7x?BBW~u#G|Qs+P0% z9#GI}+GMp#;!DLA2ObHNjlVdgLJx>vrkVac*4TVj7+*~94t)&97KgOoftQ?a0iH+ qYA^|i7#uw^Pndz>Mb{CpUk>SO&w21XntZ%}uGdN@3uy@f25SH+ue)ae diff --git a/src/contrib/eclipse-plugin/resources/driver.png b/src/contrib/eclipse-plugin/resources/driver.png deleted file mode 100644 index ba270f4ff87c1cb98811178c74f7d2382160b060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 820 zcmV-41Izr0P)z02L|Bs#+m>C03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@00NjvL_t(I%bk-?NRx3G z$3MS!@7rASb*pVE9lWId*`>=1(x5I0M(9Ds{*Z#l(2Af~$PQ5vK?Q>a3lBr0B1C4L zJfs$y?IfrN@vwtXMCe?;tIfUh<=xvsGc)keb9{KdJm2s4dA@@GsF9f&0XP6l-eX7x zDgg^9050I@t$6$_a2V)s*R&O}8gpRRute-;dAhWq521Ns_jg-HON0Kk4la zir< zMx&c(A#gaIxT>q!dN5=ld#bVV-n(S-fy3qUD5}b#mKLm13AU&s1p9nGfKq9BIdihP z`6FNhNbQwlUDIp; zu`?i%MB-64oxY)XJhIr~g>Bm(imol~>oV|JZ#cu}2asfc;xqSASF9UB3W!dJR+;*5XM30000+|}4pX>8H@8@~GFRd($c{qhR0RRAxsmTo+7Tss9>!&za z_ubiMB#Us|H8Z}!qO5Drs5PENPKTH{!2kd*{^NB5kdr6K+5|l^HNOcO1)e>tDe7FX z5CH)2O_|=fZWlGNnm-xr`YrC8zA6mwWOLTk`ollaqBoiM+)U)bMW8)&d@olcrUp#0XOkO9&zJC3h@vIHxty>&nH&KW!Y2DCs+AlGM?!yN( zQPo!d2(=Sy)|ZAdUh9?Mu_@m)P|6*9ht|;d(wE{=@0EXZM1_;vONM7@mbPrVvP&>B ziO4?65QCrW7*3r&KlVSWsi{&`-RV@f?C)-mLTP#~Ji3VmncHmr&X(5zQ5PB>~-DMVDF3>de~fWAc$@qmj%*rE-PMiT=65o^9$}g<>(vz}^4vKTA=^s`-&Snp*HK zWwh3#>CrpH=BBVXW2%Ti{1+awlOb4qxIEToxbOtzS?u4V&{Q$K-W81OeO?P#RK)Aj zzPRN2CmsxF4*kV(0(8R-vpl-MB5VT00U8e z@dmgE?bGFR>ePsuT+k6=&Xqs-^il?TUH^v{KMVf8wLJ5S^#G(7{{T9`R2d zvW+z8-Y%=50BP3o7D!N3K~l|CZ8u_%t^lGj56*pVuf2`QJhU6Cy`3&AUzW$Ni%ICmFWh+a@TPpy9MrU&$J_6ZF?EqdispWE zTUIV8-GD_3c{NluM1TLP~t8R9( zKD^H3ZvtcZ^)*Hjz+IXoXGIA8i{y}lld1(qv)3K%NiFfbVrEBHih3BniEVH)m`$5*m^!+d*Y;QnxSW4LbI49HosjsWOv_M z8*VRDr}ks^g0o8<*sDdYA~c$=V}JOrB5*4%=t7p7<9zh$uMG6^vRIXxLei3bs>PB_ zJ<7}#lGJu5Y`Z9XcyKXQ>~49McX^@AzTnR)GnNFKH%WK6GP$D<)Q`3slRj@r*eRLy z5F=11x-OZK&m(uilepphl)3hKU2DqmNvmaYqoY5>`%k~tBB9`c+&T&L0-K`Uo|@dd zc8e7h*)||wDIfr7AC3(YeE5=2%doXPDNg#Oqd7t4>z5nIX2}r+v?eZVM~^&R2DzrF z&v5TEF^YmZOWgCOfzH-$?~lB!7)YRI3$4*~E)|TKH2qd3lNPse>yP zQSF5+SzUdFqU(|Kch=T}XX10wo#%+}(Xl?ML`Ms!oLOU^oPIbKDiWh>UO9Z*(z1qu z=OL1sH@=f%k6jK$PqinOS)91Z-{L~Evbo#NF7gVdmh?MC5}HV3T+cR4>dtF4uPD## z)@-VaK)wU==LHhN!e;sOnY$B4@y2n58$it%W;+Xer&^eSGm&g8wMWu>My5JOPteaK z)SnLkRvB^@378*EgKWh)uK$VXO?lavs)g*>Tmv2RqO6~t7{iS2ko4_tmsKVr`k3>C zLtPfsxeNcQFOTyUnh@M{we|;!Z7STW#%qUoD9&k~7DHV-59!%)Zg+pKoLYUyBHb4wu+|+hNP0?RN8nYSE32`I$wcDS z%`5__wDk)on_ovQZjg?PZbadg4*!2Yabm*(qr!Qx2i|8cCSyL0(IW07@O=)=ozmw1 z*_7DBT~_0d^K`kHnjApDav7;auMCd%s1D|A2(RxdpQY?uKTTu1#7=aInSR(L8LYv5xgy*#-`S0%Y9(5jMzy1`wK%Wwmk&~mJ_u##1Hi! zKgspiaKDcxFd_uJrO!NRVrGa4o1{apMZ<1)AvgjOK6XiAZ{#yD)rGmw&wjZ9wc#=DfDw0nxJ5LVfY+?Q?-sIj(9PJ#szxO?~ZRc>; zmtHfylFB!uHcr#7k-y0QYVo$M6+q^k28m-b)!7^LZMN(?&g9=6=qd0d)NB z8JKDd7byM*w_WL79!r^V^)o7Q0Z&)8OoK&4&}oaB2T}~xDXJN(t1=Ew7gaQ^(f?!RCZj0R=AIL= z%ROM}3-{yi4aL`^PU6QxRueafe5ZHa zVxr$BtKvS$_YjF{2K)^OvH0_1?_#L!|FAN?kn4KE;@O)UeB#J0RfR#2gT97jUoH1N zLD!dss=UoL$*LRLU*|~&QMOTs<0eNEy**-KIOk7i)PuzdFuOO`+P9@w3rkX@Uo*-# zb$sFQyz1)e`){UztIvUT0${+<(xcFh&YQK@-nct`1)hhG$*?*O=k`AD_?~ZGFF=XG zdXOkSNVuH!8{rGF2O_yHKL$(u2#|jWVXy8Wb(H32Q|oJaA^cgQy0XnJe90)3s;;hi z$;fH%s_No~rYk+e-O{eD(dg>xR|H zCZCJFON%};1vju4T0pV)B3S|k`Zk|jB=l|F?H&Kc-xR~9>ql5z&dA8{(y|ayQ&$hg zhi-oPe8r2A;StJQhyxGao=Z3XI<1KeWedLDJKj#EF9;hQq+wYYT{)Vgy)SWSk>+CT z!>wr8Q9q3tS*^aJ-$OrKkbN_O=&R9rQjqS;?qqF6VUI4z@NtsqKStbJN74k9`}e_f zu7J*wC34>U%2FY#Q;$Df*R3EmiFok_{Ky9--xUA1EhyEXLWD|+ZR2~9IQ>9pWz2)u zHb(6hXUDir%cT5L;EtoK#uqx1;lz?=?Q|aH1qK)ReEzW|h%1x+{$pg1Y8vZaK(50H zsx_*yn#1>_w6F77I&`;#7j!0B<(L9T_)Xp=0>>reBB6bSuJxFtqzrTIUnVWHd`{0#tn#%A;HGDi%{v{m^ zJAwjWua&}cpSGtTqH2Z{$Sm~i*auaHu5Ihs$Q5zMg=P83l;+T7gI_M=N`-?_*g2EoFdiw=QzIQ3)LYJNnLs z*TlE05SnYHb4D`_FWwvTUBg^{&uZ>X(PzTCm#;J$o$3@Bn(ks)23KO$*E;66j4PVq z6@&fFj9wyM+bHLFp5`2)O-<@cQ2#t$8N67Z7|Ot0L_?YvdS}*Y9J+%o(yN-iLWzfc ziraQ2XFEe!6FqB#Ib!Ip{qHfTw|8}w1YTv~aO3o$kU@t4ou3ss1bxa=&FK9_)(fj{ z!v`Z2(_?sDS}4TUN@xA|6*=?(8D4s9rz%kO5~Y>+7np_eU-FhW*gO6&VtUi!Munm0 Glm7!iRNxZ; diff --git a/src/contrib/eclipse-plugin/resources/elephantblue16x16.gif b/src/contrib/eclipse-plugin/resources/elephantblue16x16.gif deleted file mode 100644 index 0927b13bb4451ff3aa696fbba33f2a3a1fe4b67f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1053 zcmdUu>rYz+96&EhHrQYRg~ae>#ZBYfV(PLj^8u0JoYe)Hc81M@rL^=xTb`-V(Fc7O zS}0@fsNF_^ZSDc47&g%v-J~QYW{dm42vLz#n2f?*FSosI@9QW28J?W~;N%?Ry?6MH z+B_r=`DX@E*dR@U(hmGKP}+c^LFEJtXBifjSAk)Grh#Qa;{l0bZF!XycA|pzwHocZ z+yZh7gJP`A0wR6tjAvtVI(d7VFr35JV@z3Hl;0dZB3e;937r@8KDxmMjqdd4oiK0( zmzoj^JD3Bw#7JoR*y=M_V4U*ZfT0kr_Y$9JscJ15`jOW3K5ek016T22h_GM87na~e z3+-~u#V}^}cXH_o{pHtmNiEy%Nhlpmy@{!8N{EeM8(fieF(L!lzgiLM;r<*{wQsDV z%twu}UuV;QMktjXGX`;)nb7%?9sOjRJ3hZi$}QCRcX9t1(cXto&7>Nvs5wBl_eUEn zFmMfqL-=v!`pFhd?EpV5URPQ%{}?UOubt97m07`YDJ|5Iu90M& zfvIR@hbG{!WlCy+=I&U1S5jpIl^u98yu%Z_6OMMCMWtpa5u#1qtkksjfil(Tgqu@r zU>tW3$6H)PjV@*y#QZllx`$ITb2{`xx}p&()QKy%5+d!Y<0AfTn2=jH12J)eAXy{=*|hZTJB7KGFXRXg=ku{RQI5MXYbTfA{E{omCma z!4suJuZdIVW&H($g9|xDwS1(j^cGze8?V2ptzlZvMfzUJI(uPqPyY1>#si;l>AxkBxs1YF z%Jj#D<@UY#oI`ZauE#qkc2yy#$mFxnd&>E@<5>}&aEy0g3pszV{KJAu_ZCfASQZSt Y&gI+}y|3_&bnSTi^7r}09OSKk0a9I2eEibmf$sIsGNp*+#Je zrgP`c*|TwWUVeUaOUvoKi+=q0abipNi7lO1uU?%wYu4l`Q!ZY-czWNW(|Z@}SX{nz z*>b-W?~sCk%C3r@8QrD{dhg$V`1$fBMWBAjv>6Q2fcl z$iSe zF?r7Q_^>0!uW<3ZA2s(<&WDRA$W_&-S4qpt$T!zk^=h2^A}gt2&%1Gy=D!Mrnu^+&0Dr=Ix<)T07D{!GXMYp diff --git a/src/contrib/eclipse-plugin/resources/hadoop-logo-16x16.png b/src/contrib/eclipse-plugin/resources/hadoop-logo-16x16.png deleted file mode 100644 index 4a87cdf445d3eaaeb6c0091c65003fe9a23a46ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 808 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 X0};a+IZK^e00000NkvXXu0mjfCahyz diff --git a/src/contrib/eclipse-plugin/resources/hadoop-logo.jpg b/src/contrib/eclipse-plugin/resources/hadoop-logo.jpg deleted file mode 100644 index 809525d9f158f6163c7692b5e317153ae68bf23f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9443 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 diff --git a/src/contrib/eclipse-plugin/resources/hadoop.gif b/src/contrib/eclipse-plugin/resources/hadoop.gif deleted file mode 100644 index 828c515c067a422e97af4b100632fdee5dc1eb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1465 zcmV;q1xETuNk%w1VITk?0O$Vz3B2-TRP)#^gRsd8_Ely8HSy3NcRRvW{S5H_fS6LHV zQ9)HxS6@~vT~#?;S|waz0AyVNTUsqzULj3fR$pNZU0Xe8Vjf{;9bsWTYiR&wT~u*r z0%&XmZEgT`YXE0vO=oL9Z*v57aRGE`Ic;fCaB(_oYioRW0DyG>aB@v@bVPf70C|2A zb9y^?aAbyn0D6Hfi-Q1)fiZ%BQH6m@gn4<6i~xs?2q5z?#6|ANLp`tmds{pB{ zFrTDZv!y1Yp@5~PWw5gXx3B`Fppvb!B&DW)s-%&(y#TkhLbkjl!M*^ovVga>V7RY- zw6KrFyDz!6Ys$a~yuUTOyI;DrjmpLW!^jJ_vZ=JUp18BSxVE&z$u!T!KE}&N(9{9T z&M(HrZ_m*l%hVmy)&Rx9pV!bKz`()9!mHcW56aGH+R!%4(O1gKhtIyg$H%wD$Gy(W zmetx$;^+X?(WukkW9Z-|@8tmJ*xdG=^O3j8{_Q<(ATos(7n*q!{O*E zh1vP?G4q`%jV}h;p#o%;%@Tp0PFPt+1A(f|1X_w+IL{s8IR-0<{C?(|pW-{$`L z7xexZ{{H~z;okZ8K=l7C{Qe!|=ilq>vHkiu>gmk&_hbA1F8uaf`u;oi@{#T9+x`7g z`TB16{$Tt2cl7q9?(6vR>+$^jf%o;q|M;Ns^6L5jkMs21{r;Kt`RM!i=>Gq}|M=tl z``!Hi=l}ozA^8LW3IP8AEC2ul03ZMw000R70RIUbNU&eOfBEv*>Q^fU2oGNfN}NdX zAG~Z_u83lXtsS->H7bgfn54x!dh6CH`^JvSpphckys%=3T|0Ezz=1R8%}ow+0%^e% zsE&o8be~ds8wah~Hgn&!!1(9L!I_G-ggj_aLEe@>*UULv^=6zoaNCpxu`uF^DkP)w z3FMSd-H|}^$PJ>`htW86)WB(jh6h5HTg%Lhh&61Tp8>wQJ>pUi2aSE=jHHv7iRZXY z<_1%lktJEIB~)4sYb6Olqak%pDDrd1K1)#d4hMjWP*wJa{3Y{}&%eE<@ z#0^$(VaEgr4J@z#Q^tDXumOT4?Ie>+3YGNH3O8sm69j+IJi`irvXFO7FTng@!$3O( zbCx!^jPMII%T)7?H$E&<4S1g95{oj`DAP+aKL9|`4(aFwjw?%?Rn3sOEV0Ne)u7Ug z4`I9#3nr(?A;1Fy=~GV!hKxhuI6++E4IWB_amXT5icttI3jiPj6ix6kN*V*@(@z0t zoHflj(G;OX5MkuvN-MqG^2Y^o6i~ql6?Gy)C^C$5428;}lU*^|RMQJ4S(uQD2qc74 z4@GB)@Jb)afWu8SvuyJXW0<_$x2X&sXmZb}6v?%NDzEUcN;AXUQo;`@d;m=^#klgs z7A({;)IVH!FhVZi++s#5gvfCXEYN^LhZ%_cFvPR)bQ455(SX83KaPZwOe?O?@c|le z+`z=M|8%2)7Lj;?!aw0?&_yUu45E)U-Kc}>vure>fdx?rM1}-9NT3hC1o=}@JQz=u T&&3_%E7w5&lpHca0RaFzf%eG& diff --git a/src/contrib/eclipse-plugin/resources/hadoop_small.gif b/src/contrib/eclipse-plugin/resources/hadoop_small.gif deleted file mode 100644 index df609f35d4eb9738f9007f85aef71ee71e0a6c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1072 zcmdUu{Zo?#9KauzBCO;lXoq)nu~Vxb>OimSGPP?-ARVC+weF&JGDr?ipT?Rz<7Kfp6wZX-oELd(dRGt+M*yP&=VaAD&<2B#o%JAzY$a zmYYFtW>K7znL(;sJ>^^(3&g$)koq&kGRBHZmx^ka-j{|{c2e67Iu}!Af$FyS(MISR zAS#T}N-LOpi82GJ?%;wbzxPgj_swgoG1iYYCiv_ig&IO)WG3NAICMk`FPM}pS0a23Yzhl^d#|A_PPw=i2DI{ z-Tx?c;~0P8W-4D~{4|)JSW}yu_UdO@znJ}fH`;kk&tHwm{fX0Cb|P!ecrv|fJEY>N zt(&L+4e*h`>6LiBaPMeNt8aD)FTZ2+@sh&H7VpFxsk!Qjo2JM2vJ;S31btfyL|HE? zUfZx^@7A-z-TQb=n?JEX_$uwFp|~@1@b~O(&lPOCOSHJX8}&IN=bY~&`@Sy{eLcpe z^sKaNDT9M$x6TfwzazFIqn<+<+b3-=UFS{RyY#Z#kkNl-AWyJ=QV=|sRJ37}N9tiQb7pLs@{kTDxiR}6hY48w( diff --git a/src/contrib/eclipse-plugin/resources/job.gif b/src/contrib/eclipse-plugin/resources/job.gif deleted file mode 100644 index 2bc247af8b2596f17fbeb26aaf86e0be1e9ff46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59 zcmZ?wbhEHbPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z78f|)zF1HI00SaPL_t(I%YBnyOj~sTg}>W-d!e=W-m(tX4v-;(5Cs-D%G8Zm+l`G! z1I|B$48_D{KB_NjrZWrCn8gPr8skj-7h@oci-|FdFW3cBEDR7B3?k78-clH&cI|Bo z_vecyGY-$&dHHgZa}NAlVW7XRwpOUB`a94DRPaBNZ#RCwf3mx~>(J37Av_+p?vSMJ zmE`IaFuonYVHgIQrpdtjKHmb41N+m?k8s-h_8``_!gWQWYY#(PPpHyEGznbox$ z9|0@CogtQGVOf@x&1O+mHKu8vrH1?Jg|2Iss;a*!igHGl*gDmL%!TNF?%APtQrQr>d&|@e>{5)N{{ndA-Iv`z?d@T7bOf(qu(?^lG!t8eLf#&{_)T_s*=%>j<8h~L+p2Bb zk`O|~Vlh<+;mYN5<T)u<>d0g=p98A$PaC07=$T9= zbC1*M9F9h#m%Lu@m(QO*9iOc8cMCN-=w0l0$ta5;K7Hes;VZH`V-Skq%13E z%E0N4jz=GR`eav8B4HAG_>eo1SlMNoD=!BEfwiWl#{HVdMSJ^k4z>iDm>A>Q?3_J4 zbNx~}ed|f3y1M$+<^%hgnx1BCY@B0lN2#x`V}4=r-E{gEOG``4&dyO;u?tC(7@wHV zYnrD}$mb(Kt)!~Xh43SxnwH@G=tc>O?BK%3pD;Cj?R#Crzwn$Y| zf0&6AAibW?=RXB5NI+}t-kKlE%L9~^?qGglkzW>nWn&{17#tj22k7kVECS8~8^8yE zdHa4!{=V&qu4@AL8ff$Rd_@BT0}4Q2U!N0j-f78y0pnUb__+UthX4Qo07*qoM6N<$ Ef?`^+dH?_b diff --git a/src/contrib/eclipse-plugin/resources/location-new-16x16.png b/src/contrib/eclipse-plugin/resources/location-new-16x16.png deleted file mode 100644 index a7a072f0ec8ac520e5f859877b471c885243090c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 888 zcmV-;1Bd*HP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z77h?_3t6%N00Q_)L_t(I%Vm(wYaL}2hoAGlGxz4+OeRT_G)WT+iD}Xb)rehmVH+{s zNwr8(L2##wg3z7#7f2T(DriAO6y4~;3L3B3LeiDQBBdN8miS5m8dOv37oq3Oo z8zJCbbJ!dFPXyg>MqB{ZpW-?=GI6dFjYAXYJzYnfFxn$o~Kvx4{@lolx6^*=fVB0bz8| zvhd2(lgLJ)i8Gx;-3kbN z^xClt0+8pbFT7Ro?YTDl_eOmAU5)-8$HaI)Nd`|HEph$RF#sNa`V{ZK@f<2KM^7$w z6h1$j^2>6Q!*fj}baYod&Osc7R4XMu`~sSL&y%zjZLQL5m-#jNp09q&5P%ooZs^Y! zawhMzbX&*jUr^f+h6j6bxnQ=M8Xsy?{rw=V>2oZtdiG6Z7?-O?RZD+gg;LT)uCB3m zz0Sy>kfa5E%UKmJuT{`{e&ot}KxhNnsV6W3e_YO~ZFq{LLaS*Q7&L@|uyQRUs=`2T zK$3%Vuyn}~2v`f%vLP@AMt24@TAnCs5td6>3HbX)%FTL#_a*vcNHb`(AgVxN!AM4} zUUW+IDvXbM=I?_?AFOg?BctBvVn?sxp~J#v18TP*b4sHP-WM37gw}Kbp|$i?VfL<= zyY~cyK^JXjn3)tt2U6w_Dm~pf)_UrjFg^mM5(I%@L`2fe6L-VVjIMujY!L=>`$-g`~Ba%URf|}^2Ia9rf#@Y zUf1^h`?tixwnYb@=hjaPO(|b_>eG}B=Wk!Xc;@(lPaogS+x?(<&aU&Pj?A4tsdfIo zxhuCnfATQ7q+`X2_xbgc%Yil>-nVe!f`o$RUHcBbdj6zy(ZQU$DPc*4QJGb(ZSB6{ zDXFEM>6QICbyK4=tFK+X^61{pxwB^$v@MLzZdkVaa(qFXyMI(*Z1$YxTZ`Kl6t&Kq zu6u?x>%(Wzm6$p$Yk0H>{Yk^;&dRO-c8P z##uWGTj$24mu1&Zj>)QtO0Sr{^=3$7VR&+3UtizPAK%j}`#NW?y>|6#3wf##H3tMLGxIKUW^X1EyWYkQ_sOrycoK;p?+qL9yWO~J{?Y9z(+AI2& zzkm0(pkZq5)XfVQE$vviKR&PV&C6%`tqTquJX|wrZC+JJ)2wa(|Nmzg*+B6p3nK%= zDh3@;Fo5y|1IJT_P)?Z)*CvTjB{nS?j~4d{N>)6&Av0Kn)SaTwocLf8c$Jq+rY}QC zG(Bi>XQIdrNrQ!xC-^Q9at&}@#HZ=iv(DyYQl|TCRc$$q$OGzAW_imAm7G}ch`mq0 zW7Cfbn-_X=Gx50v9xQ4z001MFqEZ_hD03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@00Os3L_t(I%bk;5NRx3C z#((eYyQ!O7>dbOxDw3-%qP#GaD5$jPCW~Z=L_`o7hFw%(1VurT7sVukF1qPc`l2Wz z`>;$ICSjizW~QaiTF$n2b2<0%??N4B;6>-^aCn}>^BkTd@gJo+Iwc?m2rDyy6d(Zz z10z5@V7XJXWj&AsR2$6}r!<|^+jeVF^NqSvpXyoT@%aq~U92!BCWkjvoKjlqPZ+k= z+Gp1vEYxkRzHuF>l%|li59@ZGZ*Obal%1WekJlRjNMEoFgDIUiPp=_K65DL;T&&6i zV9U{a@1;pk59@YrXlib`y`o^bGVJW<^``*<^ja{d7}#~@H@&o*F|ypetvxW1VGlpWsHpl2>6B>8w;@Gw7mz|E31x9$*a06M|^71&%xfPypGlf z6qO&KqxAs*_ZuGb+wbSX(K7OjtN?YuM;SOPyl9Bd20RgT zdOe?CH33{Vnk^9pm~BeXB#n#)(ZdMl6yO)$ytJBjc&G3nFfNsL; d(4^$)^#>Z2BqkvOfM5Us002ovPDHLkV1iRjcs~FD diff --git a/src/contrib/eclipse-plugin/resources/mapwiz.png b/src/contrib/eclipse-plugin/resources/mapwiz.png deleted file mode 100644 index 54c44950fab7a3a967d49d4e78a314a6dacdb794..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4378 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 S^3fN+IP|m)|EmT)kNF>fQoX+b diff --git a/src/contrib/eclipse-plugin/resources/new-folder.png b/src/contrib/eclipse-plugin/resources/new-folder.png deleted file mode 100644 index 5fb0b28e71edd885e3e9baa1cfeacefb843cd03c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^{2(?58;~rMGjRk`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*x37`TN&n2}-D90{Nxdx@v7EBkd$HZe2i$68CK15NSpba4#PI6t+| z*1IWCqHX>4H7gB&F+26K3VvnI$z18WXqn8E6-yO)nwplqNY-c`dQJziVxu+wiWR#40yeAdf9?XKT7 twt(JyXO5XhD>-RdsqLNd{M%=-1L7I;zGj95$A^OAz|+;wWt~$(696e>wIBch diff --git a/src/contrib/eclipse-plugin/resources/projwiz.png b/src/contrib/eclipse-plugin/resources/projwiz.png deleted file mode 100644 index 6efa859c2f993f2137958dacb682d53e24531add..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6867 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 D%F@pC diff --git a/src/contrib/eclipse-plugin/resources/reduce16x16.gif b/src/contrib/eclipse-plugin/resources/reduce16x16.gif deleted file mode 100644 index 288a5d4996d986cb82a12037dbab53a870f759cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmZ?wbhEHb6krfw_|KI-y#Xmp4iu6|b|GfR$^yE*+l9%>7M+NIz zTgb%(YJEDIY-1=H=BOU-t{my7Ft5(Kv)nKw#B5fr&5@0n>nFQs#%h!&YpkB^_Igpw z-zSxaw`7TliJe;;a&~Pa*TXM3qejly)|FU9Xx8uk2MdwfL_t(m6CrwVZ{eQRd>8w--BaMj@ zC;q=!{NVV+OXm*eMC$&(U;g{YySQN0H+vJ`KH3NL(6T1GjA+ddA3inZ>HObO{O#M9 z4~yb~{=9kXUQ?b~OsK*CUz6ffG8&65UhHeR-xdD(EfrG3lOs_xgv69zuV25H!rRa{rKqo_T@!i_Z9!&l-rQwc)36N z|FO)q;n2PdaUFO|L1;=j&Fe*fy$h22@-KEHfBC+W|h-{BGV$9DJpe^mM4%=CAY z;u8WjA6{FPnOkIMXSZd3!i_WYXLfpDzkc=Cj}I$n$Df(v|KVKLoMwmr|Nk@41t|Vx zVPs&q%b)|Y4U{JsIQ}#2=6u7}aA11GR-@WS4;d%S$z5z ztV>`~r2MR&}R`M5fj$QI6YhJwoWcvEFdT#z0XwA ztUxsDv5)Igx5*L(5?fq-Rw}5>k~Iu-VbWEqUBD~xfvuI<-C$ej0ktESR_iD#C}eEt zI%=Sx>6IaL;j9mvMm^UC#*d7bTNCamEfthF&?K7>QKIQ3;Cz@<^=iatvl6XC0^yq` vT$m|v_Jjk2=N*I7hdB;QXx-eUAtdc_;mTU|>vdaZY&(%fj9BHg4^kH@9W+j(`9D{rw9>f3s%a zSa|%|#5L=V+5`(QkIH*GcU*q4{miRP=bukqvaoE; z&3B(Zr_Q;Vzx?L1t($)R`P(veYQ@?+UCZ|*PrdT;KI=9{1 za_q?K47K zDea&5^Y`zLmB;E=U5=mrv}^u?qq%PC+4^Yj*-RK5%7~jI5inaZ&qmQN89L9+6HA6I!_)mRSf+ zKElY-k#VDCq40xdPH9F7nTrg83luoHjxAxF;NUQ|KUY!i1~bDcW|>N6d(Orqeh&`2 nevq-NNk9GQK;Qz00Rpkbr3C;003CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@00Oy5L_t(I%bk;5NK*kA zhM%2tmUBPq(lg5y5tU(tP3#8=yh$h{?9Yl2)GR2XP}W7%MTA{g5s_U~Qkwm`utFvB zrmQT4%1G_UC?$&4k8^D+w>dmJr;BWfffs$3AK&+W@B8t-I{u?PU2Yv90#Rv#Aqg-8 zQ6LD!19O|U*RKF(0sCZ!eLy#UsjsCciwp494e)%JJ4U2C(an&ing08-QKSf(V>ezFyv@cUj=QMj@7 z+{X2_+ve&1Xlix3R=(+c)s&uB*@nd7@sz z^JM^ledaBk%|F7T(p0q80K5w~Ev@tq1p=z7Vo6G% z(zX*p6aeVF&`w>!G32Q>l5Hsw-%tOi%z}jtfCeDR4!h>*a-Yh&pFQ&W@r!D6g2j-O zY()?Syx#`VG!3KK1Q76heH~dj*_UP)WZsY+b`3x`HXyA|*U{c5FDsIgt9_Fl)EG6K>m;MZq!YXL<3+P f)jIfx^7#4%2(AxWRW`^U00000NkvXXu0mjfsfU0e diff --git a/src/contrib/eclipse-plugin/resources/reducewiz.png b/src/contrib/eclipse-plugin/resources/reducewiz.png deleted file mode 100644 index 61b800d1bb00fa169224d60131142c9fb04f0c82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4470 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 DQMSYo diff --git a/src/contrib/eclipse-plugin/resources/refresh.png b/src/contrib/eclipse-plugin/resources/refresh.png deleted file mode 100644 index ed961d29ee58b644bd2a5b46d1a51e70e0113fba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 986 zcmV<0110>4P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM) z02mRwgJe_y00UY{L_t(I%Vm;FXk29&hTs1`|2cCzb4ezXndwZYnMrH{HP}+Tv=|~% zDbx#Tm4@OXAf=)Uap6WRE$u>gE-Hi|t_lh&Rz$i`u`MdZwrOdNX_J`DB#y~+GPjet zoclSyix8>$tl#H-;o~Ft4`(kIj|XMx;;*Y6&r(^1X1nlvC(K%;np7VmONBc?A>z#y?p&`dv{=4W$Ff zS5-I<*@nYG$<~eoAR1uUKNQA+9exOufGw8Q!>4~JO+7o*6}VS!L$kK**$oYLtpn9aZO_E%tIuCNKYFQATay=7?Jh{ZNjVXEF(^w2 zN&>u$KysXKg;!ph@GTbV$MkFxYPk(ig0{y4ZkUIDyI$P)&5xx$v+LTp6$_0C-2o6r z0ZL%&7F^xF!jj$MrLeO3LU^q_p6m}}ZlwiR4q!bg)2kvzV|~u(qkR#$JznUpi;ii7 zIu6v$P9rLkFX-6Vwurm|dT3`%DBmf~5g-`atBT{fqVA?LKf7anM z&9C+jr>{`}7#TV6^@-=wQ}WE58E(`u)E@%%Fff6_Cr~h9OK!Cc6ld2FCuSj&mOt2j zZva58RtqjIEx-2Z<D|RA1ffSSMR;9U>Fp_en_fh6?d+=}aoseIp)^FK*}m2G=cs`UzcYq5uE@07*qo IM6N<$g2RNdDgXcg diff --git a/src/contrib/eclipse-plugin/resources/spite_overcloud.png b/src/contrib/eclipse-plugin/resources/spite_overcloud.png deleted file mode 100644 index e256a7e2d6b23088fb22c016264c7d431eb8f681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 838 zcmV-M1G)T(P)9pmhN{ORjQ}LXSjEA8HzeBBe<|i}+Je zQX)}6895Sbl$>nIWePi%e3I>Ab3U)v@80g-`$G}=5F&sNLqu^uX}Zz8?|U<&0p`rP z2Ai9k*RDacB&TW0lO(y-Y&Jg-LUb8puQ}(m*7|8#mXAiG(f8eM_xXR~c4uej^}%59 zuqX;UnM|B9W*S;+r<8J8mJRpz_C8C~RQ#)tZ*OmRj*pM`%CdBIUH@fBDcxW&__^Qj zw`Xoanxs2)*>E`gwA1N)!8u=X&LN5- z2q8d3aL&OP1EmxulL>+#fbaWL5m}afb$EFAagroAmzI`35klN1B3{?^FL|DSzP7gZ zlmMXL@3&T0SNqLo^DUy^KE*kQs;aC~idwA}1wrtqPOP;kiUL||gkcCGLRpsjbiEm@4s~0@;v{^0{|h!`${P=#=tp8UDvSILWmc`?0FunwO110`#!9-7>~zjG#cQX zlTr%KxfeYrg75nvB5=;%^|rRQxYoM8u(0sEL9*83;^G295WpBS)7A(fP*oMGs+zXs zvbHe>Qp!uAM_#+#{xC_Bw;5x9a2dz(RLrb28VyJ(5yvqudk+AdbHs5BDJAN<{?QA= z@FOCkSzTU*Fbt=g@{*y=N2Ad<9%Jl{f8y}kH-KnR6h-D)YY&`r@4RXOTI-!&uV+0e z<+r}?_hvmz*TFfb&(F`l1^{n39R6^2c6Resx_8dms;Zu2&YU@O=KLS{72YzF1{f`J Q5dZ)H07*qoM6N<$g88FVn0>+9?6?CkCB?e6aG@9*#M@bK~R z@$>WZ^z`)k`T6_%`~Uy{A^8LW3IGoPEC2ui02lxm000C}@X1N5y;y>s`v%VUb&sel zOTr*x1{el{G<1_3Ly`b4q6nzqVjw6Cc$dv#$!s!_7C?Zop?(NhD@HUbaY^8?cuX#v Q&*-#z&2GEja8d*SJF90>g#Z8m diff --git a/src/contrib/eclipse-plugin/resources/spitesmall.png b/src/contrib/eclipse-plugin/resources/spitesmall.png deleted file mode 100644 index 01c2b57e7faad716ce8c643361bdec6dab6cb734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYYs>cdx@v7EBke3W+ro`3zBKu85kHPJY5_^JdVGewAbs1gTV3sd1mrC zlb;0aY2V=^r+BElc?oBH~h~pPHa_B#VEN$j#gRk2`^?QT!lUZC`&h6Ygzp>+<8t1Ql`#GBu lcCL5u+Ij2@2nhaQda|;a)p+XsO~7Dd@O1TaS?83{1OOZ~qR;>U diff --git a/src/contrib/eclipse-plugin/resources/upload.png b/src/contrib/eclipse-plugin/resources/upload.png deleted file mode 100644 index 38cf1cc70a1dd3ab7f474a94beed40e43430f0cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmVPx#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFM( z7A+bscgM{D00L=AL_t(I%cYZFNK;W9$G_*^yE~n_&CE@wbF)A(F-?+)h*(fi2KCS% zBocZL-+PLlq6m8Ot(Ts9u$PFUhakv=veHsxxkU|gPUm*r+`M=9-t(u2^)OcJ#q;v} z9nP08-|q(wu**YgJ!soTmua!kW=@w@Qu+3Dwpf4t{LmC3q*$p_Y8j+5J3aB$%v36~ z?R_`@1H`8E>gd6b02V8CQZ0l2eS2R8T0D`#p1?}0uNCQRL5?Lff3;5fU%zm`onKtu zaE9AkqAs_aB-7iS)tZ_W4AX9U{x<%&(WQPkHrO?m&E#&cXNsP`AWlA+@5tu#ORhRu zrIcdiK;Y%ck?y6LFRPOa@%1yK$9o4tZSKP7g@zlVTJ?;j~eN7^< zrahEOrUh97jFJi6Fu@q-w#{zz@Aut`91hJ?#uY+v-Jp;_z^EugG%Xth0=i-2Q#3V8 z8H)w|o(m_2L-(uuav@?*UoXwpI~^$5v}|Bmc6pHqyiLyOiLs-xhI&W#UtlM1o{vcq zW+>+{%(8(ZgzymvsEPytm+w7#6X9GyZ~-9%L^*mT_fDH~lq?1zY$%jc0st-E28^FO z6tpQ1GA^LV5)?%Sgn(%=5JI5JGK2s!c>^VjqEThd3S%5|(Ii}T3M`w$vKhDlREG?Q zB7;&6)1pu$8BRrpX>)89OGu`3=xKAR descMap = - new HashMap(); - - private Map imageMap = new HashMap(); - - /** - * Image library constructor: put image definitions here. - */ - private ImageLibrary() { - /* - * Servers view - */ - newImage("server.view.location.entry", "Elephant-24x24.png"); - newImage("server.view.job.entry", "job.gif"); - newImage("server.view.action.location.new", "location-new-16x16.png"); - newImage("server.view.action.location.edit", "location-edit-16x16.png"); - newSharedImage("server.view.action.delete", - ISharedImages.IMG_TOOL_DELETE); - - /* - * DFS Browser - */ - newImage("dfs.browser.root.entry", "files.gif"); - newImage("dfs.browser.location.entry", "Elephant-16x16.png"); - newSharedImage("dfs.browser.folder.entry", ISharedImages.IMG_OBJ_FOLDER); - newSharedImage("dfs.browser.file.entry", ISharedImages.IMG_OBJ_FILE); - // DFS files in editor - newSharedImage("dfs.file.editor", ISharedImages.IMG_OBJ_FILE); - // Actions - newImage("dfs.browser.action.mkdir", "new-folder.png"); - newImage("dfs.browser.action.download", "download.png"); - newImage("dfs.browser.action.upload_files", "upload.png"); - newImage("dfs.browser.action.upload_dir", "upload.png"); - newSharedImage("dfs.browser.action.delete", - ISharedImages.IMG_TOOL_DELETE); - newImage("dfs.browser.action.refresh", "refresh.png"); - - /* - * Wizards - */ - newImage("wizard.mapper.new", "mapwiz.png"); - newImage("wizard.reducer.new", "reducewiz.png"); - newImage("wizard.driver.new", "driverwiz.png"); - newImage("wizard.mapreduce.project.new", "projwiz.png"); - } - - /** - * Accessor to images - * - * @param name - * @return - */ - private ImageDescriptor getImageDescriptorByName(String name) { - return this.descMap.get(name); - } - - /** - * Accessor to images - * - * @param name - * @return - */ - private Image getImageByName(String name) { - return this.imageMap.get(name); - } - - /** - * Access to platform shared images - * - * @param name - * @return - */ - private ImageDescriptor getSharedByName(String name) { - return sharedImages.getImageDescriptor(name); - } - - /** - * Load and register a new image. If the image resource does not exist or - * fails to load, a default "error" resource is supplied. - * - * @param name name of the image - * @param filename name of the file containing the image - * @return whether the image has correctly been loaded - */ - private boolean newImage(String name, String filename) { - ImageDescriptor id; - boolean success; - - try { - URL fileURL = - FileLocator.find(bundle, new Path(RESOURCE_DIR + filename), null); - id = ImageDescriptor.createFromURL(FileLocator.toFileURL(fileURL)); - success = true; - - } catch (Exception e) { - - e.printStackTrace(); - id = ImageDescriptor.getMissingImageDescriptor(); - // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); - success = false; - } - - descMap.put(name, id); - imageMap.put(name, id.createImage(true)); - - return success; - } - - /** - * Register an image from the workspace shared image pool. If the image - * resource does not exist or fails to load, a default "error" resource is - * supplied. - * - * @param name name of the image - * @param sharedName name of the shared image ({@link ISharedImages}) - * @return whether the image has correctly been loaded - */ - private boolean newSharedImage(String name, String sharedName) { - boolean success = true; - ImageDescriptor id = getSharedByName(sharedName); - - if (id == null) { - id = ImageDescriptor.getMissingImageDescriptor(); - // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); - success = false; - } - - descMap.put(name, id); - imageMap.put(name, id.createImage(true)); - - return success; - } - - /** - * Register an image from the workspace shared image pool. If the image - * resource does not exist or fails to load, a default "error" resource is - * supplied. - * - * @param name name of the image - * @param sharedName name of the shared image ({@link ISharedImages}) - * @return whether the image has correctly been loaded - */ - private boolean newPluginImage(String name, String pluginId, - String filename) { - - boolean success = true; - ImageDescriptor id = - AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, filename); - - if (id == null) { - id = ImageDescriptor.getMissingImageDescriptor(); - // id = getSharedByName(ISharedImages.IMG_OBJS_ERROR_TSK); - success = false; - } - - descMap.put(name, id); - imageMap.put(name, id.createImage(true)); - - return success; - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/MapReduceNature.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/MapReduceNature.java deleted file mode 100644 index fdfdcfbefb1..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/MapReduceNature.java +++ /dev/null @@ -1,146 +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.hadoop.eclipse; - -import java.io.File; -import java.io.FileFilter; -import java.net.URL; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectNature; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.jdt.core.IClasspathEntry; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; - -/** - * Class to configure and deconfigure an Eclipse project with the MapReduce - * project nature. - */ - -public class MapReduceNature implements IProjectNature { - - public static final String ID = "org.apache.hadoop.eclipse.Nature"; - - private IProject project; - - static Logger log = Logger.getLogger(MapReduceNature.class.getName()); - - /** - * Configures an Eclipse project as a Map/Reduce project by adding the - * Hadoop libraries to a project's classpath. - */ - public void configure() throws CoreException { - String path = - project.getPersistentProperty(new QualifiedName(Activator.PLUGIN_ID, - "hadoop.runtime.path")); - - File dir = new File(path); - final ArrayList coreJars = new ArrayList(); - dir.listFiles(new FileFilter() { - public boolean accept(File pathname) { - String fileName = pathname.getName(); - - // get the hadoop core jar without touching test or examples - // older version of hadoop don't use the word "core" -- eyhung - if ((fileName.indexOf("hadoop") != -1) && (fileName.endsWith("jar")) - && (fileName.indexOf("test") == -1) - && (fileName.indexOf("examples") == -1)) { - coreJars.add(pathname); - } - - return false; // we don't care what this returns - } - }); - File dir2 = new File(path + File.separatorChar + "lib"); - if (dir2.exists() && dir2.isDirectory()) { - dir2.listFiles(new FileFilter() { - public boolean accept(File pathname) { - if ((!pathname.isDirectory()) - && (pathname.getName().endsWith("jar"))) { - coreJars.add(pathname); - } - - return false; // we don't care what this returns - } - }); - } - - // Add Hadoop libraries onto classpath - IJavaProject javaProject = JavaCore.create(getProject()); - // Bundle bundle = Activator.getDefault().getBundle(); - try { - IClasspathEntry[] currentCp = javaProject.getRawClasspath(); - IClasspathEntry[] newCp = - new IClasspathEntry[currentCp.length + coreJars.size()]; - System.arraycopy(currentCp, 0, newCp, 0, currentCp.length); - - final Iterator i = coreJars.iterator(); - int count = 0; - while (i.hasNext()) { - // for (int i = 0; i < s_coreJarNames.length; i++) { - - final File f = (File) i.next(); - // URL url = FileLocator.toFileURL(FileLocator.find(bundle, new - // Path("lib/" + s_coreJarNames[i]), null)); - URL url = f.toURI().toURL(); - log.finer("hadoop library url.getPath() = " + url.getPath()); - - newCp[newCp.length - 1 - count] = - JavaCore.newLibraryEntry(new Path(url.getPath()), null, null); - count++; - } - - javaProject.setRawClasspath(newCp, new NullProgressMonitor()); - } catch (Exception e) { - log.log(Level.SEVERE, "IOException generated in " - + this.getClass().getCanonicalName(), e); - } - } - - /** - * Deconfigure a project from MapReduce status. Currently unimplemented. - */ - public void deconfigure() throws CoreException { - // TODO Auto-generated method stub - } - - /** - * Returns the project to which this project nature applies. - */ - public IProject getProject() { - return this.project; - } - - /** - * Sets the project to which this nature applies. Used when instantiating - * this project nature runtime. - */ - public void setProject(IProject project) { - this.project = project; - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizard.java deleted file mode 100644 index 7866c302663..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizard.java +++ /dev/null @@ -1,99 +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.hadoop.eclipse; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.internal.ui.wizards.NewElementWizard; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; - -/** - * Wizard for creating a new Driver class (a class that runs a MapReduce job). - * - */ - -public class NewDriverWizard extends NewElementWizard implements INewWizard, - IRunnableWithProgress { - private NewDriverWizardPage page; - - /* - * @Override public boolean performFinish() { } - */ - public void run(IProgressMonitor monitor) { - try { - page.createType(monitor); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public NewDriverWizard() { - setWindowTitle("New MapReduce Driver"); - } - - @Override - public void init(IWorkbench workbench, IStructuredSelection selection) { - super.init(workbench, selection); - - page = new NewDriverWizardPage(); - addPage(page); - page.setSelection(selection); - } - - @Override - /** - * Performs any actions appropriate in response to the user having pressed the - * Finish button, or refuse if finishing now is not permitted. - */ - public boolean performFinish() { - if (super.performFinish()) { - if (getCreatedElement() != null) { - selectAndReveal(page.getModifiedResource()); - openResource((IFile) page.getModifiedResource()); - } - - return true; - } else { - return false; - } - } - - @Override - /** - * - */ - protected void finishPage(IProgressMonitor monitor) - throws InterruptedException, CoreException { - this.run(monitor); - } - - @Override - public IJavaElement getCreatedElement() { - return page.getCreatedType().getPrimaryElement(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizardPage.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizardPage.java deleted file mode 100644 index 94b2bc98dca..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewDriverWizardPage.java +++ /dev/null @@ -1,263 +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.hadoop.eclipse; - -import java.io.IOException; -import java.util.ArrayList; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.ui.IJavaElementSearchConstants; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.dialogs.SelectionDialog; - -/** - * Pre-fills the new MapReduce driver class with a template. - * - */ - -public class NewDriverWizardPage extends NewTypeWizardPage { - private Button isCreateMapMethod; - - private Text reducerText; - - private Text mapperText; - - private final boolean showContainerSelector; - - public NewDriverWizardPage() { - this(true); - } - - public NewDriverWizardPage(boolean showContainerSelector) { - super(true, "MapReduce Driver"); - - this.showContainerSelector = showContainerSelector; - setTitle("MapReduce Driver"); - setDescription("Create a new MapReduce driver."); - setImageDescriptor(ImageLibrary.get("wizard.driver.new")); - } - - public void setSelection(IStructuredSelection selection) { - initContainerPage(getInitialJavaElement(selection)); - initTypePage(getInitialJavaElement(selection)); - } - - @Override - /** - * Creates the new type using the entered field values. - */ - public void createType(IProgressMonitor monitor) throws CoreException, - InterruptedException { - super.createType(monitor); - } - - @Override - protected void createTypeMembers(final IType newType, ImportsManager imports, - final IProgressMonitor monitor) throws CoreException { - super.createTypeMembers(newType, imports, monitor); - imports.addImport("org.apache.hadoop.fs.Path"); - imports.addImport("org.apache.hadoop.io.Text"); - imports.addImport("org.apache.hadoop.io.IntWritable"); - imports.addImport("org.apache.hadoop.mapred.JobClient"); - imports.addImport("org.apache.hadoop.mapred.JobConf"); - imports.addImport("org.apache.hadoop.mapred.Reducer"); - imports.addImport("org.apache.hadoop.mapred.Mapper"); - - /** - * TODO(jz) - move most code out of the runnable - */ - getContainer().getShell().getDisplay().syncExec(new Runnable() { - public void run() { - - String method = "public static void main(String[] args) {\n JobClient client = new JobClient();"; - method += "JobConf conf = new JobConf(" - + newType.getFullyQualifiedName() + ".class);\n\n"; - - method += "// TODO: specify output types\nconf.setOutputKeyClass(Text.class);\nconf.setOutputValueClass(IntWritable.class);\n\n"; - - method += "// TODO: specify input and output DIRECTORIES (not files)\nconf.setInputPath(new Path(\"src\"));\nconf.setOutputPath(new Path(\"out\"));\n\n"; - - if (mapperText.getText().length() > 0) { - method += "conf.setMapperClass(" + mapperText.getText() - + ".class);\n\n"; - } else { - method += "// TODO: specify a mapper\nconf.setMapperClass(org.apache.hadoop.mapred.lib.IdentityMapper.class);\n\n"; - } - if (reducerText.getText().length() > 0) { - method += "conf.setReducerClass(" + reducerText.getText() - + ".class);\n\n"; - } else { - method += "// TODO: specify a reducer\nconf.setReducerClass(org.apache.hadoop.mapred.lib.IdentityReducer.class);\n\n"; - } - - method += "client.setConf(conf);\n"; - method += "try {\n\tJobClient.runJob(conf);\n} catch (Exception e) {\n" - + "\te.printStackTrace();\n}\n"; - method += "}\n"; - - try { - newType.createMethod(method, null, false, monitor); - } catch (JavaModelException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }); - } - - public void createControl(Composite parent) { - // super.createControl(parent); - - initializeDialogUnits(parent); - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 4; - composite.setLayout(layout); - - createContainerControls(composite, 4); - - createPackageControls(composite, 4); - createSeparator(composite, 4); - createTypeNameControls(composite, 4); - - createSuperClassControls(composite, 4); - createSuperInterfacesControls(composite, 4); - createSeparator(composite, 4); - - createMapperControls(composite); - createReducerControls(composite); - - if (!showContainerSelector) { - setPackageFragmentRoot(null, false); - setSuperClass("java.lang.Object", false); - setSuperInterfaces(new ArrayList(), false); - } - - setControl(composite); - - setFocus(); - handleFieldChanged(CONTAINER); - - // setSuperClass("org.apache.hadoop.mapred.MapReduceBase", true); - // setSuperInterfaces(Arrays.asList(new String[]{ - // "org.apache.hadoop.mapred.Mapper" }), true); - } - - @Override - protected void handleFieldChanged(String fieldName) { - super.handleFieldChanged(fieldName); - - validate(); - } - - private void validate() { - if (showContainerSelector) { - updateStatus(new IStatus[] { fContainerStatus, fPackageStatus, - fTypeNameStatus, fSuperClassStatus, fSuperInterfacesStatus }); - } else { - updateStatus(new IStatus[] { fTypeNameStatus, }); - } - } - - private void createMapperControls(Composite composite) { - this.mapperText = createBrowseClassControl(composite, "Ma&pper:", - "&Browse...", "org.apache.hadoop.mapred.Mapper", "Mapper Selection"); - } - - private void createReducerControls(Composite composite) { - this.reducerText = createBrowseClassControl(composite, "&Reducer:", - "Browse&...", "org.apache.hadoop.mapred.Reducer", "Reducer Selection"); - } - - private Text createBrowseClassControl(final Composite composite, - final String string, String browseButtonLabel, - final String baseClassName, final String dialogTitle) { - Label label = new Label(composite, SWT.NONE); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - label.setText(string); - label.setLayoutData(data); - - final Text text = new Text(composite, SWT.SINGLE | SWT.BORDER); - GridData data2 = new GridData(GridData.FILL_HORIZONTAL); - data2.horizontalSpan = 2; - text.setLayoutData(data2); - - Button browse = new Button(composite, SWT.NONE); - browse.setText(browseButtonLabel); - GridData data3 = new GridData(GridData.FILL_HORIZONTAL); - browse.setLayoutData(data3); - browse.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - IType baseType; - try { - baseType = getPackageFragmentRoot().getJavaProject().findType( - baseClassName); - - // edit this to limit the scope - SelectionDialog dialog = JavaUI.createTypeDialog( - composite.getShell(), new ProgressMonitorDialog(composite - .getShell()), SearchEngine.createHierarchyScope(baseType), - IJavaElementSearchConstants.CONSIDER_CLASSES, false); - - dialog.setMessage("&Choose a type:"); - dialog.setBlockOnOpen(true); - dialog.setTitle(dialogTitle); - dialog.open(); - - if ((dialog.getReturnCode() == Window.OK) - && (dialog.getResult().length > 0)) { - IType type = (IType) dialog.getResult()[0]; - text.setText(type.getFullyQualifiedName()); - } - } catch (JavaModelException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }); - - if (!showContainerSelector) { - label.setEnabled(false); - text.setEnabled(false); - browse.setEnabled(false); - } - - return text; - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapReduceProjectWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapReduceProjectWizard.java deleted file mode 100644 index 13ca6c63c4e..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapReduceProjectWizard.java +++ /dev/null @@ -1,411 +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.hadoop.eclipse; - -import java.io.File; -import java.io.FilenameFilter; -import java.lang.reflect.InvocationTargetException; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.apache.hadoop.eclipse.preferences.MapReducePreferencePage; -import org.apache.hadoop.eclipse.preferences.PreferenceConstants; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.core.runtime.SubProgressMonitor; -import org.eclipse.jdt.ui.wizards.NewJavaProjectWizardPage; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.preference.PreferenceDialog; -import org.eclipse.jface.preference.PreferenceManager; -import org.eclipse.jface.preference.PreferenceNode; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.wizard.IWizardPage; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.DirectoryDialog; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchWizard; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.WizardNewProjectCreationPage; -import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard; - -/** - * Wizard for creating a new MapReduce Project - * - */ - -public class NewMapReduceProjectWizard extends Wizard implements - IWorkbenchWizard, IExecutableExtension { - static Logger log = - Logger.getLogger(NewMapReduceProjectWizard.class.getName()); - - private HadoopFirstPage firstPage; - - private NewJavaProjectWizardPage javaPage; - - public NewDriverWizardPage newDriverPage; - - private IConfigurationElement config; - - public NewMapReduceProjectWizard() { - setWindowTitle("New MapReduce Project Wizard"); - } - - public void init(IWorkbench workbench, IStructuredSelection selection) { - - } - - @Override - public boolean canFinish() { - return firstPage.isPageComplete() && javaPage.isPageComplete() - // && ((!firstPage.generateDriver.getSelection()) - // || newDriverPage.isPageComplete() - ; - } - - @Override - public IWizardPage getNextPage(IWizardPage page) { - // if (page == firstPage - // && firstPage.generateDriver.getSelection() - // ) - // { - // return newDriverPage; // if "generate mapper" checked, second page is - // new driver page - // } - // else - // { - IWizardPage answer = super.getNextPage(page); - if (answer == newDriverPage) { - return null; // dont flip to new driver page unless "generate - // driver" is checked - } else if (answer == javaPage) { - return answer; - } else { - return answer; - } - // } - } - - @Override - public IWizardPage getPreviousPage(IWizardPage page) { - if (page == newDriverPage) { - return firstPage; // newDriverPage, if it appears, is the second - // page - } else { - return super.getPreviousPage(page); - } - } - - static class HadoopFirstPage extends WizardNewProjectCreationPage - implements SelectionListener { - public HadoopFirstPage() { - super("New Hadoop Project"); - setImageDescriptor(ImageLibrary.get("wizard.mapreduce.project.new")); - } - - private Link openPreferences; - - private Button workspaceHadoop; - - private Button projectHadoop; - - private Text location; - - private Button browse; - - private String path; - - public String currentPath; - - // private Button generateDriver; - - @Override - public void createControl(Composite parent) { - super.createControl(parent); - - setTitle("MapReduce Project"); - setDescription("Create a MapReduce project."); - - Group group = new Group((Composite) getControl(), SWT.NONE); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - group.setText("Hadoop MapReduce Library Installation Path"); - GridLayout layout = new GridLayout(3, true); - layout.marginLeft = - convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - layout.marginRight = - convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); - layout.marginTop = - convertHorizontalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); - layout.marginBottom = - convertHorizontalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); - group.setLayout(layout); - - workspaceHadoop = new Button(group, SWT.RADIO); - GridData d = - new GridData(GridData.BEGINNING, GridData.BEGINNING, false, false); - d.horizontalSpan = 2; - workspaceHadoop.setLayoutData(d); - // workspaceHadoop.setText("Use default workbench Hadoop library - // location"); - workspaceHadoop.setSelection(true); - - updateHadoopDirLabelFromPreferences(); - - openPreferences = new Link(group, SWT.NONE); - openPreferences - .setText("Configure Hadoop install directory..."); - openPreferences.setLayoutData(new GridData(GridData.END, - GridData.CENTER, false, false)); - openPreferences.addSelectionListener(this); - - projectHadoop = new Button(group, SWT.RADIO); - projectHadoop.setLayoutData(new GridData(GridData.BEGINNING, - GridData.CENTER, false, false)); - projectHadoop.setText("Specify Hadoop library location"); - - location = new Text(group, SWT.SINGLE | SWT.BORDER); - location.setText(""); - d = new GridData(GridData.END, GridData.CENTER, true, false); - d.horizontalSpan = 1; - d.widthHint = 250; - d.grabExcessHorizontalSpace = true; - location.setLayoutData(d); - location.setEnabled(false); - - browse = new Button(group, SWT.NONE); - browse.setText("Browse..."); - browse.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, - false, false)); - browse.setEnabled(false); - browse.addSelectionListener(this); - - projectHadoop.addSelectionListener(this); - workspaceHadoop.addSelectionListener(this); - - // generateDriver = new Button((Composite) getControl(), SWT.CHECK); - // generateDriver.setText("Generate a MapReduce driver"); - // generateDriver.addListener(SWT.Selection, new Listener() - // { - // public void handleEvent(Event event) { - // getContainer().updateButtons(); } - // }); - } - - @Override - public boolean isPageComplete() { - boolean validHadoop = validateHadoopLocation(); - - if (!validHadoop && isCurrentPage()) { - setErrorMessage("Invalid Hadoop Runtime specified; please click 'Configure Hadoop install directory' or fill in library location input field"); - } else { - setErrorMessage(null); - } - - return super.isPageComplete() && validHadoop; - } - - private boolean validateHadoopLocation() { - FilenameFilter gotHadoopJar = new FilenameFilter() { - public boolean accept(File dir, String name) { - return (name.startsWith("hadoop") && name.endsWith(".jar") - && (name.indexOf("test") == -1) && (name.indexOf("examples") == -1)); - } - }; - - if (workspaceHadoop.getSelection()) { - this.currentPath = path; - return new Path(path).toFile().exists() - && (new Path(path).toFile().list(gotHadoopJar).length > 0); - } else { - this.currentPath = location.getText(); - File file = new Path(location.getText()).toFile(); - return file.exists() - && (new Path(location.getText()).toFile().list(gotHadoopJar).length > 0); - } - } - - private void updateHadoopDirLabelFromPreferences() { - path = - Activator.getDefault().getPreferenceStore().getString( - PreferenceConstants.P_PATH); - - if ((path != null) && (path.length() > 0)) { - workspaceHadoop.setText("Use default Hadoop"); - } else { - workspaceHadoop.setText("Use default Hadoop (currently not set)"); - } - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - if (e.getSource() == openPreferences) { - PreferenceManager manager = new PreferenceManager(); - manager.addToRoot(new PreferenceNode( - "Hadoop Installation Directory", new MapReducePreferencePage())); - PreferenceDialog dialog = - new PreferenceDialog(this.getShell(), manager); - dialog.create(); - dialog.setMessage("Select Hadoop Installation Directory"); - dialog.setBlockOnOpen(true); - dialog.open(); - - updateHadoopDirLabelFromPreferences(); - } else if (e.getSource() == browse) { - DirectoryDialog dialog = new DirectoryDialog(this.getShell()); - dialog - .setMessage("Select a hadoop installation, containing hadoop-X-core.jar"); - dialog.setText("Select Hadoop Installation Directory"); - String directory = dialog.open(); - - if (directory != null) { - location.setText(directory); - - if (!validateHadoopLocation()) { - setErrorMessage("No Hadoop jar found in specified directory"); - } else { - setErrorMessage(null); - } - } - } else if (projectHadoop.getSelection()) { - location.setEnabled(true); - browse.setEnabled(true); - } else { - location.setEnabled(false); - browse.setEnabled(false); - } - - getContainer().updateButtons(); - } - } - - @Override - public void addPages() { - /* - * firstPage = new HadoopFirstPage(); addPage(firstPage ); addPage( new - * JavaProjectWizardSecondPage(firstPage) ); - */ - - firstPage = new HadoopFirstPage(); - javaPage = - new NewJavaProjectWizardPage(ResourcesPlugin.getWorkspace() - .getRoot(), firstPage); - // newDriverPage = new NewDriverWizardPage(false); - // newDriverPage.setPageComplete(false); // ensure finish button - // initially disabled - addPage(firstPage); - addPage(javaPage); - - // addPage(newDriverPage); - } - - @Override - public boolean performFinish() { - try { - PlatformUI.getWorkbench().getProgressService().runInUI( - this.getContainer(), new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) { - try { - monitor.beginTask("Create Hadoop Project", 300); - - javaPage.getRunnable().run( - new SubProgressMonitor(monitor, 100)); - - // if( firstPage.generateDriver.getSelection()) - // { - // newDriverPage.setPackageFragmentRoot(javaPage.getNewJavaProject().getAllPackageFragmentRoots()[0], - // false); - // newDriverPage.getRunnable().run(new - // SubProgressMonitor(monitor,100)); - // } - - IProject project = - javaPage.getNewJavaProject().getResource().getProject(); - IProjectDescription description = project.getDescription(); - String[] existingNatures = description.getNatureIds(); - String[] natures = new String[existingNatures.length + 1]; - for (int i = 0; i < existingNatures.length; i++) { - natures[i + 1] = existingNatures[i]; - } - - natures[0] = MapReduceNature.ID; - description.setNatureIds(natures); - - project.setPersistentProperty(new QualifiedName( - Activator.PLUGIN_ID, "hadoop.runtime.path"), - firstPage.currentPath); - project.setDescription(description, - new NullProgressMonitor()); - - String[] natureIds = project.getDescription().getNatureIds(); - for (int i = 0; i < natureIds.length; i++) { - log.fine("Nature id # " + i + " > " + natureIds[i]); - } - - monitor.worked(100); - monitor.done(); - - BasicNewProjectResourceWizard.updatePerspective(config); - } catch (CoreException e) { - // TODO Auto-generated catch block - log.log(Level.SEVERE, "CoreException thrown.", e); - } catch (InvocationTargetException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }, null); - } catch (InvocationTargetException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - return true; - } - - public void setInitializationData(IConfigurationElement config, - String propertyName, Object data) throws CoreException { - this.config = config; - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapperWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapperWizard.java deleted file mode 100644 index d3608ad0d56..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewMapperWizard.java +++ /dev/null @@ -1,181 +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.hadoop.eclipse; - -import java.io.IOException; -import java.util.Arrays; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.internal.ui.wizards.NewElementWizard; -import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; - -/** - * Wizard for creating a new Mapper class (a class that runs the Map portion - * of a MapReduce job). The class is pre-filled with a template. - * - */ - -public class NewMapperWizard extends NewElementWizard implements INewWizard, - IRunnableWithProgress { - private Page page; - - public NewMapperWizard() { - setWindowTitle("New Mapper"); - } - - public void run(IProgressMonitor monitor) { - try { - page.createType(monitor); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - public void init(IWorkbench workbench, IStructuredSelection selection) { - super.init(workbench, selection); - - page = new Page(); - addPage(page); - page.setSelection(selection); - } - - public static class Page extends NewTypeWizardPage { - private Button isCreateMapMethod; - - public Page() { - super(true, "Mapper"); - - setTitle("Mapper"); - setDescription("Create a new Mapper implementation."); - setImageDescriptor(ImageLibrary.get("wizard.mapper.new")); - } - - public void setSelection(IStructuredSelection selection) { - initContainerPage(getInitialJavaElement(selection)); - initTypePage(getInitialJavaElement(selection)); - } - - @Override - public void createType(IProgressMonitor monitor) throws CoreException, - InterruptedException { - super.createType(monitor); - } - - @Override - protected void createTypeMembers(IType newType, ImportsManager imports, - IProgressMonitor monitor) throws CoreException { - super.createTypeMembers(newType, imports, monitor); - imports.addImport("java.io.IOException"); - imports.addImport("org.apache.hadoop.io.WritableComparable"); - imports.addImport("org.apache.hadoop.io.Writable"); - imports.addImport("org.apache.hadoop.mapred.OutputCollector"); - imports.addImport("org.apache.hadoop.mapred.Reporter"); - newType - .createMethod( - "public void map(WritableComparable key, Writable values, OutputCollector output, Reporter reporter) throws IOException \n{\n}\n", - null, false, monitor); - } - - public void createControl(Composite parent) { - // super.createControl(parent); - - initializeDialogUnits(parent); - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 4; - composite.setLayout(layout); - - createContainerControls(composite, 4); - createPackageControls(composite, 4); - createSeparator(composite, 4); - createTypeNameControls(composite, 4); - createSuperClassControls(composite, 4); - createSuperInterfacesControls(composite, 4); - // createSeparator(composite, 4); - - setControl(composite); - - setSuperClass("org.apache.hadoop.mapred.MapReduceBase", true); - setSuperInterfaces(Arrays - .asList(new String[] { "org.apache.hadoop.mapred.Mapper" }), true); - - setFocus(); - validate(); - } - - @Override - protected void handleFieldChanged(String fieldName) { - super.handleFieldChanged(fieldName); - - validate(); - } - - private void validate() { - updateStatus(new IStatus[] { fContainerStatus, fPackageStatus, - fTypeNameStatus, fSuperClassStatus, fSuperInterfacesStatus }); - } - } - - @Override - public boolean performFinish() { - if (super.performFinish()) { - if (getCreatedElement() != null) { - openResource((IFile) page.getModifiedResource()); - selectAndReveal(page.getModifiedResource()); - } - - return true; - } else { - return false; - } - } - - @Override - protected void finishPage(IProgressMonitor monitor) - throws InterruptedException, CoreException { - this.run(monitor); - } - - @Override - public IJavaElement getCreatedElement() { - return page.getCreatedType().getPrimaryElement(); - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewReducerWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewReducerWizard.java deleted file mode 100644 index 55a2e6058ee..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/NewReducerWizard.java +++ /dev/null @@ -1,184 +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.hadoop.eclipse; - -import java.io.IOException; -import java.util.Arrays; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.internal.ui.wizards.NewElementWizard; -import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; - -/** - * Wizard for creating a new Reducer class (a class that runs the Reduce - * portion of a MapReduce job). The class is pre-filled with a template. - * - */ - -public class NewReducerWizard extends NewElementWizard implements - INewWizard, IRunnableWithProgress { - private Page page; - - public NewReducerWizard() { - setWindowTitle("New Reducer"); - } - - public void run(IProgressMonitor monitor) { - try { - page.createType(monitor); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - public void init(IWorkbench workbench, IStructuredSelection selection) { - super.init(workbench, selection); - - page = new Page(); - addPage(page); - page.setSelection(selection); - } - - public static class Page extends NewTypeWizardPage { - public Page() { - super(true, "Reducer"); - - setTitle("Reducer"); - setDescription("Create a new Reducer implementation."); - setImageDescriptor(ImageLibrary.get("wizard.reducer.new")); - } - - public void setSelection(IStructuredSelection selection) { - initContainerPage(getInitialJavaElement(selection)); - initTypePage(getInitialJavaElement(selection)); - } - - @Override - public void createType(IProgressMonitor monitor) throws CoreException, - InterruptedException { - super.createType(monitor); - } - - @Override - protected void createTypeMembers(IType newType, ImportsManager imports, - IProgressMonitor monitor) throws CoreException { - super.createTypeMembers(newType, imports, monitor); - imports.addImport("java.io.IOException"); - imports.addImport("org.apache.hadoop.io.WritableComparable"); - imports.addImport("org.apache.hadoop.mapred.OutputCollector"); - imports.addImport("org.apache.hadoop.mapred.Reporter"); - imports.addImport("java.util.Iterator"); - newType - .createMethod( - "public void reduce(WritableComparable _key, Iterator values, OutputCollector output, Reporter reporter) throws IOException \n{\n" - + "\t// replace KeyType with the real type of your key\n" - + "\tKeyType key = (KeyType) _key;\n\n" - + "\twhile (values.hasNext()) {\n" - + "\t\t// replace ValueType with the real type of your value\n" - + "\t\tValueType value = (ValueType) values.next();\n\n" - + "\t\t// process value\n" + "\t}\n" + "}\n", null, false, - monitor); - } - - public void createControl(Composite parent) { - // super.createControl(parent); - - initializeDialogUnits(parent); - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.numColumns = 4; - composite.setLayout(layout); - - createContainerControls(composite, 4); - createPackageControls(composite, 4); - createSeparator(composite, 4); - createTypeNameControls(composite, 4); - createSuperClassControls(composite, 4); - createSuperInterfacesControls(composite, 4); - // createSeparator(composite, 4); - - setControl(composite); - - setSuperClass("org.apache.hadoop.mapred.MapReduceBase", true); - setSuperInterfaces(Arrays - .asList(new String[] { "org.apache.hadoop.mapred.Reducer" }), true); - - setFocus(); - validate(); - } - - @Override - protected void handleFieldChanged(String fieldName) { - super.handleFieldChanged(fieldName); - - validate(); - } - - private void validate() { - updateStatus(new IStatus[] { fContainerStatus, fPackageStatus, - fTypeNameStatus, fSuperClassStatus, fSuperInterfacesStatus }); - } - } - - @Override - public boolean performFinish() { - if (super.performFinish()) { - if (getCreatedElement() != null) { - selectAndReveal(page.getModifiedResource()); - openResource((IFile) page.getModifiedResource()); - } - - return true; - } else { - return false; - } - } - - @Override - protected void finishPage(IProgressMonitor monitor) - throws InterruptedException, CoreException { - this.run(monitor); - } - - @Override - public IJavaElement getCreatedElement() { - return (page.getCreatedType() == null) ? null : page.getCreatedType() - .getPrimaryElement(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/PropertyTester.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/PropertyTester.java deleted file mode 100644 index 97dac5a0c8f..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/PropertyTester.java +++ /dev/null @@ -1,43 +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.hadoop.eclipse; - -import java.util.logging.Logger; - -/** - * Class to help with debugging properties - */ -public class PropertyTester extends - org.eclipse.core.expressions.PropertyTester { - - static Logger log = Logger.getLogger(PropertyTester.class.getName()); - - public PropertyTester() { - } - - public boolean test(Object receiver, String property, Object[] args, - Object expectedValue) { - log.fine("Test property " + property + ", " + receiver.getClass()); - - return true; - - // todo(jz) support test for deployable if module has hadoop nature etc. - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/DFSActionImpl.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/DFSActionImpl.java deleted file mode 100644 index c8b34c392f5..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/DFSActionImpl.java +++ /dev/null @@ -1,478 +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.hadoop.eclipse.actions; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.dfs.DFSActions; -import org.apache.hadoop.eclipse.dfs.DFSFile; -import org.apache.hadoop.eclipse.dfs.DFSFolder; -import org.apache.hadoop.eclipse.dfs.DFSLocation; -import org.apache.hadoop.eclipse.dfs.DFSLocationsRoot; -import org.apache.hadoop.eclipse.dfs.DFSPath; -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.DirectoryDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IPersistableElement; -import org.eclipse.ui.IStorageEditorInput; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; - -/** - * Actual implementation of DFS actions - */ -public class DFSActionImpl implements IObjectActionDelegate { - - private ISelection selection; - - private IWorkbenchPart targetPart; - - /* @inheritDoc */ - public void setActivePart(IAction action, IWorkbenchPart targetPart) { - this.targetPart = targetPart; - } - - /* @inheritDoc */ - public void run(IAction action) { - - // Ignore non structured selections - if (!(this.selection instanceof IStructuredSelection)) - return; - - // operate on the DFS asynchronously to prevent blocking the main UI - final IStructuredSelection ss = (IStructuredSelection) selection; - final String actionId = action.getActionDefinitionId(); - Display.getDefault().asyncExec(new Runnable() { - public void run() { - try { - switch (DFSActions.getById(actionId)) { - case DELETE: { - delete(ss); - break; - } - case OPEN: { - open(ss); - break; - } - case MKDIR: { - mkdir(ss); - break; - } - case UPLOAD_FILES: { - uploadFilesToDFS(ss); - break; - } - case UPLOAD_DIR: { - uploadDirectoryToDFS(ss); - break; - } - case REFRESH: { - refresh(ss); - break; - } - case DOWNLOAD: { - downloadFromDFS(ss); - break; - } - case RECONNECT: { - reconnect(ss); - break; - } - case DISCONNECT: { - disconnect(ss); - break; - } - default: { - System.err.printf("Unhandled DFS Action: " + actionId); - break; - } - } - - } catch (Exception e) { - e.printStackTrace(); - MessageDialog.openError(Display.getDefault().getActiveShell(), - "DFS Action error", - "An error occurred while performing DFS operation: " - + e.getMessage()); - } - } - }); - } - - /** - * Create a new sub-folder into an existing directory - * - * @param selection - */ - private void mkdir(IStructuredSelection selection) { - List folders = filterSelection(DFSFolder.class, selection); - if (folders.size() >= 1) { - DFSFolder folder = folders.get(0); - InputDialog dialog = - new InputDialog(Display.getCurrent().getActiveShell(), - "Create subfolder", "Enter the name of the subfolder", "", - null); - if (dialog.open() == InputDialog.OK) - folder.mkdir(dialog.getValue()); - } - } - - /** - * Implement the import action (upload files from the current machine to - * HDFS) - * - * @param object - * @throws SftpException - * @throws JSchException - * @throws InvocationTargetException - * @throws InterruptedException - */ - private void uploadFilesToDFS(IStructuredSelection selection) - throws InvocationTargetException, InterruptedException { - - // Ask the user which files to upload - FileDialog dialog = - new FileDialog(Display.getCurrent().getActiveShell(), SWT.OPEN - | SWT.MULTI); - dialog.setText("Select the local files to upload"); - dialog.open(); - - List files = new ArrayList(); - for (String fname : dialog.getFileNames()) - files.add(new File(dialog.getFilterPath() + File.separator + fname)); - - // TODO enable upload command only when selection is exactly one folder - List folders = filterSelection(DFSFolder.class, selection); - if (folders.size() >= 1) - uploadToDFS(folders.get(0), files); - } - - /** - * Implement the import action (upload directory from the current machine - * to HDFS) - * - * @param object - * @throws SftpException - * @throws JSchException - * @throws InvocationTargetException - * @throws InterruptedException - */ - private void uploadDirectoryToDFS(IStructuredSelection selection) - throws InvocationTargetException, InterruptedException { - - // Ask the user which local directory to upload - DirectoryDialog dialog = - new DirectoryDialog(Display.getCurrent().getActiveShell(), SWT.OPEN - | SWT.MULTI); - dialog.setText("Select the local file or directory to upload"); - - String dirName = dialog.open(); - final File dir = new File(dirName); - List files = new ArrayList(); - files.add(dir); - - // TODO enable upload command only when selection is exactly one folder - final List folders = - filterSelection(DFSFolder.class, selection); - if (folders.size() >= 1) - uploadToDFS(folders.get(0), files); - - } - - private void uploadToDFS(final DFSFolder folder, final List files) - throws InvocationTargetException, InterruptedException { - - PlatformUI.getWorkbench().getProgressService().busyCursorWhile( - new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) - throws InvocationTargetException { - - int work = 0; - for (File file : files) - work += computeUploadWork(file); - - monitor.beginTask("Uploading files to distributed file system", - work); - - for (File file : files) { - try { - folder.upload(monitor, file); - - } catch (IOException ioe) { - ioe.printStackTrace(); - MessageDialog.openError(null, - "Upload files to distributed file system", - "Upload failed.\n" + ioe); - } - } - - monitor.done(); - - // Update the UI - folder.doRefresh(); - } - }); - } - - private void reconnect(IStructuredSelection selection) { - for (DFSLocation location : filterSelection(DFSLocation.class, selection)) - location.reconnect(); - } - - private void disconnect(IStructuredSelection selection) { - if (selection.size() != 1) - return; - - Object first = selection.getFirstElement(); - if (!(first instanceof DFSLocationsRoot)) - return; - - DFSLocationsRoot root = (DFSLocationsRoot) first; - root.disconnect(); - root.refresh(); - } - - /** - * Implements the Download action from HDFS to the current machine - * - * @param object - * @throws SftpException - * @throws JSchException - * @throws InterruptedException - * @throws InvocationTargetException - */ - private void downloadFromDFS(IStructuredSelection selection) - throws InvocationTargetException, InterruptedException { - - // Ask the user where to put the downloaded files - DirectoryDialog dialog = - new DirectoryDialog(Display.getCurrent().getActiveShell()); - dialog.setText("Copy to local directory"); - dialog.setMessage("Copy the selected files and directories from the " - + "distributed filesystem to a local directory"); - String directory = dialog.open(); - - if (directory == null) - return; - - final File dir = new File(directory); - if (!dir.exists()) - dir.mkdirs(); - - if (!dir.isDirectory()) { - MessageDialog.openError(null, "Download to local file system", - "Invalid directory location: \"" + dir + "\""); - return; - } - - final List paths = filterSelection(DFSPath.class, selection); - - PlatformUI.getWorkbench().getProgressService().busyCursorWhile( - new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) - throws InvocationTargetException { - - int work = 0; - for (DFSPath path : paths) - work += path.computeDownloadWork(); - - monitor - .beginTask("Downloading files to local file system", work); - - for (DFSPath path : paths) { - if (monitor.isCanceled()) - return; - try { - path.downloadToLocalDirectory(monitor, dir); - } catch (Exception e) { - // nothing we want to do here - e.printStackTrace(); - } - } - - monitor.done(); - } - }); - } - - /** - * Open the selected DfsPath in the editor window - * - * @param selection - * @throws JSchException - * @throws IOException - * @throws PartInitException - * @throws InvocationTargetException - * @throws InterruptedException - */ - private void open(IStructuredSelection selection) throws IOException, - PartInitException, InvocationTargetException, InterruptedException { - - for (DFSFile file : filterSelection(DFSFile.class, selection)) { - - IStorageEditorInput editorInput = new DFSFileEditorInput(file); - targetPart.getSite().getWorkbenchWindow().getActivePage().openEditor( - editorInput, "org.eclipse.ui.DefaultTextEditor"); - } - } - - /** - * @param selection - * @throws JSchException - */ - private void refresh(IStructuredSelection selection) { - for (DFSPath path : filterSelection(DFSPath.class, selection)) - path.refresh(); - - } - - private void delete(IStructuredSelection selection) { - List list = filterSelection(DFSPath.class, selection); - if (list.isEmpty()) - return; - - StringBuffer msg = new StringBuffer(); - msg.append("Are you sure you want to delete " - + "the following files from the distributed file system?\n"); - for (DFSPath path : list) - msg.append(path.getPath()).append("\n"); - - if (MessageDialog.openConfirm(null, "Confirm Delete from DFS", msg - .toString())) { - - Set toRefresh = new HashSet(); - for (DFSPath path : list) { - path.delete(); - toRefresh.add(path.getParent()); - } - - for (DFSPath path : toRefresh) { - path.refresh(); - } - } - } - - /* @inheritDoc */ - public void selectionChanged(IAction action, ISelection selection) { - this.selection = selection; - } - - /** - * Extract the list of from the structured selection - * - * @param clazz the class T - * @param selection the structured selection - * @return the list of it contains - */ - private static List filterSelection(Class clazz, - IStructuredSelection selection) { - List list = new ArrayList(); - for (Object obj : selection.toList()) { - if (clazz.isAssignableFrom(obj.getClass())) { - list.add((T) obj); - } - } - return list; - } - - private static int computeUploadWork(File file) { - if (file.isDirectory()) { - int contentWork = 1; - for (File child : file.listFiles()) - contentWork += computeUploadWork(child); - return contentWork; - - } else if (file.isFile()) { - return 1 + (int) (file.length() / 1024); - - } else { - return 0; - } - } - -} - -/** - * Adapter to allow the viewing of a DfsFile in the Editor window - */ -class DFSFileEditorInput extends PlatformObject implements - IStorageEditorInput { - - private DFSFile file; - - /** - * Constructor - * - * @param file - */ - DFSFileEditorInput(DFSFile file) { - this.file = file; - } - - /* @inheritDoc */ - public String getToolTipText() { - return file.toDetailedString(); - } - - /* @inheritDoc */ - public IPersistableElement getPersistable() { - return null; - } - - /* @inheritDoc */ - public String getName() { - return file.toString(); - } - - /* @inheritDoc */ - public ImageDescriptor getImageDescriptor() { - return ImageLibrary.get("dfs.file.editor"); - } - - /* @inheritDoc */ - public boolean exists() { - return true; - } - - /* @inheritDoc */ - public IStorage getStorage() throws CoreException { - return file.getIStorage(); - } -}; diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/EditLocationAction.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/EditLocationAction.java deleted file mode 100644 index cdfbe93474d..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/EditLocationAction.java +++ /dev/null @@ -1,73 +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.hadoop.eclipse.actions; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.eclipse.servers.HadoopLocationWizard; -import org.apache.hadoop.eclipse.view.servers.ServerView; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; - -/** - * Editing server properties action - */ -public class EditLocationAction extends Action { - - private ServerView serverView; - - public EditLocationAction(ServerView serverView) { - this.serverView = serverView; - - setText("Edit Hadoop location..."); - setImageDescriptor(ImageLibrary.get("server.view.action.location.edit")); - } - - @Override - public void run() { - - final HadoopServer server = serverView.getSelectedServer(); - if (server == null) - return; - - WizardDialog dialog = new WizardDialog(null, new Wizard() { - private HadoopLocationWizard page = new HadoopLocationWizard(server); - - @Override - public void addPages() { - super.addPages(); - setWindowTitle("Edit Hadoop location..."); - addPage(page); - } - - @Override - public boolean performFinish() { - page.performFinish(); - return true; - } - }); - - dialog.create(); - dialog.setBlockOnOpen(true); - dialog.open(); - - super.run(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/NewLocationAction.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/NewLocationAction.java deleted file mode 100644 index 5db0bc56daa..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/NewLocationAction.java +++ /dev/null @@ -1,64 +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.hadoop.eclipse.actions; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.servers.HadoopLocationWizard; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardDialog; - - -/** - * Action corresponding to creating a new MapReduce Server. - */ - -public class NewLocationAction extends Action { - public NewLocationAction() { - setText("New Hadoop location..."); - setImageDescriptor(ImageLibrary.get("server.view.action.location.new")); - } - - @Override - public void run() { - WizardDialog dialog = new WizardDialog(null, new Wizard() { - private HadoopLocationWizard page = new HadoopLocationWizard(); - - @Override - public void addPages() { - super.addPages(); - setWindowTitle("New Hadoop location..."); - addPage(page); - } - - @Override - public boolean performFinish() { - page.performFinish(); - return true; - } - - }); - - dialog.create(); - dialog.setBlockOnOpen(true); - dialog.open(); - - super.run(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRClassWizardAction.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRClassWizardAction.java deleted file mode 100644 index cc1f9ecb6cf..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRClassWizardAction.java +++ /dev/null @@ -1,76 +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.hadoop.eclipse.actions; - -import java.util.logging.Logger; - -import org.apache.hadoop.eclipse.NewDriverWizard; -import org.apache.hadoop.eclipse.NewMapperWizard; -import org.apache.hadoop.eclipse.NewReducerWizard; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.INewWizard; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.cheatsheets.ICheatSheetAction; -import org.eclipse.ui.cheatsheets.ICheatSheetManager; - - -/** - * Action to open a new MapReduce Class. - */ - -public class OpenNewMRClassWizardAction extends Action implements - ICheatSheetAction { - - static Logger log = Logger.getLogger(OpenNewMRClassWizardAction.class - .getName()); - - public void run(String[] params, ICheatSheetManager manager) { - - if ((params != null) && (params.length > 0)) { - IWorkbench workbench = PlatformUI.getWorkbench(); - INewWizard wizard = getWizard(params[0]); - wizard.init(workbench, new StructuredSelection()); - WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), wizard); - dialog.create(); - dialog.open(); - - // did the wizard succeed ? - notifyResult(dialog.getReturnCode() == Window.OK); - } - } - - private INewWizard getWizard(String typeName) { - if (typeName.equals("Mapper")) { - return new NewMapperWizard(); - } else if (typeName.equals("Reducer")) { - return new NewReducerWizard(); - } else if (typeName.equals("Driver")) { - return new NewDriverWizard(); - } else { - log.severe("Invalid Wizard requested"); - return null; - } - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRProjectAction.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRProjectAction.java deleted file mode 100644 index c7fde10c09a..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/actions/OpenNewMRProjectAction.java +++ /dev/null @@ -1,48 +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.hadoop.eclipse.actions; - -import org.apache.hadoop.eclipse.NewMapReduceProjectWizard; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.PlatformUI; - -/** - * Action to open a new Map/Reduce project. - */ - -public class OpenNewMRProjectAction extends Action { - - @Override - public void run() { - IWorkbench workbench = PlatformUI.getWorkbench(); - Shell shell = workbench.getActiveWorkbenchWindow().getShell(); - NewMapReduceProjectWizard wizard = new NewMapReduceProjectWizard(); - wizard.init(workbench, new StructuredSelection()); - WizardDialog dialog = new WizardDialog(shell, wizard); - dialog.create(); - dialog.open(); - // did the wizard succeed? - notifyResult(dialog.getReturnCode() == Window.OK); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/ActionProvider.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/ActionProvider.java deleted file mode 100644 index 65436ac106a..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/ActionProvider.java +++ /dev/null @@ -1,193 +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.hadoop.eclipse.dfs; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.actions.DFSActionImpl; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.navigator.CommonActionProvider; -import org.eclipse.ui.navigator.ICommonActionConstants; -import org.eclipse.ui.navigator.ICommonActionExtensionSite; -import org.eclipse.ui.navigator.ICommonMenuConstants; - -/** - * Allows the user to delete and refresh items in the DFS tree - */ - -public class ActionProvider extends CommonActionProvider { - - private static ICommonActionExtensionSite site; - - public ActionProvider() { - } - - /* @inheritDoc */ - @Override - public void init(ICommonActionExtensionSite site) { - if (ActionProvider.site != null) { - System.err.printf("%s: Multiple init()\n", this.getClass() - .getCanonicalName()); - return; - } - super.init(site); - ActionProvider.site = site; - } - - /* @inheritDoc */ - @Override - public void fillActionBars(IActionBars actionBars) { - actionBars.setGlobalActionHandler(ActionFactory.DELETE.getId(), - new DFSAction(DFSActions.DELETE)); - actionBars.setGlobalActionHandler(ActionFactory.REFRESH.getId(), - new DFSAction(DFSActions.REFRESH)); - - if (site == null) - return; - - if ((site.getStructuredViewer().getSelection() instanceof IStructuredSelection) - && (((IStructuredSelection) site.getStructuredViewer() - .getSelection()).size() == 1) - && (((IStructuredSelection) site.getStructuredViewer() - .getSelection()).getFirstElement() instanceof DFSFile)) { - - actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN, - new DFSAction(DFSActions.OPEN)); - } - - actionBars.updateActionBars(); - } - - /* @inheritDoc */ - @Override - public void fillContextMenu(IMenuManager menu) { - /* - * Actions on multiple selections - */ - menu.appendToGroup(ICommonMenuConstants.GROUP_EDIT, new DFSAction( - DFSActions.DELETE)); - - menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction( - DFSActions.REFRESH)); - - menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction( - DFSActions.DOWNLOAD)); - - if (site == null) - return; - - ISelection isel = site.getStructuredViewer().getSelection(); - if (!(isel instanceof IStructuredSelection)) - return; - - /* - * Actions on single selections only - */ - - IStructuredSelection issel = (IStructuredSelection) isel; - if (issel.size() != 1) - return; - Object element = issel.getFirstElement(); - - if (element instanceof DFSFile) { - menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction( - DFSActions.OPEN)); - - } else if (element instanceof DFSFolder) { - menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction( - DFSActions.MKDIR)); - menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction( - DFSActions.UPLOAD_FILES)); - menu.appendToGroup(ICommonMenuConstants.GROUP_NEW, new DFSAction( - DFSActions.UPLOAD_DIR)); - - } else if (element instanceof DFSLocation) { - menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction( - DFSActions.RECONNECT)); - - } else if (element instanceof DFSLocationsRoot) { - menu.appendToGroup(ICommonMenuConstants.GROUP_OPEN, new DFSAction( - DFSActions.DISCONNECT)); - } - - } - - /** - * Representation of an action on a DFS entry in the browser - */ - public static class DFSAction extends Action { - - private final String id; - - private final String title; - - private DFSActions action; - - public DFSAction(String id, String title) { - this.id = id; - this.title = title; - } - - public DFSAction(DFSActions action) { - this.id = action.id; - this.title = action.title; - } - - /* @inheritDoc */ - @Override - public String getText() { - return this.title; - } - - /* @inheritDoc */ - @Override - public ImageDescriptor getImageDescriptor() { - return ImageLibrary.get(getActionDefinitionId()); - } - - /* @inheritDoc */ - @Override - public String getActionDefinitionId() { - return id; - } - - /* @inheritDoc */ - @Override - public void run() { - DFSActionImpl action = new DFSActionImpl(); - action.setActivePart(this, PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage().getActivePart()); - action.selectionChanged(this, site.getStructuredViewer() - .getSelection()); - action.run(this); - } - - /* @inheritDoc */ - @Override - public boolean isEnabled() { - return true; - } - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSActions.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSActions.java deleted file mode 100644 index 038497ae893..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSActions.java +++ /dev/null @@ -1,44 +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.hadoop.eclipse.dfs; - -public enum DFSActions { - - DELETE("Delete"), REFRESH("Refresh"), DOWNLOAD("Download from DFS..."), OPEN( - "View"), MKDIR("Create new directory..."), UPLOAD_FILES( - "Upload files to DFS..."), UPLOAD_DIR("Upload directory to DFS..."), RECONNECT( - "Reconnect"), DISCONNECT("Disconnect"); - - final String title; - - final String id; - - private static final String PREFIX = "dfs.browser.action."; - - public static DFSActions getById(String def) { - if (!def.startsWith(PREFIX)) - return null; - return valueOf(def.substring(PREFIX.length()).toUpperCase()); - } - - DFSActions(String title) { - this.title = title; - this.id = PREFIX + this.name().toLowerCase(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContent.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContent.java deleted file mode 100644 index bea94d53697..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContent.java +++ /dev/null @@ -1,32 +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.hadoop.eclipse.dfs; - -/** - * Interface to define content entities in the DFS browser - */ -public interface DFSContent { - - boolean hasChildren(); - - DFSContent[] getChildren(); - - void refresh(); - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContentProvider.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContentProvider.java deleted file mode 100644 index fca7d46916b..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSContentProvider.java +++ /dev/null @@ -1,244 +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.hadoop.eclipse.dfs; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.eclipse.servers.ServerRegistry; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; - -/** - * Handles viewing of DFS locations - *

- * - * The content handled by this provider is a tree: - * - * - *
DFSLocationsRoot - *
\_HadoopServer - *
| \_DfsFolder - *
| | \_DfsFile - *
| \_DfsFolder - *
| ... - *
\_HadoopServer... - *
- * - * The code should not block here: blocking operations need to be done - * asynchronously so as not to freeze the UI! - */ -public class DFSContentProvider implements ITreeContentProvider, - ILabelProvider { - - /** - * The viewer that displays this Tree content - */ - private Viewer viewer; - - private StructuredViewer sviewer; - - private Map rootFolders = - new HashMap(); - - /** - * Constructor: load resources (icons). - */ - public DFSContentProvider() { - } - - private final DFSLocationsRoot locationsRoot = new DFSLocationsRoot(this); - - /* - * ITreeContentProvider implementation - */ - - /* @inheritDoc */ - public Object[] getChildren(Object parent) { - - if (!(parent instanceof DFSContent)) - return null; - DFSContent content = (DFSContent) parent; - return content.getChildren(); - } - - public Object[] test(Object parentElement) { - if (parentElement instanceof DFSLocationsRoot) { - return ServerRegistry.getInstance().getServers().toArray(); - - } else if (parentElement instanceof HadoopServer) { - final HadoopServer location = (HadoopServer) parentElement; - Object root = rootFolders.get(location); - if (root != null) - return new Object[] { root }; - - return new Object[] { "Connecting to DFS..." }; - - } else if (parentElement instanceof DFSFolder) { - DFSFolder folder = (DFSFolder) parentElement; - return folder.getChildren(); - } - - return new Object[] { "" }; - } - - /* @inheritDoc */ - public Object getParent(Object element) { - - if (element instanceof DFSPath) { - return ((DFSPath) element).getParent(); - - } else if (element instanceof HadoopServer) { - return locationsRoot; - } - - return null; - } - - /* @inheritDoc */ - public boolean hasChildren(Object element) { - if (element instanceof DFSContent) { - DFSContent content = (DFSContent) element; - return content.hasChildren(); - } - return false; - } - - /* - * IStructureContentProvider implementation - */ - - /* @inheritDoc */ - public Object[] getElements(final Object inputElement) { - return new Object[] { locationsRoot }; - // return ServerRegistry.getInstance().getServers().toArray(); - } - - /* - * ILabelProvider implementation - */ - - /* @inheritDoc */ - public Image getImage(Object element) { - if (element instanceof DFSLocationsRoot) - return ImageLibrary.getImage("dfs.browser.root.entry"); - - else if (element instanceof DFSLocation) - return ImageLibrary.getImage("dfs.browser.location.entry"); - - else if (element instanceof DFSFolder) - return ImageLibrary.getImage("dfs.browser.folder.entry"); - - else if (element instanceof DFSFile) - return ImageLibrary.getImage("dfs.browser.file.entry"); - - return null; - } - - /* @inheritDoc */ - public String getText(Object element) { - if (element instanceof DFSFile) - return ((DFSFile) element).toDetailedString(); - - return element.toString(); - } - - /* - * IBaseLabelProvider implementation - */ - - /* @inheritDoc */ - public void addListener(ILabelProviderListener listener) { - } - - /* @inheritDoc */ - public void removeListener(ILabelProviderListener listener) { - } - - /* @inheritDoc */ - public boolean isLabelProperty(Object element, String property) { - return false; - } - - /* - * IContentProvider implementation - */ - - /* @inheritDoc */ - public void dispose() { - } - - /* @inheritDoc */ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - this.viewer = viewer; - if ((viewer != null) && (viewer instanceof StructuredViewer)) - this.sviewer = (StructuredViewer) viewer; - else - this.sviewer = null; - } - - /* - * Miscellaneous - */ - - /** - * Ask the viewer for this content to refresh - */ - void refresh() { - // no display, nothing to update - if (this.viewer == null) - return; - - Display.getDefault().asyncExec(new Runnable() { - public void run() { - DFSContentProvider.this.viewer.refresh(); - } - }); - } - - /** - * Ask the viewer to refresh a single element - * - * @param content what to refresh - */ - void refresh(final DFSContent content) { - if (this.sviewer != null) { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - DFSContentProvider.this.sviewer.refresh(content); - } - }); - - } else { - refresh(); - } - } - - Viewer getViewer() { - return this.viewer; - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFile.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFile.java deleted file mode 100644 index af8e6c183b1..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFile.java +++ /dev/null @@ -1,350 +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.hadoop.eclipse.dfs; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; - -import org.apache.hadoop.eclipse.Activator; -import org.apache.hadoop.eclipse.ErrorMessageDialog; -import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.Path; -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.ui.PlatformUI; - -/** - * File handling methods for the DFS - */ -public class DFSFile extends DFSPath implements DFSContent { - - protected long length; - - protected short replication; - - /** - * Constructor to upload a file on the distributed file system - * - * @param parent - * @param path - * @param file - * @param monitor - */ - public DFSFile(DFSPath parent, Path path, File file, - IProgressMonitor monitor) { - - super(parent, path); - this.upload(monitor, file); - } - - public DFSFile(DFSPath parent, Path path) { - super(parent, path); - - try { - FileStatus fs = getDFS().getFileStatus(path); - this.length = fs.getLen(); - this.replication = fs.getReplication(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Download and view contents of a file - * - * @return a InputStream for the file - */ - public InputStream open() throws IOException { - - return getDFS().open(this.path); - } - - /** - * Download this file to the local file system. This creates a download - * status monitor. - * - * @param file - * @throws JSchException - * @throws IOException - * @throws InvocationTargetException - * @throws InterruptedException - * - * @deprecated - */ - public void downloadToLocalFile(final File file) - throws InvocationTargetException, InterruptedException { - - PlatformUI.getWorkbench().getProgressService().busyCursorWhile( - new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) - throws InvocationTargetException { - - DFSFile.this.downloadToLocalFile(monitor, file); - } - }); - } - - /* @inheritDoc */ - @Override - public void downloadToLocalDirectory(IProgressMonitor monitor, File dir) { - - File dfsPath = new File(this.getPath().toString()); - File destination = new File(dir, dfsPath.getName()); - - if (destination.exists()) { - boolean answer = - MessageDialog.openQuestion(null, "Overwrite existing local file?", - "The file you are attempting to download from the DFS " - + this.getPath() - + ", already exists in your local directory as " - + destination + ".\n" + "Overwrite the existing file?"); - if (!answer) - return; - } - - try { - this.downloadToLocalFile(monitor, destination); - - } catch (Exception e) { - e.printStackTrace(); - MessageDialog.openWarning(null, "Download to local file system", - "Downloading of file \"" + this.path + "\" to local directory \"" - + dir + "\" has failed.\n" + e); - } - } - - /** - * Provides a detailed string for this file - * - * @return the string formatted as - * <filename> (<size>, r<replication>) - */ - public String toDetailedString() { - final String[] units = { "b", "Kb", "Mb", "Gb", "Tb" }; - int unit = 0; - double l = this.length; - while ((l >= 1024.0) && (unit < units.length)) { - unit += 1; - l /= 1024.0; - } - - return String.format("%s (%.1f %s, r%d)", super.toString(), l, - units[unit], this.replication); - } - - /* @inheritDoc */ - @Override - public String toString() { - return this.path.toString(); - } - - /* - * - */ - - /** - * Download the DfsFile to a local file. Use the given monitor to report - * status of operation. - * - * @param monitor the status monitor - * @param file the local file where to put the downloaded file - * @throws InvocationTargetException - */ - public void downloadToLocalFile(IProgressMonitor monitor, File file) - throws InvocationTargetException { - - final int taskSize = 1024; - - monitor.setTaskName("Download file " + this.path); - - BufferedOutputStream ostream = null; - DataInputStream istream = null; - - try { - istream = getDFS().open(this.path); - ostream = new BufferedOutputStream(new FileOutputStream(file)); - - int bytes; - byte[] buffer = new byte[taskSize]; - - while ((bytes = istream.read(buffer)) >= 0) { - if (monitor.isCanceled()) - return; - ostream.write(buffer, 0, bytes); - monitor.worked(1); - } - - } catch (Exception e) { - throw new InvocationTargetException(e); - - } finally { - // Clean all opened resources - if (istream != null) { - try { - istream.close(); - } catch (IOException e) { - e.printStackTrace(); - // nothing we can do here - } - } - try { - ostream.close(); - } catch (IOException e) { - e.printStackTrace(); - // nothing we can do here - } - } - } - - /** - * Upload a local file to this file on the distributed file system - * - * @param monitor - * @param file - */ - public void upload(IProgressMonitor monitor, File file) { - - final int taskSize = 1024; - - monitor.setTaskName("Upload file " + this.path); - - BufferedInputStream istream = null; - DataOutputStream ostream = null; - - try { - istream = new BufferedInputStream(new FileInputStream(file)); - ostream = getDFS().create(this.path); - - int bytes; - byte[] buffer = new byte[taskSize]; - - while ((bytes = istream.read(buffer)) >= 0) { - if (monitor.isCanceled()) - return; - ostream.write(buffer, 0, bytes); - monitor.worked(1); - } - - } catch (Exception e) { - ErrorMessageDialog.display(String.format( - "Unable to uploade file %s to %s", file, this.path), e - .getLocalizedMessage()); - - } finally { - try { - if (istream != null) - istream.close(); - } catch (IOException e) { - e.printStackTrace(); - // nothing we can do here - } - try { - if (ostream != null) - ostream.close(); - } catch (IOException e) { - e.printStackTrace(); - // nothing we can do here - } - } - } - - /* @inheritDoc */ - @Override - public void refresh() { - getParent().refresh(); - } - - /* @inheritDoc */ - @Override - public int computeDownloadWork() { - return 1 + (int) (this.length / 1024); - } - - /** - * Creates an adapter for the file to open it in the Editor - * - * @return the IStorage - */ - public IStorage getIStorage() { - return new IStorageAdapter(); - } - - /** - * IStorage adapter to open the file in the Editor - */ - private class IStorageAdapter extends PlatformObject implements IStorage { - - /* @inheritDoc */ - public InputStream getContents() throws CoreException { - try { - return DFSFile.this.open(); - - } catch (IOException ioe) { - throw new CoreException(new Status(Status.ERROR, - Activator.PLUGIN_ID, 0, "Unable to open file \"" - + DFSFile.this.path + "\"", ioe)); - } - } - - /* @inheritDoc */ - public IPath getFullPath() { - return new org.eclipse.core.runtime.Path(DFSFile.this.path.toString()); - } - - /* @inheritDoc */ - public String getName() { - return DFSFile.this.path.getName(); - } - - /* @inheritDoc */ - public boolean isReadOnly() { - return true; - } - - } - - /* - * Implementation of DFSContent - */ - - /* @inheritDoc */ - public DFSContent[] getChildren() { - return null; - } - - /* @inheritDoc */ - public boolean hasChildren() { - return false; - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFolder.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFolder.java deleted file mode 100644 index 7dc72a7bf3b..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSFolder.java +++ /dev/null @@ -1,213 +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.hadoop.eclipse.dfs; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Logger; - -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.Path; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.jface.dialogs.MessageDialog; - -/** - * Local representation of a folder in the DFS. - * - * The constructor creates an empty representation of the folder and spawn a - * thread that will fill - */ -public class DFSFolder extends DFSPath implements DFSContent { - - static Logger log = Logger.getLogger(DFSFolder.class.getName()); - - private DFSContent[] children; - - protected DFSFolder(DFSContentProvider provider, HadoopServer location) - throws IOException { - - super(provider, location); - } - - private DFSFolder(DFSPath parent, Path path) { - super(parent, path); - } - - protected void loadDFSFolderChildren() throws IOException { - List list = new ArrayList(); - - for (FileStatus status : getDFS().listStatus(this.getPath())) { - if (status.isDir()) { - list.add(new DFSFolder(this, status.getPath())); - } else { - list.add(new DFSFile(this, status.getPath())); - } - } - - this.children = list.toArray(new DFSContent[list.size()]); - } - - /** - * Upload the given file or directory into this DfsFolder - * - * @param file - * @throws IOException - */ - public void upload(IProgressMonitor monitor, final File file) - throws IOException { - - if (file.isDirectory()) { - Path filePath = new Path(this.path, file.getName()); - getDFS().mkdirs(filePath); - DFSFolder newFolder = new DFSFolder(this, filePath); - monitor.worked(1); - for (File child : file.listFiles()) { - if (monitor.isCanceled()) - return; - newFolder.upload(monitor, child); - } - - } else if (file.isFile()) { - Path filePath = new Path(this.path, file.getName()); - DFSFile newFile = new DFSFile(this, filePath, file, monitor); - - } else { - // XXX don't know what the file is? - } - } - - /* @inheritDoc */ - @Override - public void downloadToLocalDirectory(IProgressMonitor monitor, File dir) { - if (!dir.exists()) - dir.mkdirs(); - - if (!dir.isDirectory()) { - MessageDialog.openError(null, "Download to local file system", - "Invalid directory location: \"" + dir + "\""); - return; - } - - File dfsPath = new File(this.getPath().toString()); - File destination = new File(dir, dfsPath.getName()); - - if (!destination.exists()) { - if (!destination.mkdir()) { - MessageDialog.openError(null, "Download to local directory", - "Unable to create directory " + destination.getAbsolutePath()); - return; - } - } - - // Download all DfsPath children - for (Object childObj : getChildren()) { - if (childObj instanceof DFSPath) { - ((DFSPath) childObj).downloadToLocalDirectory(monitor, destination); - monitor.worked(1); - } - } - } - - /* @inheritDoc */ - @Override - public int computeDownloadWork() { - int work = 1; - for (DFSContent child : getChildren()) { - if (child instanceof DFSPath) - work += ((DFSPath) child).computeDownloadWork(); - } - - return work; - } - - /** - * Create a new sub directory into this directory - * - * @param folderName - */ - public void mkdir(String folderName) { - try { - getDFS().mkdirs(new Path(this.path, folderName)); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - doRefresh(); - } - - /* - * Implementation of DFSContent - */ - - /* @inheritDoc */ - public boolean hasChildren() { - if (this.children == null) - return true; - else - return (this.children.length > 0); - } - - /* @inheritDoc */ - public DFSContent[] getChildren() { - if (children == null) { - new Job("Connecting to DFS " + location) { - @Override - protected IStatus run(IProgressMonitor monitor) { - try { - loadDFSFolderChildren(); - return Status.OK_STATUS; - - } catch (IOException ioe) { - children = - new DFSContent[] { new DFSMessage("Error: " - + ioe.getLocalizedMessage()) }; - return Status.CANCEL_STATUS; - - } finally { - // Under all circumstances, update the UI - provider.refresh(DFSFolder.this); - } - } - }.schedule(); - - return new DFSContent[] { new DFSMessage("Listing folder content...") }; - } - return this.children; - } - - /* @inheritDoc */ - @Override - public void refresh() { - this.children = null; - this.doRefresh(); - } - - /* @inheritDoc */ - @Override - public String toString() { - return String.format("%s (%s)", super.toString(), - this.getChildren().length); - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocation.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocation.java deleted file mode 100644 index 31c8fb30e15..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocation.java +++ /dev/null @@ -1,108 +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.hadoop.eclipse.dfs; - -import java.io.IOException; - -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; - -/** - * DFS Content representation of a HDFS location - */ -public class DFSLocation implements DFSContent { - - private final DFSContentProvider provider; - - private final HadoopServer location; - - private DFSContent rootFolder = null; - - DFSLocation(DFSContentProvider provider, HadoopServer server) { - this.provider = provider; - this.location = server; - } - - /* @inheritDoc */ - @Override - public String toString() { - return this.location.getLocationName(); - } - - /* - * Implementation of DFSContent - */ - - /* @inheritDoc */ - public DFSContent[] getChildren() { - if (this.rootFolder == null) { - /* - * DfsFolder constructor might block as it contacts the NameNode: work - * asynchronously here or this will potentially freeze the UI - */ - new Job("Connecting to DFS " + location) { - @Override - protected IStatus run(IProgressMonitor monitor) { - try { - rootFolder = new DFSFolder(provider, location); - return Status.OK_STATUS; - - } catch (IOException ioe) { - rootFolder = - new DFSMessage("Error: " + ioe.getLocalizedMessage()); - return Status.CANCEL_STATUS; - - } finally { - // Under all circumstances, update the UI - provider.refresh(DFSLocation.this); - } - } - }.schedule(); - - return new DFSContent[] { new DFSMessage("Connecting to DFS " - + toString()) }; - } - return new DFSContent[] { this.rootFolder }; - } - - /* @inheritDoc */ - public boolean hasChildren() { - return true; - } - - /* @inheritDoc */ - public void refresh() { - this.rootFolder = null; - this.provider.refresh(this); - } - - /* - * Actions - */ - - /** - * Refresh the location using a new connection - */ - public void reconnect() { - this.refresh(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocationsRoot.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocationsRoot.java deleted file mode 100644 index 9d9a60909eb..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSLocationsRoot.java +++ /dev/null @@ -1,150 +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.hadoop.eclipse.dfs; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.eclipse.servers.IHadoopServerListener; -import org.apache.hadoop.eclipse.servers.ServerRegistry; -import org.apache.hadoop.fs.FileSystem; - -/** - * Representation of the root element containing all DFS servers. This - * content registers an observer on Hadoop servers so as to update itself - * when servers are updated. - */ -public class DFSLocationsRoot implements DFSContent, IHadoopServerListener { - - /** - * - */ - private final DFSContentProvider provider; - - private Map map = - new HashMap(); - - /** - * Register a listeners to track DFS locations updates - * - * @param provider the content provider this content is the root of - */ - DFSLocationsRoot(DFSContentProvider provider) { - this.provider = provider; - ServerRegistry.getInstance().addListener(this); - this.refresh(); - } - - /* - * Implementation of IHadoopServerListener - */ - - /* @inheritDoc */ - public synchronized void serverChanged(final HadoopServer location, - final int type) { - - switch (type) { - case ServerRegistry.SERVER_STATE_CHANGED: { - this.provider.refresh(map.get(location)); - break; - } - - case ServerRegistry.SERVER_ADDED: { - DFSLocation dfsLoc = new DFSLocation(provider, location); - map.put(location, dfsLoc); - this.provider.refresh(this); - break; - } - - case ServerRegistry.SERVER_REMOVED: { - map.remove(location); - this.provider.refresh(this); - break; - } - } - } - - /** - * Recompute the map of Hadoop locations - */ - private synchronized void reloadLocations() { - map.clear(); - for (HadoopServer location : ServerRegistry.getInstance().getServers()) - map.put(location, new DFSLocation(provider, location)); - } - - /* @inheritDoc */ - @Override - public String toString() { - return "DFS Locations"; - } - - /* - * Implementation of DFSContent - */ - - /* @inheritDoc */ - public synchronized DFSContent[] getChildren() { - return this.map.values().toArray(new DFSContent[this.map.size()]); - } - - /* @inheritDoc */ - public boolean hasChildren() { - return (this.map.size() > 0); - } - - /* @inheritDoc */ - public void refresh() { - reloadLocations(); - this.provider.refresh(this); - } - - /* - * Actions - */ - - public void disconnect() { - Thread closeThread = new Thread() { - /* @inheritDoc */ - @Override - public void run() { - try { - System.out.printf("Closing all opened File Systems...\n"); - FileSystem.closeAll(); - System.out.printf("File Systems closed\n"); - - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - }; - - // Wait 5 seconds for the connections to be closed - closeThread.start(); - try { - closeThread.join(5000); - - } catch (InterruptedException ie) { - // Ignore - } - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSMessage.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSMessage.java deleted file mode 100644 index ce83b9aa260..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSMessage.java +++ /dev/null @@ -1,57 +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.hadoop.eclipse.dfs; - -/** - * DFS Content that displays a message. - */ -class DFSMessage implements DFSContent { - - private String message; - - DFSMessage(String message) { - this.message = message; - } - - /* @inheritDoc */ - @Override - public String toString() { - return this.message; - } - - /* - * Implementation of DFSContent - */ - - /* @inheritDoc */ - public DFSContent[] getChildren() { - return null; - } - - /* @inheritDoc */ - public boolean hasChildren() { - return false; - } - - /* @inheritDoc */ - public void refresh() { - // Nothing to do - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSPath.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSPath.java deleted file mode 100644 index 0abd53815f7..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/dfs/DFSPath.java +++ /dev/null @@ -1,160 +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.hadoop.eclipse.dfs; - -import java.io.File; -import java.io.IOException; -import java.util.logging.Logger; - -import org.apache.hadoop.hdfs.DistributedFileSystem; -import org.apache.hadoop.eclipse.ErrorMessageDialog; -import org.apache.hadoop.eclipse.server.ConfProp; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.Path; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.dialogs.MessageDialog; - -/** - * DFS Path handling for DFS - */ -public abstract class DFSPath implements DFSContent { - - protected final DFSContentProvider provider; - - protected HadoopServer location; - - private DistributedFileSystem dfs = null; - - protected final Path path; - - protected final DFSPath parent; - - /** - * For debugging purpose - */ - static Logger log = Logger.getLogger(DFSPath.class.getName()); - - /** - * Create a path representation for the given location in the given viewer - * - * @param location - * @param path - * @param viewer - */ - public DFSPath(DFSContentProvider provider, HadoopServer location) - throws IOException { - - this.provider = provider; - this.location = location; - this.path = new Path("/"); - this.parent = null; - } - - /** - * Create a sub-path representation for the given parent path - * - * @param parent - * @param path - */ - protected DFSPath(DFSPath parent, Path path) { - this.provider = parent.provider; - this.location = parent.location; - this.dfs = parent.dfs; - this.parent = parent; - this.path = path; - } - - protected void dispose() { - // Free the DFS connection - } - - /* @inheritDoc */ - @Override - public String toString() { - if (path.equals("/")) { - return location.getConfProp(ConfProp.FS_DEFAULT_URI); - - } else { - return this.path.getName(); - } - } - - /** - * Does a recursive delete of the remote directory tree at this node. - */ - public void delete() { - try { - getDFS().delete(this.path, true); - - } catch (IOException e) { - e.printStackTrace(); - MessageDialog.openWarning(null, "Delete file", - "Unable to delete file \"" + this.path + "\"\n" + e); - } - } - - public DFSPath getParent() { - return parent; - } - - public abstract void refresh(); - - /** - * Refresh the UI element for this content - */ - public void doRefresh() { - provider.refresh(this); - } - - /** - * Copy the DfsPath to the given local directory - * - * @param directory the local directory - */ - public abstract void downloadToLocalDirectory(IProgressMonitor monitor, - File dir); - - public Path getPath() { - return this.path; - } - - /** - * Gets a connection to the DFS - * - * @return a connection to the DFS - * @throws IOException - */ - DistributedFileSystem getDFS() throws IOException { - if (this.dfs == null) { - FileSystem fs = location.getDFS(); - if (!(fs instanceof DistributedFileSystem)) { - ErrorMessageDialog.display("DFS Browser", - "The DFS Browser cannot browse anything else " - + "but a Distributed File System!"); - throw new IOException("DFS Browser expects a DistributedFileSystem!"); - } - this.dfs = (DistributedFileSystem) fs; - } - return this.dfs; - } - - public abstract int computeDownloadWork(); - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java deleted file mode 100644 index 3297c6447ad..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java +++ /dev/null @@ -1,142 +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.hadoop.eclipse.launch; - -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Logger; - -import org.apache.hadoop.eclipse.servers.RunOnHadoopWizard; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.ILaunchConfiguration; -import org.eclipse.debug.core.ILaunchConfigurationType; -import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.internal.debug.ui.launcher.JavaApplicationLaunchShortcut; -import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; -import org.eclipse.jdt.launching.IRuntimeClasspathEntry; -import org.eclipse.jdt.launching.JavaRuntime; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; - -/** - * Add a shortcut "Run on Hadoop" to the Run menu - */ - -public class HadoopApplicationLaunchShortcut extends - JavaApplicationLaunchShortcut { - - static Logger log = - Logger.getLogger(HadoopApplicationLaunchShortcut.class.getName()); - - // private ActionDelegate delegate = new RunOnHadoopActionDelegate(); - - public HadoopApplicationLaunchShortcut() { - } - - /* @inheritDoc */ - @Override - protected ILaunchConfiguration findLaunchConfiguration(IType type, - ILaunchConfigurationType configType) { - - // Find an existing or create a launch configuration (Standard way) - ILaunchConfiguration iConf = - super.findLaunchConfiguration(type, configType); - - ILaunchConfigurationWorkingCopy iConfWC; - try { - /* - * Tune the default launch configuration: setup run-time classpath - * manually - */ - iConfWC = iConf.getWorkingCopy(); - - iConfWC.setAttribute( - IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH, false); - - List classPath = new ArrayList(); - IResource resource = type.getResource(); - IJavaProject project = - (IJavaProject) resource.getProject().getNature(JavaCore.NATURE_ID); - IRuntimeClasspathEntry cpEntry = - JavaRuntime.newDefaultProjectClasspathEntry(project); - classPath.add(0, cpEntry.getMemento()); - - iConfWC.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, - classPath); - - } catch (CoreException e) { - e.printStackTrace(); - // FIXME Error dialog - return null; - } - - /* - * Update the selected configuration with a specific Hadoop location - * target - */ - IResource resource = type.getResource(); - if (!(resource instanceof IFile)) - return null; - RunOnHadoopWizard wizard = - new RunOnHadoopWizard((IFile) resource, iConfWC); - WizardDialog dialog = - new WizardDialog(Display.getDefault().getActiveShell(), wizard); - - dialog.create(); - dialog.setBlockOnOpen(true); - if (dialog.open() != WizardDialog.OK) - return null; - - try { - iConfWC.doSave(); - - } catch (CoreException e) { - e.printStackTrace(); - // FIXME Error dialog - return null; - } - - return iConfWC; - } - - /** - * Was used to run the RunOnHadoopWizard inside and provide it a - * ProgressMonitor - */ - static class Dialog extends WizardDialog { - public Dialog(Shell parentShell, IWizard newWizard) { - super(parentShell, newWizard); - } - - @Override - public void create() { - super.create(); - - ((RunOnHadoopWizard) getWizard()) - .setProgressMonitor(getProgressMonitor()); - } - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/LocalMapReduceLaunchTabGroup.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/LocalMapReduceLaunchTabGroup.java deleted file mode 100644 index 66db5d2d3cf..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/LocalMapReduceLaunchTabGroup.java +++ /dev/null @@ -1,182 +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.hadoop.eclipse.launch; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.debug.core.ILaunchConfiguration; -import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; -import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup; -import org.eclipse.debug.ui.CommonTab; -import org.eclipse.debug.ui.ILaunchConfigurationDialog; -import org.eclipse.debug.ui.ILaunchConfigurationTab; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.dom.AST; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaJRETab; -import org.eclipse.jdt.ui.IJavaElementSearchConstants; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.dialogs.SelectionDialog; - -/** - * - * Handler for Local MapReduce job launches - * - * TODO(jz) this may not be needed as we almost always deploy to a remote server - * and not locally, where we do do it locally we may just be able to exec - * scripts without going to java - * - */ -public class LocalMapReduceLaunchTabGroup extends - AbstractLaunchConfigurationTabGroup { - - public LocalMapReduceLaunchTabGroup() { - // TODO Auto-generated constructor stub - } - - public void createTabs(ILaunchConfigurationDialog dialog, String mode) { - setTabs(new ILaunchConfigurationTab[] { new MapReduceLaunchTab(), - new JavaArgumentsTab(), new JavaJRETab(), new JavaClasspathTab(), - new CommonTab() }); - } - - public static class MapReduceLaunchTab extends AbstractLaunchConfigurationTab { - private Text combinerClass; - - private Text reducerClass; - - private Text mapperClass; - - @Override - public boolean canSave() { - return true; - } - - @Override - public boolean isValid(ILaunchConfiguration launchConfig) { - // todo: only if all classes are of proper types - return true; - } - - public void createControl(final Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(3, false); - panel.setLayout(layout); - - Label mapperLabel = new Label(panel, SWT.NONE); - mapperLabel.setText("Mapper"); - mapperClass = new Text(panel, SWT.SINGLE | SWT.BORDER); - createRow(parent, panel, mapperClass); - - Label reducerLabel = new Label(panel, SWT.NONE); - reducerLabel.setText("Reducer"); - reducerClass = new Text(panel, SWT.SINGLE | SWT.BORDER); - createRow(parent, panel, reducerClass); - - Label combinerLabel = new Label(panel, SWT.NONE); - combinerLabel.setText("Combiner"); - combinerClass = new Text(panel, SWT.SINGLE | SWT.BORDER); - createRow(parent, panel, combinerClass); - - panel.pack(); - setControl(panel); - } - - private void createRow(final Composite parent, Composite panel, - final Text text) { - text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - Button button = new Button(panel, SWT.BORDER); - button.setText("Browse..."); - button.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event arg0) { - try { - AST ast = AST.newAST(3); - - SelectionDialog dialog = JavaUI.createTypeDialog(parent.getShell(), - new ProgressMonitorDialog(parent.getShell()), SearchEngine - .createWorkspaceScope(), - IJavaElementSearchConstants.CONSIDER_CLASSES, false); - dialog.setMessage("Select Mapper type (implementing )"); - dialog.setBlockOnOpen(true); - dialog.setTitle("Select Mapper Type"); - dialog.open(); - - if ((dialog.getReturnCode() == Window.OK) - && (dialog.getResult().length > 0)) { - IType type = (IType) dialog.getResult()[0]; - text.setText(type.getFullyQualifiedName()); - setDirty(true); - } - } catch (JavaModelException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - }); - } - - public String getName() { - return "Hadoop"; - } - - public void initializeFrom(ILaunchConfiguration configuration) { - try { - mapperClass.setText(configuration.getAttribute( - "org.apache.hadoop.eclipse.launch.mapper", "")); - reducerClass.setText(configuration.getAttribute( - "org.apache.hadoop.eclipse.launch.reducer", "")); - combinerClass.setText(configuration.getAttribute( - "org.apache.hadoop.eclipse.launch.combiner", "")); - } catch (CoreException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - setErrorMessage(e.getMessage()); - } - } - - public void performApply(ILaunchConfigurationWorkingCopy configuration) { - configuration.setAttribute("org.apache.hadoop.eclipse.launch.mapper", - mapperClass.getText()); - configuration.setAttribute( - "org.apache.hadoop.eclipse.launch.reducer", reducerClass - .getText()); - configuration.setAttribute( - "org.apache.hadoop.eclipse.launch.combiner", combinerClass - .getText()); - } - - public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { - - } - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/MutexRule.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/MutexRule.java deleted file mode 100644 index 46df4491056..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/MutexRule.java +++ /dev/null @@ -1,37 +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.hadoop.eclipse.launch; - -import org.eclipse.core.runtime.jobs.ISchedulingRule; - -public class MutexRule implements ISchedulingRule { - private final String id; - - public MutexRule(String id) { - this.id = id; - } - - public boolean contains(ISchedulingRule rule) { - return (rule instanceof MutexRule) && ((MutexRule) rule).id.equals(id); - } - - public boolean isConflicting(ISchedulingRule rule) { - return (rule instanceof MutexRule) && ((MutexRule) rule).id.equals(id); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/StartHadoopLaunchTabGroup.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/StartHadoopLaunchTabGroup.java deleted file mode 100644 index 047ba179a61..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/StartHadoopLaunchTabGroup.java +++ /dev/null @@ -1,47 +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.hadoop.eclipse.launch; - -import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup; -import org.eclipse.debug.ui.CommonTab; -import org.eclipse.debug.ui.ILaunchConfigurationDialog; -import org.eclipse.debug.ui.ILaunchConfigurationTab; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab; -import org.eclipse.jdt.debug.ui.launchConfigurations.JavaJRETab; - -/** - * Create the tab group for the dialog window for starting a Hadoop job. - */ - -public class StartHadoopLaunchTabGroup extends - AbstractLaunchConfigurationTabGroup { - - public StartHadoopLaunchTabGroup() { - // TODO Auto-generated constructor stub - } - - /** - * TODO(jz) consider the appropriate tabs for this case - */ - public void createTabs(ILaunchConfigurationDialog dialog, String mode) { - setTabs(new ILaunchConfigurationTab[] { new JavaArgumentsTab(), - new JavaJRETab(), new JavaClasspathTab(), new CommonTab() }); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/MapReducePreferencePage.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/MapReducePreferencePage.java deleted file mode 100644 index cef50a3475b..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/MapReducePreferencePage.java +++ /dev/null @@ -1,64 +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.hadoop.eclipse.preferences; - -import org.apache.hadoop.eclipse.Activator; -import org.eclipse.jface.preference.DirectoryFieldEditor; -import org.eclipse.jface.preference.FieldEditorPreferencePage; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPreferencePage; - -/** - * This class represents a preference page that is contributed to the - * Preferences dialog. By sub-classing FieldEditorPreferencePage, - * we can use the field support built into JFace that allows us to create a - * page that is small and knows how to save, restore and apply itself. - * - *

- * This page is used to modify preferences only. They are stored in the - * preference store that belongs to the main plug-in class. That way, - * preferences can be accessed directly via the preference store. - */ - -public class MapReducePreferencePage extends FieldEditorPreferencePage - implements IWorkbenchPreferencePage { - - public MapReducePreferencePage() { - super(GRID); - setPreferenceStore(Activator.getDefault().getPreferenceStore()); - setTitle("Hadoop Map/Reduce Tools"); - // setDescription("Hadoop Map/Reduce Preferences"); - } - - /** - * Creates the field editors. Field editors are abstractions of the common - * GUI blocks needed to manipulate various types of preferences. Each field - * editor knows how to save and restore itself. - */ - @Override - public void createFieldEditors() { - addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, - "&Hadoop installation directory:", getFieldEditorParent())); - - } - - /* @inheritDoc */ - public void init(IWorkbench workbench) { - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceConstants.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceConstants.java deleted file mode 100644 index 74641bb28a7..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceConstants.java +++ /dev/null @@ -1,34 +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.hadoop.eclipse.preferences; - -/** - * Constant definitions for plug-in preferences - */ -public class PreferenceConstants { - - public static final String P_PATH = "pathPreference"; - - // public static final String P_BOOLEAN = "booleanPreference"; - // - // public static final String P_CHOICE = "choicePreference"; - // - // public static final String P_STRING = "stringPreference"; - // -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceInitializer.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceInitializer.java deleted file mode 100644 index 444050a9920..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/preferences/PreferenceInitializer.java +++ /dev/null @@ -1,33 +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.hadoop.eclipse.preferences; - -import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; - -/** - * Class used to initialize default preference values. - */ -public class PreferenceInitializer extends AbstractPreferenceInitializer { - - /* @inheritDoc */ - @Override - public void initializeDefaultPreferences() { - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/ConfProp.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/ConfProp.java deleted file mode 100644 index 7c84ff09c33..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/ConfProp.java +++ /dev/null @@ -1,147 +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.hadoop.eclipse.server; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.hadoop.conf.Configuration; - -public enum ConfProp { - /** - * Property name for the Hadoop location name - */ - PI_LOCATION_NAME(true, "location.name", "New Hadoop location"), - - /** - * Property name for the master host name (the Job tracker) - */ - PI_JOB_TRACKER_HOST(true, "jobtracker.host", "localhost"), - - /** - * Property name for the DFS master host name (the Name node) - */ - PI_NAME_NODE_HOST(true, "namenode.host", "localhost"), - - /** - * Property name for the installation directory on the master node - */ - // PI_INSTALL_DIR(true, "install.dir", "/dir/hadoop-version/"), - /** - * User name to use for Hadoop operations - */ - PI_USER_NAME(true, "user.name", System.getProperty("user.name", - "who are you?")), - - /** - * Property name for SOCKS proxy activation - */ - PI_SOCKS_PROXY_ENABLE(true, "socks.proxy.enable", "no"), - - /** - * Property name for the SOCKS proxy host - */ - PI_SOCKS_PROXY_HOST(true, "socks.proxy.host", "host"), - - /** - * Property name for the SOCKS proxy port - */ - PI_SOCKS_PROXY_PORT(true, "socks.proxy.port", "1080"), - - /** - * TCP port number for the name node - */ - PI_NAME_NODE_PORT(true, "namenode.port", "50040"), - - /** - * TCP port number for the job tracker - */ - PI_JOB_TRACKER_PORT(true, "jobtracker.port", "50020"), - - /** - * Are the Map/Reduce and the Distributed FS masters hosted on the same - * machine? - */ - PI_COLOCATE_MASTERS(true, "masters.colocate", "yes"), - - /** - * Property name for naming the job tracker (URI). This property is related - * to {@link #PI_MASTER_HOST_NAME} - */ - JOB_TRACKER_URI(false, "mapred.job.tracker", "localhost:50020"), - - /** - * Property name for naming the default file system (URI). - */ - FS_DEFAULT_URI(false, "fs.default.name", "hdfs://localhost:50040/"), - - /** - * Property name for the default socket factory: - */ - SOCKET_FACTORY_DEFAULT(false, "hadoop.rpc.socket.factory.class.default", - "org.apache.hadoop.net.StandardSocketFactory"), - - /** - * Property name for the SOCKS server URI. - */ - SOCKS_SERVER(false, "hadoop.socks.server", "host:1080"), - - ; - - /** - * Map -> ConfProp - */ - private static Map map; - - private static synchronized void registerProperty(String name, - ConfProp prop) { - - if (ConfProp.map == null) - ConfProp.map = new HashMap(); - - ConfProp.map.put(name, prop); - } - - public static ConfProp getByName(String propName) { - return map.get(propName); - } - - public final String name; - - public final String defVal; - - ConfProp(boolean internal, String name, String defVal) { - if (internal) - name = "eclipse.plug-in." + name; - this.name = name; - this.defVal = defVal; - - ConfProp.registerProperty(name, this); - } - - String get(Configuration conf) { - return conf.get(name); - } - - void set(Configuration conf, String value) { - assert value != null; - conf.set(name, value); - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopJob.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopJob.java deleted file mode 100644 index 8745200580c..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopJob.java +++ /dev/null @@ -1,346 +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.hadoop.eclipse.server; - -import java.io.File; -import java.io.IOException; - -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.FileUtil; -import org.apache.hadoop.fs.Path; -import org.apache.hadoop.mapred.Counters; -import org.apache.hadoop.mapred.JobConf; -import org.apache.hadoop.mapred.JobID; -import org.apache.hadoop.mapred.JobStatus; -import org.apache.hadoop.mapred.RunningJob; - -/** - * Representation of a Map/Reduce running job on a given location - */ - -public class HadoopJob { - - /** - * Enum representation of a Job state - */ - public enum JobState { - PREPARE(JobStatus.PREP), RUNNING(JobStatus.RUNNING), FAILED( - JobStatus.FAILED), SUCCEEDED(JobStatus.SUCCEEDED); - - final int state; - - JobState(int state) { - this.state = state; - } - - static JobState ofInt(int state) { - switch (state) { - case JobStatus.PREP: - return PREPARE; - case JobStatus.RUNNING: - return RUNNING; - case JobStatus.FAILED: - return FAILED; - case JobStatus.SUCCEEDED: - return SUCCEEDED; - default: - return null; - } - } - } - - /** - * Location this Job runs on - */ - private final HadoopServer location; - - /** - * Unique identifier of this Job - */ - final JobID jobId; - - /** - * Status representation of a running job. This actually contains a - * reference to a JobClient. Its methods might block. - */ - RunningJob running; - - /** - * Last polled status - * - * @deprecated should apparently not be used - */ - JobStatus status; - - /** - * Last polled counters - */ - Counters counters; - - /** - * Job Configuration - */ - JobConf jobConf = null; - - boolean completed = false; - - boolean successful = false; - - boolean killed = false; - - int totalMaps; - - int totalReduces; - - int completedMaps; - - int completedReduces; - - float mapProgress; - - float reduceProgress; - - /** - * Constructor for a Hadoop job representation - * - * @param location - * @param id - * @param running - * @param status - */ - public HadoopJob(HadoopServer location, JobID id, RunningJob running, - JobStatus status) { - - this.location = location; - this.jobId = id; - this.running = running; - - loadJobFile(); - - update(status); - } - - /** - * Try to locate and load the JobConf file for this job so to get more - * details on the job (number of maps and of reduces) - */ - private void loadJobFile() { - try { - String jobFile = getJobFile(); - FileSystem fs = location.getDFS(); - File tmp = File.createTempFile(getJobID().toString(), ".xml"); - if (FileUtil.copy(fs, new Path(jobFile), tmp, false, location - .getConfiguration())) { - this.jobConf = new JobConf(tmp.toString()); - - this.totalMaps = jobConf.getNumMapTasks(); - this.totalReduces = jobConf.getNumReduceTasks(); - } - - } catch (IOException ioe) { - ioe.printStackTrace(); - } - } - - /* @inheritDoc */ - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((jobId == null) ? 0 : jobId.hashCode()); - result = prime * result + ((location == null) ? 0 : location.hashCode()); - return result; - } - - /* @inheritDoc */ - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (!(obj instanceof HadoopJob)) - return false; - final HadoopJob other = (HadoopJob) obj; - if (jobId == null) { - if (other.jobId != null) - return false; - } else if (!jobId.equals(other.jobId)) - return false; - if (location == null) { - if (other.location != null) - return false; - } else if (!location.equals(other.location)) - return false; - return true; - } - - /** - * Get the running status of the Job (@see {@link JobStatus}). - * - * @return - */ - public JobState getState() { - if (this.completed) { - if (this.successful) { - return JobState.SUCCEEDED; - } else { - return JobState.FAILED; - } - } else { - return JobState.RUNNING; - } - // return JobState.ofInt(this.status.getRunState()); - } - - /** - * @return - */ - public JobID getJobID() { - return this.jobId; - } - - /** - * @return - */ - public HadoopServer getLocation() { - return this.location; - } - - /** - * @return - */ - public boolean isCompleted() { - return this.completed; - } - - /** - * @return - */ - public String getJobName() { - return this.running.getJobName(); - } - - /** - * @return - */ - public String getJobFile() { - return this.running.getJobFile(); - } - - /** - * Return the tracking URL for this Job. - * - * @return string representation of the tracking URL for this Job - */ - public String getTrackingURL() { - return this.running.getTrackingURL(); - } - - /** - * Returns a string representation of this job status - * - * @return string representation of this job status - */ - public String getStatus() { - - StringBuffer s = new StringBuffer(); - - s.append("Maps : " + completedMaps + "/" + totalMaps); - s.append(" (" + mapProgress + ")"); - s.append(" Reduces : " + completedReduces + "/" + totalReduces); - s.append(" (" + reduceProgress + ")"); - - return s.toString(); - } - - /** - * Update this job status according to the given JobStatus - * - * @param status - */ - void update(JobStatus status) { - this.status = status; - try { - this.counters = running.getCounters(); - this.completed = running.isComplete(); - this.successful = running.isSuccessful(); - this.mapProgress = running.mapProgress(); - this.reduceProgress = running.reduceProgress(); - // running.getTaskCompletionEvents(fromEvent); - - } catch (IOException ioe) { - ioe.printStackTrace(); - } - - this.completedMaps = (int) (this.totalMaps * this.mapProgress); - this.completedReduces = (int) (this.totalReduces * this.reduceProgress); - } - - /** - * Print this job counters (for debugging purpose) - */ - void printCounters() { - System.out.printf("New Job:\n", counters); - for (String groupName : counters.getGroupNames()) { - Counters.Group group = counters.getGroup(groupName); - System.out.printf("\t%s[%s]\n", groupName, group.getDisplayName()); - - for (Counters.Counter counter : group) { - System.out.printf("\t\t%s: %s\n", counter.getDisplayName(), - counter.getCounter()); - } - } - System.out.printf("\n"); - } - - /** - * Kill this job - */ - public void kill() { - try { - this.running.killJob(); - this.killed = true; - - } catch (IOException e) { - e.printStackTrace(); - } - } - - /** - * Print this job status (for debugging purpose) - */ - public void display() { - System.out.printf("Job id=%s, name=%s\n", getJobID(), getJobName()); - System.out.printf("Configuration file: %s\n", getJobID()); - System.out.printf("Tracking URL: %s\n", getTrackingURL()); - - System.out.printf("Completion: map: %f reduce %f\n", - 100.0 * this.mapProgress, 100.0 * this.reduceProgress); - - System.out.println("Job total maps = " + totalMaps); - System.out.println("Job completed maps = " + completedMaps); - System.out.println("Map percentage complete = " + mapProgress); - System.out.println("Job total reduces = " + totalReduces); - System.out.println("Job completed reduces = " + completedReduces); - System.out.println("Reduce percentage complete = " + reduceProgress); - System.out.flush(); - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopPathPage.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopPathPage.java deleted file mode 100644 index cf58b9c25c8..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopPathPage.java +++ /dev/null @@ -1,124 +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.hadoop.eclipse.server; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IEditorSite; -import org.eclipse.ui.IPropertyListener; -import org.eclipse.ui.IWorkbenchPartSite; -import org.eclipse.ui.PartInitException; - -public class HadoopPathPage implements IEditorPart { - - public IEditorInput getEditorInput() { - // TODO Auto-generated method stub - return null; - } - - public IEditorSite getEditorSite() { - // TODO Auto-generated method stub - return null; - } - - public void init(IEditorSite site, IEditorInput input) - throws PartInitException { - // TODO Auto-generated method stub - - } - - public void addPropertyListener(IPropertyListener listener) { - // TODO Auto-generated method stub - - } - - public void createPartControl(Composite parent) { - // TODO Auto-generated method stub - - } - - public void dispose() { - // TODO Auto-generated method stub - - } - - public IWorkbenchPartSite getSite() { - // TODO Auto-generated method stub - return null; - } - - public String getTitle() { - // TODO Auto-generated method stub - return null; - } - - public Image getTitleImage() { - // TODO Auto-generated method stub - return null; - } - - public String getTitleToolTip() { - // TODO Auto-generated method stub - return null; - } - - public void removePropertyListener(IPropertyListener listener) { - // TODO Auto-generated method stub - - } - - public void setFocus() { - // TODO Auto-generated method stub - - } - - public Object getAdapter(Class adapter) { - // TODO Auto-generated method stub - return null; - } - - public void doSave(IProgressMonitor monitor) { - // TODO Auto-generated method stub - - } - - public void doSaveAs() { - // TODO Auto-generated method stub - - } - - public boolean isDirty() { - // TODO Auto-generated method stub - return false; - } - - public boolean isSaveAsAllowed() { - // TODO Auto-generated method stub - return false; - } - - public boolean isSaveOnCloseNeeded() { - // TODO Auto-generated method stub - return false; - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java deleted file mode 100644 index 1454c428310..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/HadoopServer.java +++ /dev/null @@ -1,510 +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.hadoop.eclipse.server; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; -import java.util.logging.Logger; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.eclipse.Activator; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.mapred.JobClient; -import org.apache.hadoop.mapred.JobConf; -import org.apache.hadoop.mapred.JobID; -import org.apache.hadoop.mapred.JobStatus; -import org.apache.hadoop.mapred.RunningJob; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.swt.widgets.Display; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.Text; -import org.xml.sax.SAXException; - -/** - * Representation of a Hadoop location, meaning of the master node (NameNode, - * JobTracker). - * - *

- * This class does not create any SSH connection anymore. Tunneling must be - * setup outside of Eclipse for now (using Putty or ssh -D<port> - * <host>) - * - *

- * TODO - *

  • Disable the updater if a location becomes unreachable or fails for - * tool long - *
  • Stop the updater on location's disposal/removal - */ - -public class HadoopServer { - - /** - * Frequency of location status observations expressed as the delay in ms - * between each observation - * - * TODO Add a preference parameter for this - */ - protected static final long STATUS_OBSERVATION_DELAY = 1500; - - /** - * - */ - public class LocationStatusUpdater extends Job { - - JobClient client = null; - - /** - * Setup the updater - */ - public LocationStatusUpdater() { - super("Map/Reduce location status updater"); - this.setSystem(true); - } - - /* @inheritDoc */ - @Override - protected IStatus run(IProgressMonitor monitor) { - if (client == null) { - try { - client = HadoopServer.this.getJobClient(); - - } catch (IOException ioe) { - client = null; - return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, - "Cannot connect to the Map/Reduce location: " - + HadoopServer.this.getLocationName(), - ioe); - } - } - - try { - // Set of all known existing Job IDs we want fresh info of - Set missingJobIds = - new HashSet(runningJobs.keySet()); - - JobStatus[] jstatus = client.jobsToComplete(); - for (JobStatus status : jstatus) { - - JobID jobId = status.getJobID(); - missingJobIds.remove(jobId); - - HadoopJob hJob; - synchronized (HadoopServer.this.runningJobs) { - hJob = runningJobs.get(jobId); - if (hJob == null) { - // Unknown job, create an entry - RunningJob running = client.getJob(jobId); - hJob = - new HadoopJob(HadoopServer.this, jobId, running, status); - newJob(hJob); - } - } - - // Update HadoopJob with fresh infos - updateJob(hJob, status); - } - - // Ask explicitly for fresh info for these Job IDs - for (JobID jobId : missingJobIds) { - HadoopJob hJob = runningJobs.get(jobId); - if (!hJob.isCompleted()) - updateJob(hJob, null); - } - - } catch (IOException ioe) { - client = null; - return new Status(Status.ERROR, Activator.PLUGIN_ID, 0, - "Cannot retrieve running Jobs on location: " - + HadoopServer.this.getLocationName(), ioe); - } - - // Schedule the next observation - schedule(STATUS_OBSERVATION_DELAY); - - return Status.OK_STATUS; - } - - /** - * Stores and make the new job available - * - * @param data - */ - private void newJob(final HadoopJob data) { - runningJobs.put(data.getJobID(), data); - - Display.getDefault().asyncExec(new Runnable() { - public void run() { - fireJobAdded(data); - } - }); - } - - /** - * Updates the status of a job - * - * @param job the job to update - */ - private void updateJob(final HadoopJob job, JobStatus status) { - job.update(status); - - Display.getDefault().asyncExec(new Runnable() { - public void run() { - fireJobChanged(job); - } - }); - } - - } - - static Logger log = Logger.getLogger(HadoopServer.class.getName()); - - /** - * Hadoop configuration of the location. Also contains specific parameters - * for the plug-in. These parameters are prefix with eclipse.plug-in.* - */ - private Configuration conf; - - /** - * Jobs listeners - */ - private Set jobListeners = new HashSet(); - - /** - * Jobs running on this location. The keys of this map are the Job IDs. - */ - private transient Map runningJobs = - Collections.synchronizedMap(new TreeMap()); - - /** - * Status updater for this location - */ - private LocationStatusUpdater statusUpdater; - - // state and status - transient - private transient String state = ""; - - /** - * Creates a new default Hadoop location - */ - public HadoopServer() { - this.conf = new Configuration(); - this.addPluginConfigDefaultProperties(); - } - - /** - * Creates a location from a file - * - * @throws IOException - * @throws SAXException - * @throws ParserConfigurationException - */ - public HadoopServer(File file) throws ParserConfigurationException, - SAXException, IOException { - - this.conf = new Configuration(); - this.addPluginConfigDefaultProperties(); - this.loadFromXML(file); - } - - /** - * Create a new Hadoop location by copying an already existing one. - * - * @param source the location to copy - */ - public HadoopServer(HadoopServer existing) { - this(); - this.load(existing); - } - - public void addJobListener(IJobListener l) { - jobListeners.add(l); - } - - public void dispose() { - // TODO close DFS connections? - } - - /** - * List all elements that should be present in the Server window (all - * servers and all jobs running on each servers) - * - * @return collection of jobs for this location - */ - public Collection getJobs() { - startStatusUpdater(); - return this.runningJobs.values(); - } - - /** - * Remove the given job from the currently running jobs map - * - * @param job the job to remove - */ - public void purgeJob(final HadoopJob job) { - runningJobs.remove(job.getJobID()); - Display.getDefault().asyncExec(new Runnable() { - public void run() { - fireJobRemoved(job); - } - }); - } - - /** - * Returns the {@link Configuration} defining this location. - * - * @return the location configuration - */ - public Configuration getConfiguration() { - return this.conf; - } - - /** - * Gets a Hadoop configuration property value - * - * @param prop the configuration property - * @return the property value - */ - public String getConfProp(ConfProp prop) { - return prop.get(conf); - } - - /** - * Gets a Hadoop configuration property value - * - * @param propName the property name - * @return the property value - */ - public String getConfProp(String propName) { - return this.conf.get(propName); - } - - public String getLocationName() { - return ConfProp.PI_LOCATION_NAME.get(conf); - } - - /** - * Returns the master host name of the Hadoop location (the Job tracker) - * - * @return the host name of the Job tracker - */ - public String getMasterHostName() { - return getConfProp(ConfProp.PI_JOB_TRACKER_HOST); - } - - public String getState() { - return state; - } - - /** - * Overwrite this location with the given existing location - * - * @param existing the existing location - */ - public void load(HadoopServer existing) { - this.conf = new Configuration(existing.conf); - } - - /** - * Overwrite this location with settings available in the given XML file. - * The existing configuration is preserved if the XML file is invalid. - * - * @param file the file path of the XML file - * @return validity of the XML file - * @throws ParserConfigurationException - * @throws IOException - * @throws SAXException - */ - public boolean loadFromXML(File file) throws ParserConfigurationException, - SAXException, IOException { - - Configuration newConf = new Configuration(this.conf); - - DocumentBuilder builder = - DocumentBuilderFactory.newInstance().newDocumentBuilder(); - Document document = builder.parse(file); - - Element root = document.getDocumentElement(); - if (!"configuration".equals(root.getTagName())) - return false; - NodeList props = root.getChildNodes(); - for (int i = 0; i < props.getLength(); i++) { - Node propNode = props.item(i); - if (!(propNode instanceof Element)) - continue; - Element prop = (Element) propNode; - if (!"property".equals(prop.getTagName())) - return false; - NodeList fields = prop.getChildNodes(); - String attr = null; - String value = null; - for (int j = 0; j < fields.getLength(); j++) { - Node fieldNode = fields.item(j); - if (!(fieldNode instanceof Element)) - continue; - Element field = (Element) fieldNode; - if ("name".equals(field.getTagName())) - attr = ((Text) field.getFirstChild()).getData(); - if ("value".equals(field.getTagName()) && field.hasChildNodes()) - value = ((Text) field.getFirstChild()).getData(); - } - if (attr != null && value != null) - newConf.set(attr, value); - } - - this.conf = newConf; - return true; - } - - /** - * Sets a Hadoop configuration property value - * - * @param prop the property - * @param propvalue the property value - */ - public void setConfProp(ConfProp prop, String propValue) { - prop.set(conf, propValue); - } - - /** - * Sets a Hadoop configuration property value - * - * @param propName the property name - * @param propValue the property value - */ - public void setConfProp(String propName, String propValue) { - this.conf.set(propName, propValue); - } - - public void setLocationName(String newName) { - ConfProp.PI_LOCATION_NAME.set(conf, newName); - } - - /** - * Write this location settings to the given output stream - * - * @param out the output stream - * @throws IOException - */ - public void storeSettingsToFile(File file) throws IOException { - FileOutputStream fos = new FileOutputStream(file); - this.conf.writeXml(fos); - fos.close(); - } - - /* @inheritDoc */ - @Override - public String toString() { - return this.getLocationName(); - } - - /** - * Fill the configuration with valid default values - */ - private void addPluginConfigDefaultProperties() { - for (ConfProp prop : ConfProp.values()) { - if (conf.get(prop.name) == null) - conf.set(prop.name, prop.defVal); - } - } - - /** - * Starts the location status updater - */ - private synchronized void startStatusUpdater() { - if (statusUpdater == null) { - statusUpdater = new LocationStatusUpdater(); - statusUpdater.schedule(); - } - } - - /* - * Rewrite of the connecting and tunneling to the Hadoop location - */ - - /** - * Provides access to the default file system of this location. - * - * @return a {@link FileSystem} - */ - public FileSystem getDFS() throws IOException { - return FileSystem.get(this.conf); - } - - /** - * Provides access to the Job tracking system of this location - * - * @return a {@link JobClient} - */ - public JobClient getJobClient() throws IOException { - JobConf jconf = new JobConf(this.conf); - return new JobClient(jconf); - } - - /* - * Listeners handling - */ - - protected void fireJarPublishDone(JarModule jar) { - for (IJobListener listener : jobListeners) { - listener.publishDone(jar); - } - } - - protected void fireJarPublishStart(JarModule jar) { - for (IJobListener listener : jobListeners) { - listener.publishStart(jar); - } - } - - protected void fireJobAdded(HadoopJob job) { - for (IJobListener listener : jobListeners) { - listener.jobAdded(job); - } - } - - protected void fireJobRemoved(HadoopJob job) { - for (IJobListener listener : jobListeners) { - listener.jobRemoved(job); - } - } - - protected void fireJobChanged(HadoopJob job) { - for (IJobListener listener : jobListeners) { - listener.jobChanged(job); - } - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/IJobListener.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/IJobListener.java deleted file mode 100644 index 1668e29622e..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/IJobListener.java +++ /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. - */ - -package org.apache.hadoop.eclipse.server; - -/** - * Interface for updating/adding jobs to the MapReduce Server view. - */ -public interface IJobListener { - - void jobChanged(HadoopJob job); - - void jobAdded(HadoopJob job); - - void jobRemoved(HadoopJob job); - - void publishStart(JarModule jar); - - void publishDone(JarModule jar); - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/JarModule.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/JarModule.java deleted file mode 100644 index 828e205cefe..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/server/JarModule.java +++ /dev/null @@ -1,146 +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.hadoop.eclipse.server; - -import java.io.File; -import java.util.logging.Logger; - -import org.apache.hadoop.eclipse.Activator; -import org.apache.hadoop.eclipse.ErrorMessageDialog; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.ui.jarpackager.IJarExportRunnable; -import org.eclipse.jdt.ui.jarpackager.JarPackageData; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.PlatformUI; - -/** - * Methods for interacting with the jar file containing the - * Mapper/Reducer/Driver classes for a MapReduce job. - */ - -public class JarModule implements IRunnableWithProgress { - - static Logger log = Logger.getLogger(JarModule.class.getName()); - - private IResource resource; - - private File jarFile; - - public JarModule(IResource resource) { - this.resource = resource; - } - - public String getName() { - return resource.getProject().getName() + "/" + resource.getName(); - } - - /** - * Creates a JAR file containing the given resource (Java class with - * main()) and all associated resources - * - * @param resource the resource - * @return a file designing the created package - */ - public void run(IProgressMonitor monitor) { - - log.fine("Build jar"); - JarPackageData jarrer = new JarPackageData(); - - jarrer.setExportJavaFiles(true); - jarrer.setExportClassFiles(true); - jarrer.setExportOutputFolders(true); - jarrer.setOverwrite(true); - - try { - // IJavaProject project = - // (IJavaProject) resource.getProject().getNature(JavaCore.NATURE_ID); - - // check this is the case before letting this method get called - Object element = resource.getAdapter(IJavaElement.class); - IType type = ((ICompilationUnit) element).findPrimaryType(); - jarrer.setManifestMainClass(type); - - // Create a temporary JAR file name - File baseDir = Activator.getDefault().getStateLocation().toFile(); - - String prefix = - String.format("%s_%s-", resource.getProject().getName(), resource - .getName()); - File jarFile = File.createTempFile(prefix, ".jar", baseDir); - jarrer.setJarLocation(new Path(jarFile.getAbsolutePath())); - - jarrer.setElements(resource.getProject().members(IResource.FILE)); - IJarExportRunnable runnable = - jarrer.createJarExportRunnable(Display.getDefault() - .getActiveShell()); - runnable.run(monitor); - - this.jarFile = jarFile; - - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - /** - * Allow the retrieval of the resulting JAR file - * - * @return the generated JAR file - */ - public File getJarFile() { - return this.jarFile; - } - - /** - * Static way to create a JAR package for the given resource and showing a - * progress bar - * - * @param resource - * @return - */ - public static File createJarPackage(IResource resource) { - - JarModule jarModule = new JarModule(resource); - try { - PlatformUI.getWorkbench().getProgressService().run(false, true, - jarModule); - - } catch (Exception e) { - e.printStackTrace(); - return null; - } - - File jarFile = jarModule.getJarFile(); - if (jarFile == null) { - ErrorMessageDialog.display("Run on Hadoop", - "Unable to create or locate the JAR file for the Job"); - return null; - } - - return jarFile; - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopLocationWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopLocationWizard.java deleted file mode 100644 index 8fdd19b005b..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopLocationWizard.java +++ /dev/null @@ -1,972 +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.hadoop.eclipse.servers; - -import java.net.URI; -import java.net.URISyntaxException; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.SortedMap; -import java.util.TreeMap; -import java.util.Map.Entry; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.eclipse.server.ConfProp; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.eclipse.jface.dialogs.IMessageProvider; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.TabFolder; -import org.eclipse.swt.widgets.TabItem; -import org.eclipse.swt.widgets.Text; - -/** - * Wizard for editing the settings of a Hadoop location - * - * The wizard contains 3 tabs: General, Tunneling and Advanced. It edits - * parameters of the location member which either a new location or a copy of - * an existing registered location. - */ - -public class HadoopLocationWizard extends WizardPage { - - Image circle; - - /** - * The location effectively edited by the wizard. This location is a copy - * or a new one. - */ - private HadoopServer location; - - /** - * The original location being edited by the wizard (null if we create a - * new instance). - */ - private HadoopServer original; - - /** - * New Hadoop location wizard - */ - public HadoopLocationWizard() { - super("Hadoop Server", "New Hadoop Location", null); - - this.original = null; - this.location = new HadoopServer(); - this.location.setLocationName(""); - } - - /** - * Constructor to edit the parameters of an existing Hadoop server - * - * @param server - */ - public HadoopLocationWizard(HadoopServer server) { - super("Create a new Hadoop location", "Edit Hadoop Location", null); - - this.original = server; - this.location = new HadoopServer(server); - } - - /** - * Performs any actions appropriate in response to the user having pressed - * the Finish button, or refuse if finishing now is not permitted. - * - * @return the created or updated Hadoop location - */ - - public HadoopServer performFinish() { - try { - if (this.original == null) { - // New location - Display.getDefault().syncExec(new Runnable() { - public void run() { - ServerRegistry.getInstance().addServer( - HadoopLocationWizard.this.location); - } - }); - return this.location; - - } else { - // Update location - final String originalName = this.original.getLocationName(); - this.original.load(this.location); - - Display.getDefault().syncExec(new Runnable() { - public void run() { - ServerRegistry.getInstance().updateServer(originalName, - HadoopLocationWizard.this.location); - } - }); - return this.original; - - } - } catch (Exception e) { - e.printStackTrace(); - setMessage("Invalid server location values", IMessageProvider.ERROR); - return null; - } - } - - /** - * Validates the current Hadoop location settings (look for Hadoop - * installation directory). - * - */ - private void testLocation() { - setMessage("Not implemented yet", IMessageProvider.WARNING); - } - - /** - * Location is not complete (and finish button not available) until a host - * name is specified. - * - * @inheritDoc - */ - @Override - public boolean isPageComplete() { - - { - String locName = location.getConfProp(ConfProp.PI_LOCATION_NAME); - if ((locName == null) || (locName.length() == 0) - || locName.contains("/")) { - - setMessage("Bad location name: " - + "the location name should not contain " - + "any character prohibited in a file name.", WARNING); - - return false; - } - } - - { - String master = location.getConfProp(ConfProp.PI_JOB_TRACKER_HOST); - if ((master == null) || (master.length() == 0)) { - - setMessage("Bad master host name: " - + "the master host name refers to the machine " - + "that runs the Job tracker.", WARNING); - - return false; - } - } - - { - String jobTracker = location.getConfProp(ConfProp.JOB_TRACKER_URI); - String[] strs = jobTracker.split(":"); - boolean ok = (strs.length == 2); - if (ok) { - try { - int port = Integer.parseInt(strs[1]); - ok = (port >= 0) && (port < 65536); - } catch (NumberFormatException nfe) { - ok = false; - } - } - if (!ok) { - setMessage("The job tracker information (" - + ConfProp.JOB_TRACKER_URI.name + ") is invalid. " - + "This usually looks like \"host:port\"", WARNING); - return false; - } - } - - { - String fsDefaultURI = location.getConfProp(ConfProp.FS_DEFAULT_URI); - try { - URI uri = new URI(fsDefaultURI); - } catch (URISyntaxException e) { - - setMessage("The default file system URI is invalid. " - + "This usually looks like \"hdfs://host:port/\" " - + "or \"file:///dir/\"", WARNING); - } - } - - setMessage("Define the location of a Hadoop infrastructure " - + "for running MapReduce applications."); - return true; - } - - /** - * Create the wizard - */ - /* @inheritDoc */ - public void createControl(Composite parent) { - setTitle("Define Hadoop location"); - setDescription("Define the location of a Hadoop infrastructure " - + "for running MapReduce applications."); - - Composite panel = new Composite(parent, SWT.FILL); - GridLayout glayout = new GridLayout(2, false); - panel.setLayout(glayout); - - TabMediator mediator = new TabMediator(panel); - { - GridData gdata = new GridData(GridData.FILL_BOTH); - gdata.horizontalSpan = 2; - mediator.folder.setLayoutData(gdata); - } - this.setControl(panel /* mediator.folder */); - { - final Button btn = new Button(panel, SWT.NONE); - btn.setText("&Load from file"); - btn.setEnabled(false); - btn.setToolTipText("Not yet implemented"); - btn.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - // TODO - } - }); - } - { - final Button validate = new Button(panel, SWT.NONE); - validate.setText("&Validate location"); - validate.setEnabled(false); - validate.setToolTipText("Not yet implemented"); - validate.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event e) { - testLocation(); - } - }); - } - } - - private interface TabListener { - void notifyChange(ConfProp prop, String propValue); - } - - /* - * Mediator pattern to keep tabs synchronized with each other and with the - * location state. - */ - - private class TabMediator { - TabFolder folder; - - private Set tabs = new HashSet(); - - TabMediator(Composite parent) { - folder = new TabFolder(parent, SWT.NONE); - tabs.add(new TabMain(this)); - tabs.add(new TabAdvanced(this)); - } - - /** - * Access to current configuration settings - * - * @param propName the property name - * @return the current property value - */ - String get(String propName) { - return location.getConfProp(propName); - } - - String get(ConfProp prop) { - return location.getConfProp(prop); - } - - /** - * Implements change notifications from any tab: update the location - * state and other tabs - * - * @param source origin of the notification (one of the tree tabs) - * @param propName modified property - * @param propValue new value - */ - void notifyChange(TabListener source, final ConfProp prop, - final String propValue) { - // Ignore notification when no change - String oldValue = location.getConfProp(prop); - if ((oldValue != null) && oldValue.equals(propValue)) - return; - - location.setConfProp(prop, propValue); - Display.getDefault().syncExec(new Runnable() { - public void run() { - getContainer().updateButtons(); - } - }); - - this.fireChange(source, prop, propValue); - - /* - * Now we deal with dependencies between settings - */ - final String jobTrackerHost = - location.getConfProp(ConfProp.PI_JOB_TRACKER_HOST); - final String jobTrackerPort = - location.getConfProp(ConfProp.PI_JOB_TRACKER_PORT); - final String nameNodeHost = - location.getConfProp(ConfProp.PI_NAME_NODE_HOST); - final String nameNodePort = - location.getConfProp(ConfProp.PI_NAME_NODE_PORT); - final boolean colocate = - location.getConfProp(ConfProp.PI_COLOCATE_MASTERS) - .equalsIgnoreCase("yes"); - final String jobTrackerURI = - location.getConfProp(ConfProp.JOB_TRACKER_URI); - final String fsDefaultURI = - location.getConfProp(ConfProp.FS_DEFAULT_URI); - final String socksServerURI = - location.getConfProp(ConfProp.SOCKS_SERVER); - final boolean socksProxyEnable = - location.getConfProp(ConfProp.PI_SOCKS_PROXY_ENABLE) - .equalsIgnoreCase("yes"); - final String socksProxyHost = - location.getConfProp(ConfProp.PI_SOCKS_PROXY_HOST); - final String socksProxyPort = - location.getConfProp(ConfProp.PI_SOCKS_PROXY_PORT); - - Display.getDefault().syncExec(new Runnable() { - public void run() { - switch (prop) { - case PI_JOB_TRACKER_HOST: { - if (colocate) - notifyChange(null, ConfProp.PI_NAME_NODE_HOST, - jobTrackerHost); - String newJobTrackerURI = - String.format("%s:%s", jobTrackerHost, jobTrackerPort); - notifyChange(null, ConfProp.JOB_TRACKER_URI, newJobTrackerURI); - break; - } - case PI_JOB_TRACKER_PORT: { - String newJobTrackerURI = - String.format("%s:%s", jobTrackerHost, jobTrackerPort); - notifyChange(null, ConfProp.JOB_TRACKER_URI, newJobTrackerURI); - break; - } - case PI_NAME_NODE_HOST: { - String newHDFSURI = - String.format("hdfs://%s:%s/", nameNodeHost, nameNodePort); - notifyChange(null, ConfProp.FS_DEFAULT_URI, newHDFSURI); - - // Break colocation if someone force the DFS Master - if (!colocate && !nameNodeHost.equals(jobTrackerHost)) - notifyChange(null, ConfProp.PI_COLOCATE_MASTERS, "no"); - break; - } - case PI_NAME_NODE_PORT: { - String newHDFSURI = - String.format("hdfs://%s:%s/", nameNodeHost, nameNodePort); - notifyChange(null, ConfProp.FS_DEFAULT_URI, newHDFSURI); - break; - } - case PI_SOCKS_PROXY_HOST: { - String newSocksProxyURI = - String.format("%s:%s", socksProxyHost, socksProxyPort); - notifyChange(null, ConfProp.SOCKS_SERVER, newSocksProxyURI); - break; - } - case PI_SOCKS_PROXY_PORT: { - String newSocksProxyURI = - String.format("%s:%s", socksProxyHost, socksProxyPort); - notifyChange(null, ConfProp.SOCKS_SERVER, newSocksProxyURI); - break; - } - case JOB_TRACKER_URI: { - String[] strs = jobTrackerURI.split(":", 2); - String host = strs[0]; - String port = (strs.length == 2) ? strs[1] : ""; - notifyChange(null, ConfProp.PI_JOB_TRACKER_HOST, host); - notifyChange(null, ConfProp.PI_JOB_TRACKER_PORT, port); - break; - } - case FS_DEFAULT_URI: { - try { - URI uri = new URI(fsDefaultURI); - if (uri.getScheme().equals("hdfs")) { - String host = uri.getHost(); - String port = Integer.toString(uri.getPort()); - notifyChange(null, ConfProp.PI_NAME_NODE_HOST, host); - notifyChange(null, ConfProp.PI_NAME_NODE_PORT, port); - } - } catch (URISyntaxException use) { - // Ignore the update! - } - break; - } - case SOCKS_SERVER: { - String[] strs = socksServerURI.split(":", 2); - String host = strs[0]; - String port = (strs.length == 2) ? strs[1] : ""; - notifyChange(null, ConfProp.PI_SOCKS_PROXY_HOST, host); - notifyChange(null, ConfProp.PI_SOCKS_PROXY_PORT, port); - break; - } - case PI_COLOCATE_MASTERS: { - if (colocate) - notifyChange(null, ConfProp.PI_NAME_NODE_HOST, - jobTrackerHost); - break; - } - case PI_SOCKS_PROXY_ENABLE: { - if (socksProxyEnable) { - notifyChange(null, ConfProp.SOCKET_FACTORY_DEFAULT, - "org.apache.hadoop.net.SocksSocketFactory"); - } else { - notifyChange(null, ConfProp.SOCKET_FACTORY_DEFAULT, - "org.apache.hadoop.net.StandardSocketFactory"); - } - break; - } - } - } - }); - - } - - /** - * Change notifications on properties (by name). A property might not be - * reflected as a ConfProp enum. If it is, the notification is forwarded - * to the ConfProp notifyChange method. If not, it is processed here. - * - * @param source - * @param propName - * @param propValue - */ - void notifyChange(TabListener source, String propName, String propValue) { - - ConfProp prop = ConfProp.getByName(propName); - if (prop != null) - notifyChange(source, prop, propValue); - - location.setConfProp(propName, propValue); - } - - /** - * Broadcast a property change to all registered tabs. If a tab is - * identified as the source of the change, this tab will not be notified. - * - * @param source TODO - * @param prop - * @param value - */ - private void fireChange(TabListener source, ConfProp prop, String value) { - for (TabListener tab : tabs) { - if (tab != source) - tab.notifyChange(prop, value); - } - } - - } - - /** - * Create a SWT Text component for the given {@link ConfProp} text - * configuration property. - * - * @param listener - * @param parent - * @param prop - * @return - */ - private Text createConfText(ModifyListener listener, Composite parent, - ConfProp prop) { - - Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - text.setLayoutData(data); - text.setData("hProp", prop); - text.setText(location.getConfProp(prop)); - text.addModifyListener(listener); - - return text; - } - - /** - * Create a SWT Checked Button component for the given {@link ConfProp} - * boolean configuration property. - * - * @param listener - * @param parent - * @param prop - * @return - */ - private Button createConfCheckButton(SelectionListener listener, - Composite parent, ConfProp prop, String text) { - - Button button = new Button(parent, SWT.CHECK); - button.setText(text); - button.setData("hProp", prop); - button.setSelection(location.getConfProp(prop).equalsIgnoreCase("yes")); - button.addSelectionListener(listener); - - return button; - } - - /** - * Create editor entry for the given configuration property. The editor is - * a couple (Label, Text). - * - * @param listener the listener to trigger on property change - * @param parent the SWT parent container - * @param prop the property to create an editor for - * @param labelText a label (null will defaults to the property name) - * - * @return a SWT Text field - */ - private Text createConfLabelText(ModifyListener listener, - Composite parent, ConfProp prop, String labelText) { - - Label label = new Label(parent, SWT.NONE); - if (labelText == null) - labelText = prop.name; - label.setText(labelText); - - return createConfText(listener, parent, prop); - } - - /** - * Create an editor entry for the given configuration name - * - * @param listener the listener to trigger on property change - * @param parent the SWT parent container - * @param propName the name of the property to create an editor for - * @param labelText a label (null will defaults to the property name) - * - * @return a SWT Text field - */ - private Text createConfNameEditor(ModifyListener listener, - Composite parent, String propName, String labelText) { - - { - ConfProp prop = ConfProp.getByName(propName); - if (prop != null) - return createConfLabelText(listener, parent, prop, labelText); - } - - Label label = new Label(parent, SWT.NONE); - if (labelText == null) - labelText = propName; - label.setText(labelText); - - Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - text.setLayoutData(data); - text.setData("hPropName", propName); - text.setText(location.getConfProp(propName)); - text.addModifyListener(listener); - - return text; - } - - /** - * Main parameters of the Hadoop location: - *
  • host and port of the Map/Reduce master (Job tracker) - *
  • host and port of the DFS master (Name node) - *
  • SOCKS proxy - */ - private class TabMain implements TabListener, ModifyListener, - SelectionListener { - - TabMediator mediator; - - Text locationName; - - Text textJTHost; - - Text textNNHost; - - Button colocateMasters; - - Text textJTPort; - - Text textNNPort; - - Text userName; - - Button useSocksProxy; - - Text socksProxyHost; - - Text socksProxyPort; - - TabMain(TabMediator mediator) { - this.mediator = mediator; - TabItem tab = new TabItem(mediator.folder, SWT.NONE); - tab.setText("General"); - tab.setToolTipText("General location parameters"); - tab.setImage(circle); - tab.setControl(createControl(mediator.folder)); - } - - private Control createControl(Composite parent) { - - Composite panel = new Composite(parent, SWT.FILL); - panel.setLayout(new GridLayout(2, false)); - - GridData data; - - /* - * Location name - */ - { - Composite subpanel = new Composite(panel, SWT.FILL); - subpanel.setLayout(new GridLayout(2, false)); - data = new GridData(); - data.horizontalSpan = 2; - data.horizontalAlignment = SWT.FILL; - subpanel.setLayoutData(data); - - locationName = - createConfLabelText(this, subpanel, ConfProp.PI_LOCATION_NAME, - "&Location name:"); - } - - /* - * Map/Reduce group - */ - { - Group groupMR = new Group(panel, SWT.SHADOW_NONE); - groupMR.setText("Map/Reduce Master"); - groupMR.setToolTipText("Address of the Map/Reduce master node " - + "(the Job Tracker)."); - GridLayout layout = new GridLayout(2, false); - groupMR.setLayout(layout); - data = new GridData(); - data.verticalAlignment = SWT.FILL; - data.horizontalAlignment = SWT.CENTER; - data.widthHint = 250; - groupMR.setLayoutData(data); - - // Job Tracker host - Label label = new Label(groupMR, SWT.NONE); - label.setText("Host:"); - data = - new GridData(GridData.BEGINNING, GridData.CENTER, false, true); - label.setLayoutData(data); - - textJTHost = - createConfText(this, groupMR, ConfProp.PI_JOB_TRACKER_HOST); - data = new GridData(GridData.FILL, GridData.CENTER, true, true); - textJTHost.setLayoutData(data); - - // Job Tracker port - label = new Label(groupMR, SWT.NONE); - label.setText("Port:"); - data = - new GridData(GridData.BEGINNING, GridData.CENTER, false, true); - label.setLayoutData(data); - - textJTPort = - createConfText(this, groupMR, ConfProp.PI_JOB_TRACKER_PORT); - data = new GridData(GridData.FILL, GridData.CENTER, true, true); - textJTPort.setLayoutData(data); - } - - /* - * DFS group - */ - { - Group groupDFS = new Group(panel, SWT.SHADOW_NONE); - groupDFS.setText("DFS Master"); - groupDFS.setToolTipText("Address of the Distributed FileSystem " - + "master node (the Name Node)."); - GridLayout layout = new GridLayout(2, false); - groupDFS.setLayout(layout); - data = new GridData(); - data.horizontalAlignment = SWT.CENTER; - data.widthHint = 250; - groupDFS.setLayoutData(data); - - colocateMasters = - createConfCheckButton(this, groupDFS, - ConfProp.PI_COLOCATE_MASTERS, "Use M/R Master host"); - data = new GridData(); - data.horizontalSpan = 2; - colocateMasters.setLayoutData(data); - - // Job Tracker host - Label label = new Label(groupDFS, SWT.NONE); - data = new GridData(); - label.setText("Host:"); - label.setLayoutData(data); - - textNNHost = - createConfText(this, groupDFS, ConfProp.PI_NAME_NODE_HOST); - - // Job Tracker port - label = new Label(groupDFS, SWT.NONE); - data = new GridData(); - label.setText("Port:"); - label.setLayoutData(data); - - textNNPort = - createConfText(this, groupDFS, ConfProp.PI_NAME_NODE_PORT); - } - - { - Composite subpanel = new Composite(panel, SWT.FILL); - subpanel.setLayout(new GridLayout(2, false)); - data = new GridData(); - data.horizontalSpan = 2; - data.horizontalAlignment = SWT.FILL; - subpanel.setLayoutData(data); - - userName = - createConfLabelText(this, subpanel, ConfProp.PI_USER_NAME, - "&User name:"); - } - - // SOCKS proxy group - { - Group groupSOCKS = new Group(panel, SWT.SHADOW_NONE); - groupSOCKS.setText("SOCKS proxy"); - groupSOCKS.setToolTipText("Address of the SOCKS proxy to use " - + "to connect to the infrastructure."); - GridLayout layout = new GridLayout(2, false); - groupSOCKS.setLayout(layout); - data = new GridData(); - data.horizontalAlignment = SWT.CENTER; - data.horizontalSpan = 2; - data.widthHint = 250; - groupSOCKS.setLayoutData(data); - - useSocksProxy = - createConfCheckButton(this, groupSOCKS, - ConfProp.PI_SOCKS_PROXY_ENABLE, "Enable SOCKS proxy"); - data = new GridData(); - data.horizontalSpan = 2; - useSocksProxy.setLayoutData(data); - - // SOCKS proxy host - Label label = new Label(groupSOCKS, SWT.NONE); - data = new GridData(); - label.setText("Host:"); - label.setLayoutData(data); - - socksProxyHost = - createConfText(this, groupSOCKS, ConfProp.PI_SOCKS_PROXY_HOST); - - // SOCKS proxy port - label = new Label(groupSOCKS, SWT.NONE); - data = new GridData(); - label.setText("Port:"); - label.setLayoutData(data); - - socksProxyPort = - createConfText(this, groupSOCKS, ConfProp.PI_SOCKS_PROXY_PORT); - } - - // Update the state of all widgets according to the current values! - reloadConfProp(ConfProp.PI_COLOCATE_MASTERS); - reloadConfProp(ConfProp.PI_SOCKS_PROXY_ENABLE); - reloadConfProp(ConfProp.PI_JOB_TRACKER_HOST); - - return panel; - } - - /** - * Reload the given configuration property value - * - * @param prop - */ - private void reloadConfProp(ConfProp prop) { - this.notifyChange(prop, location.getConfProp(prop)); - } - - public void notifyChange(ConfProp prop, String propValue) { - switch (prop) { - case PI_JOB_TRACKER_HOST: { - textJTHost.setText(propValue); - break; - } - case PI_JOB_TRACKER_PORT: { - textJTPort.setText(propValue); - break; - } - case PI_LOCATION_NAME: { - locationName.setText(propValue); - break; - } - case PI_USER_NAME: { - userName.setText(propValue); - break; - } - case PI_COLOCATE_MASTERS: { - if (colocateMasters != null) { - boolean colocate = propValue.equalsIgnoreCase("yes"); - colocateMasters.setSelection(colocate); - if (textNNHost != null) { - textNNHost.setEnabled(!colocate); - } - } - break; - } - case PI_NAME_NODE_HOST: { - textNNHost.setText(propValue); - break; - } - case PI_NAME_NODE_PORT: { - textNNPort.setText(propValue); - break; - } - case PI_SOCKS_PROXY_ENABLE: { - if (useSocksProxy != null) { - boolean useProxy = propValue.equalsIgnoreCase("yes"); - useSocksProxy.setSelection(useProxy); - if (socksProxyHost != null) - socksProxyHost.setEnabled(useProxy); - if (socksProxyPort != null) - socksProxyPort.setEnabled(useProxy); - } - break; - } - case PI_SOCKS_PROXY_HOST: { - socksProxyHost.setText(propValue); - break; - } - case PI_SOCKS_PROXY_PORT: { - socksProxyPort.setText(propValue); - break; - } - } - } - - /* @inheritDoc */ - public void modifyText(ModifyEvent e) { - final Text text = (Text) e.widget; - final ConfProp prop = (ConfProp) text.getData("hProp"); - Display.getDefault().syncExec(new Runnable() { - public void run() { - mediator.notifyChange(TabMain.this, prop, text.getText()); - } - }); - } - - /* @inheritDoc */ - public void widgetDefaultSelected(SelectionEvent e) { - this.widgetSelected(e); - } - - /* @inheritDoc */ - public void widgetSelected(SelectionEvent e) { - final Button button = (Button) e.widget; - final ConfProp prop = (ConfProp) button.getData("hProp"); - - Display.getDefault().syncExec(new Runnable() { - public void run() { - // We want to receive the update also! - mediator.notifyChange(null, prop, button.getSelection() ? "yes" - : "no"); - } - }); - } - - } - - private class TabAdvanced implements TabListener, ModifyListener { - TabMediator mediator; - - private Composite panel; - - private Map textMap = new TreeMap(); - - TabAdvanced(TabMediator mediator) { - this.mediator = mediator; - TabItem tab = new TabItem(mediator.folder, SWT.NONE); - tab.setText("Advanced parameters"); - tab.setToolTipText("Access to advanced Hadoop parameters"); - tab.setImage(circle); - tab.setControl(createControl(mediator.folder)); - - } - - private Control createControl(Composite parent) { - ScrolledComposite sc = - new ScrolledComposite(parent, SWT.BORDER | SWT.H_SCROLL - | SWT.V_SCROLL); - - panel = new Composite(sc, SWT.NONE); - sc.setContent(panel); - - sc.setExpandHorizontal(true); - sc.setExpandVertical(true); - - sc.setMinSize(640, 480); - - GridLayout layout = new GridLayout(); - layout.numColumns = 2; - layout.makeColumnsEqualWidth = false; - panel.setLayout(layout); - panel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, - true, 1, 1)); - - // Sort by property name - Configuration config = location.getConfiguration(); - SortedMap map = new TreeMap(); - Iterator> it = config.iterator(); - while (it.hasNext()) { - Entry entry = it.next(); - map.put(entry.getKey(), entry.getValue()); - } - - for (Entry entry : map.entrySet()) { - Text text = createConfNameEditor(this, panel, entry.getKey(), null); - textMap.put(entry.getKey(), text); - } - - sc.setMinSize(panel.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - - return sc; - } - - public void notifyChange(ConfProp prop, final String propValue) { - Text text = textMap.get(prop.name); - text.setText(propValue); - } - - public void modifyText(ModifyEvent e) { - final Text text = (Text) e.widget; - Object hProp = text.getData("hProp"); - final ConfProp prop = (hProp != null) ? (ConfProp) hProp : null; - Object hPropName = text.getData("hPropName"); - final String propName = - (hPropName != null) ? (String) hPropName : null; - - Display.getDefault().syncExec(new Runnable() { - public void run() { - if (prop != null) - mediator.notifyChange(TabAdvanced.this, prop, text.getText()); - else - mediator - .notifyChange(TabAdvanced.this, propName, text.getText()); - } - }); - } - } - -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopServerSelectionListContentProvider.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopServerSelectionListContentProvider.java deleted file mode 100644 index 17f4acecf40..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/HadoopServerSelectionListContentProvider.java +++ /dev/null @@ -1,76 +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.hadoop.eclipse.servers; - -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.eclipse.jface.viewers.IContentProvider; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.graphics.Image; - -/** - * Provider that enables selection of a predefined Hadoop server. - */ - -public class HadoopServerSelectionListContentProvider implements - IContentProvider, ITableLabelProvider, IStructuredContentProvider { - public void dispose() { - - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - - } - - public Image getColumnImage(Object element, int columnIndex) { - return null; - } - - public String getColumnText(Object element, int columnIndex) { - if (element instanceof HadoopServer) { - HadoopServer location = (HadoopServer) element; - if (columnIndex == 0) { - return location.getLocationName(); - - } else if (columnIndex == 1) { - return location.getMasterHostName(); - } - } - - return element.toString(); - } - - public void addListener(ILabelProviderListener listener) { - - } - - public boolean isLabelProperty(Object element, String property) { - return false; - } - - public void removeListener(ILabelProviderListener listener) { - - } - - public Object[] getElements(Object inputElement) { - return ServerRegistry.getInstance().getServers().toArray(); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/IHadoopServerListener.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/IHadoopServerListener.java deleted file mode 100644 index 3c65173f9f3..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/IHadoopServerListener.java +++ /dev/null @@ -1,28 +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.hadoop.eclipse.servers; - -import org.apache.hadoop.eclipse.server.HadoopServer; - -/** - * Interface for monitoring server changes - */ -public interface IHadoopServerListener { - void serverChanged(HadoopServer location, int type); -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/RunOnHadoopWizard.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/RunOnHadoopWizard.java deleted file mode 100644 index a08051088fa..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/RunOnHadoopWizard.java +++ /dev/null @@ -1,355 +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.hadoop.eclipse.servers; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -import org.apache.hadoop.eclipse.Activator; -import org.apache.hadoop.eclipse.ErrorMessageDialog; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.eclipse.server.JarModule; -import org.apache.hadoop.mapred.JobConf; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; -import org.eclipse.jdt.launching.IRuntimeClasspathEntry; -import org.eclipse.jdt.launching.JavaRuntime; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; - -/** - * Wizard for publishing a job to a Hadoop server. - */ - -public class RunOnHadoopWizard extends Wizard { - - private MainWizardPage mainPage; - - private HadoopLocationWizard createNewPage; - - /** - * The file resource (containing a main()) to run on the Hadoop location - */ - private IFile resource; - - /** - * The launch configuration to update - */ - private ILaunchConfigurationWorkingCopy iConf; - - private IProgressMonitor progressMonitor; - - public RunOnHadoopWizard(IFile resource, - ILaunchConfigurationWorkingCopy iConf) { - this.resource = resource; - this.iConf = iConf; - setForcePreviousAndNextButtons(true); - setNeedsProgressMonitor(true); - setWindowTitle("Run on Hadoop"); - } - - /** - * This wizard contains 2 pages: - *
  • the first one lets the user choose an already existing location - *
  • the second one allows the user to create a new location, in case it - * does not already exist - */ - /* @inheritDoc */ - @Override - public void addPages() { - addPage(this.mainPage = new MainWizardPage()); - addPage(this.createNewPage = new HadoopLocationWizard()); - } - - /** - * Performs any actions appropriate in response to the user having pressed - * the Finish button, or refuse if finishing now is not permitted. - */ - /* @inheritDoc */ - @Override - public boolean performFinish() { - - /* - * Create a new location or get an existing one - */ - HadoopServer location = null; - if (mainPage.createNew.getSelection()) { - location = createNewPage.performFinish(); - - } else if (mainPage.table.getSelection().length == 1) { - location = (HadoopServer) mainPage.table.getSelection()[0].getData(); - } - - if (location == null) - return false; - - /* - * Get the base directory of the plug-in for storing configurations and - * JARs - */ - File baseDir = Activator.getDefault().getStateLocation().toFile(); - - // Package the Job into a JAR - File jarFile = JarModule.createJarPackage(resource); - if (jarFile == null) { - ErrorMessageDialog.display("Run on Hadoop", - "Unable to create or locate the JAR file for the Job"); - return false; - } - - /* - * Generate a temporary Hadoop configuration directory and add it to the - * classpath of the launch configuration - */ - - File confDir; - try { - confDir = File.createTempFile("hadoop-conf-", "", baseDir); - confDir.delete(); - confDir.mkdirs(); - if (!confDir.isDirectory()) { - ErrorMessageDialog.display("Run on Hadoop", - "Cannot create temporary directory: " + confDir); - return false; - } - } catch (IOException ioe) { - ioe.printStackTrace(); - return false; - } - - // Prepare the Hadoop configuration - JobConf conf = new JobConf(location.getConfiguration()); - conf.setJar(jarFile.getAbsolutePath()); - - // Write it to the disk file - try { - // File confFile = File.createTempFile("hadoop-site-", ".xml", - // confDir); - File confFile = new File(confDir, "hadoop-site.xml"); - FileOutputStream fos = new FileOutputStream(confFile); - conf.writeXml(fos); - fos.close(); - - } catch (IOException ioe) { - ioe.printStackTrace(); - return false; - } - - // Setup the Launch class path - List classPath; - try { - classPath = - iConf.getAttribute( - IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, - new ArrayList()); - IPath confIPath = new Path(confDir.getAbsolutePath()); - IRuntimeClasspathEntry cpEntry = - JavaRuntime.newArchiveRuntimeClasspathEntry(confIPath); - classPath.add(0, cpEntry.getMemento()); - iConf.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, - classPath); - - } catch (CoreException e) { - e.printStackTrace(); - return false; - } - - // location.runResource(resource, progressMonitor); - return true; - } - - private void refreshButtons() { - getContainer().updateButtons(); - } - - /** - * Allows finish when an existing server is selected or when a new server - * location is defined - */ - /* @inheritDoc */ - @Override - public boolean canFinish() { - if (mainPage != null) - return mainPage.canFinish(); - return false; - } - - /** - * This is the main page of the wizard. It allows the user either to choose - * an already existing location or to indicate he wants to create a new - * location. - */ - public class MainWizardPage extends WizardPage { - - private Button createNew; - - private Table table; - - private Button chooseExisting; - - public MainWizardPage() { - super("Select or define server to run on"); - setTitle("Select Hadoop location"); - setDescription("Select a Hadoop location to run on."); - } - - /* @inheritDoc */ - @Override - public boolean canFlipToNextPage() { - return createNew.getSelection(); - } - - /* @inheritDoc */ - public void createControl(Composite parent) { - Composite panel = new Composite(parent, SWT.NONE); - panel.setLayout(new GridLayout(1, false)); - - // Label - Label label = new Label(panel, SWT.NONE); - label.setText("Select a Hadoop Server to run on."); - GridData gData = new GridData(GridData.FILL_BOTH); - gData.grabExcessVerticalSpace = false; - label.setLayoutData(gData); - - // Create location button - createNew = new Button(panel, SWT.RADIO); - createNew.setText("Define a new Hadoop server location"); - createNew.setLayoutData(gData); - createNew.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - setPageComplete(true); - RunOnHadoopWizard.this.refreshButtons(); - } - }); - createNew.setSelection(true); - - // Select existing location button - chooseExisting = new Button(panel, SWT.RADIO); - chooseExisting - .setText("Choose an existing server from the list below"); - chooseExisting.setLayoutData(gData); - chooseExisting.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - if (chooseExisting.getSelection() - && (table.getSelectionCount() == 0)) { - if (table.getItems().length > 0) { - table.setSelection(0); - } - } - RunOnHadoopWizard.this.refreshButtons(); - } - }); - - // Table of existing locations - Composite serverListPanel = new Composite(panel, SWT.FILL); - gData = new GridData(GridData.FILL_BOTH); - gData.horizontalSpan = 1; - serverListPanel.setLayoutData(gData); - - FillLayout layout = new FillLayout(); - layout.marginHeight = layout.marginWidth = 12; - serverListPanel.setLayout(layout); - - table = - new Table(serverListPanel, SWT.BORDER | SWT.H_SCROLL - | SWT.V_SCROLL | SWT.FULL_SELECTION); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - TableColumn nameColumn = new TableColumn(table, SWT.LEFT); - nameColumn.setText("Location"); - nameColumn.setWidth(450); - - TableColumn hostColumn = new TableColumn(table, SWT.LEFT); - hostColumn.setText("Master host name"); - hostColumn.setWidth(250); - - // If the user select one entry, switch to "chooseExisting" - table.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - } - - public void widgetSelected(SelectionEvent e) { - chooseExisting.setSelection(true); - createNew.setSelection(false); - setPageComplete(table.getSelectionCount() == 1); - RunOnHadoopWizard.this.refreshButtons(); - } - }); - - TableViewer viewer = new TableViewer(table); - HadoopServerSelectionListContentProvider provider = - new HadoopServerSelectionListContentProvider(); - viewer.setContentProvider(provider); - viewer.setLabelProvider(provider); - viewer.setInput(new Object()); - // don't care, get from singleton server registry - - this.setControl(panel); - } - - /** - * Returns whether this page state allows the Wizard to finish or not - * - * @return can the wizard finish or not? - */ - public boolean canFinish() { - if (!isControlCreated()) - return false; - - if (this.createNew.getSelection()) - return getNextPage().isPageComplete(); - - return this.chooseExisting.getSelection(); - } - } - - /** - * @param progressMonitor - */ - public void setProgressMonitor(IProgressMonitor progressMonitor) { - this.progressMonitor = progressMonitor; - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/ServerRegistry.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/ServerRegistry.java deleted file mode 100644 index 30a37cd439f..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/servers/ServerRegistry.java +++ /dev/null @@ -1,203 +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.hadoop.eclipse.servers; - -import java.io.File; -import java.io.FilenameFilter; -import java.io.IOException; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TreeMap; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.eclipse.Activator; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.eclipse.jface.dialogs.MessageDialog; - -/** - * Register of Hadoop locations. - * - * Each location corresponds to a Hadoop {@link Configuration} stored as an - * XML file in the workspace plug-in configuration directory: - *

    - * - * <workspace-dir>/.metadata/.plugins/org.apache.hadoop.eclipse/locations/*.xml - * - * - */ -public class ServerRegistry { - - private static final ServerRegistry INSTANCE = new ServerRegistry(); - - public static final int SERVER_ADDED = 0; - - public static final int SERVER_REMOVED = 1; - - public static final int SERVER_STATE_CHANGED = 2; - - private final File baseDir = - Activator.getDefault().getStateLocation().toFile(); - - private final File saveDir = new File(baseDir, "locations"); - - private ServerRegistry() { - if (saveDir.exists() && !saveDir.isDirectory()) - saveDir.delete(); - if (!saveDir.exists()) - saveDir.mkdirs(); - - load(); - } - - private Map servers; - - private Set listeners = - new HashSet(); - - public static ServerRegistry getInstance() { - return INSTANCE; - } - - public synchronized Collection getServers() { - return Collections.unmodifiableCollection(servers.values()); - } - - /** - * Load all available locations from the workspace configuration directory. - */ - private synchronized void load() { - Map map = new TreeMap(); - for (File file : saveDir.listFiles()) { - try { - HadoopServer server = new HadoopServer(file); - map.put(server.getLocationName(), server); - - } catch (Exception exn) { - System.err.println(exn); - } - } - this.servers = map; - } - - private synchronized void store() { - try { - File dir = File.createTempFile("locations", "new", baseDir); - dir.delete(); - dir.mkdirs(); - - for (HadoopServer server : servers.values()) { - server.storeSettingsToFile(new File(dir, server.getLocationName() - + ".xml")); - } - - FilenameFilter XMLFilter = new FilenameFilter() { - public boolean accept(File dir, String name) { - String lower = name.toLowerCase(); - return lower.endsWith(".xml"); - } - }; - - File backup = new File(baseDir, "locations.backup"); - if (backup.exists()) { - for (File file : backup.listFiles(XMLFilter)) - if (!file.delete()) - throw new IOException("Unable to delete backup location file: " - + file); - if (!backup.delete()) - throw new IOException( - "Unable to delete backup location directory: " + backup); - } - - saveDir.renameTo(backup); - dir.renameTo(saveDir); - - } catch (IOException ioe) { - ioe.printStackTrace(); - MessageDialog.openError(null, - "Saving configuration of Hadoop locations failed", ioe.toString()); - } - } - - public void dispose() { - for (HadoopServer server : getServers()) { - server.dispose(); - } - } - - public synchronized HadoopServer getServer(String location) { - return servers.get(location); - } - - /* - * HadoopServer map listeners - */ - - public void addListener(IHadoopServerListener l) { - synchronized (listeners) { - listeners.add(l); - } - } - - public void removeListener(IHadoopServerListener l) { - synchronized (listeners) { - listeners.remove(l); - } - } - - private void fireListeners(HadoopServer location, int kind) { - synchronized (listeners) { - for (IHadoopServerListener listener : listeners) { - listener.serverChanged(location, kind); - } - } - } - - public synchronized void removeServer(HadoopServer server) { - this.servers.remove(server.getLocationName()); - store(); - fireListeners(server, SERVER_REMOVED); - } - - public synchronized void addServer(HadoopServer server) { - this.servers.put(server.getLocationName(), server); - store(); - fireListeners(server, SERVER_ADDED); - } - - /** - * Update one Hadoop location - * - * @param originalName the original location name (might have changed) - * @param server the location - */ - public synchronized void updateServer(String originalName, - HadoopServer server) { - - // Update the map if the location name has changed - if (!server.getLocationName().equals(originalName)) { - servers.remove(originalName); - servers.put(server.getLocationName(), server); - } - store(); - fireListeners(server, SERVER_STATE_CHANGED); - } -} diff --git a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/view/servers/ServerView.java b/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/view/servers/ServerView.java deleted file mode 100644 index 389d92e06ef..00000000000 --- a/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/view/servers/ServerView.java +++ /dev/null @@ -1,460 +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.hadoop.eclipse.view.servers; - -import java.util.Collection; - -import org.apache.hadoop.eclipse.ImageLibrary; -import org.apache.hadoop.eclipse.actions.EditLocationAction; -import org.apache.hadoop.eclipse.actions.NewLocationAction; -import org.apache.hadoop.eclipse.server.HadoopJob; -import org.apache.hadoop.eclipse.server.HadoopServer; -import org.apache.hadoop.eclipse.server.IJobListener; -import org.apache.hadoop.eclipse.server.JarModule; -import org.apache.hadoop.eclipse.servers.IHadoopServerListener; -import org.apache.hadoop.eclipse.servers.ServerRegistry; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.ITreeSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeColumn; -import org.eclipse.ui.IViewSite; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.actions.ActionFactory; -import org.eclipse.ui.part.ViewPart; - -/** - * Map/Reduce locations view: displays all available Hadoop locations and the - * Jobs running/finished on these locations - */ -public class ServerView extends ViewPart implements ITreeContentProvider, - ITableLabelProvider, IJobListener, IHadoopServerListener { - - /** - * Deletion action: delete a Hadoop location, kill a running job or remove - * a finished job entry - */ - class DeleteAction extends Action { - - DeleteAction() { - setText("Delete"); - setImageDescriptor(ImageLibrary.get("server.view.action.delete")); - } - - /* @inheritDoc */ - @Override - public void run() { - ISelection selection = - getViewSite().getSelectionProvider().getSelection(); - if ((selection != null) && (selection instanceof IStructuredSelection)) { - Object selItem = - ((IStructuredSelection) selection).getFirstElement(); - - if (selItem instanceof HadoopServer) { - HadoopServer location = (HadoopServer) selItem; - if (MessageDialog.openConfirm(Display.getDefault() - .getActiveShell(), "Confirm delete Hadoop location", - "Do you really want to remove the Hadoop location: " - + location.getLocationName())) { - ServerRegistry.getInstance().removeServer(location); - } - - } else if (selItem instanceof HadoopJob) { - - // kill the job - HadoopJob job = (HadoopJob) selItem; - if (job.isCompleted()) { - // Job already finished, remove the entry - job.getLocation().purgeJob(job); - - } else { - // Job is running, kill the job? - if (MessageDialog.openConfirm(Display.getDefault() - .getActiveShell(), "Confirm kill running Job", - "Do you really want to kill running Job: " + job.getJobID())) { - job.kill(); - } - } - } - } - } - } - - /** - * This object is the root content for this content provider - */ - private static final Object CONTENT_ROOT = new Object(); - - private final IAction deleteAction = new DeleteAction(); - - private final IAction editServerAction = new EditLocationAction(this); - - private final IAction newLocationAction = new NewLocationAction(); - - private TreeViewer viewer; - - public ServerView() { - } - - /* @inheritDoc */ - @Override - public void init(IViewSite site) throws PartInitException { - super.init(site); - } - - /* @inheritDoc */ - @Override - public void dispose() { - ServerRegistry.getInstance().removeListener(this); - } - - /** - * Creates the columns for the view - */ - @Override - public void createPartControl(Composite parent) { - Tree main = - new Tree(parent, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL - | SWT.V_SCROLL); - main.setHeaderVisible(true); - main.setLinesVisible(false); - main.setLayoutData(new GridData(GridData.FILL_BOTH)); - - TreeColumn serverCol = new TreeColumn(main, SWT.SINGLE); - serverCol.setText("Location"); - serverCol.setWidth(300); - serverCol.setResizable(true); - - TreeColumn locationCol = new TreeColumn(main, SWT.SINGLE); - locationCol.setText("Master node"); - locationCol.setWidth(185); - locationCol.setResizable(true); - - TreeColumn stateCol = new TreeColumn(main, SWT.SINGLE); - stateCol.setText("State"); - stateCol.setWidth(95); - stateCol.setResizable(true); - - TreeColumn statusCol = new TreeColumn(main, SWT.SINGLE); - statusCol.setText("Status"); - statusCol.setWidth(300); - statusCol.setResizable(true); - - viewer = new TreeViewer(main); - viewer.setContentProvider(this); - viewer.setLabelProvider(this); - viewer.setInput(CONTENT_ROOT); // don't care - - getViewSite().setSelectionProvider(viewer); - - getViewSite().getActionBars().setGlobalActionHandler( - ActionFactory.DELETE.getId(), deleteAction); - getViewSite().getActionBars().getToolBarManager().add(editServerAction); - getViewSite().getActionBars().getToolBarManager().add(newLocationAction); - - createActions(); - createContextMenu(); - } - - /** - * Actions - */ - private void createActions() { - /* - * addItemAction = new Action("Add...") { public void run() { addItem(); } }; - * addItemAction.setImageDescriptor(ImageLibrary - * .get("server.view.location.new")); - */ - /* - * deleteItemAction = new Action("Delete") { public void run() { - * deleteItem(); } }; - * deleteItemAction.setImageDescriptor(getImageDescriptor("delete.gif")); - * - * selectAllAction = new Action("Select All") { public void run() { - * selectAll(); } }; - */ - // Add selection listener. - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - updateActionEnablement(); - } - }); - } - - private void addItem() { - System.out.printf("ADD ITEM\n"); - } - - private void updateActionEnablement() { - IStructuredSelection sel = (IStructuredSelection) viewer.getSelection(); - // deleteItemAction.setEnabled(sel.size() > 0); - } - - /** - * Contextual menu - */ - private void createContextMenu() { - // Create menu manager. - MenuManager menuMgr = new MenuManager(); - menuMgr.setRemoveAllWhenShown(true); - menuMgr.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager mgr) { - fillContextMenu(mgr); - } - }); - - // Create menu. - Menu menu = menuMgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - - // Register menu for extension. - getSite().registerContextMenu(menuMgr, viewer); - } - - private void fillContextMenu(IMenuManager mgr) { - mgr.add(newLocationAction); - mgr.add(editServerAction); - mgr.add(deleteAction); - /* - * mgr.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS)); - * mgr.add(deleteItemAction); mgr.add(new Separator()); - * mgr.add(selectAllAction); - */ - } - - /* @inheritDoc */ - @Override - public void setFocus() { - - } - - /* - * IHadoopServerListener implementation - */ - - /* @inheritDoc */ - public void serverChanged(HadoopServer location, int type) { - Display.getDefault().syncExec(new Runnable() { - public void run() { - ServerView.this.viewer.refresh(); - } - }); - } - - /* - * IStructuredContentProvider implementation - */ - - /* @inheritDoc */ - public void inputChanged(final Viewer viewer, Object oldInput, - Object newInput) { - if (oldInput == CONTENT_ROOT) - ServerRegistry.getInstance().removeListener(this); - if (newInput == CONTENT_ROOT) - ServerRegistry.getInstance().addListener(this); - } - - /** - * The root elements displayed by this view are the existing Hadoop - * locations - */ - /* @inheritDoc */ - public Object[] getElements(Object inputElement) { - return ServerRegistry.getInstance().getServers().toArray(); - } - - /* - * ITreeStructuredContentProvider implementation - */ - - /** - * Each location contains a child entry for each job it runs. - */ - /* @inheritDoc */ - public Object[] getChildren(Object parent) { - - if (parent instanceof HadoopServer) { - HadoopServer location = (HadoopServer) parent; - location.addJobListener(this); - Collection jobs = location.getJobs(); - return jobs.toArray(); - } - - return null; - } - - /* @inheritDoc */ - public Object getParent(Object element) { - if (element instanceof HadoopServer) { - return CONTENT_ROOT; - - } else if (element instanceof HadoopJob) { - return ((HadoopJob) element).getLocation(); - } - - return null; - } - - /* @inheritDoc */ - public boolean hasChildren(Object element) { - /* Only server entries have children */ - return (element instanceof HadoopServer); - } - - /* - * ITableLabelProvider implementation - */ - - /* @inheritDoc */ - public void addListener(ILabelProviderListener listener) { - // no listeners handling - } - - public boolean isLabelProperty(Object element, String property) { - return false; - } - - /* @inheritDoc */ - public void removeListener(ILabelProviderListener listener) { - // no listener handling - } - - /* @inheritDoc */ - public Image getColumnImage(Object element, int columnIndex) { - if ((columnIndex == 0) && (element instanceof HadoopServer)) { - return ImageLibrary.getImage("server.view.location.entry"); - - } else if ((columnIndex == 0) && (element instanceof HadoopJob)) { - return ImageLibrary.getImage("server.view.job.entry"); - } - return null; - } - - /* @inheritDoc */ - public String getColumnText(Object element, int columnIndex) { - if (element instanceof HadoopServer) { - HadoopServer server = (HadoopServer) element; - - switch (columnIndex) { - case 0: - return server.getLocationName(); - case 1: - return server.getMasterHostName().toString(); - case 2: - return server.getState(); - case 3: - return ""; - } - } else if (element instanceof HadoopJob) { - HadoopJob job = (HadoopJob) element; - - switch (columnIndex) { - case 0: - return job.getJobID().toString(); - case 1: - return ""; - case 2: - return job.getState().toString(); - case 3: - return job.getStatus(); - } - } else if (element instanceof JarModule) { - JarModule jar = (JarModule) element; - - switch (columnIndex) { - case 0: - return jar.toString(); - case 1: - return "Publishing jar to server.."; - case 2: - return ""; - } - } - - return null; - } - - /* - * IJobListener (Map/Reduce Jobs listener) implementation - */ - - /* @inheritDoc */ - public void jobAdded(HadoopJob job) { - viewer.refresh(); - } - - /* @inheritDoc */ - public void jobRemoved(HadoopJob job) { - viewer.refresh(); - } - - /* @inheritDoc */ - public void jobChanged(HadoopJob job) { - viewer.refresh(job); - } - - /* @inheritDoc */ - public void publishDone(JarModule jar) { - viewer.refresh(); - } - - /* @inheritDoc */ - public void publishStart(JarModule jar) { - viewer.refresh(); - } - - /* - * Miscellaneous - */ - - /** - * Return the currently selected server (null if there is no selection or - * if the selection is not a server) - * - * @return the currently selected server entry - */ - public HadoopServer getSelectedServer() { - ITreeSelection selection = (ITreeSelection) viewer.getSelection(); - Object first = selection.getFirstElement(); - if (first instanceof HadoopServer) { - return (HadoopServer) first; - } - return null; - } - -}