You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by ki...@apache.org on 2012/10/25 00:26:40 UTC

[7/47] Refactoring from com.linkedin.helix to org.apache.helix

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixAdmin.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixAdmin.java b/helix-core/src/main/java/com/linkedin/helix/HelixAdmin.java
deleted file mode 100644
index 598d597..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixAdmin.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import com.linkedin.helix.ConfigScope.ConfigScopeProperty;
-import com.linkedin.helix.model.ExternalView;
-import com.linkedin.helix.model.IdealState;
-import com.linkedin.helix.model.InstanceConfig;
-import com.linkedin.helix.model.StateModelDefinition;
-
-public interface HelixAdmin
-{
-  /**
-   * Get a list of clusters under "/"
-   * 
-   * @return
-   */
-  List<String> getClusters();
-
-  /**
-   * Get a list of instances under a cluster
-   * 
-   * @param clusterName
-   * @return
-   */
-  List<String> getInstancesInCluster(String clusterName);
-
-  /**
-   * Get instance configs
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @return
-   */
-  InstanceConfig getInstanceConfig(String clusterName, String instanceName);
-
-  /**
-   * Get a list of resources in a cluster
-   * 
-   * @param clusterName
-   * @return
-   */
-  List<String> getResourcesInCluster(String clusterName);
-
-  /**
-   * Add a cluster
-   * 
-   * @param clusterName
-   * @param overwritePrevRecord
-   */
-  void addCluster(String clusterName, boolean overwritePrevRecord);
-
-  /**
-   * Add a cluster and also add this cluster as a resource group in the super cluster
-   * 
-   * @param clusterName
-   * @param grandCluster
-   */
-  void addClusterToGrandCluster(String clusterName, String grandCluster);
-
-  /**
-   * Add a resource to a cluster, using the default ideal state mode AUTO
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param numResources
-   * @param stateModelRef
-   */
-  void addResource(String clusterName,
-                   String resourceName,
-                   int numResources,
-                   String stateModelRef);
-
-  /**
-   * Add a resource to a cluster
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param numResources
-   * @param stateModelRef
-   * @param idealStateMode
-   */
-  void addResource(String clusterName,
-                   String resourceName,
-                   int numResources,
-                   String stateModelRef,
-                   String idealStateMode);
-
-  /**
-   * Add a resource to a cluster, using a bucket size > 1
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param numResources
-   * @param stateModelRef
-   * @param idealStateMode
-   * @param bucketSize
-   */
-  void addResource(String clusterName,
-                   String resourceName,
-                   int numResources,
-                   String stateModelRef,
-                   String idealStateMode,
-                   int bucketSize);
-
-  /**
-   * Add an instance to a cluster
-   * 
-   * @param clusterName
-   * @param instanceConfig
-   */
-  void addInstance(String clusterName, InstanceConfig instanceConfig);
-
-  /**
-   * Drop an instance from a cluster
-   * 
-   * @param clusterName
-   * @param instanceConfig
-   */
-  void dropInstance(String clusterName, InstanceConfig instanceConfig);
-
-  /**
-   * Get ideal state for a resource
-   * 
-   * @param clusterName
-   * @param dbName
-   * @return
-   */
-  IdealState getResourceIdealState(String clusterName, String dbName);
-
-  /**
-   * Set ideal state for a resource
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param idealState
-   */
-  void setResourceIdealState(String clusterName,
-                             String resourceName,
-                             IdealState idealState);
-
-  /**
-   * Disable or enable an instance
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @param enabled
-   */
-  void enableInstance(String clusterName, String instanceName, boolean enabled);
-
-  /**
-   * Disable or enable a list of partitions on an instance
-   * 
-   * @param enabled
-   * @param clusterName
-   * @param instanceName
-   * @param resourceName
-   * @param partitionNames
-   */
-  void enablePartition(boolean enabled,
-                       String clusterName,
-                       String instanceName,
-                       String resourceName,
-                       List<String> partitionNames);
-
-  /**
-   * Disable or enable a cluster
-   * 
-   * @param clusterName
-   * @param enabled
-   */
-  void enableCluster(String clusterName, boolean enabled);
-
-  /**
-   * Reset a list of partitions in error state for an instance
-   * 
-   * The partitions are assume to be in error state and reset will bring them from error
-   * to initial state. An error to initial state transition is required for reset.
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @param resourceName
-   * @param partitionNames
-   */
-  void resetPartition(String clusterName,
-                      String instanceName,
-                      String resourceName,
-                      List<String> partitionNames);
-
-  /**
-   * Reset all the partitions in error state for a list of instances
-   * 
-   * @param clusterName
-   * @param instanceNames
-   */
-  void resetInstance(String clusterName, List<String> instanceNames);
-
-  /**
-   * Reset all partitions in error state for a list of resources
-   * 
-   * @param clusterName
-   * @param resourceNames
-   */
-  void resetResource(String clusterName, List<String> resourceNames);
-
-  /**
-   * Add a state model definition
-   * 
-   * @param clusterName
-   * @param stateModelDef
-   * @param record
-   */
-  void addStateModelDef(String clusterName,
-                        String stateModelDef,
-                        StateModelDefinition record);
-
-  /**
-   * Drop a resource from a cluster
-   * 
-   * @param clusterName
-   * @param resourceName
-   */
-  void dropResource(String clusterName, String resourceName);
-
-  /**
-   * Add a statistics to a cluster
-   * 
-   * @param clusterName
-   * @param statName
-   */
-  void addStat(String clusterName, String statName);
-
-  /**
-   * Add an alert to a cluster
-   * 
-   * @param clusterName
-   * @param alertName
-   */
-  void addAlert(String clusterName, String alertName);
-
-  /**
-   * Drop a statistics from a cluster
-   * 
-   * @param clusterName
-   * @param statName
-   */
-  void dropStat(String clusterName, String statName);
-
-  /**
-   * Drop an alert from a cluster
-   * 
-   * @param clusterName
-   * @param alertName
-   */
-  void dropAlert(String clusterName, String alertName);
-
-  /**
-   * Get a list of state model definitions in a cluster
-   * 
-   * @param clusterName
-   * @return
-   */
-  List<String> getStateModelDefs(String clusterName);
-
-  /**
-   * Get a state model definition in a cluster
-   * 
-   * @param clusterName
-   * @param stateModelName
-   * @return
-   */
-  StateModelDefinition getStateModelDef(String clusterName, String stateModelName);
-
-  /**
-   * Get external view for a resource
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @return
-   */
-  ExternalView getResourceExternalView(String clusterName, String resourceName);
-
-  /**
-   * Drop a cluster
-   * 
-   * @param clusterName
-   */
-  void dropCluster(String clusterName);
-
-  /**
-   * Set configuration values
-   * 
-   * @param scope
-   * @param properties
-   */
-  void setConfig(ConfigScope scope, Map<String, String> properties);
-
-  /**
-   * Remove configuration values
-   * 
-   * @param scope
-   * @param keys
-   */
-  void removeConfig(ConfigScope scope, Set<String> keys);
-
-  /**
-   * Get configuration values
-   * 
-   * @param scope
-   * @param keys
-   * @return
-   */
-  Map<String, String> getConfig(ConfigScope scope, Set<String> keys);
-
-  /**
-   * Get configuration keys
-   * 
-   * @param scope
-   * @param clusterName
-   * @param keys
-   * @return
-   */
-  List<String> getConfigKeys(ConfigScopeProperty scope,
-                             String clusterName,
-                             String... keys);
-
-  /**
-   * Rebalance a resource in cluster
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param replica
-   * @param keyPrefix
-   */
-  void rebalance(String clusterName, String resourceName, int replica);
-
-  /**
-   * Add ideal state using a json format file
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param idealStateFile
-   * @throws IOException
-   */
-  void addIdealState(String clusterName, String resourceName, String idealStateFile) throws IOException;
-
-  /**
-   * Add state model definition using a json format file
-   * 
-   * @param clusterName
-   * @param resourceName
-   * @param idealStateFile
-   * @throws IOException
-   */
-  void addStateModelDef(String clusterName,
-                        String stateModelDefName,
-                        String stateModelDefFile) throws IOException;
-
-  /**
-   * Add a message contraint
-   * 
-   * @param constraintId
-   * @param constraints
-   */
-  void addMessageConstraint(String clusterName,
-                            String constraintId,
-                            Map<String, String> constraints);
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixConstants.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixConstants.java b/helix-core/src/main/java/com/linkedin/helix/HelixConstants.java
deleted file mode 100644
index 54c49c2..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixConstants.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-public interface HelixConstants
-{
-  // ChangeType and PropertyType are the same; remove this
-  enum ChangeType
-  {
-    // @formatter:off
-    IDEAL_STATE,
-    CONFIG,
-    LIVE_INSTANCE,
-    CURRENT_STATE,
-    MESSAGE,
-    EXTERNAL_VIEW,
-    CONTROLLER,
-    MESSAGES_CONTROLLER,
-    HEALTH
-    // @formatter:on
-  }
-
-  enum StateModelToken
-  {
-    ANY_LIVEINSTANCE
-  }
-
-  enum ClusterConfigType
-  {
-    HELIX_DISABLE_PIPELINE_TRIGGERS
-  }
-
-  static final String DEFAULT_STATE_MODEL_FACTORY = "DEFAULT";
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixDataAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixDataAccessor.java b/helix-core/src/main/java/com/linkedin/helix/HelixDataAccessor.java
deleted file mode 100644
index 90b6bfe..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixDataAccessor.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.List;
-import java.util.Map;
-
-import org.I0Itec.zkclient.DataUpdater;
-
-/**
- * Interface used to interact with Helix Data Types like IdealState, Config,
- * LiveInstance, Message, ExternalView etc PropertyKey represent the HelixData
- * type. See {@link Builder} to get more information on building a propertyKey.
- * 
- * @author kgopalak
- * 
- */
-public interface HelixDataAccessor
-{
-  /**
-   * Create a helix property only if it does not exist.
-   * 
-   * @param key
-   * @param value
-   * @return true if creation was successful. False if already exists or if it
-   *         failed to create
-   */
-
-  <T extends HelixProperty> boolean createProperty(PropertyKey key, T value);
-
-  /**
-   * Set a property, overwrite if it exists and creates if not exists. This api
-   * assumes the node exists and only tries to update it only if the call fail
-   * it will create the node. So there is a performance cost if always ends up
-   * creating the node.
-   * 
-   * @param key
-   * @param value
-   * @true if the operation was successful
-   */
-  <T extends HelixProperty> boolean setProperty(PropertyKey key, T value);
-
-  /**
-   * Updates a property using newvalue.merge(oldvalue)
-   * 
-   * @param key
-   * @param value
-   * @return true if the update was successful
-   */
-  <T extends HelixProperty> boolean updateProperty(PropertyKey key, T value);
-
-  /**
-   * Return the property value, it must be refer to a single Helix Property. i.e
-   * PropertyKey.isLeaf() must return true.
-   * 
-   * @param key
-   * @return value, Null if absent or on error
-   */
-  <T extends HelixProperty> T getProperty(PropertyKey key);
-
-  /**
-   * Return a list of property values, each of which must be refer to a single Helix
-   * Property. Property may be bucketized.
-   * 
-   * @param keys
-   * @return
-   */
-  public <T extends HelixProperty> List<T> getProperty(List<PropertyKey> keys);
-
-  /**
-   * Removes the property
-   * 
-   * @param key
-   * @return true if removal was successful or node does not exist. false if the
-   *         node existed and failed to remove it
-   */
-  boolean removeProperty(PropertyKey key);
-
-  /**
-   * Return the child names for a property. PropertyKey needs to refer to a
-   * collection like instances, resources. PropertyKey.isLeaf must be false
-   * 
-   * @param type
-   * @return SubPropertyNames
-   */
-  List<String> getChildNames(PropertyKey key);
-
-  /**
-   * Get the child values for a property. PropertyKey needs to refer to just one
-   * level above the non leaf. PropertyKey.isCollection must be true.
-   * 
-   * @param type
-   * @return subPropertyValues
-   */
-  <T extends HelixProperty> List<T> getChildValues(PropertyKey key);
-
-  /**
-   * Same as getChildValues except that it converts list into a map using the id
-   * of the HelixProperty
-   * 
-   * @param key
-   * @return
-   */
-
-  <T extends HelixProperty> Map<String, T> getChildValuesMap(PropertyKey key);
-
-  /**
-   * Adds multiple children to a parent.
-   * 
-   * @param key
-   * @param children
-   * @return
-   */
-  <T extends HelixProperty> boolean[] createChildren(List<PropertyKey> keys,
-      List<T> children);
-
-  /**
-   * Sets multiple children under one parent
-   * 
-   * @param externalViews
-   * @param views
-   */
-  <T extends HelixProperty> boolean[] setChildren(List<PropertyKey> keys, List<T> children);
-  
-  /**
-   * Updates multiple children under one parent
-   * 
-   * @param externalViews
-   * @param views
-   */
-  <T extends HelixProperty> boolean[] updateChildren(List<String> paths,
-      List<DataUpdater<ZNRecord>> updaters,
-      int options);
-  
-  /**
-   * Get key builder for the accessor
-   * 
-   * @return
-   */
-  PropertyKey.Builder keyBuilder();
-
-  /**
-   * Get underlying base data accessor
-   * 
-   * @return
-   */
-  BaseDataAccessor<ZNRecord> getBaseDataAccessor();
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixException.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixException.java b/helix-core/src/main/java/com/linkedin/helix/HelixException.java
deleted file mode 100644
index 2bd7b3e..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-
-public class HelixException extends RuntimeException
-{
-
-  public HelixException(String message)
-  {
-    super(message);
-  }
-
-  public HelixException(Throwable cause)
-  {
-    super(cause);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixManager.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixManager.java b/helix-core/src/main/java/com/linkedin/helix/HelixManager.java
deleted file mode 100644
index 78a759a..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixManager.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.List;
-
-import com.linkedin.helix.controller.GenericHelixController;
-import com.linkedin.helix.healthcheck.ParticipantHealthReportCollector;
-import com.linkedin.helix.participant.HelixStateMachineEngine;
-import com.linkedin.helix.participant.StateMachineEngine;
-import com.linkedin.helix.spectator.RoutingTableProvider;
-import com.linkedin.helix.store.PropertyStore;
-import com.linkedin.helix.store.zk.ZkHelixPropertyStore;
-
-/**
- * First class Object any process will interact with<br/>
- * General flow <blockquote>
- * 
- * <pre>
- * manager = HelixManagerFactory.getManagerFor<ROLE>(); ROLE can be participant, spectator or a controller<br/>
- * manager.connect();
- * manager.addSOMEListener();
- * manager.start()
- * After start is invoked the subsequent interactions will be via listener onChange callbacks
- * There will be 3 scenarios for onChange callback, which can be determined using NotificationContext.type
- * INIT -> will be invoked the first time the listener is added
- * CALLBACK -> will be invoked due to datachange in the property value
- * FINALIZE -> will be invoked when listener is removed or session expires
- * manager.disconnect()
- * </pre>
- * 
- * </blockquote> Default implementations available
- * 
- * @see HelixStateMachineEngine for participant
- * @see RoutingTableProvider for spectator
- * @see GenericHelixController for controller
- * @author kgopalak
- */
-public interface HelixManager
-{
-
-  /**
-   * Start participating in the cluster operations. All listeners will be
-   * initialized and will be notified for every cluster state change This method
-   * is not re-entrant. One cannot call this method twice.
-   * 
-   * @throws Exception
-   */
-  void connect() throws Exception;
-
-  /**
-   * Check if the connection is alive, code depending on cluster manager must
-   * always do this if( manager.isConnected()){ //custom code } This will
-   * prevent client in doing anything when its disconnected from the cluster.
-   * There is no need to invoke connect again if isConnected return false.
-   * 
-   * @return
-   */
-  boolean isConnected();
-
-  /**
-   * Disconnect from the cluster. All the listeners will be removed and
-   * disconnected from the server. Its important for the client to ensure that
-   * new manager instance is used when it wants to connect again.
-   */
-  void disconnect();
-
-  /**
-   * @see IdealStateChangeListener#onIdealStateChange(List, NotificationContext)
-   * @param listener
-   * @throws Exception
-   */
-  void addIdealStateChangeListener(IdealStateChangeListener listener)
-      throws Exception;
-
-  /**
-   * @see LiveInstanceChangeListener#onLiveInstanceChange(List,
-   *      NotificationContext)
-   * @param listener
-   */
-  void addLiveInstanceChangeListener(LiveInstanceChangeListener listener)
-      throws Exception;
-
-  /**
-   * @see ConfigChangeListener#onConfigChange(List, NotificationContext)
-   * @param listener
-   */
-  void addConfigChangeListener(ConfigChangeListener listener) throws Exception;
-
-  /**
-   * @see MessageListener#onMessage(String, List, NotificationContext)
-   * @param listener
-   * @param instanceName
-   */
-  void addMessageListener(MessageListener listener, String instanceName)
-      throws Exception;
-
-  /**
-   * @see CurrentStateChangeListener#onStateChange(String, List,
-   *      NotificationContext)
-   * @param listener
-   * @param instanceName
-   */
-
-  void addCurrentStateChangeListener(CurrentStateChangeListener listener,
-      String instanceName, String sessionId) throws Exception;
-
-  /**
-   * @see HealthStateChangeListener#onHealthChange(String, List,
-   *      NotificationContext)
-   * @param listener
-   * @param instanceName
-   */
-  void addHealthStateChangeListener(HealthStateChangeListener listener,
-      String instanceName) throws Exception;
-
-  /**
-   * @see ExternalViewChangeListener#onExternalViewChange(List,
-   *      NotificationContext)
-   * @param listener
-   */
-  void addExternalViewChangeListener(ExternalViewChangeListener listener)
-      throws Exception;
-
-  /**
-   * Add listener for controller change
-   * 
-   * Used in distributed cluster controller
-   */
-  void addControllerListener(ControllerChangeListener listener);
-
-  /**
-   * Removes the listener. If the same listener was used for multiple changes,
-   * all change notifications will be removed.<br/>
-   * This will invoke onChange method on the listener with
-   * NotificationContext.type set to FINALIZE. Listener can clean up its state.<br/>
-   * The data provided in this callback may not be reliable.<br/>
-   * When a session expires all listeners will be removed and re-added
-   * automatically. <br/>
-   * This provides the ability for listeners to either reset their state or do
-   * any cleanup tasks.<br/>
-   * 
-   * @param listener
-   * @return
-   */
-  boolean removeListener(Object listener);
-
-  /**
-   * Return the client to perform read/write operations on the cluster data
-   * store {@link getHelixDataAccessor() }
-   * 
-   * @return DataAccessor
-   */
-  @Deprecated
-  DataAccessor getDataAccessor();
-
-  /**
-   * Return the client to perform read/write operations on the cluster data
-   * store
-   * 
-   * @return ClusterDataAccessor
-   */
-  HelixDataAccessor getHelixDataAccessor();
-
-  /**
-   * Get config accessor
-   * 
-   * @return
-   */
-  ConfigAccessor getConfigAccessor();
-
-  /**
-   * Returns the cluster name associated with this cluster manager
-   * 
-   * @return
-   */
-  String getClusterName();
-
-  /**
-   * Returns the instanceName used to connect to the cluster
-   * 
-   * @return
-   */
-
-  String getInstanceName();
-
-  /**
-   * Get the sessionId associated with the connection to cluster data store.
-   */
-  String getSessionId();
-
-  /**
-   * The time stamp is always updated when a notification is received. This can
-   * be used to check if there was any new notification when previous
-   * notification was being processed. This is updated based on the
-   * notifications from listeners registered.
-   */
-  long getLastNotificationTime();
-
-  /**
-   * Provides admin interface to setup and modify cluster.
-   * 
-   * @return
-   */
-  HelixAdmin getClusterManagmentTool();
-
-  /**
-   * Provide get property store for a cluster
-   * 
-   * @param rootNamespace
-   * @param serializer
-   * @return
-   */
-  @Deprecated
-  PropertyStore<ZNRecord> getPropertyStore();
-  
-  /**
-   * Get property store
-   * 
-   * @return
-   */
-  ZkHelixPropertyStore<ZNRecord> getHelixPropertyStore();
-
-  /**
-   * Messaging service which can be used to send cluster wide messages.
-   * 
-   */
-  ClusterMessagingService getMessagingService();
-
-  /**
-   * Participant only component that periodically update participant health
-   * report to cluster manager server.
-   * 
-   */
-  ParticipantHealthReportCollector getHealthReportCollector();
-
-  /**
-   * Get cluster manager instance type
-   * 
-   * @return
-   */
-  InstanceType getInstanceType();
-
-  /**
-   * Get cluster manager version
-   * 
-   * @return the cluster manager version
-   */
-  String getVersion();
-
-  /**
-   * 
-   * @return the state machine engine
-   */
-  StateMachineEngine getStateMachineEngine();
-
-  /**
-   * Check if the cluster manager is the leader
-   * 
-   * @return true if this is a controller and a leader of the cluster
-   */
-  boolean isLeader();
-
-  /**
-   * start timer tasks when becomes leader
-   * 
-   */
-  void startTimerTasks();
-
-  /**
-   * stop timer tasks when becomes standby
-   * 
-   */
-  void stopTimerTasks();
-  
-  /**
-   * Add a callback that is invoked before cluster manager connects
-   * 
-   * @see PreConnectCallback#onPreConnect()
-   * @param callback
-   */
-  void addPreConnectCallback(PreConnectCallback callback);
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixManagerFactory.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixManagerFactory.java b/helix-core/src/main/java/com/linkedin/helix/HelixManagerFactory.java
deleted file mode 100644
index 26b3769..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixManagerFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-/**
- * factory that creates cluster managers
- *
- * for zk-based cluster managers, the getZKXXX(..zkClient) that takes a zkClient parameter
- *   are intended for session expiry test purpose
- */
-import org.apache.log4j.Logger;
-
-import com.linkedin.helix.manager.file.DynamicFileHelixManager;
-import com.linkedin.helix.manager.file.StaticFileHelixManager;
-import com.linkedin.helix.manager.zk.ZKHelixManager;
-import com.linkedin.helix.store.file.FilePropertyStore;
-
-public final class HelixManagerFactory
-{
-  private static final Logger logger = Logger.getLogger(HelixManagerFactory.class);
-
-  /**
-   * Construct a zk-based cluster manager enforce all types (PARTICIPANT, CONTROLLER, and
-   * SPECTATOR to have a name
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @param type
-   * @param zkAddr
-   * @return
-   * @throws Exception
-   */
-  public static HelixManager getZKHelixManager(String clusterName,
-                                               String instanceName,
-                                               InstanceType type,
-                                               String zkAddr) throws Exception
-  {
-    return new ZKHelixManager(clusterName, instanceName, type, zkAddr);
-  }
-
-  /**
-   * Construct a file-based cluster manager using a static cluster-view file the
-   * cluster-view file contains pre-computed state transition messages from initial
-   * OFFLINE states to ideal states
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @param type
-   * @param clusterViewFile
-   * @return
-   * @throws Exception
-   */
-  @Deprecated
-  public static HelixManager getStaticFileHelixManager(String clusterName,
-                                                       String instanceName,
-                                                       InstanceType type,
-                                                       String clusterViewFile) throws Exception
-  {
-    if (type != InstanceType.PARTICIPANT)
-    {
-      throw new IllegalArgumentException("Static file-based cluster manager doesn't support type other than participant");
-    }
-    return new StaticFileHelixManager(clusterName, instanceName, type, clusterViewFile);
-  }
-
-  /**
-   * Construct a dynamic file-based cluster manager
-   * 
-   * @param clusterName
-   * @param instanceName
-   * @param type
-   * @param file
-   *          property store: all dynamic-file based participants/controller shall use the
-   *          same file property store to avoid race condition in updating files
-   * @return
-   * @throws Exception
-   */
-  @Deprecated
-  public static HelixManager getDynamicFileHelixManager(String clusterName,
-                                                        String instanceName,
-                                                        InstanceType type,
-                                                        FilePropertyStore<ZNRecord> store) throws Exception
-  {
-    if (type != InstanceType.PARTICIPANT && type != InstanceType.CONTROLLER)
-    {
-      throw new IllegalArgumentException("Dynamic file-based cluster manager doesn't support types other than participant and controller");
-    }
-
-    return new DynamicFileHelixManager(clusterName, instanceName, type, store);
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixProperty.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixProperty.java b/helix-core/src/main/java/com/linkedin/helix/HelixProperty.java
deleted file mode 100644
index d90f885..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixProperty.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A wrapper class for ZNRecord. Used as a base class for IdealState, CurrentState, etc.
- */
-public class HelixProperty
-{
-  public enum HelixPropertyAttribute
-  {
-    BUCKET_SIZE,
-    GROUP_MESSAGE_MODE
-  }
-
-  protected final ZNRecord _record;
-
-  public HelixProperty(String id)
-  {
-    _record = new ZNRecord(id);
-  }
-
-  public HelixProperty(ZNRecord record)
-  {
-    _record = new ZNRecord(record);
-  }
-
-  public final String getId()
-  {
-    return _record.getId();
-  }
-
-  public final ZNRecord getRecord()
-  {
-    return _record;
-  }
-
-  public final void setDeltaList(List<ZNRecordDelta> deltaList)
-  {
-    _record.setDeltaList(deltaList);
-  }
-
-  @Override
-  public String toString()
-  {
-    return _record.toString();
-  }
-
-  public int getBucketSize()
-  {
-    String bucketSizeStr =
-        _record.getSimpleField(HelixPropertyAttribute.BUCKET_SIZE.toString());
-    int bucketSize = 0;
-    if (bucketSizeStr != null)
-    {
-      try
-      {
-        bucketSize = Integer.parseInt(bucketSizeStr);
-      }
-      catch (NumberFormatException e)
-      {
-        // OK
-      }
-    }
-    return bucketSize;
-  }
-
-  public void setBucketSize(int bucketSize)
-  {
-    if (bucketSize <= 0)
-      bucketSize = 0;
-
-    _record.setSimpleField(HelixPropertyAttribute.BUCKET_SIZE.toString(), "" + bucketSize);
-  }
-
-  /**
-   * static method that convert ZNRecord to an instance that subclasses HelixProperty
-   * 
-   * @param clazz
-   * @param record
-   * @return
-   */
-  public static <T extends HelixProperty> T convertToTypedInstance(Class<T> clazz,
-                                                                   ZNRecord record)
-  {
-    if (record == null)
-    {
-      return null;
-    }
-
-    try
-    {
-      Constructor<T> constructor = clazz.getConstructor(new Class[] { ZNRecord.class });
-      return constructor.newInstance(record);
-    }
-    catch (Exception e)
-    {
-      // TODO Auto-generated catch block
-      e.printStackTrace();
-    }
-
-    return null;
-  }
-
-  public static <T extends HelixProperty> List<T> convertToTypedList(Class<T> clazz,
-                                                                     Collection<ZNRecord> records)
-  {
-    if (records == null)
-    {
-      return null;
-    }
-
-    List<T> decorators = new ArrayList<T>();
-    for (ZNRecord record : records)
-    {
-      T decorator = HelixProperty.convertToTypedInstance(clazz, record);
-      if (decorator != null)
-      {
-        decorators.add(decorator);
-      }
-    }
-    return decorators;
-  }
-
-  public static <T extends HelixProperty> Map<String, T> convertListToMap(List<T> records)
-  {
-    if (records == null)
-    {
-      return Collections.emptyMap();
-    }
-
-    Map<String, T> decorators = new HashMap<String, T>();
-    for (T record : records)
-    {
-      decorators.put(record.getId(), record);
-    }
-    return decorators;
-  }
-
-  public static <T extends HelixProperty> List<ZNRecord> convertToList(List<T> typedInstances)
-  {
-    if (typedInstances == null)
-    {
-      return Collections.emptyList();
-    }
-
-    List<ZNRecord> records = new ArrayList<ZNRecord>();
-    for (T typedInstance : typedInstances)
-    {
-      records.add(typedInstance.getRecord());
-    }
-
-    return records;
-  }
-
-  public void setGroupMessageMode(boolean enable)
-  {
-    _record.setSimpleField(HelixPropertyAttribute.GROUP_MESSAGE_MODE.toString(), ""
-        + enable);
-  }
-
-  public boolean getGroupMessageMode()
-  {
-    String enableStr =
-        _record.getSimpleField(HelixPropertyAttribute.GROUP_MESSAGE_MODE.toString());
-    if (enableStr == null)
-    {
-      return false;
-    }
-
-    try
-    {
-      return Boolean.parseBoolean(enableStr.toLowerCase());
-    }
-    catch (Exception e)
-    {
-      return false;
-    }
-  }
-  
-  public boolean isValid()
-  {
-    return false;
-  }
-
-  @Override
-  public boolean equals(Object obj)
-  {
-    if (obj == null)
-    {
-      return false;
-    }
-    if (obj instanceof HelixProperty)
-    {
-      HelixProperty that = (HelixProperty) obj;
-      if (that.getRecord() != null)
-      {
-        return that.getRecord().equals(this.getRecord());
-      }
-    }
-    return false;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/HelixTimerTask.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/HelixTimerTask.java b/helix-core/src/main/java/com/linkedin/helix/HelixTimerTask.java
deleted file mode 100644
index 8c09a65..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/HelixTimerTask.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.TimerTask;
-
-public abstract class HelixTimerTask extends TimerTask
-{
-  /**
-   * Timer task starts
-   * 
-   */
-  public abstract void start();
-  
-  /**
-   * Timer task stops
-   * 
-   */
-  public abstract void stop();
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/IdealStateChangeListener.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/IdealStateChangeListener.java b/helix-core/src/main/java/com/linkedin/helix/IdealStateChangeListener.java
deleted file mode 100644
index 3696aca..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/IdealStateChangeListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.List;
-
-import com.linkedin.helix.model.IdealState;
-
-public interface IdealStateChangeListener
-{
-
-  /**
-   * Invoed when ideal state changes
-   * 
-   * @param idealState
-   * @param changeContext
-   */
-  void onIdealStateChange(List<IdealState> idealState, NotificationContext changeContext);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/InstanceType.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/InstanceType.java b/helix-core/src/main/java/com/linkedin/helix/InstanceType.java
deleted file mode 100644
index 330b5a3..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/InstanceType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-/**
- * CONTROLLER:     cluster managing component is a controller
- * PARTICIPANT:    participate in the cluster state changes
- * SPECTATOR:      interested in the state changes in the cluster
- * CONTROLLER_PARTICIPANT:
- *  special participant that competes for the leader of CONTROLLER_CLUSTER
- *  used in cluster controller of distributed mode {@HelixControllerMain}
- *
- */
-public enum InstanceType
-{
-  CONTROLLER,
-  PARTICIPANT,
-  SPECTATOR,
-  CONTROLLER_PARTICIPANT,
-  ADMINISTRATOR
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/LiveInstanceChangeListener.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/LiveInstanceChangeListener.java b/helix-core/src/main/java/com/linkedin/helix/LiveInstanceChangeListener.java
deleted file mode 100644
index 9eb60ee..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/LiveInstanceChangeListener.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.List;
-
-import com.linkedin.helix.model.LiveInstance;
-
-public interface LiveInstanceChangeListener
-{
-
-  /**
-   * Invoked when live instance changes
-   * 
-   * @param liveInstances
-   * @param changeContext
-   */
-  public void onLiveInstanceChange(List<LiveInstance> liveInstances,
-                                   NotificationContext changeContext);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/MessageListener.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/MessageListener.java b/helix-core/src/main/java/com/linkedin/helix/MessageListener.java
deleted file mode 100644
index ed92f84..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/MessageListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.List;
-
-import com.linkedin.helix.model.Message;
-
-public interface MessageListener
-{
-
-  /**
-   * Invoked when message changes
-   * 
-   * @param instanceName
-   * @param messages
-   * @param changeContext
-   */
-  public void onMessage(String instanceName, List<Message> messages,
-      NotificationContext changeContext);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/NotificationContext.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/NotificationContext.java b/helix-core/src/main/java/com/linkedin/helix/NotificationContext.java
deleted file mode 100644
index c95d5fb..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/NotificationContext.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class NotificationContext
-{
-  // keys used for object map
-  public static final String TASK_EXECUTOR_KEY = "TASK_EXECUTOR";
-  
-  private Map<String, Object> _map;
-
-  private HelixManager _manager;
-  private Type _type;
-  private String _pathChanged;
-  private String _eventName;
-
-  public String getEventName()
-  {
-    return _eventName;
-  }
-
-  public void setEventName(String eventName)
-  {
-    _eventName = eventName;
-  }
-
-  public NotificationContext(HelixManager manager)
-  {
-    _manager = manager;
-    _map = new HashMap<String, Object>();
-  }
-
-  public HelixManager getManager()
-  {
-    return _manager;
-  }
-
-  public Map<String, Object> getMap()
-  {
-    return _map;
-  }
-
-  public Type getType()
-  {
-    return _type;
-  }
-
-  public void setManager(HelixManager manager)
-  {
-    this._manager = manager;
-  }
-
-  public void add(String key, Object value)
-  {
-    _map.put(key, value);
-  }
-
-  public void setMap(Map<String, Object> map)
-  {
-    this._map = map;
-  }
-
-  public void setType(Type type)
-  {
-    this._type = type;
-  }
-
-  public Object get(String key)
-  {
-    return _map.get(key);
-  }
-
-  public enum Type
-  {
-    INIT, CALLBACK, FINALIZE
-  }
-
-  public String getPathChanged()
-  {
-    return _pathChanged;
-  }
-
-  public void setPathChanged(String pathChanged)
-  {
-    this._pathChanged = pathChanged;
-  }
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/PreConnectCallback.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/PreConnectCallback.java b/helix-core/src/main/java/com/linkedin/helix/PreConnectCallback.java
deleted file mode 100644
index 78318db..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/PreConnectCallback.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.linkedin.helix;
-
-public interface PreConnectCallback
-{
-  /**
-   * Callback function that is called by HelixManager before connected to zookeeper. If
-   * exception are thrown HelixManager will not connect and no live instance is created
-   * 
-   * @see ZkHelixManager#handleNewSessionAsParticipant()
-   */
-  public void onPreConnect();
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/PropertyKey.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/PropertyKey.java b/helix-core/src/main/java/com/linkedin/helix/PropertyKey.java
deleted file mode 100644
index ee63c11..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/PropertyKey.java
+++ /dev/null
@@ -1,553 +0,0 @@
-package com.linkedin.helix;
-
-import static com.linkedin.helix.PropertyType.ALERTS;
-import static com.linkedin.helix.PropertyType.ALERT_HISTORY;
-import static com.linkedin.helix.PropertyType.ALERT_STATUS;
-import static com.linkedin.helix.PropertyType.CONFIGS;
-import static com.linkedin.helix.PropertyType.CONTROLLER;
-import static com.linkedin.helix.PropertyType.CURRENTSTATES;
-import static com.linkedin.helix.PropertyType.ERRORS;
-import static com.linkedin.helix.PropertyType.ERRORS_CONTROLLER;
-import static com.linkedin.helix.PropertyType.EXTERNALVIEW;
-import static com.linkedin.helix.PropertyType.HEALTHREPORT;
-import static com.linkedin.helix.PropertyType.HISTORY;
-import static com.linkedin.helix.PropertyType.IDEALSTATES;
-import static com.linkedin.helix.PropertyType.LEADER;
-import static com.linkedin.helix.PropertyType.LIVEINSTANCES;
-import static com.linkedin.helix.PropertyType.MESSAGES;
-import static com.linkedin.helix.PropertyType.MESSAGES_CONTROLLER;
-import static com.linkedin.helix.PropertyType.PAUSE;
-import static com.linkedin.helix.PropertyType.PERSISTENTSTATS;
-import static com.linkedin.helix.PropertyType.STATEMODELDEFS;
-import static com.linkedin.helix.PropertyType.STATUSUPDATES;
-import static com.linkedin.helix.PropertyType.STATUSUPDATES_CONTROLLER;
-
-import java.util.Arrays;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.log4j.Logger;
-
-import com.linkedin.helix.ConfigScope.ConfigScopeProperty;
-import com.linkedin.helix.manager.zk.ZKHelixDataAccessor;
-import com.linkedin.helix.manager.zk.ZkBaseDataAccessor;
-import com.linkedin.helix.manager.zk.ZkClient;
-import com.linkedin.helix.model.AlertHistory;
-import com.linkedin.helix.model.AlertStatus;
-import com.linkedin.helix.model.Alerts;
-import com.linkedin.helix.model.ClusterConstraints;
-import com.linkedin.helix.model.CurrentState;
-import com.linkedin.helix.model.Error;
-import com.linkedin.helix.model.ExternalView;
-import com.linkedin.helix.model.HealthStat;
-import com.linkedin.helix.model.IdealState;
-import com.linkedin.helix.model.InstanceConfig;
-import com.linkedin.helix.model.LeaderHistory;
-import com.linkedin.helix.model.LiveInstance;
-import com.linkedin.helix.model.Message;
-import com.linkedin.helix.model.PauseSignal;
-import com.linkedin.helix.model.PersistentStats;
-import com.linkedin.helix.model.StateModelDefinition;
-import com.linkedin.helix.model.StatusUpdate;
-
-public class PropertyKey
-{
-  private static Logger          LOG = Logger.getLogger(PropertyKey.class);
-  public PropertyType            _type;
-  private final String[]         _params;
-  Class<? extends HelixProperty> _typeClazz;
-
-  public PropertyKey(PropertyType type,
-                     Class<? extends HelixProperty> typeClazz,
-                     String... params)
-  {
-    _type = type;
-    if (params == null || params.length == 0 || Arrays.asList(params).contains(null))
-    {
-      throw new IllegalArgumentException("params cannot be null");
-    }
-
-    _params = params;
-    _typeClazz = typeClazz;
-  }
-
-  @Override
-  public int hashCode()
-  {
-    return super.hashCode();
-  }
-
-  public String getPath()
-  {
-    String clusterName = _params[0];
-    String[] subKeys = Arrays.copyOfRange(_params, 1, _params.length);
-    String path = PropertyPathConfig.getPath(_type, clusterName, subKeys);
-    if (path == null)
-    {
-      LOG.error("Invalid property key with type:" + _type + "subKeys:"
-          + Arrays.toString(_params));
-    }
-    return path;
-  }
-
-  public static class Builder
-  {
-    private final String _clusterName;
-
-    public Builder(String clusterName)
-    {
-      _clusterName = clusterName;
-    }
-
-    public PropertyKey idealStates()
-    {
-      return new PropertyKey(IDEALSTATES, IdealState.class, _clusterName);
-    }
-
-    public PropertyKey idealStates(String resourceName)
-    {
-      return new PropertyKey(IDEALSTATES, IdealState.class, _clusterName, resourceName);
-    }
-
-    public PropertyKey stateModelDefs()
-    {
-      return new PropertyKey(STATEMODELDEFS, StateModelDefinition.class, _clusterName);
-    }
-
-    public PropertyKey stateModelDef(String stateModelName)
-    {
-      return new PropertyKey(STATEMODELDEFS,
-                             StateModelDefinition.class,
-                             _clusterName,
-                             stateModelName);
-    }
-
-    public PropertyKey clusterConfig()
-    {
-      return new PropertyKey(CONFIGS,
-                             null,
-                             _clusterName,
-                             ConfigScopeProperty.CLUSTER.toString());
-    }
-
-    public PropertyKey instanceConfigs()
-    {
-      return new PropertyKey(CONFIGS,
-                             InstanceConfig.class,
-                             _clusterName,
-                             ConfigScopeProperty.PARTICIPANT.toString());
-    }
-
-    public PropertyKey instanceConfig(String instanceName)
-    {
-      return new PropertyKey(CONFIGS,
-                             InstanceConfig.class,
-                             _clusterName,
-                             ConfigScopeProperty.PARTICIPANT.toString(),
-                             instanceName);
-    }
-
-    public PropertyKey resourceConfig(String resourceName)
-    {
-      return new PropertyKey(CONFIGS,
-                             null,
-                             _clusterName,
-                             ConfigScopeProperty.RESOURCE.toString(),
-                             resourceName);
-    }
-
-    public PropertyKey resourceConfig(String instanceName, String resourceName)
-    {
-      return new PropertyKey(CONFIGS,
-                             null,
-                             _clusterName,
-                             ConfigScopeProperty.RESOURCE.toString(),
-                             resourceName);
-    }
-
-    public PropertyKey partitionConfig(String resourceName, String partitionName)
-    {
-      return new PropertyKey(CONFIGS,
-                             null,
-                             _clusterName,
-                             ConfigScopeProperty.RESOURCE.toString(),
-                             resourceName);
-    }
-
-    public PropertyKey partitionConfig(String instanceName,
-                                       String resourceName,
-                                       String partitionName)
-    {
-      return new PropertyKey(CONFIGS,
-                             null,
-                             _clusterName,
-                             ConfigScopeProperty.RESOURCE.toString(),
-                             resourceName);
-    }
-
-    public PropertyKey constraints()
-    {
-      return new PropertyKey(CONFIGS,
-                             ClusterConstraints.class,
-                             _clusterName,
-                             ConfigScopeProperty.CONSTRAINT.toString());
-    }
-
-    public PropertyKey constraint(String constraintType)
-    {
-      return new PropertyKey(CONFIGS,
-                             ClusterConstraints.class,
-                             _clusterName,
-                             ConfigScopeProperty.CONSTRAINT.toString(),
-                             constraintType);
-    }
-
-    public PropertyKey liveInstances()
-    {
-      return new PropertyKey(LIVEINSTANCES, LiveInstance.class, _clusterName);
-    }
-
-    public PropertyKey liveInstance(String instanceName)
-    {
-      return new PropertyKey(LIVEINSTANCES,
-                             LiveInstance.class,
-                             _clusterName,
-                             instanceName);
-    }
-
-    public PropertyKey instances()
-    {
-      return new PropertyKey(CONFIGS, null, _clusterName);
-    }
-
-    public PropertyKey messages(String instanceName)
-    {
-      return new PropertyKey(MESSAGES, Message.class, _clusterName, instanceName);
-    }
-
-    public PropertyKey message(String instanceName, String messageId)
-    {
-      return new PropertyKey(MESSAGES,
-                             Message.class,
-                             _clusterName,
-                             instanceName,
-                             messageId);
-    }
-
-    public PropertyKey sessions(String instanceName)
-    {
-      return new PropertyKey(CURRENTSTATES,
-                             CurrentState.class,
-                             _clusterName,
-                             instanceName);
-    }
-
-    public PropertyKey currentStates(String instanceName, String sessionId)
-    {
-      return new PropertyKey(CURRENTSTATES,
-                             CurrentState.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId);
-    }
-
-    public PropertyKey currentState(String instanceName,
-                                    String sessionId,
-                                    String resourceName)
-    {
-      return new PropertyKey(CURRENTSTATES,
-                             CurrentState.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             resourceName);
-    }
-
-    public PropertyKey currentState(String instanceName,
-                                    String sessionId,
-                                    String resourceName,
-                                    String bucketName)
-    {
-      if (bucketName == null)
-      {
-        return new PropertyKey(CURRENTSTATES,
-                               CurrentState.class,
-                               _clusterName,
-                               instanceName,
-                               sessionId,
-                               resourceName);
-
-      }
-      else
-      {
-        return new PropertyKey(CURRENTSTATES,
-                               CurrentState.class,
-                               _clusterName,
-                               instanceName,
-                               sessionId,
-                               resourceName,
-                               bucketName);
-      }
-    }
-
-    // addEntry(PropertyType.STATUSUPDATES, 2,
-    // "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES");
-    // addEntry(PropertyType.STATUSUPDATES, 3,
-    // "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}");
-    // addEntry(PropertyType.STATUSUPDATES, 4,
-    // "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}");
-    // addEntry(PropertyType.STATUSUPDATES, 5,
-    // "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}/{recordName}");
-    public PropertyKey stateTransitionStatus(String instanceName,
-                                             String sessionId,
-                                             String resourceName,
-                                             String partitionName)
-    {
-      return new PropertyKey(STATUSUPDATES,
-                             StatusUpdate.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             resourceName,
-                             partitionName);
-    }
-
-    public PropertyKey stateTransitionStatus(String instanceName,
-                                             String sessionId,
-                                             String resourceName)
-    {
-      return new PropertyKey(STATUSUPDATES,
-                             StatusUpdate.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             resourceName);
-    }
-
-    public PropertyKey stateTransitionStatus(String instanceName, String sessionId)
-    {
-      return new PropertyKey(STATUSUPDATES,
-                             StatusUpdate.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId);
-    }
-
-    /**
-     * Used to get status update for a NON STATE TRANSITION type
-     * 
-     * @param instanceName
-     * @param sessionId
-     * @param msgType
-     * @param msgId
-     * @return
-     */
-    public PropertyKey taskStatus(String instanceName,
-                                  String sessionId,
-                                  String msgType,
-                                  String msgId)
-    {
-      return new PropertyKey(STATUSUPDATES,
-                             StatusUpdate.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             msgType,
-                             msgId);
-    }
-
-    public PropertyKey stateTransitionError(String instanceName,
-                                            String sessionId,
-                                            String resourceName,
-                                            String partitionName)
-    {
-      return new PropertyKey(ERRORS,
-                             Error.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             resourceName,
-                             partitionName);
-    }
-
-    public PropertyKey stateTransitionErrors(String instanceName,
-                                             String sessionId,
-                                             String resourceName)
-    {
-      return new PropertyKey(ERRORS,
-                             Error.class,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             resourceName);
-    }
-
-    /**
-     * Used to get status update for a NON STATE TRANSITION type
-     * 
-     * @param instanceName
-     * @param sessionId
-     * @param msgType
-     * @param msgId
-     * @return
-     */
-    public PropertyKey taskError(String instanceName,
-                                 String sessionId,
-                                 String msgType,
-                                 String msgId)
-    {
-      return new PropertyKey(ERRORS,
-                             null,
-                             _clusterName,
-                             instanceName,
-                             sessionId,
-                             msgType,
-                             msgId);
-    }
-
-    public PropertyKey externalViews()
-    {
-      return new PropertyKey(EXTERNALVIEW, ExternalView.class, _clusterName);
-    }
-
-    public PropertyKey externalView(String resourceName)
-    {
-      return new PropertyKey(EXTERNALVIEW, ExternalView.class, _clusterName, resourceName);
-    }
-
-    // * addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 4,
-    // *
-    // "/{clusterName}/CONTROLLER/STATUSUPDATES/{sessionId}/{subPath}/{recordName}"
-    // * ); addEntry(PropertyType.LEADER, 1,
-    // "/{clusterName}/CONTROLLER/LEADER");
-    // * addEntry(PropertyType.HISTORY, 1, "/{clusterName}/CONTROLLER/HISTORY");
-    // * addEntry(PropertyType.PAUSE, 1, "/{clusterName}/CONTROLLER/PAUSE");
-    // * addEntry(PropertyType.PERSISTENTSTATS, 1,
-    // * "/{clusterName}/CONTROLLER/PERSISTENTSTATS");
-    // addEntry(PropertyType.ALERTS,
-    // * 1, "/{clusterName}/CONTROLLER/ALERTS");
-    // addEntry(PropertyType.ALERT_STATUS,
-    // * 1, "/{clusterName}/CONTROLLER/ALERT_STATUS");
-    // * addEntry(PropertyType.ALERT_HISTORY, 1,
-    // * "/{clusterName}/CONTROLLER/ALERT_HISTORY"); // @formatter:on
-
-    public PropertyKey controller()
-    {
-      return new PropertyKey(CONTROLLER, null, _clusterName);
-    }
-
-    public PropertyKey controllerTaskErrors()
-    {
-      return new PropertyKey(ERRORS_CONTROLLER, StatusUpdate.class, _clusterName);
-    }
-
-    public PropertyKey controllerTaskError(String errorId)
-    {
-      return new PropertyKey(ERRORS_CONTROLLER, Error.class, _clusterName, errorId);
-    }
-
-    public PropertyKey controllerTaskStatuses(String subPath)
-    {
-      return new PropertyKey(STATUSUPDATES_CONTROLLER,
-                             StatusUpdate.class,
-                             _clusterName,
-                             subPath);
-    }
-
-    public PropertyKey controllerTaskStatus(String subPath, String recordName)
-    {
-      return new PropertyKey(STATUSUPDATES_CONTROLLER,
-                             StatusUpdate.class,
-                             _clusterName,
-                             subPath,
-                             recordName);
-    }
-
-    public PropertyKey controllerMessages()
-    {
-      return new PropertyKey(MESSAGES_CONTROLLER, Message.class, _clusterName);
-    }
-
-    public PropertyKey controllerMessage(String msgId)
-    {
-      return new PropertyKey(MESSAGES_CONTROLLER, Message.class, _clusterName, msgId);
-    }
-
-    public PropertyKey controllerLeaderHistory()
-    {
-      return new PropertyKey(HISTORY, LeaderHistory.class, _clusterName);
-    }
-
-    public PropertyKey controllerLeader()
-    {
-      return new PropertyKey(LEADER, LiveInstance.class, _clusterName);
-    }
-
-    public PropertyKey pause()
-    {
-      return new PropertyKey(PAUSE, PauseSignal.class, _clusterName);
-    }
-
-    public PropertyKey persistantStat()
-    {
-      return new PropertyKey(PERSISTENTSTATS, PersistentStats.class, _clusterName);
-    }
-
-    public PropertyKey alerts()
-    {
-      return new PropertyKey(ALERTS, Alerts.class, _clusterName);
-    }
-
-    public PropertyKey alertStatus()
-    {
-      return new PropertyKey(ALERT_STATUS, AlertStatus.class, _clusterName);
-    }
-
-    public PropertyKey alertHistory()
-    {
-      return new PropertyKey(ALERT_HISTORY, AlertHistory.class, _clusterName);
-    }
-
-    public PropertyKey healthReport(String instanceName, String id)
-    {
-      return new PropertyKey(HEALTHREPORT,
-                             HealthStat.class,
-                             _clusterName,
-                             instanceName,
-                             id);
-    }
-
-    public PropertyKey healthReports(String instanceName)
-    {
-      return new PropertyKey(HEALTHREPORT, HealthStat.class, _clusterName, instanceName);
-    }
-
-  }
-
-  public PropertyType getType()
-  {
-    return _type;
-  }
-
-  public String[] getParams()
-  {
-    return _params;
-  }
-
-  public Class<? extends HelixProperty> getTypeClass()
-  {
-    return _typeClazz;
-  }
-
-  public static void main(String[] args)
-  {
-    ZkClient zkClient = new ZkClient("localhost:2181");
-    zkClient.waitUntilConnected(10, TimeUnit.SECONDS);
-    BaseDataAccessor baseDataAccessor = new ZkBaseDataAccessor(zkClient);
-    HelixDataAccessor accessor =
-        new ZKHelixDataAccessor("test-cluster", baseDataAccessor);
-    Builder builder = new PropertyKey.Builder("test-cluster");
-    HelixProperty value = new IdealState("test-resource");
-    accessor.createProperty(builder.idealStates("test-resource"), value);
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/PropertyPathConfig.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/PropertyPathConfig.java b/helix-core/src/main/java/com/linkedin/helix/PropertyPathConfig.java
deleted file mode 100644
index c354ce3..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/PropertyPathConfig.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-import static com.linkedin.helix.PropertyType.ALERTS;
-import static com.linkedin.helix.PropertyType.ALERT_STATUS;
-import static com.linkedin.helix.PropertyType.CONFIGS;
-import static com.linkedin.helix.PropertyType.CURRENTSTATES;
-import static com.linkedin.helix.PropertyType.EXTERNALVIEW;
-import static com.linkedin.helix.PropertyType.HEALTHREPORT;
-import static com.linkedin.helix.PropertyType.HISTORY;
-import static com.linkedin.helix.PropertyType.IDEALSTATES;
-import static com.linkedin.helix.PropertyType.LIVEINSTANCES;
-import static com.linkedin.helix.PropertyType.MESSAGES;
-import static com.linkedin.helix.PropertyType.PAUSE;
-import static com.linkedin.helix.PropertyType.STATEMODELDEFS;
-import static com.linkedin.helix.PropertyType.STATUSUPDATES;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.log4j.Logger;
-
-import com.linkedin.helix.model.AlertStatus;
-import com.linkedin.helix.model.Alerts;
-import com.linkedin.helix.model.CurrentState;
-import com.linkedin.helix.model.ExternalView;
-import com.linkedin.helix.model.HealthStat;
-import com.linkedin.helix.model.IdealState;
-import com.linkedin.helix.model.InstanceConfig;
-import com.linkedin.helix.model.LeaderHistory;
-import com.linkedin.helix.model.LiveInstance;
-import com.linkedin.helix.model.Message;
-import com.linkedin.helix.model.PauseSignal;
-import com.linkedin.helix.model.StateModelDefinition;
-import com.linkedin.helix.model.StatusUpdate;
-
-public class PropertyPathConfig
-{
-  private static Logger logger = Logger.getLogger(PropertyPathConfig.class);
-
-  static Map<PropertyType, Map<Integer, String>> templateMap = new HashMap<PropertyType, Map<Integer, String>>();
-  static Map<PropertyType, Class<? extends HelixProperty>> typeToClassMapping= new HashMap<PropertyType, Class<? extends HelixProperty>>();
-  static{
-    typeToClassMapping.put(LIVEINSTANCES, LiveInstance.class);
-    typeToClassMapping.put(IDEALSTATES, IdealState.class);
-    typeToClassMapping.put(CONFIGS, InstanceConfig.class);
-    typeToClassMapping.put(EXTERNALVIEW, ExternalView.class);
-    typeToClassMapping.put(STATEMODELDEFS, StateModelDefinition.class);
-    typeToClassMapping.put(MESSAGES, Message.class);
-    typeToClassMapping.put(CURRENTSTATES, CurrentState.class);
-    typeToClassMapping.put(STATUSUPDATES, StatusUpdate.class);
-    typeToClassMapping.put(HISTORY, LeaderHistory.class);
-    typeToClassMapping.put(HEALTHREPORT, HealthStat.class);
-    typeToClassMapping.put(ALERTS, Alerts.class);
-    typeToClassMapping.put(ALERT_STATUS, AlertStatus.class);
-    typeToClassMapping.put(PAUSE, PauseSignal.class);
-  }
-  static
-  {
-    // @formatter:off
-    addEntry(PropertyType.CONFIGS, 1, "/{clusterName}/CONFIGS");
-    addEntry(PropertyType.CONFIGS, 2, "/{clusterName}/CONFIGS/{scope}");
-    addEntry(PropertyType.CONFIGS, 3, "/{clusterName}/CONFIGS/{scope}/{scopeKey}");
-    // addEntry(PropertyType.CONFIGS,2,"/{clusterName}/CONFIGS/{instanceName}");
-    addEntry(PropertyType.LIVEINSTANCES, 1, "/{clusterName}/LIVEINSTANCES");
-    addEntry(PropertyType.LIVEINSTANCES, 2, "/{clusterName}/LIVEINSTANCES/{instanceName}");
-    addEntry(PropertyType.INSTANCES, 1, "/{clusterName}/INSTANCES");
-    addEntry(PropertyType.INSTANCES, 2, "/{clusterName}/INSTANCES/{instanceName}");
-    addEntry(PropertyType.IDEALSTATES, 1, "/{clusterName}/IDEALSTATES");
-    addEntry(PropertyType.IDEALSTATES, 2, "/{clusterName}/IDEALSTATES/{resourceName}");
-    addEntry(PropertyType.EXTERNALVIEW, 1, "/{clusterName}/EXTERNALVIEW");
-    addEntry(PropertyType.EXTERNALVIEW, 2, "/{clusterName}/EXTERNALVIEW/{resourceName}");
-    addEntry(PropertyType.STATEMODELDEFS, 1, "/{clusterName}/STATEMODELDEFS");
-    addEntry(PropertyType.STATEMODELDEFS, 2, "/{clusterName}/STATEMODELDEFS/{stateModelName}");
-    addEntry(PropertyType.CONTROLLER, 1, "/{clusterName}/CONTROLLER");
-    addEntry(PropertyType.PROPERTYSTORE, 1, "/{clusterName}/PROPERTYSTORE");
-    addEntry(PropertyType.HELIX_PROPERTYSTORE, 1, "/{clusterName}/HELIX_PROPERTYSTORE");
-
-    // INSTANCE
-    addEntry(PropertyType.MESSAGES, 2, "/{clusterName}/INSTANCES/{instanceName}/MESSAGES");
-    addEntry(PropertyType.MESSAGES, 3, "/{clusterName}/INSTANCES/{instanceName}/MESSAGES/{msgId}");
-    addEntry(PropertyType.CURRENTSTATES, 2, "/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES");
-    addEntry(PropertyType.CURRENTSTATES, 3,
-        "/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}");
-    addEntry(PropertyType.CURRENTSTATES, 4,
-        "/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}/{resourceName}");
-    addEntry(PropertyType.CURRENTSTATES, 5,
-        "/{clusterName}/INSTANCES/{instanceName}/CURRENTSTATES/{sessionId}/{resourceName}/{bucketName}");
-    addEntry(PropertyType.STATUSUPDATES, 2, "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES");
-    addEntry(PropertyType.STATUSUPDATES, 3,
-        "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}");
-    addEntry(PropertyType.STATUSUPDATES, 4,
-        "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}");
-    addEntry(PropertyType.STATUSUPDATES, 5,
-        "/{clusterName}/INSTANCES/{instanceName}/STATUSUPDATES/{sessionId}/{subPath}/{recordName}");
-    addEntry(PropertyType.ERRORS, 2, "/{clusterName}/INSTANCES/{instanceName}/ERRORS");
-    addEntry(PropertyType.ERRORS, 3, "/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}");
-    addEntry(PropertyType.ERRORS, 4,
-        "/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}/{subPath}");
-    addEntry(PropertyType.ERRORS, 5,
-        "/{clusterName}/INSTANCES/{instanceName}/ERRORS/{sessionId}/{subPath}/{recordName}");
-    addEntry(PropertyType.HEALTHREPORT, 2, "/{clusterName}/INSTANCES/{instanceName}/HEALTHREPORT");
-    addEntry(PropertyType.HEALTHREPORT, 3,
-        "/{clusterName}/INSTANCES/{instanceName}/HEALTHREPORT/{reportName}");
-    // CONTROLLER
-    addEntry(PropertyType.MESSAGES_CONTROLLER, 1, "/{clusterName}/CONTROLLER/MESSAGES");
-    addEntry(PropertyType.MESSAGES_CONTROLLER, 2, "/{clusterName}/CONTROLLER/MESSAGES/{msgId}");
-    addEntry(PropertyType.ERRORS_CONTROLLER, 1, "/{clusterName}/CONTROLLER/ERRORS");
-    addEntry(PropertyType.ERRORS_CONTROLLER, 2, "/{clusterName}/CONTROLLER/ERRORS/{errorId}");
-    addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 1, "/{clusterName}/CONTROLLER/STATUSUPDATES");
-    addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 2,
-        "/{clusterName}/CONTROLLER/STATUSUPDATES/{subPath}");
-    addEntry(PropertyType.STATUSUPDATES_CONTROLLER, 3,
-        "/{clusterName}/CONTROLLER/STATUSUPDATES/{subPath}/{recordName}");
-    addEntry(PropertyType.LEADER, 1, "/{clusterName}/CONTROLLER/LEADER");
-    addEntry(PropertyType.HISTORY, 1, "/{clusterName}/CONTROLLER/HISTORY");
-    addEntry(PropertyType.PAUSE, 1, "/{clusterName}/CONTROLLER/PAUSE");
-    addEntry(PropertyType.PERSISTENTSTATS, 1, "/{clusterName}/CONTROLLER/PERSISTENTSTATS");
-    addEntry(PropertyType.ALERTS, 1, "/{clusterName}/CONTROLLER/ALERTS");
-    addEntry(PropertyType.ALERT_STATUS, 1, "/{clusterName}/CONTROLLER/ALERT_STATUS");
-    addEntry(PropertyType.ALERT_HISTORY, 1, "/{clusterName}/CONTROLLER/ALERT_HISTORY");
-    // @formatter:on
-
-  }
-  static Pattern pattern = Pattern.compile("(\\{.+?\\})");
-
-  private static void addEntry(PropertyType type, int numKeys, String template)
-  {
-    if (!templateMap.containsKey(type))
-    {
-      templateMap.put(type, new HashMap<Integer, String>());
-    }
-    logger.trace("Adding template for type:" + type.getType() + " arguments:" + numKeys
-        + " template:" + template);
-    templateMap.get(type).put(numKeys, template);
-  }
-
-  public static String getPath(PropertyType type, String clusterName, String... keys)
-  {
-    if (clusterName == null)
-    {
-      logger.warn("ClusterName can't be null for type:" + type);
-      return null;
-    }
-    if (keys == null)
-    {
-      keys = new String[] {};
-    }
-    String template = null;
-    if (templateMap.containsKey(type))
-    {
-      // keys.length+1 since we add clusterName
-      template = templateMap.get(type).get(keys.length + 1);
-    }
-
-    String result = null;
-
-    if (template != null)
-    {
-      result = template;
-      Matcher matcher = pattern.matcher(template);
-      int count = 0;
-      while (matcher.find())
-      {
-        count = count + 1;
-        String var = matcher.group();
-        if (count == 1)
-        {
-          result = result.replace(var, clusterName);
-        } else
-        {
-          result = result.replace(var, keys[count - 2]);
-        }
-      }
-    }
-    if (result == null || result.indexOf('{') > -1 || result.indexOf('}') > -1)
-    {
-      logger.warn("Unable to instantiate template:" + template + " using clusterName:"
-          + clusterName + " and keys:" + Arrays.toString(keys));
-    }
-    return result;
-  }
-  public static String getInstanceNameFromPath(String path)
-  {
-    // path structure
-    // /<cluster_name>/instances/<instance_name>/[currentStates/messages]
-    if (path.contains("/" + PropertyType.INSTANCES + "/"))
-    {
-      String[] split = path.split("\\/");
-      if (split.length > 3)
-      {
-        return split[3];
-      }
-    }
-    return null;
-  }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/3cb7a1c9/helix-core/src/main/java/com/linkedin/helix/PropertyType.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/com/linkedin/helix/PropertyType.java b/helix-core/src/main/java/com/linkedin/helix/PropertyType.java
deleted file mode 100644
index 9b68d3a..0000000
--- a/helix-core/src/main/java/com/linkedin/helix/PropertyType.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- * Copyright (C) 2012 LinkedIn Inc <op...@linkedin.com>
- *
- * Licensed 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 com.linkedin.helix;
-
-
-enum Type
-{
-  CLUSTER, INSTANCE, CONTROLLER, RESOURCE;
-}
-
-public enum PropertyType
-{
-
-  // @formatter:off
-  // CLUSTER PROPERTIES
-  CONFIGS(Type.CLUSTER, true, false, false, false, true),
-  LIVEINSTANCES(Type.CLUSTER, false, false, false, true, true),
-  INSTANCES(Type.CLUSTER, true, false),
-  IDEALSTATES(Type.CLUSTER, true, false, false, false, true),
-  EXTERNALVIEW(Type.CLUSTER, true, false),
-  STATEMODELDEFS(Type.CLUSTER, true, false, false, false, true),
-  CONTROLLER(Type.CLUSTER, true, false),
-  PROPERTYSTORE(Type.CLUSTER, true, false),
-  HELIX_PROPERTYSTORE(Type.CLUSTER, true, false),
-
-  // INSTANCE PROPERTIES
-  MESSAGES(Type.INSTANCE, true, true, true),
-  CURRENTSTATES(Type.INSTANCE, true, true, false, false, true),
-  STATUSUPDATES(Type.INSTANCE, true, true, false, false, false, true),
-  ERRORS(Type.INSTANCE, true, true),
-  HEALTHREPORT(Type.INSTANCE, true, false, false, false, false, true),
-
-  // CONTROLLER PROPERTY
-  LEADER(Type.CONTROLLER, false, false, true, true),
-  HISTORY(Type.CONTROLLER, true, true, true),
-  PAUSE(Type.CONTROLLER, true, false, true),
-  MESSAGES_CONTROLLER(Type.CONTROLLER, true, false, true),
-  STATUSUPDATES_CONTROLLER(Type.CONTROLLER, true, true, true),
-  ERRORS_CONTROLLER(Type.CONTROLLER, true, true, true),
-  PERSISTENTSTATS(Type.CONTROLLER, true, false, false, false),
-  ALERTS(Type.CONTROLLER, true, false, false, false),
-  ALERT_STATUS(Type.CONTROLLER, true, false, false, false),
-  ALERT_HISTORY(Type.CONTROLLER, true, false, false, false);
-
-  // @formatter:on
-
-  Type    type;
-  
-  boolean isPersistent;
-
-  boolean mergeOnUpdate;
-
-  boolean updateOnlyOnExists;
-
-  boolean createOnlyIfAbsent;
-
-  /**
-   * "isCached" defines whether the property is cached in data accessor if data is cached,
-   * then read from zk can be optimized
-   */
-  boolean isCached;
-
-  boolean usePropertyTransferServer;
-
-  private PropertyType(Type type, boolean isPersistent, boolean mergeOnUpdate)
-  {
-    this(type, isPersistent, mergeOnUpdate, false);
-  }
-
-  private PropertyType(Type type,
-                       boolean isPersistent,
-                       boolean mergeOnUpdate,
-                       boolean updateOnlyOnExists)
-  {
-    this(type, isPersistent, mergeOnUpdate, false, false);
-  }
-
-  private PropertyType(Type type,
-                       boolean isPersistent,
-                       boolean mergeOnUpdate,
-                       boolean updateOnlyOnExists,
-                       boolean createOnlyIfAbsent)
-  {
-    this(type, isPersistent, mergeOnUpdate, updateOnlyOnExists, createOnlyIfAbsent, false);
-  }
-
-  private PropertyType(Type type,
-                       boolean isPersistent,
-                       boolean mergeOnUpdate,
-                       boolean updateOnlyOnExists,
-                       boolean createOnlyIfAbsent,
-                       boolean isCached)
-  {
-    this(type,
-         isPersistent,
-         mergeOnUpdate,
-         updateOnlyOnExists,
-         createOnlyIfAbsent,
-         isCached,
-         false);
-  }
-
-  private PropertyType(Type type,
-                       boolean isPersistent,
-                       boolean mergeOnUpdate,
-                       boolean updateOnlyOnExists,
-                       boolean createOnlyIfAbsent,
-                       boolean isCached,
-                       boolean isAsyncWrite)
-  {
-    this.type = type;
-    this.isPersistent = isPersistent;
-    this.mergeOnUpdate = mergeOnUpdate;
-    this.updateOnlyOnExists = updateOnlyOnExists;
-    this.createOnlyIfAbsent = createOnlyIfAbsent;
-    this.isCached = isCached;
-    this.usePropertyTransferServer = isAsyncWrite;
-  }
-
-  public boolean isCreateOnlyIfAbsent()
-  {
-    return createOnlyIfAbsent;
-  }
-
-  public void setCreateIfAbsent(boolean createIfAbsent)
-  {
-    this.createOnlyIfAbsent = createIfAbsent;
-  }
-
-  public Type getType()
-  {
-    return type;
-  }
-
-  public void setType(Type type)
-  {
-    this.type = type;
-  }
-
-  public boolean isPersistent()
-  {
-    return isPersistent;
-  }
-
-  public void setPersistent(boolean isPersistent)
-  {
-    this.isPersistent = isPersistent;
-  }
-
-  public boolean isMergeOnUpdate()
-  {
-    return mergeOnUpdate;
-  }
-
-  public void setMergeOnUpdate(boolean mergeOnUpdate)
-  {
-    this.mergeOnUpdate = mergeOnUpdate;
-  }
-
-  public boolean isUpdateOnlyOnExists()
-  {
-    return updateOnlyOnExists;
-  }
-
-  public void setUpdateOnlyOnExists(boolean updateOnlyOnExists)
-  {
-    this.updateOnlyOnExists = updateOnlyOnExists;
-  }
-
-  public boolean isCached()
-  {
-    return isCached;
-  }
-
-  public boolean usePropertyTransferServer()
-  {
-    return usePropertyTransferServer;
-  }
-
-}