/*
* Copyright to the original author or authors.
*
* 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 org.rioproject.cybernode.service;
import net.jini.export.Exporter;
import net.jini.id.Uuid;
import net.jini.id.UuidFactory;
import net.jini.security.TrustVerifier;
import net.jini.security.proxytrust.ServerProxyTrust;
import org.rioproject.admin.ServiceAdmin;
import org.rioproject.impl.admin.ServiceAdminImpl;
import org.rioproject.cybernode.CybernodeAdmin;
import org.rioproject.impl.container.ServiceBeanDelegate;
import org.rioproject.cybernode.proxy.CybernodeAdminProxy;
import org.rioproject.impl.persistence.SnapshotHandler;
import org.rioproject.system.ComputeResourceUtilization;
import org.rioproject.system.ResourceCapability;
import java.io.IOException;
import java.rmi.RemoteException;
/**
* The CybernodeAdminImpl class implements the ServiceAdmin interface providing
* administrative support for ServiceProducer implementations.
*
* @author Dennis Reedy
*/
public class CybernodeAdminImpl extends ServiceAdminImpl implements CybernodeAdmin, ServerProxyTrust {
/** Reference to the backend */
CybernodeImpl backend;
CybernodeAdmin remoteRef;
int registryPort;
/**
* Create a CybernodeAdminImpl
*
* @param service Concrete implementation of a ServiceBeanAdapter
* @param exporter The Exporter to export this object
*/
public CybernodeAdminImpl(CybernodeImpl service, Exporter exporter) {
this(service, exporter, null);
}
/**
* Create a CybernodeAdminImpl
*
* @param service The CybernodeImpl
* @param exporter The Exporter to export this object
* @param snapshotHandler The service's snapshot handler used for
* persistence
*/
public CybernodeAdminImpl(CybernodeImpl service,
Exporter exporter,
SnapshotHandler snapshotHandler) {
super(service, exporter, snapshotHandler);
backend = service;
}
/**
* Override parents getServiceAdmin method
*/
public ServiceAdmin getServiceAdmin() throws RemoteException {
if(adminProxy == null) {
remoteRef = (CybernodeAdmin)exporter.export(this);
adminProxy = CybernodeAdminProxy.getInstance(remoteRef, UuidFactory.generate());
}
return (adminProxy);
}
/* (non-Javadoc)
* @see org.rioproject.cybernode.CybernodeAdmin#getServiceLimit()
*/
public Integer getServiceLimit() {
return(backend.getServiceLimit());
}
/* (non-Javadoc)
* @see org.rioproject.cybernode.CybernodeAdmin#setServiceLimit(java.lang.Integer)
*/
public void setServiceLimit(Integer count) {
backend.setServiceLimit(count);
}
/* (non-Javadoc)
* @see org.rioproject.cybernode.CybernodeAdmin#getServiceCount()
*/
public Integer getServiceCount() {
return(backend.getServiceCount());
}
public int getRegistryPort() {
return registryPort;
}
void setRegistryPort(int registryPort) {
this.registryPort = registryPort;
}
/* (non-Javadoc)
* @see org.rioproject.cybernode.CybernodeAdmin#getPersistentProvisioning()
*/
public boolean getPersistentProvisioning() {
return(backend.getPersistentProvisioning());
}
/* (non-Javadoc)
* @see org.rioproject.cybernode.CybernodeAdmin#setPersistentProvisioning(boolean)
*/
public void setPersistentProvisioning(boolean support) throws IOException {
backend.setPersistentProvisioning(support);
}
/* (non-Javadoc)
* @see org.rioproject.system.ComputeResourceAdmin#getResourceCapability()
*/
public ResourceCapability getResourceCapability() throws RemoteException {
return backend.getComputeResource().getResourceCapability();
}
/*
* (non-Javadoc)
*
* @see org.rioproject.system.ComputeResourceAdmin#getComputeResourceUtilization()
*/
public ComputeResourceUtilization getComputeResourceUtilization() {
return (backend.getComputeResource().getComputeResourceUtilization());
}
public ComputeResourceUtilization getComputeResourceUtilization(Uuid serviceUuid) {
ComputeResourceUtilization cru = null;
ServiceBeanDelegate delegate =
backend.getServiceBeanContainer().getServiceBeanDelegate(serviceUuid);
if(delegate!=null)
cru = delegate.getComputeResourceUtilization();
return cru;
}
public TrustVerifier getProxyVerifier() throws RemoteException {
return(new CybernodeAdminProxy.Verifier(remoteRef));
}
}