diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java new file mode 100644 index 0000000..9c92024 --- /dev/null +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java @@ -0,0 +1,41 @@ +/* + * + * 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.hbase.util; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + +/** + * Default implementation of an environment edge. + */ +@InterfaceAudience.Public +@InterfaceStability.Evolving +public class DefaultEnvironmentEdge implements EnvironmentEdge { + + + /** + * {@inheritDoc} + *

+ * This implementation returns {@link System#currentTimeMillis()} + */ + @Override + public long currentTimeMillis() { + return System.currentTimeMillis(); + } +} diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java new file mode 100644 index 0000000..7f80844 --- /dev/null +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java @@ -0,0 +1,40 @@ +/* + * + * 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.hbase.util; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + +/** + * Has some basic interaction with the environment. Alternate implementations + * can be used where required (eg in tests). + * + * @see EnvironmentEdgeManager + */ +@InterfaceAudience.Public +@InterfaceStability.Evolving +public interface EnvironmentEdge { + + /** + * Returns the currentTimeMillis. + * + * @return currentTimeMillis. + */ + long currentTimeMillis(); +} diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java new file mode 100644 index 0000000..0a9c40b --- /dev/null +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java @@ -0,0 +1,79 @@ +/* + * + * 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.hbase.util; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; + +/** + * Manages a singleton instance of the environment edge. This class shall + * implement static versions of the interface {@link EnvironmentEdge}, then + * defer to the delegate on invocation. + */ +@InterfaceAudience.Public +@InterfaceStability.Evolving +public class EnvironmentEdgeManager { + private static volatile EnvironmentEdge delegate = new DefaultEnvironmentEdge(); + + private EnvironmentEdgeManager() { + + } + + /** + * Retrieves the singleton instance of the {@link EnvironmentEdge} that is + * being managed. + * + * @return the edge. + */ + public static EnvironmentEdge getDelegate() { + return delegate; + } + + /** + * Resets the managed instance to the default instance: {@link + * DefaultEnvironmentEdge}. + */ + public static void reset() { + injectEdge(new DefaultEnvironmentEdge()); + } + + /** + * Injects the given edge such that it becomes the managed entity. If null is + * passed to this method, the default type is assigned to the delegate. + * + * @param edge the new edge. + */ + public static void injectEdge(EnvironmentEdge edge) { + if (edge == null) { + reset(); + } else { + delegate = edge; + } + } + + /** + * Defers to the delegate and calls the + * {@link EnvironmentEdge#currentTimeMillis()} method. + * + * @return current time in millis according to the delegate. + */ + public static long currentTimeMillis() { + return getDelegate().currentTimeMillis(); + } +} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java deleted file mode 100644 index 9c92024..0000000 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/DefaultEnvironmentEdge.java +++ /dev/null @@ -1,41 +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.hbase.util; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.classification.InterfaceStability; - -/** - * Default implementation of an environment edge. - */ -@InterfaceAudience.Public -@InterfaceStability.Evolving -public class DefaultEnvironmentEdge implements EnvironmentEdge { - - - /** - * {@inheritDoc} - *

- * This implementation returns {@link System#currentTimeMillis()} - */ - @Override - public long currentTimeMillis() { - return System.currentTimeMillis(); - } -} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java deleted file mode 100644 index 7f80844..0000000 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdge.java +++ /dev/null @@ -1,40 +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.hbase.util; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.classification.InterfaceStability; - -/** - * Has some basic interaction with the environment. Alternate implementations - * can be used where required (eg in tests). - * - * @see EnvironmentEdgeManager - */ -@InterfaceAudience.Public -@InterfaceStability.Evolving -public interface EnvironmentEdge { - - /** - * Returns the currentTimeMillis. - * - * @return currentTimeMillis. - */ - long currentTimeMillis(); -} diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java deleted file mode 100644 index 0a9c40b..0000000 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/EnvironmentEdgeManager.java +++ /dev/null @@ -1,79 +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.hbase.util; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.classification.InterfaceStability; - -/** - * Manages a singleton instance of the environment edge. This class shall - * implement static versions of the interface {@link EnvironmentEdge}, then - * defer to the delegate on invocation. - */ -@InterfaceAudience.Public -@InterfaceStability.Evolving -public class EnvironmentEdgeManager { - private static volatile EnvironmentEdge delegate = new DefaultEnvironmentEdge(); - - private EnvironmentEdgeManager() { - - } - - /** - * Retrieves the singleton instance of the {@link EnvironmentEdge} that is - * being managed. - * - * @return the edge. - */ - public static EnvironmentEdge getDelegate() { - return delegate; - } - - /** - * Resets the managed instance to the default instance: {@link - * DefaultEnvironmentEdge}. - */ - public static void reset() { - injectEdge(new DefaultEnvironmentEdge()); - } - - /** - * Injects the given edge such that it becomes the managed entity. If null is - * passed to this method, the default type is assigned to the delegate. - * - * @param edge the new edge. - */ - public static void injectEdge(EnvironmentEdge edge) { - if (edge == null) { - reset(); - } else { - delegate = edge; - } - } - - /** - * Defers to the delegate and calls the - * {@link EnvironmentEdge#currentTimeMillis()} method. - * - * @return current time in millis according to the delegate. - */ - public static long currentTimeMillis() { - return getDelegate().currentTimeMillis(); - } -}