core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java Mon Jun 28 10:14:24 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/BuildContextSBSv2.java Thu Jul 01 16:36:11 2010 -0500
@@ -1,68 +1,49 @@
package com.nokia.carbide.cpp.internal.api.sdk;
import java.io.File;
-import java.io.StringReader;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.osgi.framework.Version;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.InputSource;
-import org.xml.sax.helpers.DefaultHandler;
import com.nokia.carbide.cpp.epoc.engine.preprocessor.IDefine;
-import com.nokia.carbide.cpp.internal.sdk.core.model.SBSv2BuildInfo;
-import com.nokia.carbide.cpp.internal.sdk.core.model.SymbianSDK;
import com.nokia.carbide.cpp.sdk.core.IRVCTToolChainInfo;
import com.nokia.carbide.cpp.sdk.core.ISBSv2BuildContext;
+import com.nokia.carbide.cpp.sdk.core.ISBSv2ConfigQueryData;
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
-import com.nokia.carbide.cpp.sdk.core.ISymbianBuilderID;
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
import com.nokia.cpp.internal.api.utils.core.Check;
-import com.nokia.cpp.internal.api.utils.core.Logging;
public class BuildContextSBSv2 implements ISBSv2BuildContext {
private String platform;
private String target;
private String sbsv2Alias;
- private String meaning;
private ISymbianSDK sdk;
private String displayString;
private String configID; // cconfiguration 'id' attribute from .cproject
// Raptor config query data
- private String outputPathString;
- private List<String> metaDataMacros = new ArrayList<String>(); // macros to parse the INF/MMPs files (these do not contain values)
- private List<String> metaDataIncludes = new ArrayList<String>();
- private String metaDataVariantHRH;
- private String configParseErrorMessage = null;
+ private ISBSv2ConfigQueryData configQueryData;
- public BuildContextSBSv2(ISymbianSDK theSDK, String thePlatform, String theTarget, String theSBSv2Alias, String displayName, String configID) {
- this.sdk = theSDK;
- this.platform = thePlatform.toUpperCase();
- this.target = theTarget.toUpperCase();
- this.sbsv2Alias = theSBSv2Alias;
- this.displayString = displayName;
+ public BuildContextSBSv2(ISymbianSDK sdk, String platform, String target, String alias, String displayString, String configID) {
+ this.sdk = sdk;
+ this.platform = platform.toUpperCase();
+ this.target = target.toUpperCase();
+ this.sbsv2Alias = alias;
+ this.displayString = displayString;
this.configID = configID;
}
- public BuildContextSBSv2(ISymbianSDK sdk, String alias, String meaning, String contextQueryXML) {
+ public BuildContextSBSv2(ISymbianSDK sdk, String alias, ISBSv2ConfigQueryData configData) {
this.sdk = sdk;
this.sbsv2Alias = alias;
- this.meaning = meaning;
+ this.configQueryData = configData;
+ setPlatformAndTargetFromOutputPath();
this.configID = ISBSv2BuildContext.BUILDER_ID + "." + sbsv2Alias + "." + sdk.getUniqueId();
- parseQueryConfigResults(contextQueryXML);
this.displayString = sbsv2Alias + " [" + sdk.getUniqueId() + "]";
}
@@ -75,7 +56,7 @@
public String getPlatformString() {
if (platform == null){
- return configParseErrorMessage;
+ return configQueryData.getConfigurationErrorMessage();
}
if (platform.contains(".")){
@@ -92,7 +73,7 @@
@Override
public String getTargetString() {
if (target == null){
- return configParseErrorMessage;
+ return configQueryData.getConfigurationErrorMessage();
}
return target;
}
@@ -107,15 +88,6 @@
return displayString;
}
- private ISBSv2BuildInfo getBuildInfo() {
- ISBSv2BuildInfo buildInfo = (ISBSv2BuildInfo)getSDK().getBuildInfo(ISymbianBuilderID.SBSV2_BUILDER);
- if (buildInfo == null) {
- buildInfo = new SBSv2BuildInfo(getSDK());
- ((SymbianSDK)getSDK()).setBuildInfo(buildInfo, ISymbianBuilderID.SBSV2_BUILDER);
- }
- return buildInfo;
- }
-
@Override
public String toString() {
return getConfigID();
@@ -235,24 +207,6 @@
return false;
}
- /**
- * See if the build configuration is an SBSv2 alias, and if so get the build-able alias name
- * @param displayName
- * @return The full SBSv2 alias that can be used with -c, otherwise null if not SBSv2
- */
- private static String getSBSv2AliasFromConfigName(String displayName) {
- int indexBegin = displayName.indexOf("("); //$NON-NLS-1$
- int indexEnd = displayName.indexOf(")"); //$NON-NLS-1$
- if (indexBegin > 0 && indexEnd > 0){
- String configPart = displayName.substring(indexBegin+1, indexEnd);
- if (configPart.split("_").length > 1){
- return configPart;
- }
- }
-
- return null;
- }
-
@Override
public String getSBSv2Alias() {
return sbsv2Alias;
@@ -359,87 +313,10 @@
}
}
-
- private void parseQueryConfigResults(String queryResult) {
+ private void setPlatformAndTargetFromOutputPath() {
+ if (configQueryData.getOutputPathString() == null) return;
- try {
- Element root = null;
- DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
- parser.setErrorHandler(new DefaultHandler());
-
- StringReader reader = new StringReader( queryResult );
- InputSource inputSource = new InputSource( reader );
- root = parser.parse(inputSource).getDocumentElement();
-
- NodeList children = root.getChildNodes();
- for (int i=0; i< children.getLength(); i++) {
- Node configNode = children.item(i);
- if (configNode.getNodeName().equals("config")){
- NamedNodeMap aliasAttribs = configNode.getAttributes();
- String dottedName = aliasAttribs.getNamedItem("meaning").getNodeValue();
- if (!dottedName.equalsIgnoreCase(meaning)){
- continue;
- }
- if (configNode.getTextContent() != null&& configNode.getTextContent().length() > 0){
- // The config failed, likely due to envrionment set up issue.
- // Save the error message
- configParseErrorMessage = configNode.getTextContent();
- break;
- }
-
- String outputpath = aliasAttribs.getNamedItem("outputpath").getNodeValue();
- if (outputpath != null){
- outputPathString = outputpath;
- }
-
- // get <metadata>
- NodeList configChillens = configNode.getChildNodes();
- for (int ii = 0; ii < configChillens.getLength(); ii++){
- Node metaDataNode = configChillens.item(ii);
- if (metaDataNode.getNodeName().equals("metadata")){
- NodeList metaDataChillens = metaDataNode.getChildNodes();
- for (int iii = 0; iii < metaDataChillens.getLength(); iii++){
- Node metaChild = metaDataChillens.item(iii);
- NamedNodeMap attribs = metaChild.getAttributes();
- try {
- if (metaChild.getNodeName().equals("macro")){
- String name = attribs.getNamedItem("name").getNodeValue();
- metaDataMacros.add(name);
- } else if (metaChild.getNodeName().equals("include")){
- String path = attribs.getNamedItem("path").getNodeValue();
- metaDataIncludes.add(path);
- } else if (metaChild.getNodeName().equals("preinclude")){
- metaDataVariantHRH = attribs.getNamedItem("file").getNodeValue();
- }
- } catch (Exception e) {
- // skip it
- e.printStackTrace();
- }
- }
-
- } else if (metaDataNode.getNodeName().equals("compilerinfo")){
- // TODO: Placeholder for future cpp preprocessor macros and compiler prefix
- // Not sure what it will be called yet.
- }
- }
-
- break;
- }
- }
-
- } catch (Exception e) {
- e.printStackTrace();
- Logging.log(SDKCorePlugin.getDefault(), Logging.newStatus(SDKCorePlugin.getDefault(), e));
- }
-
- setPlatformAndTargetFromOutputPath();
-
- }
-
- private void setPlatformAndTargetFromOutputPath() {
- if (outputPathString == null) return;
-
- IPath releasePath = new Path(outputPathString);
+ IPath releasePath = new Path(configQueryData.getOutputPathString());
int epoc32SegmentIndex = 0;
for (String segment : releasePath.segments()){
if (segment.toLowerCase().equals("epoc32"))
@@ -451,23 +328,8 @@
target = releasePath.segment(epoc32SegmentIndex+3);
}
- /**
- * Error message, if any.
- * @return An error message if a problem occurred while trying to get config info from Raptor. Null if no error.
- */
- @Override
- public String getConfigurationErrorMessage(){
- return configParseErrorMessage;
- }
-
- @Override
- public List<String> getMetaDataMacros() {
- return metaDataMacros;
- }
-
- @Override
- public String getmetaDataVariantHRH() {
- return metaDataVariantHRH;
+ public ISBSv2ConfigQueryData getConfigQueryData() {
+ return configQueryData;
}
}