/******************************************************************************
* Copyright (c) 2006, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0
* is available at http://www.opensource.org/licenses/apache2.0.php.
* You may elect to redistribute this code under either of these licenses.
*
* Contributors:
* VMware Inc.
*****************************************************************************/
package org.eclipse.gemini.blueprint.extender.internal.blueprint.activator.support;
import java.util.Dictionary;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.Bundle;
import org.eclipse.gemini.blueprint.extender.support.ApplicationContextConfiguration;
import org.eclipse.gemini.blueprint.extender.support.internal.ConfigUtils;
import org.eclipse.gemini.blueprint.util.OsgiStringUtils;
/**
* Extension to the default {@link ApplicationContextConfiguration} that overrides Spring DM settings with RFC 124.
*
* @author Costin Leau
*
*/
public class BlueprintContainerConfig extends ApplicationContextConfiguration {
/** logger */
private static final Log log = LogFactory.getLog(BlueprintContainerConfig.class);
private final long timeout;
private final boolean createAsync;
private final boolean waitForDep;
private final boolean publishContext;
private final boolean hasTimeout;
private final String toString;
public BlueprintContainerConfig(Bundle bundle) {
super(bundle, new BlueprintConfigurationScanner());
Dictionary headers = bundle.getHeaders();
hasTimeout = BlueprintConfigUtils.hasTimeout(headers);
long option = BlueprintConfigUtils.getTimeOut(headers);
// no need to translate into ms
timeout = (option >= 0 ? option : ConfigUtils.DIRECTIVE_TIMEOUT_DEFAULT * 1000);
createAsync = BlueprintConfigUtils.getCreateAsync(headers);
waitForDep = BlueprintConfigUtils.getWaitForDependencies(headers);
publishContext = BlueprintConfigUtils.getPublishContext(headers);
StringBuilder buf = new StringBuilder();
buf.append("Blueprint Config [Bundle=");
buf.append(OsgiStringUtils.nullSafeSymbolicName(bundle));
buf.append("]isBlueprintBundle=");
buf.append(isSpringPoweredBundle());
buf.append("|async=");
buf.append(createAsync);
buf.append("|graceperiod=");
buf.append(waitForDep);
buf.append("|publishCtx=");
buf.append(publishContext);
buf.append("|timeout=");
buf.append(timeout);
buf.append("ms");
toString = buf.toString();
if (log.isTraceEnabled()) {
log.trace("Configuration: " + toString);
}
}
@Override
public boolean isTimeoutDeclared() {
return hasTimeout;
}
public long getTimeout() {
return timeout;
}
public boolean isCreateAsynchronously() {
return createAsync;
}
public boolean isWaitForDependencies() {
return waitForDep;
}
public boolean isPublishContextAsService() {
return publishContext;
}
public String toString() {
return toString;
}
}