Package org.platformlayer.service.network.ops

Source Code of org.platformlayer.service.network.ops.MachineResolver

package org.platformlayer.service.network.ops;

import javax.inject.Inject;

import org.platformlayer.core.model.ItemBase;
import org.platformlayer.core.model.PlatformLayerKey;
import org.platformlayer.ops.BindingScope;
import org.platformlayer.ops.CustomRecursor;
import org.platformlayer.ops.Handler;
import org.platformlayer.ops.Machine;
import org.platformlayer.ops.OperationRecursor;
import org.platformlayer.ops.OpsContext;
import org.platformlayer.ops.OpsException;
import org.platformlayer.ops.OpsTarget;
import org.platformlayer.ops.helpers.InstanceHelpers;
import org.platformlayer.ops.machines.PlatformLayerHelpers;
import org.platformlayer.ops.tree.OpsTreeBase;

public class MachineResolver extends OpsTreeBase implements CustomRecursor {

  public PlatformLayerKey key;

  @Inject
  PlatformLayerHelpers platformLayerHelpers;

  @Inject
  InstanceHelpers instanceHelpers;

  @Override
  protected void addChildren() throws OpsException {

  }

  @Handler
  public void handler() {
  }

  public static MachineResolver build(PlatformLayerKey key) {
    if (key == null) {
      throw new IllegalArgumentException();
    }
    MachineResolver resolver = injected(MachineResolver.class);
    resolver.key = key;
    return resolver;
  }

  @Override
  public void doRecurseOperation() throws OpsException {
    ItemBase dest = platformLayerHelpers.getItem(key);

    boolean required = !OpsContext.isDelete();
    for (Machine machine : instanceHelpers.getMachines(dest, required)) {
      OpsTarget target = instanceHelpers.getTarget(dest, machine);

      BindingScope scope = BindingScope.push(machine, target);
      try {
        OpsContext opsContext = OpsContext.get();
        OperationRecursor.doRecurseChildren(opsContext, this);
      } finally {
        scope.pop();
      }
    }
  }

}
TOP

Related Classes of org.platformlayer.service.network.ops.MachineResolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.