blob: 0714ea550b4feb6482a79bd096c0f11021a29823 [file] [log] [blame]
/******************************************************************************
* 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.config.internal;
import org.eclipse.gemini.blueprint.config.internal.util.ReferenceParsingUtil;
import org.eclipse.gemini.blueprint.service.importer.support.Availability;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Class containing osgi defaults.
*
* @author Costin Leau
*
*/
public class OsgiDefaultsDefinition {
private static final String SDM_NS = "http://www.springframework.org/schema/osgi";
private static final String EGB_NS = "http://www.eclipse.org/gemini/blueprint/schema/blueprint";
private static final String DEFAULT_TIMEOUT = "default-timeout";
private static final String DEFAULT_AVAILABILITY = "default-availability";
private static final String DEFAULT_CARDINALITY = "default-cardinality";
private static final String TIMEOUT_DEFAULT = "300000";
/** Default value */
private String timeout = TIMEOUT_DEFAULT;
/** Default value */
private Availability availability = Availability.MANDATORY;
public OsgiDefaultsDefinition(Document document, ParserContext parserContext) {
Assert.notNull(document);
Element root = document.getDocumentElement();
ReferenceParsingUtil.checkAvailabilityAndCardinalityDuplication(root, DEFAULT_AVAILABILITY,
DEFAULT_CARDINALITY, parserContext);
parseDefaults(root, EGB_NS);
parseDefaults(root, SDM_NS);
}
private void parseDefaults(Element root, String namespace) {
String timeout = getAttribute(root, namespace, DEFAULT_TIMEOUT);
if (StringUtils.hasText(timeout)) {
setTimeout(timeout);
}
String availability = getAttribute(root, namespace, DEFAULT_AVAILABILITY);
if (StringUtils.hasText(availability)) {
setAvailability(ReferenceParsingUtil.determineAvailability(availability));
}
String cardinality = getAttribute(root, namespace, DEFAULT_CARDINALITY);
if (StringUtils.hasText(cardinality)) {
setAvailability(ReferenceParsingUtil.determineAvailabilityFromCardinality(cardinality));
}
}
public String getTimeout() {
return timeout;
}
protected void setTimeout(String timeout) {
this.timeout = timeout;
}
public Availability getAvailability() {
return availability;
}
protected void setAvailability(Availability availability) {
this.availability = availability;
}
protected String getAttribute(Element root, String ns, String attributeName) {
String value = root.getAttributeNS(ns, attributeName);
return (!StringUtils.hasText(value) ? root.getAttribute(attributeName) : value);
}
}