merged heads
authorfturovic <frank.turovich@nokia.com>
Thu, 21 May 2009 10:14:36 -0500
changeset 182 91502d4198e9
parent 181 f0ff3e0bbac3 (current diff)
parent 180 b9966f222431 (diff)
child 183 262833ab3366
merged heads
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java	Thu May 21 10:13:49 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/EpocEngineHelper.java	Thu May 21 10:14:36 2009 -0500
@@ -16,30 +16,72 @@
 */
 package com.nokia.carbide.cdt.builder;
 
-import java.io.*;
-import java.util.*;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.eclipse.core.resources.IFile;
+import org.eclipse.cdt.core.CCorePlugin;
 import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
 
 import com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder;
-import com.nokia.carbide.cdt.builder.project.*;
-import com.nokia.carbide.cpp.epoc.engine.*;
-import com.nokia.carbide.cpp.epoc.engine.image.*;
-import com.nokia.carbide.cpp.epoc.engine.model.bldinf.*;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
+import com.nokia.carbide.cpp.epoc.engine.BldInfDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.BldInfViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.EpocEnginePlugin;
+import com.nokia.carbide.cpp.epoc.engine.ImageMakefileDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.MMPDataRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.MMPViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.PKGViewRunnableAdapter;
+import com.nokia.carbide.cpp.epoc.engine.image.IBitmapSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IImageSource;
+import com.nokia.carbide.cpp.epoc.engine.image.IMultiImageSource;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfData;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IBldInfView;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExport;
 import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IExtension;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMMPReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakMakeReference;
+import com.nokia.carbide.cpp.epoc.engine.model.bldinf.IMakefileReference;
 import com.nokia.carbide.cpp.epoc.engine.model.makefile.image.IImageMakefileData;
-import com.nokia.carbide.cpp.epoc.engine.model.mmp.*;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPLanguage;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.EMMPStatement;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPAIFInfo;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPBitmap;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPData;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPResource;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPView;
+import com.nokia.carbide.cpp.epoc.engine.model.mmp.IMMPViewConfiguration;
 import com.nokia.carbide.cpp.epoc.engine.preprocessor.AcceptedNodesViewFilter;
 import com.nokia.carbide.cpp.epoc.engine.preprocessor.AllNodesViewFilter;
 import com.nokia.carbide.cpp.internal.api.sdk.SymbianBuildContext;
 import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
 import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.*;
-import com.nokia.cpp.internal.api.utils.core.*;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.EPKGLanguage;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGEmbeddedSISFile;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGInstallFile;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.IPKGView;
+import com.nokia.carbide.internal.api.cpp.epoc.engine.model.pkg.PKGModelHelper;
+import com.nokia.cpp.internal.api.utils.core.CommonPathFinder;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
+import com.nokia.cpp.internal.api.utils.core.Logging;
 
 public class EpocEngineHelper {
 
@@ -1313,6 +1355,7 @@
 	 */
 	public static List<IPath> getSourceRootsForProject(final ICarbideProjectInfo info) {
 		final List<IPath> sourceRoots = new ArrayList<IPath>();
+		final boolean showSourceRootsAtTopOfProject = CCorePlugin.showSourceRootsAtTopOfProject();
 
 		IMMPReference[] mmps = (IMMPReference[])EpocEnginePlugin.runWithBldInfData(info.getWorkspaceRelativeBldInfPath(),
 			new DefaultViewConfiguration(info),
@@ -1345,9 +1388,13 @@
 							IPath fullPath = helper.convertMMPToWorkspace(EMMPPathContext.SOURCEPATH, path);
 							if (fullPath != null) {
 								// add the absolute workspace path to the folder directly under the project.
-								// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
-								// rather than just expanding Foo and then seeing bar a C source folder.
-								topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								if (showSourceRootsAtTopOfProject) {
+									// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
+									// rather than just expanding Foo and then seeing bar a C source folder.
+									topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								}
+								else // ideal
+									topLevelSourcePaths.add(fullPath.makeAbsolute());
 							}
 						}
 
@@ -1356,9 +1403,13 @@
 							IPath fullPath = helper.convertMMPToWorkspace(EMMPPathContext.SOURCEPATH, path);
 							if (fullPath != null) {
 								// add the absolute workspace path to the folder directly under the project.
-								// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
-								// rather than just expanding Foo and then seeing bar a C source folder.
-								topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								if (showSourceRootsAtTopOfProject) {
+									// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
+									// rather than just expanding Foo and then seeing bar a C source folder.
+									topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								}
+								else // ideal
+									topLevelSourcePaths.add(fullPath.makeAbsolute());
 							}
 						}
 
@@ -1366,7 +1417,13 @@
 							IPath fullPath = helper.convertMMPToWorkspace(EMMPPathContext.USERINCLUDE, path);
 							if (fullPath != null) {
 								// add the absolute workspace path to the folder directly under the project.
-								topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								if (showSourceRootsAtTopOfProject) {
+									// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
+									// rather than just expanding Foo and then seeing bar a C source folder.
+									topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								}
+								else // ideal
+									topLevelSourcePaths.add(fullPath.makeAbsolute());
 							}
 						}
 						
