Skip to main content
summaryrefslogblamecommitdiffstats
blob: d6db499998756a12637f56fea215b03eea124785 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                                                                




                                                                         
   
                 
                                                       
                                 



                                                                                 
                    
                                   
                   
                                                      
                                                                   
                                                      
                                         
                                      

                                                                             

   
                                        
   














                                                                                                      
                                             
                                                                                                                                                 
                                                                                      
                                            






                                                                                    
                                                                                                                            


                                                                                    
                                                               
                                                                           
                                                                            

                                                                                                       
                                                                                 
                                                               
                                                                                               
                                                                     
                                                                                         


                                                                    
                                                                      




                                                                                                                      
                                                                                                                                                                                            
                                               


                                                                                                                                                                                                 




                                                                                           
                                                                                                                                                                                                                                         
                                                                                          
                                                                                                   
                                                                                                                                                                                                         
                                                                                                                                                                              




                                                                                                                                                
                                                                                                                                                                                                                                 
                                                                                                                                                                            



                                                                                 
                                                                                           
                                                                                                                                                                                                 
                                                                                                                                                                      




                                                                                                                                        
                                                                                                                                              
                                                                                                                                                        



                                                                                 
                                                                                           
                                                                                                                                                                                                 
                                                                                                                                                                      





                                                                                                               
                                                                                              
                                                                      
                                                                                            


                                                                          


                                                       
                                                           
                                                                      


                                                                                             

         
/*******************************************************************************
 *  Copyright (c) 2008, 2009 IBM Corporation and others.
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  which accompanies this distribution, and is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 * 
 *  Contributors:
 *     IBM Corporation - initial API and implementation
 *     EclipseSource - bug fixing
 *******************************************************************************/
package org.eclipse.equinox.p2.tests.ui.query;

import java.io.File;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.*;
import org.eclipse.equinox.internal.p2.engine.Profile;
import org.eclipse.equinox.internal.p2.metadata.TranslationSupport;
import org.eclipse.equinox.p2.core.ProvisionException;
import org.eclipse.equinox.p2.metadata.*;
import org.eclipse.equinox.p2.query.*;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepository;
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;

/**
 * Tests for {@link TranslationSupport}.
 */
public class TranslationSupportTests extends AbstractQueryTest {
	Profile profile;
	IQueryable oldTranslationSource;

	protected void setUp() throws Exception {
		super.setUp();
		profile = (Profile) createProfile("testLocalizedLicense");
		oldTranslationSource = TranslationSupport.getInstance().setTranslationSource(profile);
	}

	protected void tearDown() throws Exception {
		super.tearDown();
		TranslationSupport.getInstance().setTranslationSource(oldTranslationSource);
	}

	public void testFeatureProperties() {
		IMetadataRepositoryManager repoMan = (IMetadataRepositoryManager) getAgent().getService(IMetadataRepositoryManager.SERVICE_NAME);
		File site = getTestData("0.1", "/testData/metadataRepo/externalized");
		URI location = site.toURI();
		IMetadataRepository repository;
		try {
			repository = repoMan.loadRepository(location, getMonitor());
		} catch (ProvisionException e) {
			fail("1.99", e);
			return;
		}
		IQueryResult result = repository.query(QueryUtil.createIUQuery("test.feature.feature.group"), getMonitor());
		assertTrue("1.0", !result.isEmpty());
		IInstallableUnit unit = (IInstallableUnit) result.iterator().next();

		ICopyright copyright = unit.getCopyright(null);
		assertEquals("1.1", "Test Copyright", copyright.getBody());
		ILicense license = unit.getLicenses(null).iterator().next();
		assertEquals("1.2", "Test License", license.getBody());
		//		assertEquals("1.3", "license.html", license.getURL().toExternalForm());
		String name = unit.getProperty(IInstallableUnit.PROP_NAME, null);
		assertEquals("1.4", "Test Feature Name", name);
		String description = unit.getProperty(IInstallableUnit.PROP_DESCRIPTION, null);
		assertEquals("1.5", "Test Description", description);
		String provider = unit.getProperty(IInstallableUnit.PROP_PROVIDER, null);
		assertEquals("1.6", "Test Provider Name", provider);
	}

