/******************************************************************************* * Copyright (c) 2013 Bundlemaker project team. * 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: * Bundlemaker project team - initial API and implementation ******************************************************************************/ package org.bundlemaker.core.itest.jedit_artifact_model; import static org.junit.Assert.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.bundlemaker.core.analysis.AnalysisCore; import org.bundlemaker.core.analysis.AnalysisModelConfiguration; import org.bundlemaker.core.analysis.AnalysisModelQueries; import org.bundlemaker.core.analysis.IBundleMakerArtifact; import org.bundlemaker.core.analysis.IModuleArtifact; import org.bundlemaker.core.analysis.IPackageArtifact; import org.bundlemaker.core.analysis.IRootArtifact; import org.bundlemaker.core.itestframework.AbstractBundleMakerModelTest; import org.bundlemaker.core.itestframework.utils.ArtifactTestUtil; import org.bundlemaker.core.osgi.utils.ArtifactUtils; import org.junit.Test; /** * @author Nils Hartmann (nils@nilshartmann.net) * */ public class CreateModuleFromFlatPackageTest extends AbstractBundleMakerModelTest { @Test public void createNewModuleFromFlatPackage() throws Exception { IRootArtifact flatModel = AnalysisCore.getAnalysisModel(getModularizedSystem(),AnalysisModelConfiguration.BINARY_RESOURCES_CONFIGURATION); IRootArtifact hierModel = AnalysisCore.getAnalysisModel(getModularizedSystem(),AnalysisModelConfiguration.HIERARCHICAL_BINARY_RESOURCES_CONFIGURATION); Collection<IBundleMakerArtifact> children = flatModel.getChildren(); IPackageArtifact originalFlatGuiPackage = null; IModuleArtifact jeditModule = null; Iterator<IBundleMakerArtifact> iterator = children.iterator(); while (iterator.hasNext()) { IBundleMakerArtifact next = iterator.next(); System.out.println("next: " + next.getName()); if (next.isInstanceOf(IModuleArtifact.class) && "jedit_1.0.0".equals(next.getName())) { jeditModule = (IModuleArtifact) next; break; } } assertNotNull(jeditModule); iterator = jeditModule.getChildren().iterator(); while (iterator.hasNext()) { IBundleMakerArtifact next = iterator.next(); if (next.isInstanceOf(IPackageArtifact.class) && "org.gjt.sp.jedit.gui".equals(next.getQualifiedName())) { originalFlatGuiPackage = (IPackageArtifact) next; break; } } // assertNotNull(originalFlatGuiPackage); assertFalse(originalFlatGuiPackage.getConfiguration().isHierarchicalPackages()); List<IBundleMakerArtifact> artifacts = new LinkedList<IBundleMakerArtifact>(); artifacts.add(originalFlatGuiPackage); // Create new module IModuleArtifact utilModule = flatModel.getOrCreateModule("org.jedit.util", "0.0.0"); utilModule.addArtifacts(artifacts); Collection<IBundleMakerArtifact> utilChildren = utilModule.getChildren(); assertEquals(1, utilChildren.size()); assertEquals("org.gjt.sp.jedit.gui", utilChildren.iterator().next().getQualifiedName()); assertEquals("gui", utilChildren.iterator().next().getName()); IModuleArtifact utilHierModule = AnalysisModelQueries.findChild(hierModel, "org.jedit.util", IModuleArtifact.class); AnalysisModelQueries.dumpArtifact(utilHierModule); assertNotSame(utilHierModule, utilModule); assertNotSame(flatModel, hierModel); assertEquals(utilHierModule.getRoot(), hierModel); children = utilHierModule.getChildren(); assertNotNull(children); assertEquals(1, children.size()); IBundleMakerArtifact a = children.iterator().next(); assertEquals("org", a.getName()); assertEquals("org", a.getQualifiedName()); AnalysisModelQueries.dumpArtifact(utilHierModule); } @Override protected String getTestProjectName() { return "jedit"; } }