| /* |
| * 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.bundlerepository.impl; |
| |
| import java.net.URL; |
| import java.util.Map; |
| import java.util.jar.Attributes; |
| |
| import junit.framework.TestCase; |
| import org.apache.felix.bundlerepository.Capability; |
| import org.apache.felix.bundlerepository.DataModelHelper; |
| import org.apache.felix.bundlerepository.Repository; |
| import org.apache.felix.bundlerepository.Resource; |
| import org.apache.felix.utils.manifest.Clause; |
| import org.osgi.framework.Constants; |
| |
| import static org.junit.Assert.*; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertNotNull; |
| |
| public class DataModelHelperTest extends TestCase |
| { |
| |
| private DataModelHelper dmh = new DataModelHelperImpl(); |
| |
| public void testResource() throws Exception |
| { |
| Attributes attr = new Attributes(); |
| attr.putValue("Manifest-Version", "1.0"); |
| attr.putValue("Bundle-Name", "Apache Felix Utils"); |
| attr.putValue("Bundle-Version", "0.1.0.SNAPSHOT"); |
| attr.putValue("Bundle-ManifestVersion", "2"); |
| attr.putValue("Bundle-License", "http://www.apache.org/licenses/LICENSE-2.0.txt"); |
| attr.putValue("Bundle-Description", "Utility classes for OSGi."); |
| attr.putValue("Import-Package", "org.osgi.framework;version=\"[1.4,2)\""); |
| attr.putValue("Bundle-SymbolicName", "org.apache.felix.utils"); |
| |
| Resource resource = dmh.createResource(attr); |
| |
| String xml = dmh.writeResource(resource); |
| System.out.println(xml); |
| |
| Resource resource2 = dmh.readResource(xml); |
| String xml2 = dmh.writeResource(resource2); |
| System.out.println(xml2); |
| |
| assertEquals(xml, xml2); |
| } |
| |
| public void testRequirementFilter() throws Exception |
| { |
| RequirementImpl r = new RequirementImpl(); |
| r.setFilter("(&(package=foo.bar)(version>=0.0.0)(version<3.0.0))"); |
| assertEquals("(&(package=foo.bar)(!(version>=3.0.0)))", r.getFilter()); |
| |
| r.setFilter("(&(package=javax.transaction)(partial=true)(mandatory:<*partial))"); |
| assertEquals("(&(package=javax.transaction)(partial=true)(mandatory:<*partial))", r.getFilter()); |
| } |
| |
| public void testCapabilities() throws Exception { |
| Attributes attr = new Attributes(); |
| attr.putValue("Manifest-Version", "1.0"); |
| attr.putValue("Bundle-Name", "Apache Felix Utils"); |
| attr.putValue("Bundle-Version", "0.1.0.SNAPSHOT"); |
| attr.putValue("Bundle-ManifestVersion", "2"); |
| attr.putValue("Bundle-License", "http://www.apache.org/licenses/LICENSE-2.0.txt"); |
| attr.putValue("Bundle-Description", "Utility classes for OSGi."); |
| attr.putValue("Import-Package", "org.osgi.framework;version=\"[1.4,2)\""); |
| attr.putValue("Bundle-SymbolicName", "org.apache.felix.utils"); |
| attr.putValue("Provide-Capability", "osgi.extender;osgi.extender=\"osgi.component\";uses:=\"\n" + |
| " org.osgi.service.component\";version:Version=\"1.3\",osgi.service;objectCl\n" + |
| " ass:List<String>=\"org.osgi.service.component.runtime.ServiceComponentRu\n" + |
| " ntime\";uses:=\"org.osgi.service.component.runtime\""); |
| |
| Resource resource = dmh.createResource(attr); |
| |
| assertEquals(3, resource.getCapabilities().length); |
| |
| Capability bundleCap = null; |
| Capability osgiExtenderCap = null; |
| Capability osgiServiceCap = null; |
| |
| for (Capability capability : resource.getCapabilities()) { |
| if (capability.getName().equals("bundle")) { |
| bundleCap = capability; |
| } else if (capability.getName().equals("osgi.extender")) { |
| osgiExtenderCap = capability; |
| } else { |
| osgiServiceCap = capability; |
| } |
| } |
| |
| assertNotNull(bundleCap); |
| assertNotNull(osgiExtenderCap); |
| assertNotNull(osgiServiceCap); |
| |
| assertEquals("osgi.extender", osgiExtenderCap.getName()); |
| assertEquals("osgi.component", osgiExtenderCap.getPropertiesAsMap().get("osgi.extender")); |
| assertEquals("1.3.0", osgiExtenderCap.getPropertiesAsMap().get(Constants.VERSION_ATTRIBUTE).toString()); |
| } |
| |
| public void testGzipResource() throws Exception { |
| URL urlArchive = getClass().getResource("/spec_repository.gz"); |
| assertNotNull("GZ archive was not found", urlArchive); |
| Repository repository1 = dmh.repository(urlArchive); |
| |
| URL urlRepo = getClass().getResource("/spec_repository.xml"); |
| assertNotNull("Repository file was not found", urlRepo); |
| Repository repository2 = dmh.repository(urlRepo); |
| assertEquals(repository1.getName(), repository2.getName()); |
| assertEquals(repository1.getResources().length, repository2.getResources().length); |
| } |
| } |