	public void testLocalizedLicense() throws URISyntaxException {
		String germanLicense = "German License";
		String canadianFRLicense = "Canadian French License";

		// Create a IU that has a license, but the license body is simply %license. This will be filled in by 
		// a fragment
		org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription iuDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription();
		iuDescription.setId("some IU");
		iuDescription.setVersion(Version.createOSGi(1, 0, 0));
		iuDescription.setLicenses(new ILicense[] {MetadataFactory.createLicense(new URI("http://example.com"), "%license")});
		iuDescription.addProvidedCapabilities(Collections.singleton(MetadataFactory.createProvidedCapability(IInstallableUnit.NAMESPACE_IU_ID, "some IU", Version.createOSGi(1, 0, 0))));
		IInstallableUnit iu = MetadataFactory.createInstallableUnit(iuDescription);

		// Create a bunch of fragments which spec our IU as their host
		// These fragments don't contribute language information
		for (int i = 0; i < 10; i++) {
			org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
			installableUnitFragmentDescription.setId("fragment number: " + i);
			installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
			installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
			installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
			IInstallableUnitFragment iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);
			profile.addInstallableUnit(iuFragment);
		}

		// Create fragment with a German license
		org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
		IProvidedCapability providedCapability = MetadataFactory.createProvidedCapability("org.eclipse.equinox.p2.localization", "de", Version.createOSGi(1, 0, 0));
		ArrayList list = new ArrayList();
		list.add(providedCapability);
		installableUnitFragmentDescription.addProvidedCapabilities(list);
		installableUnitFragmentDescription.setId("german fragment");
		installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
		installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
		installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
		installableUnitFragmentDescription.setProperty("de.license", germanLicense);
		IInstallableUnitFragment iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);
		profile.addInstallableUnit(iuFragment);

		// Create a French fragment with an fr_CA license
		installableUnitFragmentDescription = new org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitFragmentDescription();
		providedCapability = MetadataFactory.createProvidedCapability("org.eclipse.equinox.p2.localization", "fr", Version.createOSGi(1, 0, 0));
		list = new ArrayList();
		list.add(providedCapability);
		installableUnitFragmentDescription.addProvidedCapabilities(list);
		installableUnitFragmentDescription.setId("cnd french fragment");
		installableUnitFragmentDescription.setVersion(Version.createOSGi(1, 0, 0));
		installableUnitFragmentDescription.setHost(new IRequirement[] {MetadataFactory.createRequirement(IInstallableUnit.NAMESPACE_IU_ID, "some IU", ANY_VERSION, null, false, false)});
		installableUnitFragmentDescription.setProperty(org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription.PROP_TYPE_FRAGMENT, "true");
		installableUnitFragmentDescription.setProperty("fr_CA.license", canadianFRLicense);
		iuFragment = MetadataFactory.createInstallableUnitFragment(installableUnitFragmentDescription);

		profile.addInstallableUnit(iuFragment);
		profile.addInstallableUnit(iu);

		ILicense license = iu.getLicenses(Locale.GERMAN.toString()).iterator().next();
		assertEquals("1.0", germanLicense, license.getBody());
		license = iu.getLicenses(Locale.CANADA_FRENCH.toString()).iterator().next();
		assertEquals("1.1", canadianFRLicense, license.getBody());
	}

	public void testBasicIU() {
		IInstallableUnit unit = createIU("f1");

		assertNull("1.1", unit.getCopyright(null));
		assertEquals("1.2", 0, unit.getLicenses(null).size());
		assertNull("1.3", unit.getProperty(IInstallableUnit.PROP_NAME, null));
		assertNull("1.4", unit.getProperty(IInstallableUnit.PROP_DESCRIPTION, null));
		assertNull("1.5", unit.getProperty(IInstallableUnit.PROP_PROVIDER, null));
	}
}

Back to the top