41 lines
1.4 KiB
Java
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;
|
|
}
|
|
|
|
}
|