You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by zo...@apache.org on 2011/02/27 21:35:49 UTC
svn commit: r1075139 [2/23] - in /aries/tags/blueprint-0.2-incubating: ./
blueprint-annotation-api/ blueprint-annotation-api/src/
blueprint-annotation-api/src/main/ blueprint-annotation-api/src/main/java/
blueprint-annotation-api/src/main/java/org/ blu...
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Element.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Element.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Element.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Element.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,43 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotate the element of the list.
+ *
+ */
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Element {
+ ElementType type() default ElementType.STRING;
+ String value() default "";
+
+ public enum ElementType {
+ STRING,
+ LONG,
+ BYTE,
+ BOOLEAN,
+ INT,
+ SHORT
+ }
+
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Init.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Init.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Init.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Init.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotation init-method in blueprint beans
+ *
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Init {
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Inject.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Inject.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Inject.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Inject.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,32 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Inject {
+ String value() default "";
+ String name() default "";
+ String description() default "";
+ String ref() default "";
+ String[] values() default {};
+}
\ No newline at end of file
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/List.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/List.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/List.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/List.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotate list value in property
+ * I am not convinced that we want to support this via annotation
+ *
+ */
+@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface List {
+
+ // the element of the list
+ public Element[] value();
+
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Reference.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Reference.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Reference.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Reference.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Reference
+{
+ /**
+ * the description property of the service reference
+ */
+ String description() default "";
+
+ /**
+ * the interface type that a matching service must support.
+ */
+ Class<?> serviceInterface() default Object.class;
+
+ /**
+ * the filter expression that a matching service must match.
+ */
+ String filter() default "";
+
+ /**
+ * the <code>component-name</code> attribute of the service reference.
+ */
+ String componentName() default "";
+
+ /**
+ * whether or not a matching service is required at all times. either optional or mandatory.
+ */
+ String availability() default "";
+
+ /**
+ * the reference listeners for the service reference, to receive bind and unbind events.
+ */
+ ReferenceListener[] referenceListeners() default {};
+
+ /**
+ * the timeout property. If the timeout is not specified,
+ * the default-timeout value is inherited from the encapsulating
+ * <code><blueprint></code> definition.
+ */
+ int timeout() default 0;
+
+ /**
+ * the id for the reference
+ */
+ String id() default "";
+}
\ No newline at end of file
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceList.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceList.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceList.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceList.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ReferenceList
+{
+ /**
+ * the description property of the service reference
+ */
+ String description() default "";
+
+ /**
+ * the interface type that a matching service must support.
+ */
+ Class<?> serviceInterface() default Object.class;
+
+ /**
+ * the filter expression that a matching service must match.
+ */
+ String filter() default "";
+
+ /**
+ * the <code>component-name</code> attribute of the service reference.
+ */
+ String componentName() default "";
+
+ /**
+ * whether or not a matching service is required at all times. either optional or mandatory.
+ */
+ String availability() default "";
+
+ /**
+ * the reference listeners for the service reference, to receive bind and unbind events.
+ */
+ ReferenceListener[] referenceListeners() default {};
+
+ /**
+ * the value of the memberType property.
+ */
+ String memberType() default "service-object";
+
+ /**
+ * the id for the referencelist
+ */
+ String id() default "";
+}
\ No newline at end of file
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceListener.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceListener.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceListener.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ReferenceListener.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,28 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ReferenceListener {
+ String ref() default "";
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Register.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Register.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Register.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Register.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotation register-method in blueprint registration listeners
+ *
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Register {
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/RegistrationListener.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/RegistrationListener.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/RegistrationListener.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/RegistrationListener.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,29 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RegistrationListener {
+
+ String ref() default "";
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Service.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Service.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Service.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Service.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,56 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Service {
+
+ /**
+ * the registration listeners to be notified when the service is
+ * registered and unregistered with the framework.
+ */
+ RegistrationListener[] registerationListeners() default {};
+
+ /**
+ * the ranking value to use when advertising the service. If the
+ * ranking value is zero, the service must be registered without a
+ * <code>service.ranking</code> service property.
+ */
+ int ranking() default 0;
+
+ /**
+ * the auto-export mode for the service.
+ * possible values are disabled, interfaces, class_hierarchy, all_classes
+ */
+ String autoExport() default "";
+
+ /**
+ * the interfaces that the service should be advertised as supporting.
+ */
+ Class<?>[] interfaces() default {};
+
+ /**
+ * the user declared properties to be advertised with the service.
+ */
+ ServiceProperty[] serviceProperties() default {};
+}
\ No newline at end of file
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ServiceProperty.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ServiceProperty.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ServiceProperty.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/ServiceProperty.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,36 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ServiceProperty {
+ /**
+ * the key of the property
+ */
+ String key() default "";
+
+ /**
+ * the value of the property
+ */
+ String value() default "";
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unbind.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unbind.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unbind.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unbind.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotation unbind-method in blueprint reference listeners
+ *
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Unbind {
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unregister.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unregister.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unregister.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/Unregister.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * used to annotation unregister-method in blueprint registration listeners
+ *
+ */
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Unregister {
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/service/BlueprintAnnotationScanner.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/service/BlueprintAnnotationScanner.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/service/BlueprintAnnotationScanner.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-api/src/main/java/org/apache/aries/blueprint/annotation/service/BlueprintAnnotationScanner.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,27 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation.service;
+
+import java.net.URL;
+
+import org.osgi.framework.Bundle;
+
+public interface BlueprintAnnotationScanner {
+
+ public URL createBlueprintModel(Bundle bundle);
+
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/pom.xml
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/pom.xml?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/pom.xml (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/pom.xml Sun Feb 27 20:35:36 2011
@@ -0,0 +1,94 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>blueprint</artifactId>
+ <version>0.2-incubating</version>
+ </parent>
+
+ <artifactId>org.apache.aries.blueprint.annotation.impl</artifactId>
+ <packaging>bundle</packaging>
+ <name>Apache Aries Blueprint Annotation Impl</name>
+ <description>
+ This bundle contains the core implementation of Blueprint
+ along with the "ext" namespace handler.
+ </description>
+
+ <properties>
+ <aries.osgi.activator>
+ org.apache.aries.blueprint.annotation.impl.Activator
+ </aries.osgi.activator>
+ <aries.osgi.export.pkg>
+ org.apache.aries.blueprint.jaxb.*,
+ org.apache.aries.blueprint.annotation.impl
+ </aries.osgi.export.pkg>
+ <aries.osgi.import>
+ !org.apache.aries.blueprint.jaxb.*,
+ !org.apache.aries.blueprint.annotation.impl,
+ org.apache.aries.blueprint.annotation,
+ *
+ </aries.osgi.import>
+ <aries.osgi.export.service>
+ org.apache.aries.blueprint.annotation.AnnotationScannerService
+ </aries.osgi.export.service>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>org.apache.aries.blueprint.annotation.api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse</groupId>
+ <artifactId>osgi</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm-all</artifactId>
+ <optional>true</optional>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-finder</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/Activator.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation.impl;
+
+import java.util.Dictionary;
+import java.util.Hashtable;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.ServiceRegistration;
+import org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner;
+
+public class Activator implements BundleActivator {
+
+ ServiceRegistration sr;
+
+ public void start(BundleContext context) {
+ System.out.println("Annotation Scanner Impl Bundle start");
+ Dictionary dict = new Hashtable();
+ dict.put(Constants.SERVICE_RANKING, 0);
+ sr = context.registerService(BlueprintAnnotationScanner.class.getName(), new BlueprintAnnotationScannerImpl(context), dict);
+ System.out.println("finish register service");
+ }
+
+ public void stop(BundleContext context) {
+ System.out.println("Annotation Scanner Impl Bundle stop");
+ if (sr != null) {
+ sr.unregister();
+ }
+ }
+
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationException.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationException.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationException.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationException.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,35 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation.impl;
+
+public class BlueprintAnnotationException extends RuntimeException {
+ public BlueprintAnnotationException() {
+ }
+
+ public BlueprintAnnotationException(String message) {
+ super(message);
+ }
+
+ public BlueprintAnnotationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public BlueprintAnnotationException(Throwable cause) {
+ super(cause);
+ }
+
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationScannerImpl.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationScannerImpl.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationScannerImpl.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/annotation/impl/BlueprintAnnotationScannerImpl.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,707 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.aries.blueprint.annotation.impl;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.math.BigInteger;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
+import org.apache.aries.blueprint.annotation.Arg;
+import org.apache.aries.blueprint.annotation.Bean;
+import org.apache.aries.blueprint.annotation.Bind;
+import org.apache.aries.blueprint.annotation.Blueprint;
+import org.apache.aries.blueprint.annotation.Destroy;
+import org.apache.aries.blueprint.annotation.Init;
+import org.apache.aries.blueprint.annotation.Inject;
+import org.apache.aries.blueprint.annotation.Reference;
+import org.apache.aries.blueprint.annotation.ReferenceList;
+import org.apache.aries.blueprint.annotation.ReferenceListener;
+import org.apache.aries.blueprint.annotation.Register;
+import org.apache.aries.blueprint.annotation.RegistrationListener;
+import org.apache.aries.blueprint.annotation.Service;
+import org.apache.aries.blueprint.annotation.ServiceProperty;
+import org.apache.aries.blueprint.annotation.Unbind;
+import org.apache.aries.blueprint.annotation.Unregister;
+import org.apache.aries.blueprint.annotation.service.BlueprintAnnotationScanner;
+import org.apache.aries.blueprint.jaxb.Targument;
+import org.apache.aries.blueprint.jaxb.Tbean;
+import org.apache.aries.blueprint.jaxb.Tblueprint;
+import org.apache.aries.blueprint.jaxb.Tdescription;
+import org.apache.aries.blueprint.jaxb.Tinterfaces;
+import org.apache.aries.blueprint.jaxb.Tproperty;
+import org.apache.aries.blueprint.jaxb.Treference;
+import org.apache.aries.blueprint.jaxb.TreferenceList;
+import org.apache.aries.blueprint.jaxb.TreferenceListener;
+import org.apache.aries.blueprint.jaxb.TregistrationListener;
+import org.apache.aries.blueprint.jaxb.Tservice;
+import org.apache.aries.blueprint.jaxb.TserviceProperties;
+import org.apache.aries.blueprint.jaxb.TservicePropertyEntry;
+import org.apache.aries.blueprint.jaxb.TtypeConverters;
+import org.apache.aries.blueprint.jaxb.Tvalue;
+import org.apache.xbean.finder.BundleAnnotationFinder;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.blueprint.container.Converter;
+import org.osgi.service.packageadmin.PackageAdmin;
+
+public class BlueprintAnnotationScannerImpl implements
+ BlueprintAnnotationScanner {
+ private BundleContext context;
+
+ public BlueprintAnnotationScannerImpl(BundleContext bc) {
+ this.context = bc;
+ }
+
+ private BundleContext getBlueprintExtenderContext() {
+ Bundle[] bundles = this.context.getBundles();
+ for (Bundle b : bundles) {
+ if (b.getSymbolicName().equals("org.apache.aries.blueprint.core")) {
+ return b.getBundleContext();
+ }
+ }
+
+ return null;
+ }
+
+ private BundleAnnotationFinder createBundleAnnotationFinder(Bundle bundle) {
+ ServiceReference sr = this.context.getServiceReference(PackageAdmin.class.getName());
+ PackageAdmin pa = (PackageAdmin) this.context.getService(sr);
+ BundleAnnotationFinder baf = null;
+ try {
+ baf = new BundleAnnotationFinder(pa, bundle);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ this.context.ungetService(sr);
+
+ return baf;
+ }
+
+ public URL createBlueprintModel(Bundle bundle) {
+
+ Tblueprint tblueprint = generateBlueprintModel(bundle);
+
+ if (tblueprint != null) {
+ // create the generated blueprint xml file in bundle storage
+ // area
+ BundleContext ctx = getBlueprintExtenderContext();
+
+ if (ctx == null) {
+ // blueprint extender doesn't exist, let' still generate the
+ // bundle, using the bundle's bundle context
+ ctx = bundle.getBundleContext();
+ }
+
+ File dir = ctx.getDataFile(bundle.getSymbolicName() + "/"
+ + bundle.getVersion() + "/");
+ if (!dir.exists()) {
+ dir.mkdirs();
+ }
+ String blueprintPath = cachePath(bundle,
+ "annotation-generated-blueprint.xml");
+ File file = ctx.getDataFile(blueprintPath);
+ if (!file.exists()) {
+ try {
+ file.createNewFile();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ try {
+ marshallOBRModel(tblueprint, file);
+ } catch (JAXBException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ System.out.println("generated annotation xml is located " + file.getAbsolutePath());
+ try {
+ return file.toURL();
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ return null;
+
+ }
+
+ private void marshallOBRModel(Tblueprint tblueprint, File blueprintFile)
+ throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(Tblueprint.class);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+ marshaller.marshal(tblueprint, blueprintFile);
+
+ }
+
+ private Tblueprint generateBlueprintModel(Bundle bundle) {
+ BundleAnnotationFinder baf = createBundleAnnotationFinder(bundle);
+
+ List<Class> blueprintClasses = baf.findAnnotatedClasses(Blueprint.class);
+ List<Class> beanClasses = baf.findAnnotatedClasses(Bean.class);
+ List<Class> refListenerClasses = baf.findAnnotatedClasses(ReferenceListener.class);
+ List<Class> regListenerClasses = baf.findAnnotatedClasses(RegistrationListener.class);
+ Map<String, TreferenceListener> reflMap = new HashMap<String, TreferenceListener>();
+ Map<String, TregistrationListener> reglMap = new HashMap<String, TregistrationListener>();
+
+ Tblueprint tblueprint = new Tblueprint();
+
+
+ if (!blueprintClasses.isEmpty()) {
+ // use the first annotated blueprint annotation
+ Blueprint blueprint = (Blueprint)blueprintClasses.get(0).getAnnotation(Blueprint.class);
+ tblueprint.setDefaultActivation(blueprint.defaultActivation());
+ tblueprint.setDefaultAvailability(blueprint.defaultAvailability());
+ tblueprint.setDefaultTimeout(convertToBigInteger(blueprint.defaultTimeout()));
+ }
+
+ List<Object> components = tblueprint.getServiceOrReferenceListOrBean();
+
+ // try to process classes that have @ReferenceListener or @RegistrationLister first
+ // as we want the refl and regl maps populated before processing @Bean annotation.
+ for (Class refListener : refListenerClasses) {
+ Bean bean = (Bean) refListener.getAnnotation(Bean.class);
+
+ // register the treference with its id
+ TreferenceListener tref = generateTrefListener(refListener);
+
+ if (bean.id().length() > 0) {
+ reflMap.put(bean.id(), tref);
+ } else {
+ throw new BlueprintAnnotationException("Unable to find the id for the @ReferenceListener annotated class " + refListener.getName());
+ }
+ }
+
+
+ for (Class regListener : regListenerClasses) {
+ Bean bean = (Bean) regListener.getAnnotation(Bean.class);
+
+ // register the tregistrationListener with its id
+ TregistrationListener tref = generateTregListener(regListener);
+
+ if (bean.id().length() > 0) {
+ reglMap.put(bean.id(), tref);
+ } else {
+ throw new BlueprintAnnotationException("Unable to find the id for the @RegistrationListener annotated class " + regListener.getName());
+ }
+ }
+
+ for (Class clazz : beanClasses) {
+ // @Bean annotation detected
+ Bean bean = (Bean)clazz.getAnnotation(Bean.class);
+ Tbean tbean = new Tbean();
+
+ // process depends-on property
+ String[] dependsOn = bean.dependsOn();
+ if (!containsValid(dependsOn)) {
+ tbean.setDependsOn(null);
+ } else {
+ List<String> dons = Arrays.asList(dependsOn);
+ tbean.setDependsOn(dons);
+ }
+
+ // process id property
+ String id = bean.id();
+ if (id.length() > 0) {
+ tbean.setId(id);
+ } else {
+ // should we auto generate an id, based on the class name?
+ tbean.setId(clazz.getSimpleName());
+ }
+
+ // process the clazz property
+ tbean.setClazz(clazz.getName());
+
+ // process activation
+ String activation = bean.activation();
+ if (activation.length() > 0) {
+ if (activation.equalsIgnoreCase("eager") || activation.equalsIgnoreCase("lazy")) {
+ tbean.setActivation(bean.activation());
+ } else {
+ throw new BlueprintAnnotationException("Invalid bean activation value " + activation + " for " + clazz.getName());
+ }
+ }
+
+ // process description
+ if (bean.description().length() > 0) {
+ Tdescription desp = new Tdescription();
+ desp.getContent().add(bean.description());
+ tbean.setDescription(desp);
+ }
+
+ // process scope
+ String scope = bean.scope();
+ if (scope.length() > 0) {
+ if (scope.equalsIgnoreCase("singleton") || scope.equalsIgnoreCase("prototype")) {
+ tbean.setScope(scope);
+ } else {
+ throw new BlueprintAnnotationException("Invalid bean scope value " + scope + " for " + clazz.getName());
+ }
+ }
+
+ // process factory ref
+ String factoryRef = bean.factoryRef();
+ if (factoryRef.length() > 0) {
+ tbean.setFactoryRef(factoryRef);
+ }
+
+ // process factory method
+ String factoryMethod = bean.factoryMethod();
+ if (factoryMethod.length() > 0) {
+ tbean.setFactoryMethod(factoryMethod);
+ }
+
+
+ List<Object> props = tbean.getArgumentOrPropertyOrAny();
+
+ // process args
+ Arg[] args = bean.args();
+
+ if (args.length > 0) {
+ for (int i = 0; i < args.length; i++) {
+ Targument targ = createTargument(args[i]);
+ if (targ != null) {
+ props.add(targ);
+ }
+ }
+ }
+
+ Field[] fields = clazz.getDeclaredFields();
+ for (int i = 0; i < fields.length; i++) {
+ if (fields[i].isAnnotationPresent(Inject.class)) {
+ if (fields[i].isAnnotationPresent(Reference.class)) {
+ // the field is also annotated with @Reference
+ Reference ref = (Reference)fields[i].getAnnotation(Reference.class);
+ Treference tref = generateTref(ref, reflMap);
+ components.add(tref);
+ } else if (fields[i].isAnnotationPresent(ReferenceList.class)) {
+ // the field is also annotated with @ReferenceList
+ ReferenceList ref = (ReferenceList)fields[i].getAnnotation(ReferenceList.class);
+ TreferenceList tref = generateTrefList(ref, reflMap);
+ components.add(tref);
+
+ } else {
+ Tproperty tp = createTproperty(fields[i].getName(), fields[i].getAnnotation(Inject.class));
+ props.add(tp);
+ }
+ }
+ }
+
+ // check if the bean also declares init, destroy or inject annotation on methods
+ Method[] methods = clazz.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++) {
+ if (methods[i].isAnnotationPresent(Init.class)) {
+ tbean.setInitMethod(methods[i].getName());
+ } else if (methods[i].isAnnotationPresent(Destroy.class)) {
+ tbean.setDestroyMethod(methods[i].getName());
+ } else if (methods[i].isAnnotationPresent(Inject.class)) {
+ String propertyName = convertFromMethodName(methods[i].getName());
+ Tproperty tp = createTproperty(propertyName, methods[i].getAnnotation(Inject.class));
+ props.add(tp);
+ } else if (methods[i].isAnnotationPresent(Arg.class)) {
+ Targument targ = createTargument(methods[i].getAnnotation(Arg.class));
+ props.add(targ);
+ }
+ }
+
+ // check if the bean also declares service
+ if (clazz.getAnnotation(Service.class) != null) {
+ Tservice tservice = generateTservice(clazz, id, reglMap);
+ components.add(tservice);
+ }
+
+ // check if the clazz implement Converter, if so, it is Converter
+ boolean isConverter = isConverter(clazz);
+ if (isConverter) {
+ TtypeConverters converters = tblueprint.getTypeConverters();
+ List<Object> objects = converters.getBeanOrReferenceOrRef();
+ objects.add(tbean);
+ } else {
+ components.add(tbean);
+ }
+ }
+
+ return tblueprint;
+ }
+
+ private TreferenceListener generateTrefListener(Class refListener) {
+ ReferenceListener rl = (ReferenceListener) refListener.getAnnotation(ReferenceListener.class);
+
+ String ref = rl.ref();
+ String bind = null;
+ String unbind = null;
+
+ // also check bind/unbind method
+ Method[] methods = refListener.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++) {
+ if (methods[i].isAnnotationPresent(Bind.class)) {
+ if (bind == null) {
+ bind = methods[i].getName();
+ } else if (!bind.equals(methods[i].getName())) {
+ throw new BlueprintAnnotationException("@Bind annottaed method for reference listener " + refListener.getName() + " are not consistent");
+ }
+ continue;
+ }
+ if (methods[i].isAnnotationPresent(Unbind.class)) {
+ if (unbind == null) {
+ unbind = methods[i].getName();
+ } else if (!unbind.equals(methods[i].getName())) {
+ throw new BlueprintAnnotationException("@Unbind annotated method for reference listener " + refListener.getName() + " are not consistent");
+ }
+ continue;
+ }
+ }
+
+ TreferenceListener trl = new TreferenceListener();
+ if (bind != null) {
+ trl.setBindMethod(bind);
+ }
+ if (unbind != null) {
+ trl.setUnbindMethod(unbind);
+ }
+
+ if (ref != null) {
+ trl.setRefAttribute(ref);
+ }
+
+ return trl;
+ }
+
+ private TregistrationListener generateTregListener(Class regListener) {
+ RegistrationListener rl = (RegistrationListener) regListener.getAnnotation(RegistrationListener.class);
+
+ String register = null;
+ String unregister = null;
+
+ // also check bind/unbind method
+ Method[] methods = regListener.getDeclaredMethods();
+ for (int i = 0; i < methods.length; i++) {
+ if (methods[i].isAnnotationPresent(Register.class)) {
+ if (register == null) {
+ register = methods[i].getName();
+ } else if (!register.equals(methods[i].getName())) {
+ throw new BlueprintAnnotationException("@Register annottaed method for registration listener " + regListener.getName() + " are not consistent");
+ }
+ continue;
+ }
+ if (methods[i].isAnnotationPresent(Unregister.class)) {
+ if (unregister == null) {
+ unregister = methods[i].getName();
+ } else if (!unregister.equals(methods[i].getName())) {
+ throw new BlueprintAnnotationException("@Unregister annotated method for registration listener " + regListener.getName() + " are not consistent");
+ }
+ continue;
+ }
+ }
+
+ TregistrationListener trl = new TregistrationListener();
+ if (register != null) {
+ trl.setRegistrationMethod(register);
+ }
+ if (unregister != null) {
+ trl.setUnregistrationMethod(unregister);
+ }
+
+ return trl;
+ }
+
+ private Targument createTargument(Arg arg) {
+ String value = arg.value();
+ String ref = arg.ref();
+ Targument targ = null;
+ if (value.length() > 0) {
+ targ = new Targument();
+ targ.setValueAttribute(value);
+ }
+
+ if (ref.length() > 0) {
+ if (targ == null) {
+ targ = new Targument();
+ }
+
+ targ.setRefAttribute(ref);
+ }
+
+ // TODO process description, index of Arg annotation
+ return targ;
+ }
+
+ private String convertFromMethodName(String name) {
+ if (name.length() > 3) {
+ name = name.substring(3);
+ } else {
+ throw new BlueprintAnnotationException("The annotated method name " + name + " is invalid");
+ }
+ String firstChar = name.substring(0, 1).toLowerCase();
+
+ if (name.length() == 1) {
+ return firstChar;
+ } else {
+ return firstChar + name.substring(1);
+ }
+ }
+
+ /**
+ * @param nm method or field name
+ * @param inj inject annotation
+ * @return
+ */
+ private Tproperty createTproperty(String nm, Inject inj) {
+ String value = inj.value();
+ String ref = inj.ref();
+ String name = inj.name();
+ String desp = inj.description();
+
+ Tproperty tp = new Tproperty();
+ if (value.length() > 0) {
+ Tvalue tvalue = new Tvalue();
+ tvalue.setContent(value);
+ tp.setValue(tvalue);
+ }
+
+ if (ref.length() > 0) {
+ tp.setRefAttribute(ref);
+ }
+
+ if (name.length() > 0) {
+ tp.setName(name);
+ } else {
+ tp.setName(nm);
+ }
+
+ if (desp.length() > 0) {
+ Tdescription tdesp = new Tdescription();
+ tdesp.getContent().add(desp);
+ tp.setDescription(tdesp);
+
+ }
+
+ return tp;
+ }
+
+ private boolean isConverter(Class clazz) {
+ Class[] classes = clazz.getInterfaces();
+ for (int i = 0; i < classes.length; i++) {
+ if (classes[i].getName().equals(Converter.class.getName())) {
+ return true;
+ }
+
+ }
+ return false;
+
+ }
+
+ private BigInteger convertToBigInteger(int timeout) {
+ return BigInteger.valueOf(timeout * 1000);
+ }
+
+ private boolean containsValid(String[] dependsOn) {
+ for (int i = 0; i < dependsOn.length; i++) {
+ if (dependsOn[i].length() != 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ // copy from blueprint extender
+ private String cachePath(Bundle bundle, String filePath) {
+ return bundle.getSymbolicName() + "/" + bundle.getVersion() + "/"
+ + filePath;
+ }
+
+ private Treference generateTref(Reference ref, Map<String, TreferenceListener> reflMap) {
+
+ String id = ref.id();
+ String availability = ref.availability();
+ String compName = ref.componentName();
+ String desp = ref.description();
+ String filter = ref.filter();
+ Class<?> serviceInterface = ref.serviceInterface();
+ ReferenceListener[] refListeners = ref.referenceListeners();
+ int timeout = ref.timeout();
+ Treference tref = new Treference();
+
+ // can not think of configuring depends on for reference
+ tref.setDependsOn(null);
+
+ if (id.length() > 0) {
+ tref.setId(id);
+ }
+
+ if (availability.length() > 0) {
+ tref.setAvailability(availability);
+ }
+ if (compName.length() > 0) {
+ tref.setComponentName(compName);
+ }
+ if (desp.length() > 0) {
+ Tdescription value = new Tdescription();
+ value.getContent().add(desp);
+ tref.setDescription(value);
+ }
+ if (filter.length() > 0) {
+ tref.setFilter(filter);
+ }
+ if (serviceInterface != Object.class) {
+ tref.setInterface(serviceInterface.getName());
+ }
+
+ if (timeout > 0) {
+ tref.setTimeout(convertToBigInteger(timeout));
+ }
+ for (ReferenceListener rl : refListeners) {
+ String rf = rl.ref();
+ TreferenceListener trl = reflMap.get(rf);
+ if (trl != null) {
+ trl.setRefAttribute(rf);
+ tref.getReferenceListener().add(trl);
+ } else {
+ throw new BlueprintAnnotationException("Unable to find the ReferenceListener ref " + rf);
+ }
+ }
+
+ return tref;
+ }
+
+ private TreferenceList generateTrefList(ReferenceList ref, Map<String, TreferenceListener> reflMap) {
+ String id = ref.id();
+ String availability = ref.availability();
+ String compName = ref.componentName();
+ String desp = ref.description();
+ String filter = ref.filter();
+ Class<?> serviceInterface = ref.serviceInterface();
+ ReferenceListener[] refListeners = ref.referenceListeners();
+ TreferenceList tref = new TreferenceList();
+
+ // can not think of configuring depends on for referencelist
+ tref.setDependsOn(null);
+
+ if (id.length() > 0) {
+ tref.setId(id);
+ }
+
+ if (availability.length() > 0) {
+ tref.setAvailability(availability);
+ }
+ if (compName.length() > 0) {
+ tref.setComponentName(compName);
+ }
+ if (desp.length() > 0) {
+ Tdescription value = new Tdescription();
+ value.getContent().add(desp);
+ tref.setDescription(value);
+ }
+ if (filter.length() > 0) {
+ tref.setFilter(filter);
+ }
+ if (serviceInterface != Object.class) {
+ tref.setInterface(serviceInterface.getName());
+ }
+
+ for (ReferenceListener rl : refListeners) {
+ String rf = rl.ref();
+ TreferenceListener trl = reflMap.get(rf);
+ if (trl != null) {
+ trl.setRefAttribute(rf);
+ tref.getReferenceListener().add(trl);
+ } else {
+ throw new BlueprintAnnotationException("Unable to find the ReferenceListener ref " + rf);
+ }
+ }
+
+ return tref;
+ }
+
+ private Tservice generateTservice(Class clazz, String id, Map<String, TregistrationListener> reglMap) {
+ Service service = (Service) clazz.getAnnotation(Service.class);
+ Class<?>[] interfaces = service.interfaces();
+ int ranking = service.ranking();
+ String autoExport = service.autoExport();
+ ServiceProperty[] serviceProperties = service.serviceProperties();
+ RegistrationListener[] regListeners = service.registerationListeners();
+
+ Tservice tservice = new Tservice();
+
+ // can not think of configuring depends on for service
+ tservice.setDependsOn(null);
+
+ // use the bean id as the ref value since we are exposing service for the bean
+ tservice.setRefAttribute(id);
+
+ if (autoExport.length() > 0) {
+ tservice.setAutoExport(autoExport);
+ }
+ if (ranking > 0) {
+ tservice.setRanking(ranking);
+ }
+ for (Class<?> interf : interfaces) {
+ Tinterfaces tInterfaces = new Tinterfaces();
+ if (interf != null) {
+ tInterfaces.getValue().add(interf.getName());
+ }
+ tservice.setInterfaces(tInterfaces);
+ }
+
+ // process service property. only key value as string are supported for now
+ for (ServiceProperty sp : serviceProperties) {
+ if (sp != null) {
+ String key = sp.key();
+ String value = sp.value();
+ if (key.length() > 0 && value.length() > 0) {
+ TservicePropertyEntry tsp = new TservicePropertyEntry();
+ tsp.setKey(key);
+ tsp.setValueAttribute(value);
+ tservice.getServiceProperties().getEntry().add(tsp);
+ }
+
+ }
+ }
+
+ for (RegistrationListener regListener : regListeners) {
+ String ref = regListener.ref();
+ if (ref.length() > 0) {
+ TregistrationListener tregListener = reglMap.get(ref);
+ tregListener.setRefAttribute(ref);
+ tservice.getRegistrationListener().add(tregListener);
+
+ } else {
+ throw new BlueprintAnnotationException("No ref id for service registration listener " + " for " + clazz.getName());
+ }
+ }
+
+ return tservice;
+ }
+}
Added: aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/jaxb/ObjectFactory.java
URL: http://svn.apache.org/viewvc/aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/jaxb/ObjectFactory.java?rev=1075139&view=auto
==============================================================================
--- aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/jaxb/ObjectFactory.java (added)
+++ aries/tags/blueprint-0.2-incubating/blueprint-annotation-impl/src/main/java/org/apache/aries/blueprint/jaxb/ObjectFactory.java Sun Feb 27 20:35:36 2011
@@ -0,0 +1,497 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.3 in JDK 1.6
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2010.04.23 at 12:57:08 PM EDT
+//
+
+
+package org.apache.aries.blueprint.jaxb;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the org.apache.aries.blueprint.jaxb package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _Blueprint_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "blueprint");
+ private final static QName _TbeanArgument_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "argument");
+ private final static QName _TbeanProperty_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "property");
+ private final static QName _TtypeConvertersReference_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "reference");
+ private final static QName _TtypeConvertersBean_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "bean");
+ private final static QName _TtypeConvertersRef_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "ref");
+ private final static QName _TblueprintReferenceList_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "reference-list");
+ private final static QName _TblueprintService_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "service");
+ private final static QName _TcollectionIdref_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "idref");
+ private final static QName _TcollectionArray_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "array");
+ private final static QName _TcollectionMap_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "map");
+ private final static QName _TcollectionList_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "list");
+ private final static QName _TcollectionProps_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "props");
+ private final static QName _TcollectionValue_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "value");
+ private final static QName _TcollectionSet_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "set");
+ private final static QName _TcollectionNull_QNAME = new QName("http://www.osgi.org/xmlns/blueprint/v1.0.0", "null");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.apache.aries.blueprint.jaxb
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link Tprop }
+ *
+ */
+ public Tprop createTprop() {
+ return new Tprop();
+ }
+
+ /**
+ * Create an instance of {@link Tref }
+ *
+ */
+ public Tref createTref() {
+ return new Tref();
+ }
+
+ /**
+ * Create an instance of {@link Tbean }
+ *
+ */
+ public Tbean createTbean() {
+ return new Tbean();
+ }
+
+ /**
+ * Create an instance of {@link TtypeConverters }
+ *
+ */
+ public TtypeConverters createTtypeConverters() {
+ return new TtypeConverters();
+ }
+
+ /**
+ * Create an instance of {@link TtypedCollection }
+ *
+ */
+ public TtypedCollection createTtypedCollection() {
+ return new TtypedCollection();
+ }
+
+ /**
+ * Create an instance of {@link TinlinedService }
+ *
+ */
+ public TinlinedService createTinlinedService() {
+ return new TinlinedService();
+ }
+
+ /**
+ * Create an instance of {@link TinlinedReferenceList }
+ *
+ */
+ public TinlinedReferenceList createTinlinedReferenceList() {
+ return new TinlinedReferenceList();
+ }
+
+ /**
+ * Create an instance of {@link Targument }
+ *
+ */
+ public Targument createTargument() {
+ return new Targument();
+ }
+
+ /**
+ * Create an instance of {@link Tinterfaces }
+ *
+ */
+ public Tinterfaces createTinterfaces() {
+ return new Tinterfaces();
+ }
+
+ /**
+ * Create an instance of {@link Tblueprint }
+ *
+ */
+ public Tblueprint createTblueprint() {
+ return new Tblueprint();
+ }
+
+ /**
+ * Create an instance of {@link Tproperty }
+ *
+ */
+ public Tproperty createTproperty() {
+ return new Tproperty();
+ }
+
+ /**
+ * Create an instance of {@link TserviceReference }
+ *
+ */
+ public TserviceReference createTserviceReference() {
+ return new TserviceReference();
+ }
+
+ /**
+ * Create an instance of {@link TserviceProperties }
+ *
+ */
+ public TserviceProperties createTserviceProperties() {
+ return new TserviceProperties();
+ }
+
+ /**
+ * Create an instance of {@link TinlinedReference }
+ *
+ */
+ public TinlinedReference createTinlinedReference() {
+ return new TinlinedReference();
+ }
+
+ /**
+ * Create an instance of {@link Tkey }
+ *
+ */
+ public Tkey createTkey() {
+ return new Tkey();
+ }
+
+ /**
+ * Create an instance of {@link Tdescription }
+ *
+ */
+ public Tdescription createTdescription() {
+ return new Tdescription();
+ }
+
+ /**
+ * Create an instance of {@link Tvalue }
+ *
+ */
+ public Tvalue createTvalue() {
+ return new Tvalue();
+ }
+
+ /**
+ * Create an instance of {@link TreferenceList }
+ *
+ */
+ public TreferenceList createTreferenceList() {
+ return new TreferenceList();
+ }
+
+ /**
+ * Create an instance of {@link TreferenceListener }
+ *
+ */
+ public TreferenceListener createTreferenceListener() {
+ return new TreferenceListener();
+ }
+
+ /**
+ * Create an instance of {@link Treference }
+ *
+ */
+ public Treference createTreference() {
+ return new Treference();
+ }
+
+ /**
+ * Create an instance of {@link Tservice }
+ *
+ */
+ public Tservice createTservice() {
+ return new Tservice();
+ }
+
+ /**
+ * Create an instance of {@link Tnull }
+ *
+ */
+ public Tnull createTnull() {
+ return new Tnull();
+ }
+
+ /**
+ * Create an instance of {@link TmapEntry }
+ *
+ */
+ public TmapEntry createTmapEntry() {
+ return new TmapEntry();
+ }
+
+ /**
+ * Create an instance of {@link TregistrationListener }
+ *
+ */
+ public TregistrationListener createTregistrationListener() {
+ return new TregistrationListener();
+ }
+
+ /**
+ * Create an instance of {@link TinlinedBean }
+ *
+ */
+ public TinlinedBean createTinlinedBean() {
+ return new TinlinedBean();
+ }
+
+ /**
+ * Create an instance of {@link Tprops }
+ *
+ */
+ public Tprops createTprops() {
+ return new Tprops();
+ }
+
+ /**
+ * Create an instance of {@link Tmap }
+ *
+ */
+ public Tmap createTmap() {
+ return new Tmap();
+ }
+
+ /**
+ * Create an instance of {@link TservicePropertyEntry }
+ *
+ */
+ public TservicePropertyEntry createTservicePropertyEntry() {
+ return new TservicePropertyEntry();
+ }
+
+ /**
+ * Create an instance of {@link Tcollection }
+ *
+ */
+ public Tcollection createTcollection() {
+ return new Tcollection();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tblueprint }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "blueprint")
+ public JAXBElement<Tblueprint> createBlueprint(Tblueprint value) {
+ return new JAXBElement<Tblueprint>(_Blueprint_QNAME, Tblueprint.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Targument }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "argument", scope = Tbean.class)
+ public JAXBElement<Targument> createTbeanArgument(Targument value) {
+ return new JAXBElement<Targument>(_TbeanArgument_QNAME, Targument.class, Tbean.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tproperty }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "property", scope = Tbean.class)
+ public JAXBElement<Tproperty> createTbeanProperty(Tproperty value) {
+ return new JAXBElement<Tproperty>(_TbeanProperty_QNAME, Tproperty.class, Tbean.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Treference }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "reference", scope = TtypeConverters.class)
+ public JAXBElement<Treference> createTtypeConvertersReference(Treference value) {
+ return new JAXBElement<Treference>(_TtypeConvertersReference_QNAME, Treference.class, TtypeConverters.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tbean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "bean", scope = TtypeConverters.class)
+ public JAXBElement<Tbean> createTtypeConvertersBean(Tbean value) {
+ return new JAXBElement<Tbean>(_TtypeConvertersBean_QNAME, Tbean.class, TtypeConverters.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tref }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "ref", scope = TtypeConverters.class)
+ public JAXBElement<Tref> createTtypeConvertersRef(Tref value) {
+ return new JAXBElement<Tref>(_TtypeConvertersRef_QNAME, Tref.class, TtypeConverters.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Treference }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "reference", scope = Tblueprint.class)
+ public JAXBElement<Treference> createTblueprintReference(Treference value) {
+ return new JAXBElement<Treference>(_TtypeConvertersReference_QNAME, Treference.class, Tblueprint.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TreferenceList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "reference-list", scope = Tblueprint.class)
+ public JAXBElement<TreferenceList> createTblueprintReferenceList(TreferenceList value) {
+ return new JAXBElement<TreferenceList>(_TblueprintReferenceList_QNAME, TreferenceList.class, Tblueprint.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tbean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "bean", scope = Tblueprint.class)
+ public JAXBElement<Tbean> createTblueprintBean(Tbean value) {
+ return new JAXBElement<Tbean>(_TtypeConvertersBean_QNAME, Tbean.class, Tblueprint.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tservice }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "service", scope = Tblueprint.class)
+ public JAXBElement<Tservice> createTblueprintService(Tservice value) {
+ return new JAXBElement<Tservice>(_TblueprintService_QNAME, Tservice.class, Tblueprint.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tref }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "idref", scope = Tcollection.class)
+ public JAXBElement<Tref> createTcollectionIdref(Tref value) {
+ return new JAXBElement<Tref>(_TcollectionIdref_QNAME, Tref.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tcollection }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "array", scope = Tcollection.class)
+ public JAXBElement<Tcollection> createTcollectionArray(Tcollection value) {
+ return new JAXBElement<Tcollection>(_TcollectionArray_QNAME, Tcollection.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tmap }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "map", scope = Tcollection.class)
+ public JAXBElement<Tmap> createTcollectionMap(Tmap value) {
+ return new JAXBElement<Tmap>(_TcollectionMap_QNAME, Tmap.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tcollection }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "list", scope = Tcollection.class)
+ public JAXBElement<Tcollection> createTcollectionList(Tcollection value) {
+ return new JAXBElement<Tcollection>(_TcollectionList_QNAME, Tcollection.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tprops }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "props", scope = Tcollection.class)
+ public JAXBElement<Tprops> createTcollectionProps(Tprops value) {
+ return new JAXBElement<Tprops>(_TcollectionProps_QNAME, Tprops.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TinlinedBean }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "bean", scope = Tcollection.class)
+ public JAXBElement<TinlinedBean> createTcollectionBean(TinlinedBean value) {
+ return new JAXBElement<TinlinedBean>(_TtypeConvertersBean_QNAME, TinlinedBean.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tvalue }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "value", scope = Tcollection.class)
+ public JAXBElement<Tvalue> createTcollectionValue(Tvalue value) {
+ return new JAXBElement<Tvalue>(_TcollectionValue_QNAME, Tvalue.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tref }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "ref", scope = Tcollection.class)
+ public JAXBElement<Tref> createTcollectionRef(Tref value) {
+ return new JAXBElement<Tref>(_TtypeConvertersRef_QNAME, Tref.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TinlinedService }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "service", scope = Tcollection.class)
+ public JAXBElement<TinlinedService> createTcollectionService(TinlinedService value) {
+ return new JAXBElement<TinlinedService>(_TblueprintService_QNAME, TinlinedService.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TinlinedReference }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "reference", scope = Tcollection.class)
+ public JAXBElement<TinlinedReference> createTcollectionReference(TinlinedReference value) {
+ return new JAXBElement<TinlinedReference>(_TtypeConvertersReference_QNAME, TinlinedReference.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TinlinedReferenceList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "reference-list", scope = Tcollection.class)
+ public JAXBElement<TinlinedReferenceList> createTcollectionReferenceList(TinlinedReferenceList value) {
+ return new JAXBElement<TinlinedReferenceList>(_TblueprintReferenceList_QNAME, TinlinedReferenceList.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tcollection }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "set", scope = Tcollection.class)
+ public JAXBElement<Tcollection> createTcollectionSet(Tcollection value) {
+ return new JAXBElement<Tcollection>(_TcollectionSet_QNAME, Tcollection.class, Tcollection.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Tnull }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.osgi.org/xmlns/blueprint/v1.0.0", name = "null", scope = Tcollection.class)
+ public JAXBElement<Tnull> createTcollectionNull(Tnull value) {
+ return new JAXBElement<Tnull>(_TcollectionNull_QNAME, Tnull.class, Tcollection.class, value);
+ }
+
+}