/****************************************************************************** | |
* 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); | |
} | |
} |