public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception { final Reference reference = (Reference) obj; final ResourceAdaptorSbbInterfaceRefAddr refAddr = (ResourceAdaptorSbbInterfaceRefAddr) reference.get(0); final ResourceAdaptorTypeID resourceAdaptorTypeID = refAddr.content.resourceAdaptorTypeID; final String raLink = refAddr.content.raLink; final ResourceManagement resourceManagement = SleeContainer.lookupFromJndi().getResourceManagement(); final ResourceAdaptorEntity raEntity = resourceManagement .getResourceAdaptorEntity(resourceManagement .getResourceAdaptorEntityName(raLink)); return raEntity.getResourceAdaptorInterface(resourceAdaptorTypeID); }
@Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { // read ra entity name final String raEntityName = in.readUTF(); // read activity handle this.raEntity = SleeContainer.lookupFromJndi().getResourceManagement() .getResourceAdaptorEntity(raEntityName); if (raEntity == null) { throw new IOException("RA Entity with name " + raEntityName + " not found."); } // read activity handle boolean handleReference = in.readBoolean(); if (handleReference) { // a reference activityHandle = new ActivityHandleReference(null, (Address) in.readObject(), in.readUTF()); } else { final Marshaler marshaler = raEntity.getMarshaler(); if (marshaler != null) { activityHandle = marshaler.unmarshalHandle(in); } else { throw new IOException("marshaller from RA is null"); } } }
@Override public void invoke() throws Exception { final ResourceManagement resourceManagement = getResourceManagement(); final ResourceAdaptorEntity resourceAdaptorEntity = resourceManagement.getResourceAdaptorEntity(raEntityName); if (resourceAdaptorEntity != null) { // deactivate if needed if (resourceAdaptorEntity.getState() == ResourceAdaptorEntityState.ACTIVE) { resourceManagement.deactivateResourceAdaptorEntity(raEntityName); } // continue once entity is inactive while(resourceAdaptorEntity.getState() != ResourceAdaptorEntityState.INACTIVE) { try { Thread.sleep(1000); } catch (Exception e) { // ignore } } } }
public Object getResourceAdaptorInterface(ResourceAdaptorTypeID raTypeID, String raLink) throws NullPointerException, IllegalArgumentException { if (raTypeID == null) { throw new NullPointerException("null ra type id"); } if (raLink == null) { throw new NullPointerException("null ra link"); } if (!sbbObject.getSbbComponent().getDependenciesSet().contains(raTypeID)) { throw new IllegalArgumentException("ra type "+raTypeID+" not referred by the sbb."); } final ResourceManagement resourceManagement = sleeContainer.getResourceManagement(); String raEntityName = null; try { raEntityName = resourceManagement.getResourceAdaptorEntityName(raLink); } catch (UnrecognizedLinkNameException e) { throw new IllegalArgumentException("ra link "+raLink+" not found."); } return resourceManagement.getResourceAdaptorEntity(raEntityName).getResourceAdaptorInterface(raTypeID); }
public static ActivityContextHandle decode(JmxActivityContextHandle jmxach, SleeContainer sleeContainer) { final ActivityHandle activityHandle = StringToHandle(jmxach.getActivityHandleBase64()); switch (jmxach.getActivityType()) { case RA: final String raEntityName = jmxach.getActivitySource(); final ResourceAdaptorEntity raEntity = sleeContainer.getResourceManagement().getResourceAdaptorEntity(raEntityName); if (raEntity != null) { return raEntity.getActivityContextHandle(activityHandle); } else { throw new IllegalArgumentException("unable to recreate activity context handle, the ra entity not found"); } case PTABLE: return ((ProfileTableActivityHandle) activityHandle).getActivityContextHandle(); case SERVICE: return ((ServiceActivityHandle) activityHandle).getActivityContextHandle(); case NULL: return new NullActivityContextHandle((NullActivityHandleImpl) activityHandle); default: throw new IllegalArgumentException("unexpected activity type"); } }
.getResourceAdaptorEntity(resourceManagement .getResourceAdaptorEntityName(linkName));
for (String raEntityName : resourceManagement .getResourceAdaptorEntities()) { resourceManagement.getResourceAdaptorEntity(raEntityName) .serviceInactive(serviceComponent.getServiceID());
for (String raEntityName : resourceManagement .getResourceAdaptorEntities()) { resourceManagement.getResourceAdaptorEntity(raEntityName) .serviceActive(serviceID);
for (String raEntityName : resourceManagement .getResourceAdaptorEntities()) { resourceManagement.getResourceAdaptorEntity(raEntityName) .serviceStopping(serviceID); resourceManagement.getResourceAdaptorEntity(raEntityName) .serviceInactive(serviceID);