Author: afuchs
Date: Thu May 16 15:49:33 2013
New Revision: 1483417

URL: http://svn.apache.org/r1483417
Log:
ACCUMULO-1421 added reflection to improve runtime compatibility between hadoop 
1 and 2 JobContext objects

Modified:
    
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
    
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
    
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java

Modified: 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
URL: 
http://svn.apache.org/viewvc/accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java?rev=1483417&r1=1483416&r2=1483417&view=diff
==============================================================================
--- 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
 (original)
+++ 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloFileOutputFormat.java
 Thu May 16 15:49:33 2013
@@ -65,7 +65,7 @@ public class AccumuloFileOutputFormat ex
    * @since 1.5.0
    */
   protected static AccumuloConfiguration getAccumuloConfiguration(JobContext 
context) {
-    return FileOutputConfigurator.getAccumuloConfiguration(CLASS, 
context.getConfiguration());
+    return FileOutputConfigurator.getAccumuloConfiguration(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -141,7 +141,7 @@ public class AccumuloFileOutputFormat ex
   @Override
   public RecordWriter<Key,Value> getRecordWriter(TaskAttemptContext context) 
throws IOException {
     // get the path of the temporary output file
-    final Configuration conf = context.getConfiguration();
+    final Configuration conf = InputFormatBase.getConfiguration(context);
     final AccumuloConfiguration acuConf = getAccumuloConfiguration(context);
     
     final String extension = acuConf.get(Property.TABLE_FILE_TYPE);

Modified: 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
URL: 
http://svn.apache.org/viewvc/accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java?rev=1483417&r1=1483416&r2=1483417&view=diff
==============================================================================
--- 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
 (original)
+++ 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/AccumuloOutputFormat.java
 Thu May 16 15:49:33 2013
@@ -104,7 +104,7 @@ public class AccumuloOutputFormat extend
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static Boolean isConnectorInfoSet(JobContext context) {
-    return OutputConfigurator.isConnectorInfoSet(CLASS, 
context.getConfiguration());
+    return OutputConfigurator.isConnectorInfoSet(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -117,7 +117,7 @@ public class AccumuloOutputFormat extend
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static String getPrincipal(JobContext context) {
-    return OutputConfigurator.getPrincipal(CLASS, context.getConfiguration());
+    return OutputConfigurator.getPrincipal(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -130,7 +130,7 @@ public class AccumuloOutputFormat extend
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static String getTokenClass(JobContext context) {
-    return OutputConfigurator.getTokenClass(CLASS, context.getConfiguration());
+    return OutputConfigurator.getTokenClass(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -144,7 +144,7 @@ public class AccumuloOutputFormat extend
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static byte[] getToken(JobContext context) {
-    return OutputConfigurator.getToken(CLASS, context.getConfiguration());
+    return OutputConfigurator.getToken(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -186,7 +186,7 @@ public class AccumuloOutputFormat extend
    * @see #setMockInstance(Job, String)
    */
   protected static Instance getInstance(JobContext context) {
-    return OutputConfigurator.getInstance(CLASS, context.getConfiguration());
+    return OutputConfigurator.getInstance(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -212,7 +212,7 @@ public class AccumuloOutputFormat extend
    * @see #setLogLevel(Job, Level)
    */
   protected static Level getLogLevel(JobContext context) {
-    return OutputConfigurator.getLogLevel(CLASS, context.getConfiguration());
+    return OutputConfigurator.getLogLevel(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -239,7 +239,7 @@ public class AccumuloOutputFormat extend
    * @see #setDefaultTableName(Job, String)
    */
   protected static String getDefaultTableName(JobContext context) {
-    return OutputConfigurator.getDefaultTableName(CLASS, 
context.getConfiguration());
+    return OutputConfigurator.getDefaultTableName(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -266,7 +266,7 @@ public class AccumuloOutputFormat extend
    * @see #setBatchWriterOptions(Job, BatchWriterConfig)
    */
   protected static BatchWriterConfig getBatchWriterOptions(JobContext context) 
{
-    return OutputConfigurator.getBatchWriterOptions(CLASS, 
context.getConfiguration());
+    return OutputConfigurator.getBatchWriterOptions(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -295,7 +295,7 @@ public class AccumuloOutputFormat extend
    * @see #setCreateTables(Job, boolean)
    */
   protected static Boolean canCreateTables(JobContext context) {
-    return OutputConfigurator.canCreateTables(CLASS, 
context.getConfiguration());
+    return OutputConfigurator.canCreateTables(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**
@@ -324,7 +324,7 @@ public class AccumuloOutputFormat extend
    * @see #setSimulationMode(Job, boolean)
    */
   protected static Boolean getSimulationMode(JobContext context) {
-    return OutputConfigurator.getSimulationMode(CLASS, 
context.getConfiguration());
+    return OutputConfigurator.getSimulationMode(CLASS, 
InputFormatBase.getConfiguration(context));
   }
   
   /**

Modified: 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
URL: 
http://svn.apache.org/viewvc/accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java?rev=1483417&r1=1483416&r2=1483417&view=diff
==============================================================================
--- 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
 (original)
+++ 
accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
 Thu May 16 15:49:33 2013
@@ -20,6 +20,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Method;
 import java.math.BigInteger;
 import java.net.InetAddress;
 import java.net.URLDecoder;
@@ -126,7 +127,7 @@ public abstract class InputFormatBase<K,
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static Boolean isConnectorInfoSet(JobContext context) {
-    return InputConfigurator.isConnectorInfoSet(CLASS, 
context.getConfiguration());
+    return InputConfigurator.isConnectorInfoSet(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -139,7 +140,7 @@ public abstract class InputFormatBase<K,
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static String getPrincipal(JobContext context) {
-    return InputConfigurator.getPrincipal(CLASS, context.getConfiguration());
+    return InputConfigurator.getPrincipal(CLASS, getConfiguration(context));
   }
   
   /**
@@ -152,7 +153,7 @@ public abstract class InputFormatBase<K,
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static String getTokenClass(JobContext context) {
-    return InputConfigurator.getTokenClass(CLASS, context.getConfiguration());
+    return InputConfigurator.getTokenClass(CLASS, getConfiguration(context));
   }
   
   /**
@@ -166,7 +167,7 @@ public abstract class InputFormatBase<K,
    * @see #setConnectorInfo(Job, String, AuthenticationToken)
    */
   protected static byte[] getToken(JobContext context) {
-    return InputConfigurator.getToken(CLASS, context.getConfiguration());
+    return InputConfigurator.getToken(CLASS, getConfiguration(context));
   }
   
   /**
@@ -208,7 +209,7 @@ public abstract class InputFormatBase<K,
    * @see #setMockInstance(Job, String)
    */
   protected static Instance getInstance(JobContext context) {
-    return InputConfigurator.getInstance(CLASS, context.getConfiguration());
+    return InputConfigurator.getInstance(CLASS, getConfiguration(context));
   }
   
   /**
@@ -234,7 +235,7 @@ public abstract class InputFormatBase<K,
    * @see #setLogLevel(Job, Level)
    */
   protected static Level getLogLevel(JobContext context) {
-    return InputConfigurator.getLogLevel(CLASS, context.getConfiguration());
+    return InputConfigurator.getLogLevel(CLASS, getConfiguration(context));
   }
   
   /**
@@ -260,7 +261,7 @@ public abstract class InputFormatBase<K,
    * @see #setInputTableName(Job, String)
    */
   protected static String getInputTableName(JobContext context) {
-    return InputConfigurator.getInputTableName(CLASS, 
context.getConfiguration());
+    return InputConfigurator.getInputTableName(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -286,7 +287,7 @@ public abstract class InputFormatBase<K,
    * @see #setScanAuthorizations(Job, Authorizations)
    */
   protected static Authorizations getScanAuthorizations(JobContext context) {
-    return InputConfigurator.getScanAuthorizations(CLASS, 
context.getConfiguration());
+    return InputConfigurator.getScanAuthorizations(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -314,7 +315,7 @@ public abstract class InputFormatBase<K,
    * @see #setRanges(Job, Collection)
    */
   protected static List<Range> getRanges(JobContext context) throws 
IOException {
-    return InputConfigurator.getRanges(CLASS, context.getConfiguration());
+    return InputConfigurator.getRanges(CLASS, getConfiguration(context));
   }
   
   /**
@@ -341,7 +342,7 @@ public abstract class InputFormatBase<K,
    * @see #fetchColumns(Job, Collection)
    */
   protected static Set<Pair<Text,Text>> getFetchedColumns(JobContext context) {
-    return InputConfigurator.getFetchedColumns(CLASS, 
context.getConfiguration());
+    return InputConfigurator.getFetchedColumns(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -367,7 +368,7 @@ public abstract class InputFormatBase<K,
    * @see #addIterator(Job, IteratorSetting)
    */
   protected static List<IteratorSetting> getIterators(JobContext context) {
-    return InputConfigurator.getIterators(CLASS, context.getConfiguration());
+    return InputConfigurator.getIterators(CLASS, getConfiguration(context));
   }
   
   /**
@@ -398,7 +399,7 @@ public abstract class InputFormatBase<K,
    * @see #setAutoAdjustRanges(Job, boolean)
    */
   protected static boolean getAutoAdjustRanges(JobContext context) {
-    return InputConfigurator.getAutoAdjustRanges(CLASS, 
context.getConfiguration());
+    return InputConfigurator.getAutoAdjustRanges(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -427,7 +428,7 @@ public abstract class InputFormatBase<K,
    * @see #setScanIsolation(Job, boolean)
    */
   protected static boolean isIsolated(JobContext context) {
-    return InputConfigurator.isIsolated(CLASS, context.getConfiguration());
+    return InputConfigurator.isIsolated(CLASS, getConfiguration(context));
   }
   
   /**
@@ -457,7 +458,7 @@ public abstract class InputFormatBase<K,
    * @see #setLocalIterators(Job, boolean)
    */
   protected static boolean usesLocalIterators(JobContext context) {
-    return InputConfigurator.usesLocalIterators(CLASS, 
context.getConfiguration());
+    return InputConfigurator.usesLocalIterators(CLASS, 
getConfiguration(context));
   }
   
   /**
@@ -505,7 +506,7 @@ public abstract class InputFormatBase<K,
    * @see #setOfflineTableScan(Job, boolean)
    */
   protected static boolean isOfflineScan(JobContext context) {
-    return InputConfigurator.isOfflineScan(CLASS, context.getConfiguration());
+    return InputConfigurator.isOfflineScan(CLASS, getConfiguration(context));
   }
   
   /**
@@ -519,7 +520,7 @@ public abstract class InputFormatBase<K,
    * @since 1.5.0
    */
   protected static TabletLocator getTabletLocator(JobContext context) throws 
TableNotFoundException {
-    return InputConfigurator.getTabletLocator(CLASS, 
context.getConfiguration());
+    return InputConfigurator.getTabletLocator(CLASS, 
getConfiguration(context));
   }
   
   // InputFormat doesn't have the equivalent of OutputFormat's 
checkOutputSpecs(JobContext job)
@@ -533,7 +534,7 @@ public abstract class InputFormatBase<K,
    * @since 1.5.0
    */
   protected static void validateOptions(JobContext context) throws IOException 
{
-    InputConfigurator.validateOptions(CLASS, context.getConfiguration());
+    InputConfigurator.validateOptions(CLASS, getConfiguration(context));
   }
   
   /**
@@ -1341,5 +1342,17 @@ public abstract class InputFormatBase<K,
     }
     
   }
+
+  // use reflection to pull the Configuration out of the JobContext for Hadoop 
1 and Hadoop 2 compatibility
+  public static Configuration getConfiguration(JobContext context) {
+    try {
+      Class c = 
InputFormatBase.class.getClassLoader().loadClass("org.apache.hadoop.mapreduce.JobContext");
+      Method m = c.getMethod("getConfiguration");
+      Object o = m.invoke(context, new Object[0]);
+      return (Configuration)o;
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    }
+  }
   
 }


Reply via email to