You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2008/11/14 12:06:00 UTC
svn commit: r713976 [3/3] - in /felix/trunk/ipojo:
annotations/src/main/java/org/apache/felix/ipojo/annotations/
composite/src/main/java/org/apache/felix/ipojo/composite/service/provides/
composite/src/main/resources/ core/src/main/java/org/apache/feli...
Modified: felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml?rev=713976&r1=713975&r2=713976&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml (original)
+++ felix/trunk/ipojo/tests/core/factories/src/main/resources/metadata.xml Fri Nov 14 03:05:57 2008
@@ -1,8 +1,5 @@
-<ipojo
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/schemas/core.xsd"
- xmlns="org.apache.felix.ipojo"
- >
+<ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/schemas/core.xsd" xmlns="org.apache.felix.ipojo">
<!-- Simple provider -->
<component
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
@@ -22,12 +19,25 @@
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
name="Factories-FooProviderType-Dyn" architecture="true">
<provides>
- <property name="int" field="intProp" value="2" />
- <property name="boolean" field="boolProp" value="false" />
- <property name="string" field="strProp" value="foo" />
+ <property name="int" field="intProp" value="2" mandatory="true"/>
+ <property name="boolean" field="boolProp" value="false" mandatory="true"/>
+ <property name="string" field="strProp" value="foo" mandatory="true"/>
<property name="strAProp" field="strAProp"
- value="{foo, bar}" />
- <property name="intAProp" field="intAProp" value="{ 1,2,3}" />
+ value="{foo, bar}" mandatory="true"/>
+ <property name="intAProp" field="intAProp" value="{ 1,2,3}" mandatory="true"/>
+ </provides>
+ </component>
+
+ <component
+ classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn"
+ name="Factories-FooProviderType-Dynopt" architecture="true">
+ <provides>
+ <property name="int" field="intProp" value="2"/>
+ <property name="boolean" field="boolProp" value="false"/>
+ <property name="string" field="strProp" value="foo"/>
+ <property name="strAProp" field="strAProp"
+ value="{foo, bar}"/>
+ <property name="intAProp" field="intAProp" value="{ 1,2,3}"/>
</provides>
</component>
@@ -35,12 +45,25 @@
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
name="Factories-FooProviderType-2" architecture="true">
<provides>
- <property name="int" type="int" value="2" />
- <property name="long" type="long" value="40" />
- <property name="string" type="java.lang.String" value="foo" />
+ <property name="int" type="int" value="2" mandatory="true" />
+ <property name="long" type="long" value="40" mandatory="true"/>
+ <property name="string" type="java.lang.String" value="foo" mandatory="true"/>
+ <property name="strAProp" type="java.lang.String[]"
+ value="{foo, bar}" mandatory="true" />
+ <property name="intAProp" type="int[]" value="{1,2,3}" mandatory="true"/>
+ </provides>
+ </component>
+
+ <component
+ classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+ name="Factories-FooProviderType-2opt" architecture="true">
+ <provides>
+ <property name="int" type="int" value="2"/>
+ <property name="long" type="long" value="40"/>
+ <property name="string" type="java.lang.String" value="foo"/>
<property name="strAProp" type="java.lang.String[]"
value="{foo, bar}" />
- <property name="intAProp" type="int[]" value="{1,2,3}" />
+ <property name="intAProp" type="int[]" value="{1,2,3}"/>
</provides>
</component>
@@ -48,12 +71,25 @@
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
name="Factories-FooProviderType-Dyn2" architecture="true">
<provides>
+ <property name="int" field="intProp" value="4" mandatory="true"/>
+ <property name="boolean" field="boolProp" mandatory="true"/>
+ <property name="string" field="strProp" mandatory="true"/>
+ <property name="strAProp" field="strAProp" mandatory="true"/>
+ <property name="intAProp" field="intAProp"
+ value="{1, 2,3 }" mandatory="true"/>
+ </provides>
+ </component>
+
+ <component
+ classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderTypeDyn2"
+ name="Factories-FooProviderType-Dyn2opt" architecture="true">
+ <provides>
<property name="int" field="intProp" value="4" />
- <property name="boolean" field="boolProp" />
- <property name="string" field="strProp" />
- <property name="strAProp" field="strAProp" />
+ <property name="boolean" field="boolProp"/>
+ <property name="string" field="strProp"/>
+ <property name="strAProp" field="strAProp"/>
<property name="intAProp" field="intAProp"
- value="{1, 2,3 }" />
+ value="{1, 2,3 }"/>
</provides>
</component>
@@ -61,13 +97,27 @@
classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
name="Factories-FooProviderType-3" architecture="true">
<provides>
- <property name="foo" field="m_foo" />
- <property name="bar" field="m_bar" />
- <property name="baz" type="java.lang.String" />
+ <property name="foo" field="m_foo" mandatory="true"/>
+ <property name="bar" field="m_bar" mandatory="true"/>
+ <property name="baz" type="java.lang.String" mandatory="true"/>
+ </provides>
+ <properties propagation="true">
+ <property name="foo" field="m_foo" mandatory="true"/>
+ <property name="bar" field="m_bar" mandatory="true"/>
+ </properties>
+ </component>
+
+ <component
+ classname="org.apache.felix.ipojo.test.scenarios.component.FooProviderType1"
+ name="Factories-FooProviderType-3opt" architecture="true">
+ <provides>
+ <property name="foo" field="m_foo"/>
+ <property name="bar" field="m_bar"/>
+ <property name="baz" type="java.lang.String"/>
</provides>
<properties propagation="true">
- <property name="foo" field="m_foo" />
- <property name="bar" field="m_bar" />
+ <property name="foo" field="m_foo"/>
+ <property name="bar" field="m_bar"/>
</properties>
</component>
Propchange: felix/trunk/ipojo/tests/core/service-dependency-comparator/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Fri Nov 14 03:05:57 2008
@@ -0,0 +1,4 @@
+target
+.classpath
+.project
+.settings
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/pom.xml?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/pom.xml (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/pom.xml Fri Nov 14 03:05:57 2008
@@ -0,0 +1,104 @@
+<!--
+ 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>
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>bundle</packaging>
+ <name>iPOJO Service Dependency (Binding Policy) Test Suite</name>
+ <artifactId>tests.core.service.dependency.bindingpolicy</artifactId>
+ <groupId>ipojo.tests</groupId>
+ <version>1.1.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.ipojo</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.ipojo.metadata</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>1.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ </dependency>
+ <dependency>
+ <groupId>ipojo.examples</groupId>
+ <artifactId>org.apache.felix.ipojo.junit4osgi</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>ipojo.tests</groupId>
+ <artifactId>tests.core.service.dependency</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>1.4.3</version>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Bundle-SymbolicName>
+ ${pom.artifactId}
+ </Bundle-SymbolicName>
+ <Private-Package>
+ org.apache.felix.ipojo.test.scenarios.service.dependency.comparator
+ </Private-Package>
+ <Test-Suite>
+ org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.ComparatorTestCase
+ </Test-Suite>
+ </instructions>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-ipojo-plugin</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>ipojo-bundle</goal>
+ </goals>
+ <configuration>
+ <ignoreAnnotations>true</ignoreAnnotations>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.4</source>
+ <target>1.4</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/ComparatorTestCase.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/ComparatorTestCase.java?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/ComparatorTestCase.java (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/ComparatorTestCase.java Fri Nov 14 03:05:57 2008
@@ -0,0 +1,141 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.comparator;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.junit4osgi.helpers.IPOJOHelper;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.osgi.framework.ServiceReference;
+
+public class ComparatorTestCase extends OSGiTestCase {
+
+ String gradeFactory="COMPARATOR-gradedFooProvider";
+ String dynamic = "COMPARATOR-DynamicCheckService";
+ String dynamicpriority = "COMPARATOR-DynamicPriorityCheckService";
+
+
+ IPOJOHelper helper;
+ ComponentInstance dynInstance;
+ ComponentInstance dpInstance;
+
+ public void setUp() {
+ helper = new IPOJOHelper(this);
+ dynInstance = helper.createComponentInstance(dynamic, (Properties) null);
+ dpInstance = helper.createComponentInstance(dynamicpriority, (Properties) null);
+ }
+
+ public void tearDown() {
+ dynInstance.dispose();
+ dpInstance.dispose();
+ }
+
+ public void testDynamic() {
+ ComponentInstance grade1 = createGrade(1);
+ ComponentInstance grade2 = createGrade(2);
+
+ ServiceReference ref = getServiceReferenceByName(CheckService.class.getName(), dynInstance.getInstanceName());
+ assertNotNull("CS availability", ref);
+
+ CheckService cs = (CheckService) context.getService(ref);
+ Properties result = cs.getProps();
+ int fsGrade = ((Integer) result.get("fs")).intValue();
+ int fs2Grade = ((Integer) result.get("fs2")).intValue();
+ int[] fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -1", 2, fsGrade);
+ assertEquals("fs2 grade -1", 2, fs2Grade);
+ assertEquals("fss grade size -1", 2, fssGrades.length);
+ assertEquals("fss grade[0] -1", 2, fssGrades[0]);
+ assertEquals("fss grade[1] -1", 1, fssGrades[1]);
+
+ ComponentInstance grade3 = createGrade(3);
+ result = cs.getProps();
+ fsGrade = ((Integer) result.get("fs")).intValue();
+ fs2Grade = ((Integer) result.get("fs2")).intValue();
+ fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -2", 2, fsGrade);
+ assertEquals("fs2 grade -2", 2, fs2Grade);
+ assertEquals("fss grade size -2", 3, fssGrades.length);
+ assertEquals("fss grade[0] -2", 2, fssGrades[0]);
+ assertEquals("fss grade[1] -2", 1, fssGrades[1]);
+ assertEquals("fss grade[2] -2", 3, fssGrades[2]);
+
+ grade2.stop();
+
+ result = cs.getProps();
+ fsGrade = ((Integer) result.get("fs")).intValue();
+ fs2Grade = ((Integer) result.get("fs2")).intValue();
+ fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -3", 3, fsGrade);
+ assertEquals("fs2 grade -3", 3, fs2Grade);
+ assertEquals("fss grade size -3", 2, fssGrades.length);
+ assertEquals("fss grade[0] -3", 1, fssGrades[0]);
+ assertEquals("fss grade[1] -3", 3, fssGrades[1]);
+
+ context.ungetService(ref);
+ grade1.dispose();
+ grade2.dispose();
+ grade3.dispose();
+ }
+
+ public void testDynamicPriority() {
+ ComponentInstance grade1 = createGrade(1);
+ ComponentInstance grade2 = createGrade(2);
+
+ ServiceReference ref = getServiceReferenceByName(CheckService.class.getName(), dpInstance.getInstanceName());
+ assertNotNull("CS availability", ref);
+
+ CheckService cs = (CheckService) context.getService(ref);
+ Properties result = cs.getProps();
+ int fsGrade = ((Integer) result.get("fs")).intValue();
+ int fs2Grade = ((Integer) result.get("fs2")).intValue();
+ int[] fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -1", 2, fsGrade);
+ assertEquals("fs2 grade -1", 2, fs2Grade);
+ assertEquals("fss grade size -1", 2, fssGrades.length);
+ assertEquals("fss grade[0] -1", 2, fssGrades[0]);
+ assertEquals("fss grade[1] -1", 1, fssGrades[1]);
+
+ ComponentInstance grade3 = createGrade(3);
+ result = cs.getProps();
+ fsGrade = ((Integer) result.get("fs")).intValue();
+ fs2Grade = ((Integer) result.get("fs2")).intValue();
+ fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -2", 3, fsGrade);
+ assertEquals("fs2 grade -2", 3, fs2Grade);
+ assertEquals("fss grade size -2", 3, fssGrades.length);
+ assertEquals("fss grade[0] -2", 3, fssGrades[0]);
+ assertEquals("fss grade[1] -2", 2, fssGrades[1]);
+ assertEquals("fss grade[2] -2", 1, fssGrades[2]);
+
+ grade2.stop();
+
+ result = cs.getProps();
+ fsGrade = ((Integer) result.get("fs")).intValue();
+ fs2Grade = ((Integer) result.get("fs2")).intValue();
+ fssGrades = (int[]) result.get("fss");
+
+ assertEquals("fs grade -3", 3, fsGrade);
+ assertEquals("fs2 grade -3", 3, fs2Grade);
+ assertEquals("fss grade size -3", 2, fssGrades.length);
+ assertEquals("fss grade[0] -3", 3, fssGrades[0]);
+ assertEquals("fss grade[1] -3", 1, fssGrades[1]);
+
+ context.ungetService(ref);
+ grade1.dispose();
+ grade2.dispose();
+ grade3.dispose();
+ }
+
+ private ComponentInstance createGrade(int grade) {
+ Properties props = new Properties();
+ props.put("grade", new Integer(grade));
+ return helper.createComponentInstance(gradeFactory, props);
+ }
+
+}
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/CheckServiceProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/CheckServiceProvider.java?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/CheckServiceProvider.java (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/CheckServiceProvider.java Fri Nov 14 03:05:57 2008
@@ -0,0 +1,60 @@
+/*
+ * 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.felix.ipojo.test.scenarios.service.dependency.comparator.component;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
+public class CheckServiceProvider implements CheckService {
+
+ FooService fs;
+
+ FooService fs2;
+
+ FooService[] fss;
+
+
+ public boolean check() {
+ return fs.foo();
+ }
+
+ public Properties getProps() {
+ Properties props = new Properties();
+ props.put("fs", new Integer(fs.getInt()));
+ props.put("fs2", new Integer(fs2.getInt()));
+
+ int[] grades = new int[fss.length];
+ props.put("fss", grades);
+
+ return props;
+ }
+
+ void bind(FooService svc) {
+ fs2 = svc;
+ }
+
+ void unbind(FooService svc) {
+ fs2 = null;
+ }
+
+
+
+}
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradeComparator.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradeComparator.java?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradeComparator.java (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradeComparator.java Fri Nov 14 03:05:57 2008
@@ -0,0 +1,31 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component;
+
+import java.util.Comparator;
+
+import org.osgi.framework.ServiceReference;
+
+public class GradeComparator implements Comparator {
+
+ public int compare(Object arg0, Object arg1) {
+ ServiceReference ref0 = null;
+ ServiceReference ref1 = null;
+ Integer grade0 = null;
+ Integer grade1 = null;
+ if (arg0 instanceof ServiceReference) {
+ ref0 = (ServiceReference) arg0;
+ grade0 = (Integer) ref0.getProperty("grade");
+ }
+ if (arg1 instanceof ServiceReference) {
+ ref1 = (ServiceReference) arg1;
+ grade1 = (Integer) ref1.getProperty("grade");
+ }
+
+ if (ref0 != null && ref1 != null
+ && grade0 != null && grade1 != null) {
+ return grade1.compareTo(grade0); // Best grade first.
+ } else {
+ return 0; // Equals
+ }
+ }
+
+}
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradedFooServiceProvider.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradedFooServiceProvider.java?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradedFooServiceProvider.java (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/java/org/apache/felix/ipojo/test/scenarios/service/dependency/comparator/component/GradedFooServiceProvider.java Fri Nov 14 03:05:57 2008
@@ -0,0 +1,40 @@
+package org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.test.scenarios.service.dependency.service.FooService;
+
+public class GradedFooServiceProvider implements FooService {
+
+
+ private int grade;
+
+ public boolean foo() {
+ return grade > 0;
+ }
+
+ public Properties fooProps() {
+ return null;
+ }
+
+ public boolean getBoolean() {
+ return false;
+ }
+
+ public double getDouble() {
+ return 0;
+ }
+
+ public int getInt() {
+ return grade;
+ }
+
+ public long getLong() {
+ return 0;
+ }
+
+ public Boolean getObject() {
+ return null;
+ }
+
+}
Added: felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml?rev=713976&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml (added)
+++ felix/trunk/ipojo/tests/core/service-dependency-comparator/src/main/resources/metadata.xml Fri Nov 14 03:05:57 2008
@@ -0,0 +1,36 @@
+<ipojo
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="org.apache.felix.ipojo http://people.apache.org/~clement/ipojo/schemas/core.xsd"
+ xmlns="org.apache.felix.ipojo"
+>
+ <component classname="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradedFooServiceProvider"
+ name="COMPARATOR-gradedFooProvider">
+ <provides>
+ <property field="grade"/>
+ </provides>
+ </component>
+
+
+ <component classname="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.CheckServiceProvider"
+ name="COMPARATOR-DynamicCheckService">
+ <provides/>
+ <requires field="fs" comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator"/>
+ <requires field="fss" comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator"/>
+ <requires comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator">
+ <callback type="bind" method="bind"/>
+ <callback type="unbind" method="unbind"/>
+ </requires>
+ </component>
+
+ <component classname="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.CheckServiceProvider"
+ name="COMPARATOR-DynamicPriorityCheckService">
+ <provides/>
+ <requires policy="dynamic-priority" field="fs" comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator"/>
+ <requires policy="dynamic-priority" field="fss" comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator"/>
+ <requires policy="dynamic-priority" comparator="org.apache.felix.ipojo.test.scenarios.service.dependency.comparator.component.GradeComparator">
+ <callback type="bind" method="bind"/>
+ <callback type="unbind" method="unbind"/>
+ </requires>
+ </component>
+
+</ipojo>
Modified: felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java?rev=713976&r1=713975&r2=713976&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java (original)
+++ felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicProps.java Fri Nov 14 03:05:57 2008
@@ -31,6 +31,7 @@
ComponentInstance fooProvider1;
ComponentInstance fooProvider2;
ComponentInstance fooProvider3;
+ ComponentInstance fooProvider4;
public void setUp() {
String type = "PS-FooProviderType-Dyn";
@@ -58,6 +59,10 @@
p3.put("intAProp", new int[0]);
fooProvider3 = Utils.getComponentInstance(context, type2, p3);
+ Properties p4 = new Properties();
+ p4.put("instance.name","FooProvider-4");
+ fooProvider4 = Utils.getComponentInstance(context, type2, p4);
+
}
public void tearDown() {
@@ -67,6 +72,8 @@
fooProvider2 = null;
fooProvider3.dispose();
fooProvider3 = null;
+ fooProvider4.dispose();
+ fooProvider4 = null;
}
public void testProperties1() {
@@ -228,4 +235,52 @@
}
+ public void testProperties4() {
+ ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-4");
+ assertNotNull("Check the availability of the FS service", sr);
+
+ // Check service properties
+ Integer intProp = (Integer) sr.getProperty("int");
+ Object boolProp = sr.getProperty("boolean");
+ Object strProp = sr.getProperty("string");
+ Object strAProp = sr.getProperty("strAProp");
+ int[] intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(4)); // Set by the component type.
+ assertEquals("Check boolProp equality", boolProp, null);
+ assertEquals("Check strProp equality", strProp, null);
+ assertNull("Check strAProp nullity", strAProp);
+ assertNotNull("Check intAProp not nullity", intAProp); // Set by the component type.
+ assertNotNull("Check intAProp not nullity", intAProp);
+ int[] v2 = new int[] {1, 2, 3};
+ for (int i = 0; i < intAProp.length; i++) {
+ if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+ }
+
+ // Invoke
+ FooService fs = (FooService) context.getService(sr);
+ assertTrue("invoke fs", fs.foo());
+
+ // Re-check the property (change)
+ intProp = (Integer) sr.getProperty("int");
+ boolProp = (Boolean) sr.getProperty("boolean");
+ strProp = (String) sr.getProperty("string");
+ strAProp = (String[]) sr.getProperty("strAProp");
+ intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(2));
+ assertEquals("Check longProp equality", boolProp, new Boolean(true));
+ assertEquals("Check strProp equality", strProp, new String("foo"));
+ assertNotNull("Check strAProp not nullity", strAProp);
+ String[] v = new String[] {"foo", "bar"};
+ for (int i = 0; i < ((String[]) strAProp).length; i++) {
+ if(! ((String[]) strAProp)[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+ }
+ assertNull("Check intAProp hidding (no value)", intAProp);
+
+ fs = null;
+ context.ungetService(sr);
+
+ }
+
}
Modified: felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java?rev=713976&r1=713975&r2=713976&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java (original)
+++ felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/DynamicPropsReconfiguration.java Fri Nov 14 03:05:57 2008
@@ -30,7 +30,7 @@
import org.osgi.service.cm.ManagedServiceFactory;
public class DynamicPropsReconfiguration extends OSGiTestCase {
- ComponentInstance fooProvider3;
+ ComponentInstance fooProvider3, fooProvider4;
public void setUp() {
String type2 = "PS-FooProviderType-Dyn2";
@@ -42,11 +42,17 @@
p3.put("strAProp", new String[0]);
p3.put("intAProp", new int[0]);
fooProvider3 = Utils.getComponentInstance(context, type2, p3);
+
+ Properties p4 = new Properties();
+ p4.put("instance.name","FooProvider-4");
+ fooProvider4 = Utils.getComponentInstance(context, type2, p4);
}
public void tearDown() {
fooProvider3.dispose();
fooProvider3 = null;
+ fooProvider4.dispose();
+ fooProvider4 = null;
}
public void testFactoryReconf() {
@@ -572,6 +578,134 @@
fs = null;
context.ungetService(sr);
}
-
+
+ public void testFactoryReconfNoValue() {
+ ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-4");
+ assertNotNull("Check the availability of the FS service", sr);
+
+ // Check service properties
+ Integer intProp = (Integer) sr.getProperty("int");
+ Object boolProp = sr.getProperty("boolean");
+ Object strProp = sr.getProperty("string");
+ Object strAProp = sr.getProperty("strAProp");
+ int[] intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(4));
+ assertEquals("Check longProp equality", boolProp, null);
+ assertEquals("Check strProp equality", strProp, null);
+ assertNull("Check strAProp nullity", strAProp);
+
+ assertNotNull("Check intAProp not nullity", intAProp);
+ int[] v2 = new int[] {1, 2, 3};
+ for (int i = 0; i < intAProp.length; i++) {
+ if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+ }
+
+ // Reconfiguration
+ ServiceReference fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
+ Factory fact = (Factory) context.getService(fact_ref);
+ Properties p3 = new Properties();
+ p3.put("instance.name","FooProvider-4");
+ p3.put("int", new Integer(1));
+ p3.put("boolean", new Boolean(true));
+ p3.put("string", new String("foo"));
+ p3.put("strAProp", new String[] {"foo", "bar", "baz"});
+ p3.put("intAProp", new int[] { 1, 2, 3});
+ try {
+ fact.reconfigure(p3);
+ } catch(Exception e) {
+ fail("Unable to reconfigure the instance with : " + p3);
+ }
+
+ sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-4");
+ assertNotNull("Check the availability of the FS service", sr);
+
+ // Check service properties
+ intProp = (Integer) sr.getProperty("int");
+ boolProp = (Boolean) sr.getProperty("boolean");
+ strProp = (String) sr.getProperty("string");
+ strAProp = (String[]) sr.getProperty("strAProp");
+ intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(1));
+ assertEquals("Check longProp equality", boolProp, new Boolean(true));
+ assertEquals("Check strProp equality", strProp, new String("foo"));
+ assertNotNull("Check strAProp not nullity", strAProp);
+ String[] v = new String[] {"foo", "bar", "baz"};
+ for (int i = 0; i < ((String[]) strAProp).length; i++) {
+ if(! ((String[])strAProp)[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+ }
+ assertNotNull("Check intAProp not nullity", intAProp);
+ v2 = new int[] { 1, 2, 3};
+ for (int i = 0; i < intAProp.length; i++) {
+ if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+ }
+
+ // Invoke
+ FooService fs = (FooService) context.getService(sr);
+ assertTrue("invoke fs", fs.foo());
+
+ // Re-check the property (change)
+ intProp = (Integer) sr.getProperty("int");
+ boolProp = (Boolean) sr.getProperty("boolean");
+ strProp = (String) sr.getProperty("string");
+ strAProp = (String[]) sr.getProperty("strAProp");
+ intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(2));
+ assertEquals("Check longProp equality", boolProp, new Boolean(true));
+ assertEquals("Check strProp equality", strProp, new String("foo"));
+ assertNotNull("Check strAProp not nullity", strAProp);
+ v = new String[] {"foo", "bar"};
+ for (int i = 0; i < ((String[]) strAProp).length; i++) {
+ if(!((String[]) strAProp)[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+ }
+ assertNull("Check intAProp hidding (no value)", intAProp);
+
+ // Reconfiguration
+ fact_ref = Utils.getServiceReferenceByName(context, Factory.class.getName() , "PS-FooProviderType-Dyn2");
+ fact = (Factory) context.getService(fact_ref);
+ p3 = new Properties();
+ p3.put("instance.name","FooProvider-3");
+ p3.put("int", new Integer(1));
+ p3.put("boolean", new Boolean(true));
+ p3.put("string", new String("foo"));
+ p3.put("strAProp", new String[] {"foo", "bar", "baz"});
+ p3.put("intAProp", new int[] { 1, 2, 3});
+ try {
+ fact.reconfigure(p3);
+ } catch(Exception e) {
+ fail("Unable to reconfigure the instance with : " + p3);
+ }
+
+ sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-3");
+ assertNotNull("Check the availability of the FS service", sr);
+
+ // Check service properties
+ intProp = (Integer) sr.getProperty("int");
+ boolProp = (Boolean) sr.getProperty("boolean");
+ strProp = (String) sr.getProperty("string");
+ strAProp = (String[]) sr.getProperty("strAProp");
+ intAProp = (int[]) sr.getProperty("intAProp");
+
+ assertEquals("Check intProp equality", intProp, new Integer(1));
+ assertEquals("Check longProp equality", boolProp, new Boolean(true));
+ assertEquals("Check strProp equality", strProp, new String("foo"));
+ assertNotNull("Check strAProp not nullity", strAProp);
+ v = new String[] {"foo", "bar", "baz"};
+ for (int i = 0; i < ((String[])strAProp).length; i++) {
+ if(!((String[]) strAProp)[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+ }
+ assertNotNull("Check intAProp not nullity", intAProp);
+ v2 = new int[] { 1, 2, 3};
+ for (int i = 0; i < intAProp.length; i++) {
+ if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+ }
+
+ fact = null;
+ context.ungetService(fact_ref);
+ fs = null;
+ context.ungetService(sr);
+ }
}
Modified: felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java?rev=713976&r1=713975&r2=713976&view=diff
==============================================================================
--- felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java (original)
+++ felix/trunk/ipojo/tests/core/service-providing/src/main/java/org/apache/felix/ipojo/test/scenarios/ps/ProvidedServiceArchitectureTest.java Fri Nov 14 03:05:57 2008
@@ -195,5 +195,58 @@
ci.dispose();
}
+
+ public void testPropsNoValue() {
+ String factName = "PS-FooProviderType-3";
+ String compName = "FooProvider";
+
+ // Get the factory to create a component instance
+ Factory fact = Utils.getFactoryByName(context, factName);
+ assertNotNull("Cannot find the factory FooProvider", fact);
+
+ Properties props = new Properties();
+ props.put("instance.name",compName);
+ ComponentInstance ci = null;
+ try {
+ ci = fact.createComponentInstance(props);
+ } catch (Exception e) { fail(e.getMessage()); }
+
+ ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), compName);
+ assertNotNull("Architecture not available", arch_ref);
+
+ Architecture arch = (Architecture) context.getService(arch_ref);
+ InstanceDescription id = arch.getInstanceDescription();
+
+ assertEquals("Check component instance name (" + id.getName() + ")", id.getName(), compName);
+ assertEquals("Check component type implementation class", id.getComponentDescription().getClassName(), "org.apache.felix.ipojo.test.scenarios.component.FooProviderType1");
+
+ HandlerDescription[] handlers = id.getHandlers();
+ assertEquals("Number of handlers", handlers.length, 3);
+
+ //Look for the ProvidedService Handler
+ ProvidedServiceHandlerDescription pshd = null;
+ for(int i = 0; i < handlers.length; i++) {
+ if(handlers[i].getHandlerName().equals("org.apache.felix.ipojo.handlers.providedservice.ProvidedServiceHandler")) {
+ pshd = (ProvidedServiceHandlerDescription) handlers[i];
+ }
+ }
+
+ assertNotNull("Check ProvidedServiceHandlerDescription", pshd);
+ ProvidedServiceDescription[] ps = pshd.getProvidedServices();
+
+ assertEquals("Check ProvidedService number", ps.length, 1);
+ assertEquals("Check Provided Service Specs - 1", ps[0].getServiceSpecification().length, 1);
+ assertEquals("Check Provided Service Specs - 2", ps[0].getServiceSpecification()[0], FooService.class.getName());
+ assertEquals("Check Provided Service availability", ps[0].getState(), ProvidedServiceDescription.REGISTERED);
+
+ Properties prop = ps[0].getProperties();
+ assertNotNull("Check Props", prop);
+ assertEquals("Check service properties number (#" + prop + "?=5)" , prop.size(), 2);
+ assertEquals("Check instance.name property", prop.getProperty("instance.name"), compName);
+ assertEquals("Check factory.name property", prop.getProperty("factory.name"), factName);
+
+
+ ci.dispose();
+ }
}