@@ -1374,7 +1431,13 @@
 							IPath fullPath = helper.convertMMPToWorkspace(EMMPPathContext.SYSTEMINCLUDE, path);
 							if (fullPath != null) {
 								// add the absolute workspace path to the folder directly under the project.
-								topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								if (showSourceRootsAtTopOfProject) {
+									// ideally we'd be more precise but then CDT creates a C folder named Foo\Bar,
+									// rather than just expanding Foo and then seeing bar a C source folder.
+									topLevelSourcePaths.add(fullPath.uptoSegment(2).makeAbsolute());
+								}
+								else // ideal
+									topLevelSourcePaths.add(fullPath.makeAbsolute());
 							}
 						}
 						
@@ -2026,6 +2089,12 @@
 		return target;
 	}
 	
+	/**
+	 * Get the MD5 hash for a configuration if it is a true binary variation.
+	 * @param config - The Carbide build configuration to check against
+	 * @param mmpFullPath - The path to the MMP file that builds the binary
+	 * @return A string of the MD5 hash. Returns an empty string if the configuration is not a binary variant or cannot be determined.
+	 */
 	static public String getMD5HashForBinaryVariant(final ICarbideBuildConfiguration config, final IPath mmpFullPath){
 		
 		return (String)EpocEnginePlugin.runWithMMPData(mmpFullPath, 
--- a/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Thu May 21 10:13:49 2009 -0500
+++ b/builder/com.nokia.carbide.cdt.builder/src/com/nokia/carbide/cdt/builder/builder/CarbideCPPBuilder.java	Thu May 21 10:14:36 2009 -0500
@@ -865,7 +865,7 @@
 			
 			List<String> argsList = new ArrayList<String>();
 			argsList.add("bldfiles");
-			argsList.add(config.getPlatformString().toLowerCase());
+			argsList.add(config.getBasePlatformForVariation().toLowerCase());
 			
 			for (String arg : config.getBuildArgumentsInfo().getBldmakeBldFilesArgs().split(" ")) {
 				argsList.add(arg);
--- a/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Thu May 21 10:13:49 2009 -0500
+++ b/carbidesdk/com.nokia.carbide.cpp.sdk.doc.user/html/reference/api_Change_Notes.htm	Thu May 21 10:14:36 2009 -0500
@@ -65,14 +65,24 @@
 <p>Since Carbide 2.1.0</p>
 <ul>
   <li>Added <em> com.nokia.carbide.cdt.builder.builder.CarbideCPPBuilder#getBuilderMakefileDir(ICarbideBuildConfiguration config)</em>.</li>
-</ul>
-
-<ul>
-  <li>Added <em> com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#getBuildVariationName( )</em>.</li>
-</ul>
-
-<ul>
-  <li>Added <em> com.nokia.carbide.cdt.builder.EpocEngineHelper#isFeatureVariantMMP(IMMPData mmpData, IProject project)</em>.</li>
+  <li>Support was added for Symbian Binary Variation (SBV):</li>
+  <ul>
+    <li>Added <em> com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#getBuildVariationName( )</em>.</li>
+    <li>Added <em> com.nokia.carbide.cdt.builder.EpocEngineHelper#hasFeatureVariantKeyword( ICarbideProjectInfo projectInfo, IPath relativeMMPPath )</em>.</li>
+    <li>Added <em> com.nokia.carbide.cdt.builder.EpocEngineHelper#getMD5HashForBinaryVariant( ICarbideBuildConfiguration config,  IPath mmpFullPath)</em>.</li>
+    <li>Added <em>com.nokia.carbide.cpp.sdk.core.ISymbianSDK#getSBVCatalog( )</em>.</li>
+    <li>Added <em>com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#getBuildVariationName( )</em>.</li>
+    <li>Added <em>com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext#isSymbianBinaryVariation( )</em>.</li>
+    <li>Added <em>com.nokia.carbide.cpp.sdk.core.ISBVCatalog.</em> </li>
+    <li>Added <em>com.nokia.carbide.cpp.sdk.core.ISBVPlatfor</em>m.</li>
+    <li>Added EPOC Engine support for SBV in the following packages:
+      <ul>
+        <li><em>com.nokia.carbide.cpp.epoc.engine</em></li>
+        <li><em>com.nokia.carbide.cpp.epoc.engine.model</em></li>
+        <li><em>com.nokia.carbide.cpp.epoc.engine.model.sbv</em>.</li>
+      </ul>
+    </li>
+  </ul>
 </ul>
 
 <h3>Deprecated APIs</h3>
@@ -113,7 +123,7 @@
 
 <p>Since Carbide 2.1</p>
 <ul>
-  <li><i>com.nokia.carbide.cdt.builder.getVariantTargetName(IMMPData mmpData, IPath target)</i></li>
+  <li><i>com.nokia.carbide.cdt.builder.EpocEngineHelper#getVariantTargetName(IMMPData mmpData, IPath target)</i></li>
 </ul>
 
 <h3>Removed APIs</h3>
--- a/connectivity/com.nokia.carbide.remoteConnections.tests/src/com/nokia/carbide/remoteconnections/tests/extensions/TestFilter.java	Thu May 21 10:13:49 2009 -0500
+++ b/connectivity/com.nokia.carbide.remoteConnections.tests/src/com/nokia/carbide/remoteconnections/tests/extensions/TestFilter.java	Thu May 21 10:14:36 2009 -0500
@@ -33,8 +33,8 @@
 	private static List<String> serviceIds = new ArrayList<String>();
 	private static List<Pair<String, String>> connectedServiceIdPairs = new ArrayList<Pair<String,String>>();
 	
-	public static boolean isTest = true;
-
+	public static boolean isTest = Boolean.parseBoolean(System.getenv("remoteconnections.tests"));
+	
 	public static void reset() {
 		connectionTypeIds.clear();
 		serviceIds.clear();
--- a/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedCacheManagerTest.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader.tests/src/com/nokia/carbide/cpp/news/reader/tests/FeedCacheManagerTest.java	Thu May 21 10:14:36 2009 -0500
@@ -19,9 +19,11 @@
 
 import java.io.File;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import com.nokia.carbide.cpp.internal.news.reader.feed.CarbideSyndEntry;
 import com.nokia.carbide.cpp.internal.news.reader.feed.CarbideSyndFeed;
 import com.nokia.carbide.cpp.internal.news.reader.feed.FeedManager;
 import com.nokia.carbide.cpp.internal.news.reader.gen.FeedCache.FeedCacheFactory;
@@ -29,6 +31,10 @@
 import com.nokia.carbide.cpp.internal.news.reader.gen.FeedCache.FeedCacheType;
 import com.nokia.carbide.cpp.internal.news.reader.gen.FeedCache.FeedType;
 import com.nokia.carbide.cpp.internal.news.reader.gen.FeedCache.IFeedCacheChangedlistener;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndEntryImpl;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndFeedImpl;
 
 import junit.framework.TestCase;
 
@@ -190,6 +196,32 @@
 		}
 	}
 
+	public void testSaveFeedToCache() {
+		try {
+			feedCacheManager.setFeedCache(null);
+			feedCacheManager.saveFeedToCache(null);
+			assertNull(feedCacheManager.getFeedCache());
+			File file = getDefaultFeedCacheFile();
+			URL url = file.toURL();
+			if (feedCacheManager.loadCacheFromFile(url)) {
+				SyndFeed syndFeed = new SyndFeedImpl();
+				CarbideSyndFeed feed = new CarbideSyndFeed(syndFeed);
+				List<CarbideSyndEntry> entries = new ArrayList<CarbideSyndEntry>();
+				SyndEntry syndEntry = new SyndEntryImpl();
+				CarbideSyndEntry entry = new CarbideSyndEntry(syndEntry);
+				entries.add(entry);
+				feed.setEntries(entries);
+				feed.setDescription("A feed for testing feed cache manager.");
+				feed.setTitle("Test feed");
+				feed.setLink("http://www.nokia.com");
+				feedCacheManager.saveFeedToCache(feed);
+				assertTrue(feedCacheManager.isFeedInCache(feed));
+			}
+		} catch (Exception e) {
+			fail();
+		}
+	}
+
 	public void testSetCacheUpdated() {
 		feedCacheManager.setCacheUpdated(true);
 		assertTrue(feedCacheManager.isCacheUpdated());
--- a/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedCache/FeedCacheManager.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.news.reader/src/com/nokia/carbide/cpp/internal/news/reader/gen/FeedCache/FeedCacheManager.java	Thu May 21 10:14:36 2009 -0500
@@ -142,6 +142,9 @@
 		List<FeedType> cachedFeeds = feedCache.getFeeds().getFeed();
 		for (Iterator<FeedType> iterator = cachedFeeds.iterator(); iterator.hasNext();) {
 			FeedType cachedFeed = iterator.next();
+			if (cachedFeed == null) {
+				continue;
+			}
 			if (cachedFeed.getTitle().equals(feed.getTitle()) && 
 				cachedFeed.getLink().equals(feed.getLink())) {
 				return true;
@@ -284,6 +287,9 @@
 		EList<EntryType> entryList = entries.getEntry();
 		for (Iterator<CarbideSyndEntry> iterator = feed.getEntries().iterator(); iterator.hasNext();) {
 			CarbideSyndEntry feedEntry = iterator.next();
+			if (feedEntry == null) {
+				continue;
+			}
 			EntryType cachedEntry = FeedCacheFactory.eINSTANCE.createEntryType();
 			if (feedEntry.getDescription() != null) {
 				cachedEntry.setDescription(feedEntry.getDescription());
@@ -409,6 +415,9 @@
 			int index = -1;
 			for (Iterator<FeedType> iterator = cachedFeeds.iterator(); iterator.hasNext();) {
 				FeedType oldFeed = iterator.next();
+				if (oldFeed == null) {
+					continue;
+				}
 				if (oldFeed.getTitle().equals(newFeed.getTitle()) &&
 					oldFeed.getLink().equals(newFeed.getLink())) {
 					cachedUpdated = isCachedFeedOutOfSync(oldFeed, newFeed);
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/SBSv2Utils.java	Thu May 21 10:14:36 2009 -0500
@@ -14,31 +14,22 @@
 
 import java.io.File;
 import java.io.FileFilter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.eclipse.cdt.utils.spawner.EnvironmentReader;
 import org.eclipse.core.filesystem.URIUtil;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Preferences;
+import org.eclipse.core.runtime.*;
 import org.osgi.framework.Version;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
+import org.w3c.dom.*;
 import org.xml.sax.InputSource;
 import org.xml.sax.helpers.DefaultHandler;
 
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
-import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
-import com.nokia.cpp.internal.api.utils.core.*;
-import com.nokia.cpp.internal.api.utils.core.*;
+import com.nokia.carbide.cpp.sdk.core.*;
+import com.nokia.cpp.internal.api.utils.core.FileUtils;
+import com.nokia.cpp.internal.api.utils.core.Logging;
 
 /**
  * Utility class for SBSv2
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVCatalog.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVCatalog.java	Thu May 21 10:14:36 2009 -0500
@@ -17,6 +17,7 @@
 /**
  * This is a catalog of all the .VAR (Symbian Binary Variation) files detected for a given SDK.
  *
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVCatalog {
 	/**
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVPlatform.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISBVPlatform.java	Thu May 21 10:14:36 2009 -0500
@@ -25,6 +25,8 @@
  *  Once a platform is available
  * from a catalog, it is contained in a hierarchy of platforms, terminating at
  * built-in platforms (like ARMV5). 
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVPlatform {
 	/**
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianBuildContext.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianBuildContext.java	Thu May 21 10:14:36 2009 -0500
@@ -25,6 +25,7 @@
  * from the configuration display string
  * @see ICarbideBuildConfiguration
  * 
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISymbianBuildContext {
 	
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/sdk/core/ISymbianSDK.java	Thu May 21 10:14:36 2009 -0500
@@ -29,6 +29,8 @@
  *  - String value are empty ""
  *  - IPath and IFile objects are null
  *  - containers have zero size
+ *  
+ *  @noimplement This interface is not intended to be implemented by clients.
  */
 
 public interface ISymbianSDK {
--- a/core/com.nokia.carbide.cpp/plugin_customization.ini	Thu May 21 10:13:49 2009 -0500
+++ b/core/com.nokia.carbide.cpp/plugin_customization.ini	Thu May 21 10:14:36 2009 -0500
@@ -248,6 +248,9 @@
 # turn off showing source files from binaries, maybe not be needed in CDT 5.0
 org.eclipse.cdt.core/org.eclipse.cdt.core.showSourceFilesInBinaries=false
 
+# turn off showing source roots at top level of projects
+org.eclipse.cdt.core/org.eclipse.cdt.core.showSourceRootsAtTopLevelOfProject=false
+
 # map C sources and headers to C++
 org.eclipse.cdt.core/org.eclipse.cdt.core.workspaceLanguageMappings=<?xml version\="1.0" encoding\="UTF-8"?><workspace-mappings><content-type-mapping content-type\="org.eclipse.cdt.core.cHeader" language\="org.eclipse.cdt.core.g++"/><content-type-mapping content-type\="org.eclipse.cdt.core.cSource" language\="org.eclipse.cdt.core.g++"/></workspace-mappings>
 
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/ISBVViewRunnable.java	Thu May 21 10:13:49 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/ISBVViewRunnable.java	Thu May 21 10:14:36 2009 -0500
@@ -24,6 +24,7 @@
  * Instantiate this interface and pass to EpocEnginePlugin#runWithSBVView()
  * to encapsulate some of the bookkeeping of model/view handling. 
  *
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVViewRunnable extends IViewRunnable<ISBVModel, ISBVView> {
 
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVModel.java	Thu May 21 10:13:49 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVModel.java	Thu May 21 10:14:36 2009 -0500
@@ -22,6 +22,7 @@
 /**
  * This is the user interface to a Symbian Binary Variation (VAR) model.
  *
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVModel extends IModel<ISBVView> {
 
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVOwnedModel.java	Thu May 21 10:13:49 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVOwnedModel.java	Thu May 21 10:14:36 2009 -0500
@@ -21,6 +21,8 @@
 
 /**
  * This is the owner interface to the SBV (Symbian Binary Variant) model.  
+ * 
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVOwnedModel extends ISBVModel, IOwnedModel<ISBVView> {
 
--- a/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVView.java	Thu May 21 10:13:49 2009 -0500
+++ b/project/com.nokia.carbide.cpp.epoc.engine/src/com/nokia/carbide/cpp/epoc/engine/model/sbv/ISBVView.java	Thu May 21 10:14:36 2009 -0500
@@ -26,7 +26,7 @@
  * <p>
  * Note: this view cannot be rewritten.
  * 
- * 
+ * @noimplement This interface is not intended to be implemented by clients.
  */
 public interface ISBVView extends IView<ISBVOwnedModel> {