use of org.apache.felix.scr.annotations.Activate in project stanbol by apache.
the class EntityhubComponent method activate.
@Activate
protected void activate(final ComponentContext context) throws ConfigurationException {
this.bc = context.getBundleContext();
Dictionary<?, ?> properties = context.getProperties();
log.info("Activate Entityhub Component:");
this.entityhubID = OsgiUtils.checkProperty(properties, ID).toString();
if (entityhubID == null || entityhubID.isEmpty()) {
throw new ConfigurationException(ID, "The id for the Entityhub MUST NOT be empty!");
} else {
log.debug(" + id: {}", entityhubID);
}
this.entityhubName = OsgiUtils.checkProperty(properties, NAME, this.entityhubID).toString();
if (entityhubName.isEmpty()) {
throw new ConfigurationException(NAME, "The name for the Entityhub MUST NOT be empty!");
} else {
log.debug(" + name: {}", entityhubName);
}
Object entityhubDescriptionObject = properties.get(DESCRIPTION);
this.entityhubDescription = entityhubDescriptionObject == null ? null : entityhubDescriptionObject.toString();
log.debug(" + description: {}", entityhubDescription == null ? "<none>" : entityhubDescription);
this.entityhubPrefix = OsgiUtils.checkProperty(properties, PREFIX).toString();
if (entityhubPrefix.isEmpty()) {
throw new ConfigurationException(PREFIX, "The UIR preix for the Entityub MUST NOT be empty!");
}
try {
new URI(entityhubPrefix);
log.info(" + prefix: " + entityhubPrefix);
} catch (URISyntaxException e) {
throw new ConfigurationException(PREFIX, "The URI prefix for the Entityhub " + "MUST BE an valid URI (prefix=" + entityhubPrefix + ")", e);
}
Object defaultSymbolState = properties.get(DEFAULT_SYMBOL_STATE);
if (defaultSymbolState == null) {
this.defaultSymblStateString = ManagedEntity.DEFAULT_SYMBOL_STATE.name();
} else {
this.defaultSymblStateString = defaultSymbolState.toString();
}
Object defaultMappingState = properties.get(DEFAULT_MAPPING_STATE);
if (defaultMappingState == null) {
this.defaultMappingStateString = EntityMapping.DEFAULT_MAPPING_STATE.name();
} else {
this.defaultMappingStateString = defaultMappingState.toString();
}
Object fieldMappingConfigObject = OsgiUtils.checkProperty(properties, FIELD_MAPPINGS);
if (fieldMappingConfigObject instanceof String[]) {
this.fieldMappingConfig = (String[]) fieldMappingConfigObject;
} else {
throw new ConfigurationException(FIELD_MAPPINGS, "Values for this property must be of type Stirng[]!");
}
String entityhubYardId = OsgiUtils.checkProperty(properties, ENTITYHUB_YARD_ID).toString();
String filterString = String.format("(&(%s=%s)(%s=%s))", Constants.OBJECTCLASS, Yard.class.getName(), Yard.ID, entityhubYardId);
log.debug(" ... tracking EntityhubYard by Filter:" + filterString);
Filter filter;
try {
filter = context.getBundleContext().createFilter(filterString);
} catch (InvalidSyntaxException e) {
throw new ConfigurationException(ENTITYHUB_YARD_ID, "Unable to parse OSGI filter '" + filterString + "' for configured Yard id '" + entityhubYardId + "'!", e);
}
entityhubYardTracker = new ServiceTracker(context.getBundleContext(), filter, new ServiceTrackerCustomizer() {
final BundleContext bc = context.getBundleContext();
@Override
public void removedService(ServiceReference reference, Object service) {
if (service.equals(entityhubYard)) {
entityhubYard = (Yard) entityhubYardTracker.getService();
updateServiceRegistration(bc, entityhubYard, siteManager, nsPrefixService);
}
bc.ungetService(reference);
}
@Override
public void modifiedService(ServiceReference reference, Object service) {
// the service.ranking might have changed ... so check if the
// top ranked yard is a different one
Yard newYard = (Yard) entityhubYardTracker.getService();
if (newYard == null || !newYard.equals(entityhubYard)) {
// set the new yard
entityhubYard = newYard;
// and update the service registration
updateServiceRegistration(bc, entityhubYard, siteManager, nsPrefixService);
}
}
@Override
public Object addingService(ServiceReference reference) {
Object service = bc.getService(reference);
if (service != null) {
if (// the first added Service or
entityhubYardTracker.getServiceReference() == null || // the new service as higher ranking as the current
(reference.compareTo(entityhubYardTracker.getServiceReference()) > 0)) {
entityhubYard = (Yard) service;
updateServiceRegistration(bc, entityhubYard, siteManager, nsPrefixService);
}
// else the new service has lower ranking as the currently use one
}
// else service == null -> ignore
return service;
}
});
// start the tracking
entityhubYardTracker.open();
}
use of org.apache.felix.scr.annotations.Activate in project stanbol by apache.
the class SolrDispatchFilterComponent method activate.
@Activate
protected void activate(ComponentContext context) throws ConfigurationException, ServletException {
this.context = context;
BundleContext bc = context.getBundleContext();
Object value = context.getProperties().get(PROPERTY_SERVER_NAME);
if (value == null || value.toString().isEmpty()) {
throw new ConfigurationException(PROPERTY_SERVER_NAME, "The configured CoreContainer name MUST NOT be NULL nor empty!");
}
serverName = value.toString();
String filterString = String.format("(&(%s=%s)(%s=%s))", Constants.OBJECTCLASS, CoreContainer.class.getName(), SolrConstants.PROPERTY_SERVER_NAME, serverName);
try {
tracker = new ServiceTracker(bc, bc.createFilter(filterString), trackerCustomizer);
} catch (InvalidSyntaxException e) {
throw new ConfigurationException(PROPERTY_SERVER_NAME, "Unable to build Filter for parsed CoreContainer name '" + serverName + "'", e);
}
value = context.getProperties().get(PROPERTY_PREFIX_PATH);
final String prefixPath;
if (value != null) {
prefix = value.toString();
if (prefix.charAt(0) != '/') {
prefix = '/' + prefix;
}
prefixPath = prefix;
if (!prefix.endsWith("*")) {
// TODO: check if this is a good idea
prefix = prefix + "/.*";
}
} else {
prefixPath = null;
prefix = "/.*";
}
filterPrpoerties = new Hashtable<String, Object>();
if (prefixPath != null) {
filterPrpoerties.put("path-prefix", prefixPath);
}
// now start tracking! ...
// ... as soon as the first CoreContainer is tracked the Filter will
// be created and added to the ExtHttpService
tracker.open();
}
use of org.apache.felix.scr.annotations.Activate in project stanbol by apache.
the class DirectoryDataFileProvider method activate.
@Activate
protected void activate(ComponentContext ctx) throws ConfigurationException {
String folderName = requireProperty(ctx.getProperties(), DATA_FILES_FOLDER_PROP, String.class);
dataFilesFolder = new File(folderName);
if (!dataFilesFolder.exists()) {
if (!dataFilesFolder.mkdirs()) {
throw new ConfigurationException(DATA_FILES_FOLDER_PROP, "Unable to create the configured Directory " + dataFilesFolder);
}
} else if (!dataFilesFolder.isDirectory()) {
throw new ConfigurationException(DATA_FILES_FOLDER_PROP, "The configured DataFile directory " + dataFilesFolder + " does already exists but is not a directory!");
}
// else exists and is a directory!
}
use of org.apache.felix.scr.annotations.Activate in project stanbol by apache.
the class ValueTypeParserRegistry method activate.
@Activate
protected void activate(ComponentContext ctx) {
inOsgi = true;
final BundleContext bc = ctx.getBundleContext();
parserTracker = new ServiceTracker(bc, ValueTypeParser.class.getName(), new ParserTracker(bc));
// NOTE: do not open within activate(..) because of
// org.apache.stanbol.enhancer.nlp.json FrameworkEvent
// ERROR (org.osgi.framework.ServiceException:
// ServiceFactory.getService() resulted in a cycle.)
}
use of org.apache.felix.scr.annotations.Activate in project stanbol by apache.
the class ValueTypeSerializerRegistry method activate.
@Activate
protected void activate(ComponentContext ctx) {
inOsgi = true;
final BundleContext bc = ctx.getBundleContext();
serializerTracker = new ServiceTracker(bc, ValueTypeSerializer.class.getName(), new SerializerTracker(bc));
// NOTE: do not open within activate(..) because of
// org.apache.stanbol.enhancer.nlp.json FrameworkEvent
// ERROR (org.osgi.framework.ServiceException:
// ServiceFactory.getService() resulted in a cycle.)
// serializerTracker.open();
}
Aggregations