| /** |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.aries.blueprint; |
| |
| import java.net.URI; |
| import java.util.Set; |
| |
| import org.osgi.service.blueprint.reflect.ComponentMetadata; |
| import org.osgi.service.blueprint.reflect.Metadata; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| |
| public interface ParserContext { |
| /** |
| * Returns the DOM Node that was passed to the NamespaceHandler call for which |
| * this ParserContext instance was created. |
| */ |
| Node getSourceNode(); |
| |
| ComponentDefinitionRegistry getComponentDefinitionRegistry(); |
| |
| /** |
| * Retrieve the <code>ComponentMetadata</code> of the component that |
| * encloses the current <code>Node</code> that is to be parsed by a |
| * namespace handler. |
| * |
| * In case of top-level components this method will return <code>null</code>. |
| * @return the enclosing component's metadata or null if there is no enclosing component |
| */ |
| ComponentMetadata getEnclosingComponent(); |
| |
| /** |
| * Create a new metadata instance of the given type. The returned |
| * object will also implement the appropriate <code>MutableComponentMetadata</code> |
| * interface, so as to allow the caller to set the properties of the |
| * metadata. |
| * |
| * Note that the returned object may not be initialised, so callers |
| * should take care to assure every property needed by the blueprint |
| * extender is set. |
| * |
| * @param type the class of the Metadata object to create |
| * @param <T> The expected Metadata type to be created |
| * @return a new instance |
| */ |
| <T extends Metadata> T createMetadata(Class<T> type); |
| |
| /** |
| * Invoke the blueprint parser to parse a DOM element. |
| * @param type the class of the Metadata type to be parsed |
| * @param enclosingComponent The component metadata that contains the Element |
| * to be parsed |
| * @param element The DOM element that is to be parsed |
| * @param <T> The expected metadata type to be parsed |
| */ |
| <T> T parseElement(Class<T> type, ComponentMetadata enclosingComponent, Element element); |
| |
| /** |
| * Generate a unique id following the same scheme that the blueprint container |
| * uses internally |
| */ |
| String generateId(); |
| |
| /** |
| * Get the default activation setting for the current blueprint file |
| */ |
| String getDefaultActivation(); |
| |
| /** |
| * Get the default availability setting for the current blueprint file |
| */ |
| String getDefaultAvailability(); |
| |
| /** |
| * Get the default timeout setting for the current blueprint file |
| */ |
| String getDefaultTimeout(); |
| |
| /** |
| * Retrieve the set of namespaces |
| */ |
| Set<URI> getNamespaces(); |
| |
| /** |
| * Retrieve the namespace handler for the given uri |
| */ |
| NamespaceHandler getNamespaceHandler(URI namespaceUri); |
| } |
| |