dnet-core/dnet-core-components/src/main/java/eu/dnetlib/enabling/tools/registration/BlackboardServiceRegistrato...

41 lines
1.4 KiB
Java

package eu.dnetlib.enabling.tools.registration;
import javax.xml.ws.Endpoint;
import eu.dnetlib.enabling.is.lookup.rmi.ISLookUpService;
import eu.dnetlib.enabling.is.sn.rmi.ISSNService;
import eu.dnetlib.enabling.tools.OpaqueResource;
import eu.dnetlib.enabling.tools.StringOpaqueResource;
/**
* This service registrator also subscribes the service to it's own blackboard.
*
* XXX: this class is a hack. It only works with the ValidatingServiceRegistrationManager
*
* @author marko
*
*/
public class BlackboardServiceRegistrator extends ServiceRegistrator {
/**
* {@inheritDoc}
*
* @see eu.dnetlib.enabling.tools.registration.ServiceRegistrator#validateProfile(java.lang.String)
*/
@Override
public String validateProfile(final String profId, final Endpoint endpoint) {
final String profileId = super.validateProfile(profId, endpoint);
try {
final OpaqueResource serviceProfile = new StringOpaqueResource(getServiceLocator().getService(ISLookUpService.class).getResourceProfile(profileId));
getServiceLocator().getService(ISSNService.class, true).subscribe(getEprBuilder().getEndpointReference(endpoint),
"UPDATE/" + serviceProfile.getResourceType() + "/" + profileId + "/RESOURCE_PROFILE/BODY/BLACKBOARD/LAST_REQUEST", 0);
} catch (Exception e) {
throw new IllegalStateException("cannot validate service profile", e);
}
return profileId;
}
}