[jboss-cvs] JBossAS SVN: r88808 - in projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service: blueprint and 4 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed May 13 07:50:27 EDT 2009
Author: thomas.diesler at jboss.com
Date: 2009-05-13 07:50:27 -0400 (Wed, 13 May 2009)
New Revision: 88808
Added:
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContext.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContextListener.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ComponentDefinitionException.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/EventConstants.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/NoSuchComponentException.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ServiceUnavailableException.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/package.html
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/packageinfo
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/ConversionService.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/Converter.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/package.html
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/packageinfo
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentDefinitionRegistry.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentNameAlreadyInUseException.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/NamespaceHandler.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ParserContext.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/package.html
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/packageinfo
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanArgument.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanProperty.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/CollectionMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ComponentMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/IdRefMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Listener.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapEntry.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Metadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NonNullMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NullMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/PropsMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefCollectionMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ReferenceMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RegistrationListener.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceReferenceMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Target.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ValueMetadata.java
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/package.html
projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/packageinfo
Log:
update blueprint api
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContext.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContext.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContext.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+import java.util.Collection;
+import java.util.Set;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+
+/**
+ * BlueprintContext providing access to the components, service exports, and
+ * service references of a bundle using blueprint services. Only bundles in the
+ * ACTIVE state may have an associated BlueprintContext. A given BundleContext
+ * has at most one associated BlueprintContext.
+ *
+ * An instance of BlueprintContext may be obtained from within a blueprint context by
+ * injecting the predefined "blueprintContext" component.
+ * Alternatively you can look up BlueprintContext services in the service registry.
+ * The Constants.BUNDLE_SYMBOLICNAME and Constants.BUNDLE_VERSION service
+ * properties can be used to determine which bundle the published BlueprintContext
+ * service is associated with.
+ *
+ * A BlueprintContext implementation must support safe concurrent access. It is
+ * legal for the set of named components and component metadata to change
+ * between invocations on the same thread if another thread is concurrently
+ * modifying the same mutable BlueprintContext implementation object.
+ *
+ * @see org.osgi.framework.Constants
+ *
+ */
+public interface BlueprintContext {
+
+ /**
+ * reason code for destroy method callback of a managed service factory
+ * created component, when the component is being disposed because the
+ * corresponding configuration admin object was deleted.
+ */
+ static final int CONFIGURATION_ADMIN_OBJECT_DELETED = 1;
+
+ /**
+ * reason code for destroy method callback of a managed service factory
+ * created component, when the component is being disposed because the
+ * bundle is being stopped.
+ */
+ static final int BUNDLE_STOPPING = 2;
+
+ /**
+ * The set of component names recognized by the blueprint context.
+ *
+ * @return an immutable set (of Strings) containing the names of all of the components within the
+ * context.
+ */
+ Set getComponentNames();
+
+ /**
+ * Get the component instance for a given named component. If the component has
+ * not yet been instantiated, calling this operation will cause the component instance
+ * to be created and initialized. If the component
+ * has a prototype scope then each call to getComponent will return a new
+ * component instance. If the component has a bundle scope then the component
+ * instance returned will be the instance for the caller's bundle (and that
+ * instance will be instantiated if it has not already been created).
+ *
+ * Note: calling getComponent from logic executing during the instantiation and
+ * configuration of a component, before the init method (if specified) has returned,
+ * may trigger a circular dependency (for a trivial example, consider a component
+ * that looks itself up by name during its init method). Implementations of the
+ * Blueprint Service are not required to support cycles in the dependency graph
+ * and may throw an exception if a cycle is detected. Implementations that can
+ * support certain kinds of cycles are free to do so.
+ *
+ * @param name the name of the component for which the instance is to be
+ * retrieved.
+ *
+ * @return the component instance, the type of the returned object is
+ * dependent on the component definition, and may be determined by
+ * introspecting the component metadata.
+ *
+ * @throws NoSuchComponentException if the name specified is not the
+ * name of a component within the context.
+ */
+ Object getComponent(String name);
+
+ /**
+ * Get the component metadata for a given named component.
+ *
+ * @param name the name of the component for which the metadata is to be
+ * retrieved.
+ *
+ * @return the component metadata for the component.
+ *
+ * @throws NoSuchComponentException if the name specified is not the
+ * name of a component within the context.
+ */
+ ComponentMetadata getComponentMetadata(String name);
+
+ /**
+ * Get the service reference metadata for every OSGi service referenced by
+ * this context.
+ *
+ * @return an immutable collection of ServiceComponentMetadata, with one entry for each referenced service.
+ */
+ Collection /*<ServiceReferenceMetadata>*/ getReferencedServicesMetadata();
+
+ /**
+ * Get the service export metadata for every service exported by this
+ * context.
+ *
+ * @return an immutable collection of ServiceMetadata, with one entry for each service export.
+ */
+ Collection /*<ServiceMetadata>*/ getExportedServicesMetadata();
+
+ /**
+ * Get the metadata for all components defined locally within this context.
+ *
+ * @return an immutable collection of BeanMetadata, with one entry for each component.
+ */
+ Collection /*<BeanMetadata>*/ getBeanComponentsMetadata();
+
+ /**
+ * Get the bundle context of the bundle this blueprint context is associated
+ * with.
+ *
+ * @return the blueprint context's bundle context
+ */
+ BundleContext getBundleContext();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContext.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContextListener.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContextListener.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContextListener.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+import org.osgi.framework.Bundle;
+
+public interface BlueprintContextListener {
+
+ void contextCreated(Bundle forBundle);
+
+ void contextCreationFailed(Bundle forBundle, Throwable rootCause);
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/BlueprintContextListener.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ComponentDefinitionException.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ComponentDefinitionException.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ComponentDefinitionException.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+/**
+ * Exception thrown when a configuration-related error occurs during
+ * creation of a module context.
+ */
+public class ComponentDefinitionException extends RuntimeException {
+
+ public ComponentDefinitionException(String explanation) {
+ super(explanation);
+ }
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ComponentDefinitionException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/EventConstants.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/EventConstants.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/EventConstants.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Version;
+
+/**
+ * Event property names used in EventAdmin events published for a
+ * module context.
+ *
+ */
+public interface EventConstants {
+ /**
+ * The extender bundle property defining the extender bundle processing the
+ * module context for which an event has been issued.
+ *
+ * @see Bundle
+ */
+ public static final String EXTENDER_BUNDLE = "extender.bundle";
+
+ /**
+ * The extender bundle id property defining the id of the extender bundle
+ * processing the module context for which an event has been issued.
+ */
+ public static final String EXTENDER_ID = "extender.bundle.id";
+
+ /**
+ * The extender bundle symbolic name property defining the symbolic name of
+ * the extender bundle processing the module context for which an event
+ * has been issued.
+ */
+ public static final String EXTENDER_SYMBOLICNAME = "extender.bundle.symbolicName";
+
+ /**
+ * Topic prefix for all events issued by the Blueprint Service
+ */
+ public static final String TOPIC_BLUEPRINT_EVENTS = "org/osgi/service/blueprint";
+
+ /**
+ * Topic for Blueprint Service CREATING events
+ */
+ public static final String TOPIC_CREATING = TOPIC_BLUEPRINT_EVENTS + "/context/CREATING";
+
+ /**
+ * Topic for Blueprint Service CREATED events
+ */
+ public static final String TOPIC_CREATED = TOPIC_BLUEPRINT_EVENTS + "/context/CREATED";
+
+ /**
+ * Topic for Blueprint Service DESTROYING events
+ */
+ public static final String TOPIC_DESTROYING = TOPIC_BLUEPRINT_EVENTS + "/context/DESTROYING";
+
+ /**
+ * Topic for Blueprint Service DESTROYED events
+ */
+ public static final String TOPIC_DESTROYED = TOPIC_BLUEPRINT_EVENTS + "/context/DESTROYED";
+
+ /**
+ * Topic for Blueprint Service WAITING events
+ */
+ public static final String TOPIC_WAITING = TOPIC_BLUEPRINT_EVENTS + "/context/WAITING";
+
+ /**
+ * Topic for Blueprint Service FAILURE events
+ */
+ public static final String TOPIC_FAILURE = TOPIC_BLUEPRINT_EVENTS + "/context/FAILURE";
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/EventConstants.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/NoSuchComponentException.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/NoSuchComponentException.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/NoSuchComponentException.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+/**
+ * Thrown when an attempt is made to lookup a component by name and no such named
+ * component exists in the module context.
+ */
+public class NoSuchComponentException extends RuntimeException {
+
+ private final String componentName;
+
+ public NoSuchComponentException(String componentName) {
+ this.componentName = componentName;
+ }
+
+ public String getComponentName() {
+ return this.componentName;
+ }
+
+ public String getMessage() {
+ return "No component named '" +
+ (this.componentName == null ? "<null>" : this.componentName) +
+ "' could be found";
+ }
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/NoSuchComponentException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ServiceUnavailableException.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ServiceUnavailableException.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ServiceUnavailableException.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.context;
+
+/**
+ * Thrown when an invocation is made on an OSGi service reference component, and
+ * a backing service is not available.
+ */
+public class ServiceUnavailableException extends RuntimeException {
+
+ private final Class serviceType;
+ private final String filter;
+
+ public ServiceUnavailableException(
+ String message,
+ Class serviceType,
+ String filterExpression) {
+ super(message);
+ this.serviceType = serviceType;
+ this.filter = filterExpression;
+ }
+
+ /**
+ * The type of the service that would have needed to be available in
+ * order for the invocation to proceed.
+ */
+ public Class getServiceType() {
+ return this.serviceType;
+ }
+
+ /**
+ * The filter expression that a service would have needed to satisfy in order
+ * for the invocation to proceed.
+ */
+ public String getFilter() {
+ return this.filter;
+ }
+}
+
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/ServiceUnavailableException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/package.html
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/package.html (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/package.html 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,19 @@
+<!-- $Revision: 5654 $ -->
+<BODY>
+<p>Blueprint Service Context Package Version 1.0.</p>
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:</p>
+<pre>
+Import-Package: org.osgi.service.blueprint.context; version="[1.0,2.0)"
+</pre>
+<p>
+ This package defines the primary interface to a blueprint context, <code>BlueprintContext</code>. An instance of this
+ type is available inside a blueprint context as an implicitly defined component with name "blueprintContext".
+</p>
+<p>
+ This package also declares the supporting exception types, listener, and constants for working with a blueprint
+ context.
+</p>
+</BODY>
+
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/packageinfo
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/packageinfo (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/context/packageinfo 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1 @@
+version 1.0
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/ConversionService.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/ConversionService.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/ConversionService.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.convert;
+
+/**
+ * Provides access to the type conversions (both predefined and user registered)
+ * that are defined for the module context
+ */
+public interface ConversionService {
+
+ /**
+ * Convert an object to an instance of the given class, using the built-in and
+ * user-registered type converters as necessary.
+ * @param fromValue the object to be converted
+ * @param toType the type that the instance is to be converted to
+ * @return an instance of the class 'toType'
+ * @throws Exception if the conversion cannot succeed. This exception is
+ * checked because callers should expect that not all source objects
+ * can be successfully converted.
+ */
+ Object convert(Object fromValue, Class toType) throws Exception;
+
+}
\ No newline at end of file
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/ConversionService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/Converter.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/Converter.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/Converter.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.convert;
+
+/**
+ * Implemented by type converters that extend the type conversion
+ * capabilties of a module context container.
+ */
+public interface Converter {
+
+ /**
+ * The type that this converter converts String values into.
+ * @return Class object for the class that this converter converts to
+ */
+ Class getTargetClass();
+
+ /**
+ * Convert an object to an instance of the target class.
+ * @param source the object to be converted
+ * @return an instance of the class returned by getTargetClass
+ * @throws Exception if the conversion cannot succeed. This exception is
+ * checked because callers should expect that not all source objects
+ * can be successfully converted.
+ */
+ Object convert(Object source) throws Exception;
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/Converter.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/package.html
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/package.html (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/package.html 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,16 @@
+<!-- $Revision: 5654 $ -->
+<BODY>
+<p>Blueprint Service Type Conversion Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.blueprint.convert; version="[1.0,2.0)"
+</pre>
+<p> This package defines the <code>Converter</code> interface used to implement
+ type converters, and the <code>ConversionService</code> interface that provides access
+ to registered type converters. A module context contains an implicitly defined
+ component "conversionService" that is an instance of <code>ConversionService</code>.
+</p>
+</BODY>
+
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/packageinfo
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/packageinfo (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/convert/packageinfo 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1 @@
+version 1.0
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentDefinitionRegistry.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentDefinitionRegistry.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentDefinitionRegistry.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.namespace;
+
+import java.util.Set;
+
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+
+/**
+ * A registry of the component definitions for a given context.
+ *
+ * Implementations of ComponentDefinitionRegistry are required to support
+ * concurrent access. The state of a component registry
+ * may change between invocations on the same thread. For example, a single
+ * thread invoking containsComponentDefinition("foo") and getting a return value
+ * of 'true' may see a return value of null on a subsequent call to
+ * getComponentDefinition("foo") if another thread has removed the component
+ * definition in the meantime.
+ */
+public interface ComponentDefinitionRegistry {
+
+ /**
+ * Returns true iff the registry contains a component definition with
+ * the given name.
+ */
+ boolean containsComponentDefinition(String name);
+
+ /**
+ * Get the component definition for the component with the given name.
+ *
+ * @return the matching component definition if present, or null if no
+ * component with a matching name or alias is present.
+ */
+ ComponentMetadata getComponentDefinition(String name);
+
+ /**
+ * Get the names of all the registered components.
+ *
+ * @return an immutable set (of Strings) containing the names of all registered components.
+ */
+ Set getComponentDefinitionNames();
+
+ /**
+ * Register a new component definition.
+ *
+ * @throws ComponentNameAlreadyInUseException if the name of the
+ * component definition to be registered is already in use by an existing component
+ * definition.
+ */
+ void registerComponentDefinition(ComponentMetadata component);
+
+ /**
+ * Remove a component definition from the registry. If no matching component
+ * is present then this operation does nothing.
+ *
+ * @param name the name of the component to be removed.
+ */
+ void removeComponentDefinition(String name);
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentDefinitionRegistry.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentNameAlreadyInUseException.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentNameAlreadyInUseException.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentNameAlreadyInUseException.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.namespace;
+
+/**
+ * Exception thrown when an attempt is made to register a component with a
+ * name that is already in use by an existing component.
+ */
+public class ComponentNameAlreadyInUseException extends RuntimeException {
+
+ private String duplicateName;
+
+ public ComponentNameAlreadyInUseException(String name) {
+ this.duplicateName = name;
+ }
+
+ public String getMessage() {
+ return "Name '" + this.duplicateName + "' is already in use by a registered component";
+ }
+
+ public String getConflictingName() {
+ return this.duplicateName;
+ }
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ComponentNameAlreadyInUseException.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/NamespaceHandler.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/NamespaceHandler.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/NamespaceHandler.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.namespace;
+
+import java.net.URL;
+
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * A namespace handler provides support for parsing custom namespace elements and attributes in
+ * module context configuration files. It manipulates component definitions and the
+ * component registry to implement the intended semantices of the namespace.
+ *
+ * Instances of NamespaceHandler are discovered through the service registry where
+ * they should be published with a service property org.osgi.module.context.namespace set
+ * to the schema URI of the schema that they handle.
+ *
+ * Implementations of NamespaceHandler are required to be thread-safe.
+ *
+ */
+public interface NamespaceHandler {
+
+ /**
+ * Return the location of the schema for a given namespace.
+ *
+ * @param namespace one of the advertized URIs supported by this handler (as registered in the
+ * org.osgi.service.blueprint.namespace property of the service registration).
+ * @return The URL where the xsd file for the schema may be found. Typically used to return a URL to a
+ * bundle resource entry so as to avoid needing to lookup schemas remotely.
+ * If null is returned then the schema location will be determined from the xsi:schemaLocation attribute
+ * value.
+ * @throws IllegalArgumentException if the namespace parameter is not a recognized namespace supported
+ * by this handler
+ */
+ URL getSchemaLocation(String namespace);
+
+ /**
+ * Called when a top-level (i.e. non-nested) element from the namespace is encountered.
+ * Implementers may register component definitions themselves, and/or return a component definition
+ * to be registered.
+ *
+ * @param element the dom element from the namespace that has just been encountered
+ * @param context parser context giving access component registry and context information about the
+ * current parsing location.
+ *
+ * @return a component metadata instance to be registered for the context, or null if there are no
+ * additional component descriptions to register.
+ */
+ ComponentMetadata parse(Element element, ParserContext context);
+
+ /**
+ * Called when an attribute or nested element is encountered. Implementors should parse the
+ * supplied Node and decorate the provided component, returning the decorated component.
+ *
+ * @param node the dom Node from the namespace that has just been encountered
+ * @param component the component metadata for the component in which the attribute or nested element
+ * was encountered
+ * @param context parser context giving access component registry and context information about the
+ * current parsing location.
+ *
+ * @return the decorated component to replace the original, or simply the original component if no
+ * decoration is required.
+ */
+ ComponentMetadata decorate(Node node, ComponentMetadata component, ParserContext context);
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/NamespaceHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ParserContext.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ParserContext.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ParserContext.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.namespace;
+
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.w3c.dom.Node;
+
+/**
+ * A ParserContext provides contextual information to a NamespaceHandler when
+ * parsing an Element or Node from the namespace.
+ */
+public interface ParserContext {
+
+ /**
+ * The dom Node which we are currently processing
+ */
+ Node getSourceNode();
+
+ /**
+ * The component definition registry containing all of the registered component
+ * definitions for this context
+ */
+ ComponentDefinitionRegistry getComponentDefinitionRegistry();
+
+ /**
+ * The enclosing component definition in the context of which the
+ * source node is to be processed.
+ */
+ ComponentMetadata getEnclosingComponent();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/ParserContext.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/package.html
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/package.html (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/package.html 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,14 @@
+<!-- $Revision: 5654 $ -->
+<BODY>
+<p>Blueprint Namespace Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.blueprint.namespace; version="[1.0,2.0)"
+</pre>
+<p> This package provides the top-level interfaces needed for implementing a
+ namespace handler.
+</p>
+</BODY>
+
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/packageinfo
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/packageinfo (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/namespace/packageinfo 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1 @@
+version 1.0
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanArgument.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanArgument.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanArgument.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Metadata used in a Bean Component to inject arguments in a method or
+ * constructor. This metadata class describes the <code>argument</element>
+ */
+public interface BeanArgument {
+
+ /**
+ * The metadata for the value to inject into the parameter.
+ *
+ * This is the <code>value</code> attribute.
+ *
+ * @return the metadata for the value
+ */
+ Metadata getValue();
+
+ /**
+ * The type to convert the value into when invoking the constructor or
+ * factory method. If no explicit type was specified on the component
+ * definition then this method returns null.
+ *
+ * This is the <code>type</code> attribute.
+ *
+ * @return the explicitly specified type to convert the value into, or null
+ * if no type was specified in the component definition.
+ */
+ String getValueType();
+
+ /**
+ * The (zero-based) index into the parameter list of the method or
+ * constructor to be invoked for this parameter. This is determined either
+ * by explicitly specifying the index attribute in the component
+ * declaration, or by declaration order of constructor-arg elements if the
+ * index was not explicitly set.
+ *
+ * This is the <code>index</code> attribute.
+ *
+ *
+ * @return the zero-based parameter index
+ */
+ int getIndex();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanArgument.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.List;
+
+/**
+ * Metadata for a Bean Component.
+ *
+ * This class describes a <code>bean</code> element.
+ */
+public interface BeanMetadata extends Target, ComponentMetadata {
+
+ static final String SCOPE_SINGLETON = "singleton";
+ static final String SCOPE_PROTOTYPE = "prototype";
+ static final String SCOPE_BUNDLE = "bundle";
+
+ /**
+ * The name of the class type specified for this component.
+ *
+ * This is the <code>class</code> attribute.
+ *
+ * @return the name of the component class. If no class was specified in the
+ * component definition (because the a factory component is used
+ * instead) then this method will return null.
+ */
+ String getClassName();
+
+ /**
+ * The name of the init method specified for this component, if any.
+ *
+ * This is the <code>init-method</code> attribute.
+ *
+ * @return the method name of the specified init method, or null if no init
+ * method was specified.
+ */
+ String getInitMethodName();
+
+ /**
+ * The name of the destroy method specified for this component, if any.
+ *
+ * This is the <code>destroy-method</code> attribute.
+ *
+ * @return the method name of the specified destroy method, or null if no
+ * destroy method was specified.
+ */
+ String getDestroyMethodName();
+
+ /**
+ * The arguments for the factory method or constructor.
+ *
+ * Specified in all the child <code>argument<code> elements.
+ *
+ * @return The metadata for the factory method or constructor. Can be empty if no arguments are specified
+ */
+ List/* <BeanArgument> */getArguments();
+
+ /**
+ * The property injection metadata for this component.
+ *
+ * Specified in all the child <code>property</code> elements.
+ *
+ * @return an immutable collection of BeanProperty, with one
+ * entry for each property to be injected. If no property injection
+ * was specified for this component then an empty collection will be
+ * returned.
+ *
+ */
+ List /* <BeanProperty> */getProperties();
+
+ /**
+ * Is this component to be lazily instantiated?
+ *
+ * ### I assume the default is processed here?
+ *
+ * This is the <code>lazy-init</code> attribute or the
+ * <code>default-lazy-init</code> in the <code>blueprint</code> element
+ * if not set. ### I've renamed this from isLazy
+ *
+ * @return true, iff this component definition specifies lazy instantiation.
+ */
+ boolean isLazyInit();
+
+ /**
+ * Provides the name of the optional factory method.
+ *
+ * This is the <code>factory-method</code> attribute.
+ *
+ * @return The name of the factory method or <code>null</code>.
+ */
+ String getFactoryMethodName();
+
+ /**
+ * The component instance on which to invoke the factory method (if
+ * specified).
+ *
+ * The component is defined in the <code>factory-component</code>.
+ *
+ * @return when a factory method and factory component has been specified
+ * for this component, this operation returns the metadata
+ * specifying the component on which the factory method is to be
+ * invoked. When no factory component has been specified this
+ * operation will return null. A return value of null with a
+ * non-null factory method indicates that the factory method should
+ * be invoked as a static method on the component class itself. For
+ * a non-null return value, the Metadata object returned will be a
+ * RefMetadata or a TargetComponentMetadata instance.
+ */
+ Target getFactoryComponent();
+
+ /**
+ * The specified scope for the component lifecycle.
+ *
+ * @return a String indicating the scope specified for the component.
+ *
+ * @see #SCOPE_SINGLETON
+ * @see #SCOPE_PROTOTYPE
+ * @see #SCOPE_BUNDLE
+ */
+ String getScope();
+
+ /**
+ * Provide an actual class, this overrides the class name if set. This is
+ * useful for Namespace Handler services that do not want to force the
+ * Blueprint bundle to import implementation classes.
+ *
+ * @return Return the class to use in runtime or <code>null</code>.
+ */
+
+ Class /* <?> */getRuntimeClass();
+
+ /**
+ * The names of any components listed in a "depends-on" attribute for this
+ * component.
+ *
+ * @return an immutable List of component names for components that we have explicitly
+ * declared a dependency on, or an empty set if none.
+ */
+ List/*<String>*/ getExplicitDependencies();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanProperty.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanProperty.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanProperty.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Metadata describing a property to be injected. Properties are defined
+ * following JavaBeans conventions.
+ */
+public interface BeanProperty {
+
+ /**
+ * The name of the property to be injected, following JavaBeans conventions.
+ *
+ * Defined in the <code>name</code> attribute.
+ *
+ * @return the property name.
+ */
+ String getName();
+
+ /**
+ * The metadata for the value to inject the property with.
+ *
+ * Defined in the <code>value</code> attribute or inlined component.
+ *
+ * @return the metadata for the property value.
+ */
+ Metadata getValue();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/BeanProperty.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/CollectionMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/CollectionMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/CollectionMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.List;
+
+/**
+ * Metadata for a collection based value. Members of the array are instances of Metadata.
+ * The Collection metadata can constrain (### convert) to a specific type.
+ */
+
+public interface CollectionMetadata extends NonNullMetadata {
+
+ /**
+ * Provide the interface that this collection must implement.
+ *
+ * This is used for Arrays (Object[]), Set, and List. This information
+ * is encoded in the element name.
+ *
+ *
+ * @return The interface class that the collection must implement.
+ */
+ Class/*<?>*/ getCollectionClass();
+
+ /**
+ * The value-type specified for the array
+ *
+ * The <code>value-type</code> attribute.
+ * ### Shouldnt this also support getRuntimeValueType()?
+ */
+ String getValueTypeName();
+
+ /**
+ * The of Metadata objects that describe the value.
+ */
+ List /*<Metadata>*/ getValues();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/CollectionMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ComponentMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ComponentMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ComponentMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+
+/**
+ * Base class for all components.
+ *
+ * @see BeanMetadata
+ * @see ServiceReferenceMetadata
+ * @see ServiceMetadata
+ */
+public interface ComponentMetadata extends NonNullMetadata {
+
+ /**
+ * The id of the component.
+ *
+ * ### renamed to getId
+ * @return component id. The component id can be <code>null</code> if this is an anonymously
+ * defined inner component.
+ */
+ String getId();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ComponentMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/IdRefMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/IdRefMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/IdRefMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * A value which represents the name of another component in the module context.
+ * The name itself will be injected, not the component that the name refers to.
+ *
+ */
+public interface IdRefMetadata extends NonNullMetadata {
+ /**
+ * The name of the referenced component.
+ * Defined in the <code>component</code> attribute.
+ *
+ */
+ String getComponentId();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/IdRefMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Listener.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Listener.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Listener.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Metadata for a listener interested in service bind and unbind events for a service
+ * reference.
+ */
+public interface Listener {
+
+ /**
+ * The component instance that will receive bind and unbind
+ * events. The returned value must reference a TargetListenerComponent
+ * either directly or indirectly. The return type will be either
+ * a RefMetadata instance or an TargetListenerComponent instance.
+ *
+ * Defined in the <code>ref</code> attribute or inlined component.
+ *
+ * @return the listener component reference.
+ */
+ Target getListenerComponent();
+
+ /**
+ * The name of the method to invoke on the listener component when
+ * a matching service is bound to the reference
+ *
+ * @return the bind callback method name.
+ */
+ String getBindMethodName();
+
+ /**
+ * The name of the method to invoke on the listener component when
+ * a service is unbound from the reference.
+ *
+ * @return the unbind callback method name.
+ */
+ String getUnbindMethodName();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Listener.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapEntry.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapEntry.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapEntry.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Metadata for an entry. An entry is the member of a MapMetadata so that it
+ * can be treated as a CollectionMetadata with entries.
+ *
+ * Defined in the <code>entry</code> element.
+ *
+ */
+public interface MapEntry {
+ /**
+ * Keys must be non-null.
+ *
+ * Defined in the <code>key</code> attribute or element.
+ *
+ * @return the metadata for the key
+ */
+ NonNullMetadata getKey();
+
+ /**
+ * Return the metadata for the value.
+ *
+ * Defined in the <code>value</code> attribute or element<.
+ *
+ * @return the metadata for the value
+ */
+
+ Metadata getValue();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapEntry.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.List;
+
+/**
+ * A map-based value. This represented as a collection of entries (as it is done in the schema).
+ *
+ * A map is defined in the <code>map</code> element.
+ *
+ */
+public interface MapMetadata extends NonNullMetadata {
+ /**
+ * The key-type specified for map keys, or null if none given
+ *
+ * Defined in the <code>key-type</code> attribute.
+ * ### should we have getRuntimeKeyType?
+ */
+ String getKeyTypeName();
+
+ /**
+ * The value-type specified for the array
+ *
+ * ### should we have getRuntimeValueType?
+ * The <code>value-type</code> attribute.
+ */
+ String getValueTypeName();
+
+ /**
+ * The of Metadata objects that describe the value.
+ */
+ List /*<MapEntry>*/ getEntries();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/MapMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Metadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Metadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Metadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) OSGi Alliance (2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Top level metadata. This represents any possible value.
+ *
+ */
+public interface Metadata {
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Metadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NonNullMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NonNullMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NonNullMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Base interfaces for metadata that cannot be null. The NullMetadata is the
+ * only element not implementing this. Mainly used for keys in maps because they
+ * cannot be null.
+ */
+public interface NonNullMetadata extends Metadata {
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NonNullMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NullMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NullMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NullMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * A value specified to be null via the <null/> element.
+ */
+public interface NullMetadata extends Metadata {
+
+ static final NullMetadata NULL = new NullMetadata() {};
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/NullMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/PropsMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/PropsMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/PropsMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.List;
+
+/**
+ * A java.util.Properties based value. The properties are defined as string to
+ * string. This means that the actual value can be returned.
+ *
+ * ### I do not like it that you loose the original order. And potential errors
+ * (like duplicate keys). I think this one should just go away. The
+ * CollectionMetadata has a collection type so the instantiation can ensure
+ *
+ * Defined in the <code>props</code> element.
+ *
+ */
+public interface PropsMetadata extends NonNullMetadata {
+
+ /**
+ * This is the same as getValuesMetadata but more type safe.
+ *
+ * Defined in <code>prop</code> sub elements.
+ *
+ * @return
+ */
+ List/*<MapEntry>*/ getEntries();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/PropsMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefCollectionMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefCollectionMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefCollectionMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Service reference that binds to a collection of matching services from the
+ * OSGi service registry. This is the <code>ref-list</code> or
+ * <code>ref-set</code> element.
+ *
+ */
+public interface RefCollectionMetadata extends ServiceReferenceMetadata {
+
+ /**
+ * Create ordering based on comparison of service objects.
+ */
+ public static final int ORDERING_BASIS_SERVICE= 1;
+
+ /**
+ * Create ordering based on comparison of service reference objects.
+ */
+ public static final int ORDERING_BASIS_SERVICE_REFERENCE = 2;
+
+ /**
+ * Collection contains service instances
+ *
+ */
+ public static final int MEMBER_TYPE_SERVICE_INSTANCE = 1;
+
+ /**
+ * Collection contains service references
+ */
+ public static final int MEMBER_TYPE_SERVICE_REFERENCE = 2;
+
+ /**
+ * The type of collection to be created.
+ *
+ * This is implied by the element name: <code>ref-list</code> or <code>ref-set</code>.
+ *
+ * @return Class object for the specified collection type (List, Set).
+ */
+ Class/* <?> */getCollectionType();
+
+ /**
+ * The comparator specified for ordering the collection, or <code>null</code> if no
+ * comparator was specified.
+ *
+ * Defined in the <code>comparator</code> child element or <code>comparator-ref</code>
+ * attribute.
+ *
+ * @return if a comparator was specified then a Value object identifying the
+ * comparator (a ComponentValue, ReferenceValue, or
+ * ReferenceNameValue) is returned. If no comparator was specified
+ * then null will be returned.
+ */
+ Target getComparator();
+
+ /**
+ * The basis on which to perform ordering, if specified.
+ *
+ * Defined in the <code>ordering-basis</code> attribute.
+ *
+ * @return one of ORDERING_BASIS_SERVICES and ORDERING_BASIS_SERVICE_REFERENCE
+ */
+ int getOrderingBasis();
+
+ /**
+ * Whether the collection will contain service instances, or service
+ * references
+ * Defined in the <code>member-type</code> attribute.
+ */
+ int getMemberType();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefCollectionMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * A value which refers to another component in the module context by name.
+ */
+public interface RefMetadata extends Target, NonNullMetadata {
+ /**
+ * The name of the referenced component.
+ * Defined in the <code>component</code> attribute.
+ *
+ */
+ String getComponentId();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RefMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ReferenceMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ReferenceMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ReferenceMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ *
+ * Service reference that will bind to a single matching service in the service
+ * registry.
+ *
+ * Defines the <code>reference</code> element.
+ *
+ */
+public interface ReferenceMetadata extends ServiceReferenceMetadata,
+ Target {
+
+ /**
+ * Timeout for service invocations when a matching backing service is
+ * unavailable.
+ * Defined in the <code>timeout</code> attribute.
+ *
+ * @return service invocation timeout in milliseconds
+ */
+ long getTimeout();
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ReferenceMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RegistrationListener.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RegistrationListener.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RegistrationListener.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * Metadata for a listener interested in service registration and unregistration
+ * events for an exported service.
+ */
+public interface RegistrationListener {
+
+ /**
+ * The component instance that will receive registration and unregistration
+ * events. The returned value must reference a TargetListenerComponent
+ * either directly or indirectly. The return type will be either
+ * a RefMetadata instance or an TargetListenerComponent instance.
+ *
+ * Defined in the <code>listener</code> child element.
+ *
+ * @return the listener component reference.
+ */
+ Target getListenerComponent();
+
+ /**
+ * The name of the method to invoke on the listener component when
+ * the exported service is registered with the service registry.
+ *
+ * Defined in the <code>registration-method</code> attribute.
+ *
+ * @return the registration callback method name.
+ */
+ String getRegistrationMethodName();
+
+ /**
+ * The name of the method to invoke on the listener component when
+ * the exported service is unregistered from the service registry.
+ *
+ * Defined in the <code>unregistration-method</code> attribute.
+ *
+ * @return the unregistration callback method name.
+ */
+ String getUnregistrationMethodName();
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/RegistrationListener.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * Metadata representing a service to be exported by a module context.
+ *
+ */
+public interface ServiceMetadata extends ComponentMetadata, Target {
+
+ /**
+ * Do not auto-detect types for advertised service intefaces
+ */
+ public static final int AUTO_EXPORT_DISABLED = 1;
+
+ /**
+ * Advertise all Java interfaces implemented by the exported component as
+ * service interfaces.
+ */
+ public static final int AUTO_EXPORT_INTERFACES= 2;
+
+ /**
+ * Advertise all Java classes in the hierarchy of the exported component's type
+ * as service interfaces.
+ */
+ public static final int AUTO_EXPORT_CLASS_HIERARCHY = 3;
+
+ /**
+ * Advertise all Java classes and interfaces in the exported component's type as
+ * service interfaces.
+ */
+ public static final int AUTO_EXPORT_ALL_CLASSES = 4;
+
+ /**
+ * The component that is to be exported as a service. Value must refer to a component and
+ * therefore be either a RefMetadata or BeanMetadata.
+ *
+ * Defined in the <code>registration-method</code> attribute.
+ *
+ * @return the component to be exported as a service.
+ */
+ Target getServiceComponent();
+
+ /**
+ * The type names of the set of interface types that the service should be advertised
+ * as supporting, as specified in the component declaration.
+ *
+ * Defined in the <code>interface</code> attribute or <code>interfaces</code> element.
+ *
+ * @return an immutable set of (String) type names, or an empty set if using auto-export
+ */
+ List/*<String>*/ getInterfaceNames();
+
+ /**
+ * Return the auto-export mode specified.
+ *
+ * Defined in the <code>auto-export</code> attribute.
+ *
+ * @return One of AUTO_EXPORT_DISABLED, AUTO_EXPORT_INTERFACES, AUTO_EXPORT_CLASS_HIERARCHY, AUTO_EXPORT_ALL_CLASSES
+ */
+ int getAutoExportMode();
+
+ /**
+ * The user declared properties to be advertised with the service.
+ *
+ * Defined in the <code>service-properties</code> element.
+ *
+ * @return Map containing the set of user declared service properties (may be
+ * empty if no properties were specified).
+ */
+ List/*<MapEntry>*/ getServiceProperties();
+
+ /**
+ * The ranking value to use when advertising the service
+ *
+ * Defined in the <code>ranking</code> attribute.
+ *
+ * @return service ranking
+ */
+ int getRanking();
+
+ /**
+ * The listeners that have registered to be notified when the exported service
+ * is registered and unregistered with the framework.
+ *
+ * Defined in the <code>registration-listener</code> elements.
+ *
+ * @return an immutable collection of RegistrationListenerMetadata
+ */
+ Collection /*<RegistrationListener>*/ getRegistrationListeners();
+
+ /**
+ * The names of any components listed in a "depends-on" attribute for this
+ * component.
+ *
+ * @return an immutable List of component names for components that we have explicitly
+ * declared a dependency on, or an empty set if none.
+ */
+ List/*<String>*/ getExplicitDependencies();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceReferenceMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceReferenceMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceReferenceMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * Metadata describing a reference to a service that is to be imported into the module
+ * context from the OSGi service registry.
+ *
+ */
+public interface ServiceReferenceMetadata extends ComponentMetadata {
+
+ /**
+ * A matching service is required at all times.
+ */
+ public static final int AVAILABILITY_MANDATORY = 1;
+
+ /**
+ * A matching service is not required to be present.
+ */
+ public static final int AVAILABILITY_OPTIONAL = 2;
+
+ /**
+ * Whether or not a matching service is required at all times.
+ *
+ * Defined in the <code>availibility</code> attribute.
+ *
+ * @return one of AVAILABILITY_MANDATORY or AVAILABILITY_OPTIONAL
+ */
+ int getAvailability();
+
+ /**
+ * The interface types that the matching service must support
+ *
+ * Defined in the <code>interface</code> attribute or <code>interfaces</code> element.
+ *
+ * @return an immutable list of type names
+ */
+ List/*<String>*/ getInterfaceNames();
+
+ /**
+ * The value of the component-name attribute, if specified. This specifies
+ * the name of a component that is registered in the service registry. This will
+ * create an automatic filter (appended wit the filter if set) to select this
+ * component based on its automatic ###name attribute.
+ *
+ * Defined in the <code>component-name</code> attribute.
+ *
+ * @return the component name attribute value, or null if the attribute was not specified
+ */
+ String getComponentName();
+
+ /**
+ * The filter expression that a matching service must pass
+ *
+ * Defined in the <code>filter</code> attribute.
+ *
+ * @return filter expression
+ */
+ String getFilter();
+
+ /**
+ * The set of listeners registered to receive bind and unbind events for
+ * backing services.
+ *
+ * Defined in the <code>listener</code> elements.
+ *
+ * @return an immutable collection of registered ListenerMetadata
+ */
+ Collection /*<Listener>*/ getServiceListeners();
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ServiceReferenceMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Target.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Target.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Target.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+
+/**
+ * Provides a common interface for components that can be used as a direct target
+ * for method calls. These are bean, reference, and ref.
+ *
+ */
+public interface Target extends Metadata {
+
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/Target.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ValueMetadata.java
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ValueMetadata.java (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ValueMetadata.java 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
+ *
+ * Licensed 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.osgi.service.blueprint.reflect;
+
+/**
+ * A simple string value that will be type-converted if necessary before
+ * injecting into a target.
+ *
+ * This class is representing the <code>value</code> element.
+ *
+ */
+public interface ValueMetadata extends NonNullMetadata {
+ /**
+ * The string value (unconverted) of this value).
+ *
+ * Defined in the <code>value</code> attribute or text part.
+ */
+ String getStringValue();
+
+ /**
+ * The name of the type to which this value should be coerced. May be null.
+ *
+ * Defined in the <code>type</code> attribute.
+ */
+ String getTypeName();
+}
Property changes on: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/ValueMetadata.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/package.html
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/package.html (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/package.html 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1,35 @@
+<!-- $Revision: 5654 $ -->
+<BODY>
+<p>Blueprint Reflection Package Version 1.0.
+<p>Bundles wishing to use this package must list the package
+in the Import-Package header of the bundle's manifest.
+For example:
+<pre>
+Import-Package: org.osgi.service.blueprint.reflect; version="[1.0,2.0)"
+</pre>
+<p> This package provides a reflection-based view of the configuration information for a given
+ module context. The top-level mapping between configuration elements and reflection types is as follows:
+</p>
+
+<pre>
+ Configuration Element Corresponding Reflection Type(s)
+ component LocalComponentMetadata, ComponentValue
+ reference UnaryServiceReferenceComponentMetadata
+ ref-set,ref-list CollectionBasedServiceReferenceComponentMetadata
+ service ServiceExportComponentMetadata
+ constructor-arg ConstructorInjectionMetadata, ParameterSpecification
+ property PropertyInjectionMetadata
+ listener BindingListenerMetadata
+ registration-listener RegistrationListenerMetadata
+ array< ArrayValue
+ ref ReferenceValue
+ id-ref ReferenceNameValue
+ list ListValue
+ map MapValue
+ null NullValue
+ props PropertiesValue
+ set SetValue
+ value TypedStringValue
+<//pre>
+</BODY>
+
Added: projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/packageinfo
===================================================================
--- projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/packageinfo (rev 0)
+++ projects/jboss-osgi/trunk/bundle/blueprint/src/main/java/org/osgi/service/blueprint/reflect/packageinfo 2009-05-13 11:50:27 UTC (rev 88808)
@@ -0,0 +1 @@
+version 1.0
More information about the jboss-cvs-commits
mailing list