diff --git a/contrib/fb303/java/Constants.java b/contrib/fb303/java/Constants.java
index d1e8c73..79034b4 100644
--- a/contrib/fb303/java/Constants.java
+++ b/contrib/fb303/java/Constants.java
@@ -9,7 +9,7 @@
 import java.util.AbstractMap;
 import java.util.HashMap;
 import java.util.HashSet;
-import com.facebook.thrift.*;
+import org.apache.thrift.*;
 
 public class Constants {
 
diff --git a/contrib/fb303/java/FacebookBase.java b/contrib/fb303/java/FacebookBase.java
index c9fe43b..50c38ae 100644
--- a/contrib/fb303/java/FacebookBase.java
+++ b/contrib/fb303/java/FacebookBase.java
@@ -83,8 +83,8 @@
     return "";
   }
 
-  public com.facebook.thrift.reflection.limited.Service getLimitedReflection() {
-    return new com.facebook.thrift.reflection.limited.Service();
+  public org.apache.thrift.reflection.limited.Service getLimitedReflection() {
+    return new org.apache.thrift.reflection.limited.Service();
   }
 
   public void reinitialize() {}
diff --git a/contrib/fb303/java/FacebookService.java b/contrib/fb303/java/FacebookService.java
index b7a23dd..50d19f8 100644
--- a/contrib/fb303/java/FacebookService.java
+++ b/contrib/fb303/java/FacebookService.java
@@ -9,10 +9,10 @@
 import java.util.AbstractMap;
 import java.util.HashMap;
 import java.util.HashSet;
-import com.facebook.thrift.*;
+import org.apache.thrift.*;
 
-import com.facebook.thrift.protocol.*;
-import com.facebook.thrift.transport.*;
+import org.apache.thrift.protocol.*;
+import org.apache.thrift.transport.*;
 
 public class FacebookService {
 
@@ -27,7 +27,7 @@
     public String getOption(String key) throws TException;
     public AbstractMap<String,String> getOptions() throws TException;
     public long aliveSince() throws TException;
-    public com.facebook.thrift.reflection.limited.Service getLimitedReflection() throws TException;
+    public org.apache.thrift.reflection.limited.Service getLimitedReflection() throws TException;
     public void reinitialize() throws TException;
     public void shutdown() throws TException;
   }
@@ -370,7 +370,7 @@
       throw new TApplicationException(TApplicationException.MISSING_RESULT, "aliveSince failed: unknown result");
     }
 
-    public com.facebook.thrift.reflection.limited.Service getLimitedReflection() throws TException
+    public org.apache.thrift.reflection.limited.Service getLimitedReflection() throws TException
     {
       send_getLimitedReflection();
       return recv_getLimitedReflection();
@@ -385,7 +385,7 @@
       oprot_.getTransport().flush();
     }
 
-    public com.facebook.thrift.reflection.limited.Service recv_getLimitedReflection() throws TException
+    public org.apache.thrift.reflection.limited.Service recv_getLimitedReflection() throws TException
     {
       TMessage msg = iprot_.readMessageBegin();
       if (msg.type == TMessageType.EXCEPTION) {
@@ -1906,7 +1906,7 @@
   }
 
   public static class getLimitedReflection_result   {
-    public com.facebook.thrift.reflection.limited.Service success;
+    public org.apache.thrift.reflection.limited.Service success;
 
     public final Isset __isset = new Isset();
     public final class Isset {
@@ -1929,7 +1929,7 @@
         {
           case 0:
             if (field.type == TType.STRUCT) {
-              this.success = new com.facebook.thrift.reflection.limited.Service();
+              this.success = new org.apache.thrift.reflection.limited.Service();
               this.success.read(iprot);
               this.__isset.success = true;
             } else { 
