You can subscribe to this list here.
2005 |
Jan
|
Feb
(1) |
Mar
(45) |
Apr
(150) |
May
(145) |
Jun
(150) |
Jul
(79) |
Aug
(313) |
Sep
(160) |
Oct
(309) |
Nov
(115) |
Dec
(60) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(160) |
Feb
(144) |
Mar
(127) |
Apr
(48) |
May
(102) |
Jun
(54) |
Jul
(245) |
Aug
(94) |
Sep
(152) |
Oct
(162) |
Nov
(166) |
Dec
(740) |
2007 |
Jan
(752) |
Feb
(437) |
Mar
(328) |
Apr
(373) |
May
(569) |
Jun
(399) |
Jul
(369) |
Aug
(627) |
Sep
(100) |
Oct
(306) |
Nov
(166) |
Dec
(282) |
2008 |
Jan
(68) |
Feb
(145) |
Mar
(180) |
Apr
(160) |
May
(277) |
Jun
(229) |
Jul
(1188) |
Aug
(51) |
Sep
(97) |
Oct
(99) |
Nov
(95) |
Dec
(170) |
2009 |
Jan
(39) |
Feb
(73) |
Mar
(120) |
Apr
(121) |
May
(104) |
Jun
(262) |
Jul
(57) |
Aug
(171) |
Sep
(131) |
Oct
(88) |
Nov
(64) |
Dec
(83) |
2010 |
Jan
(55) |
Feb
(67) |
Mar
(124) |
Apr
(64) |
May
(130) |
Jun
(75) |
Jul
(164) |
Aug
(64) |
Sep
(44) |
Oct
(17) |
Nov
(43) |
Dec
(31) |
2011 |
Jan
(21) |
Feb
(10) |
Mar
(43) |
Apr
(46) |
May
(52) |
Jun
(71) |
Jul
(7) |
Aug
(16) |
Sep
(51) |
Oct
(14) |
Nov
(33) |
Dec
(15) |
2012 |
Jan
(12) |
Feb
(61) |
Mar
(129) |
Apr
(76) |
May
(70) |
Jun
(52) |
Jul
(29) |
Aug
(41) |
Sep
(32) |
Oct
(23) |
Nov
(38) |
Dec
(26) |
2013 |
Jan
(35) |
Feb
(37) |
Mar
(51) |
Apr
(15) |
May
(52) |
Jun
(15) |
Jul
(23) |
Aug
(21) |
Sep
(46) |
Oct
(69) |
Nov
(57) |
Dec
(26) |
2014 |
Jan
(5) |
Feb
(13) |
Mar
(17) |
Apr
(1) |
May
(5) |
Jun
|
Jul
(2) |
Aug
(2) |
Sep
(1) |
Oct
(16) |
Nov
(8) |
Dec
(4) |
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
(4) |
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
From: Benjamin B. <bg...@us...> - 2005-06-15 09:41:57
|
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/utils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16123/Plugin/com/ibm/ecute/utils Modified Files: Constants.java Log Message: Version 2.1 beta 1d: Various changes in the edit qualifiers dialog (BB) Index: Constants.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/utils/Constants.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Constants.java 2 Jun 2005 16:21:28 -0000 1.13 +++ Constants.java 15 Jun 2005 09:41:47 -0000 1.14 @@ -22,7 +22,7 @@ public class Constants { - public static final String pluginVersion="2.1 beta 1c"; + public static final String pluginVersion="2.1 beta 1d"; public static final String toolName="ECUTE"; public static final String qualifiersFileName="QualifiersList.txt"; |
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/properties In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16123/Plugin/com/ibm/ecute/rsa/core/internal/properties Modified Files: QualifiersPropertySection.java Added Files: ValuesTableHelper.java QualifierValueObject.java QualifierDefinitionObject.java Log Message: Version 2.1 beta 1d: Various changes in the edit qualifiers dialog (BB) --- NEW FILE: QualifierDefinitionObject.java --- /* * Created on 15.06.2005 * */ package com.ibm.ecute.rsa.core.internal.properties; /** * @author Benjamin Bender * */ public class QualifierDefinitionObject { public String name; public String type; public String defaultValue; public boolean classScope; public boolean associationScope; public boolean indicationScope; public boolean propertyScope; public boolean methodScope; public boolean parameterScope; public boolean referenceScope; public String inheritanceBehaviour; public boolean translatableFlavor; public QualifierDefinitionObject(){ this.name = null; this.type = null; this.defaultValue = null; this.classScope = false; this.associationScope = false; this.indicationScope = false; this.propertyScope = false; this.methodScope = false; this.parameterScope = false; this.referenceScope = false; this.inheritanceBehaviour = null; this.translatableFlavor = false; } public QualifierDefinitionObject(String name, String type, String defaultValue, boolean classScope, boolean associationScope, boolean indicationScope, boolean propertyScope, boolean methodScope, boolean parameterScope, boolean referenceScope, String inheritanceBehaviour, boolean translatableFlavor){ this.name = name; this.type = type; this.defaultValue = defaultValue; this.classScope = classScope; this.associationScope = associationScope; this.indicationScope = indicationScope; this.propertyScope = propertyScope; this.methodScope = methodScope; this.parameterScope = parameterScope; this.referenceScope = referenceScope; this.inheritanceBehaviour = inheritanceBehaviour; this.translatableFlavor = translatableFlavor; } public boolean equals(QualifierDefinitionObject object){ if( this.name.equalsIgnoreCase(object.name) && this.type.equalsIgnoreCase(object.type) && this.defaultValue.equalsIgnoreCase(object.defaultValue) && this.classScope == object.classScope && this.associationScope == object.associationScope && this.indicationScope == object.indicationScope && this.propertyScope == object.propertyScope && this.methodScope == object.methodScope && this.parameterScope == object.parameterScope && this.referenceScope == object.referenceScope && this.inheritanceBehaviour.equalsIgnoreCase(object.inheritanceBehaviour) && this.translatableFlavor == object.translatableFlavor) { return true; } else { return false; } } public boolean scopeChanged(QualifierDefinitionObject object){ if( this.classScope == false && object.classScope == true || this.associationScope == false && object.associationScope == true || this.indicationScope == false && object.indicationScope == true || this.propertyScope == false && object.propertyScope == true || this.methodScope == false && object.methodScope == true || this.parameterScope == false && object.parameterScope == true || this.referenceScope == false && object.referenceScope) { return true; } else { return false; } } public int type2int() { final int BOOLEAN=0; final int STRING=1; final int UNINT8=2; final int SINT8=3; final int UNINT16=4; final int SINT16=5; final int UNINT32=6; final int SINT32=7; final int UNINT64=8; final int SINT64=9; if(type.equalsIgnoreCase("Boolean")) return BOOLEAN; if(type.equalsIgnoreCase("String")) return STRING; if(type.equalsIgnoreCase("uint8")) return UNINT8; if(type.equalsIgnoreCase("sint8")) return SINT8; if(type.equalsIgnoreCase("uint16")) return UNINT16; if(type.equalsIgnoreCase("sint16")) return SINT16; if(type.equalsIgnoreCase("uint32")) return UNINT32; if(type.equalsIgnoreCase("sint32")) return SINT32; if(type.equalsIgnoreCase("uint64")) return UNINT64; if(type.equalsIgnoreCase("sint64")) return SINT64; return -1; } } --- NEW FILE: QualifierValueObject.java --- /* * Created on 15.06.2005 * */ package com.ibm.ecute.rsa.core.internal.properties; /** * @author Benjamin Bender * */ public class QualifierValueObject { public String name; public String value; public String datatype; public String definedIn; public String inheritance; public String translatable; public String defaultValue; public int index; public QualifierValueObject(String name, String value, String definedIn, int index){ this.name = name; this.value = value; this.definedIn = definedIn; this.index = index; } public QualifierValueObject(String name, String value, String datatype, String definedIn, String inheritance, String translatable, String defaultValue, int index){ this.name = name; this.value = value; this.datatype = datatype; this.definedIn = definedIn; this.inheritance = inheritance; this.translatable = translatable; this.defaultValue = defaultValue; this.index = index; } public boolean equals(QualifierValueObject object){ if( this.name.equalsIgnoreCase(object.name) && this.value.equalsIgnoreCase(object.value) && this.datatype.equalsIgnoreCase(object.datatype) && this.definedIn.equalsIgnoreCase(object.definedIn) && this.inheritance.equalsIgnoreCase(object.inheritance) && this.translatable.equalsIgnoreCase(object.translatable) && this.defaultValue.equalsIgnoreCase(object.defaultValue) && this.index == object.index ) { return true; } else { return false; } } public boolean isDirectMapped(){ if( this.name.equalsIgnoreCase("Association")|| this.name.equalsIgnoreCase("Aggregation")|| this.name.equalsIgnoreCase("Composition")|| this.name.equalsIgnoreCase("Aggregate")|| this.name.equalsIgnoreCase("In")|| this.name.equalsIgnoreCase("Out")|| this.name.equalsIgnoreCase("Inout")|| this.name.equalsIgnoreCase("Min")|| this.name.equalsIgnoreCase("Max")|| this.name.equalsIgnoreCase("Octetstring")|| this.name.equalsIgnoreCase("Static")|| this.name.equalsIgnoreCase("Write")|| this.name.equalsIgnoreCase("Description")|| this.name.equalsIgnoreCase("Abstract")|| this.name.equalsIgnoreCase("Deprecated")|| this.name.equalsIgnoreCase("Key")|| this.name.equalsIgnoreCase("ArrayType")|| this.name.equalsIgnoreCase("OCL") ){ return true; } else { return false; } } } --- NEW FILE: ValuesTableHelper.java --- /* * Created on 07.06.2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package com.ibm.ecute.rsa.core.internal.properties; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.swt.widgets.Table; import org.eclipse.uml2.AggregationKind; import org.eclipse.uml2.AssociationClass; import org.eclipse.uml2.Class; import org.eclipse.uml2.Comment; import org.eclipse.uml2.Constraint; import org.eclipse.uml2.NamedElement; import org.eclipse.uml2.OpaqueExpression; import org.eclipse.uml2.Operation; import org.eclipse.uml2.Package; import org.eclipse.uml2.Parameter; import org.eclipse.uml2.Property; import org.eclipse.uml2.Stereotype; import com.ibm.ecute.Qualifiers.Qualifier; /** * @author Benjamin Bender * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class ValuesTableHelper { Table table; public ValuesTableHelper(Table table){ this.table = table; } // public void sortValuesTableBy(int columnNumber){ // // Collator collator = Collator.getInstance(Locale.getDefault()); // // boolean decreasing = false; // TableItem[] column = table.getItems(); // for (int h = 0; h < column.length-1; h++) { // String value1 = column[h].getText(columnNumber); // String value2 = column[h+1].getText(columnNumber); // if (collator.compare(value1, value2) > 0) { // decreasing = true; // } // } // // TableItem[] items = table.getItems(); // for (int i = 1; i < items.length; i++) { // String value1 = items[i].getText(columnNumber); // QualifierValueObject data1 = (QualifierValueObject)items[i].getData(); // for (int j = 0; j < i; j++){ // String value2 = items[j].getText(columnNumber); // if(decreasing){ // if (collator.compare(value1, value2) < 0) { // String[] values = {items[i].getText(0), items[i].getText(1), items[i].getText(2), // items[i].getText(3), items[i].getText(4), items[i].getText(5)}; // items[i].dispose(); // TableItem item = new TableItem(table, SWT.NONE, j); // item.setText(values); // item.setData(data1); // items = table.getItems(); // break; // } // } else { // if (collator.compare(value1, value2) > 0) { // String[] values = {items[i].getText(0), items[i].getText(1), items[i].getText(2), // items[i].getText(3), items[i].getText(4), items[i].getText(5)}; // items[i].dispose(); // TableItem item = new TableItem(table, SWT.NONE, j); // item.setText(values); // item.setData(data1); // items = table.getItems(); // break; // } // } // } // } // } public ArrayList getInheritedQualifers(NamedElement element, ArrayList allAvailableQualifiers){ //TODO BB ArrayList inheritedList = new ArrayList(); // get applicable qualifiers for the element ArrayList applicableQualifiers = new ArrayList(); for(int i = 0; i < allAvailableQualifiers.size(); i++){ Qualifier qualifier = (Qualifier)allAvailableQualifiers.get(i); if(element instanceof Class && qualifier.classScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } else if(element instanceof AssociationClass && qualifier.associationScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } else if(element instanceof Property && qualifier.propertyScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } else if(element instanceof Property && qualifier.referenceScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } else if(element instanceof Operation && qualifier.methodScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } else if(element instanceof Parameter && qualifier.parameterScope && !qualifier.RestrictedFlavor){ applicableQualifiers.add(qualifier); } } applicableQualifiers.trimToSize(); if(element instanceof Class && applicableQualifiers.size() > 0){ Class thisClass = (Class)element; // get parent classes ArrayList parents = new ArrayList(); List generals = thisClass.getGenerals(); while (generals.size() > 0){ Class class_ = (Class)generals.get(0); parents.add(class_); generals = class_.getGenerals(); } if(parents.size() > 0){ for(int i = 0; i < applicableQualifiers.size(); i++){ boolean lastParent = false; for(int j = 0; j < parents.size(); j++){ if(j == parents.size()-1) lastParent = true; QualifierValueObject isInherited = checkIfInherited((Qualifier)applicableQualifiers.get(i), (Class)parents.get(j), lastParent); if(isInherited != null){ inheritedList.add(isInherited); allAvailableQualifiers.remove((Qualifier)applicableQualifiers.get(i)); break; } } } } } return inheritedList; } public QualifierValueObject checkIfInherited(Qualifier qualifier, Class class_, boolean lastParent){ QualifierValueObject returnQualifierObject = null; String classQualifierValue = null; if(qualifier.name.equalsIgnoreCase("Abstract")){ if(class_.isAbstract()){ classQualifierValue = "true"; } else { classQualifierValue = "false"; } } else if (qualifier.name.equalsIgnoreCase("Description")){ EList list = class_.getOwnedComments(); Iterator it = list.iterator(); while (it.hasNext()){ Comment comment = (Comment)it.next(); Stereotype stereo = comment.getApplicableStereotype("Default::Documentation"); if(stereo != null){ classQualifierValue = comment.getBody(); } } } else if (qualifier.name.equalsIgnoreCase("Deprecated")){ Stereotype stereo = class_.getAppliedStereotype("CIM::Deprecated"); if(stereo != null){ classQualifierValue = (String)class_.getValue(stereo, "Value"); } } else if (!(class_ instanceof AssociationClass) && qualifier.name.equalsIgnoreCase("OCL")){ String oclValue = existsOCL(class_); if(oclValue != null) classQualifierValue = oclValue; } else if (class_ instanceof AssociationClass && qualifier.name.equalsIgnoreCase("Aggregation")){ AssociationClass aClass = (AssociationClass)class_; EList ends = aClass.getOwnedEnds(); Iterator iter = ends.iterator(); while(iter.hasNext()){ Property prop = (Property)iter.next(); if(prop.getAggregation().getValue()== AggregationKind.SHARED || prop.getAggregation().getValue()== AggregationKind.COMPOSITE){ classQualifierValue = "true"; break; } } } else if (class_ instanceof AssociationClass && qualifier.name.equalsIgnoreCase("Composition")){ AssociationClass aClass = (AssociationClass)class_; EList ends = aClass.getOwnedEnds(); Iterator iter = ends.iterator(); while(iter.hasNext()){ Property prop = (Property)iter.next(); if(prop.getAggregation().getValue()== AggregationKind.COMPOSITE){ classQualifierValue = "true"; break; } } } else { //get all qualifiers witch are set in the Qualifiers-Stereotype Stereotype cimStereotype = class_.getAppliedStereotype("CIM::Qualifiers"); List qualifierNames = (List) class_.getValue(cimStereotype, "QualifierName"); List qualifierValues = (List) class_.getValue(cimStereotype, "QualifierValue"); for(int i=0; i<qualifierNames.size(); i++){ String qualifierName = (String)qualifierNames.get(i); String qualifierValue = (String)qualifierValues.get(i); if(qualifierName.equalsIgnoreCase(qualifier.name)){ classQualifierValue = qualifierValue; break; } } } if(classQualifierValue != null && !classQualifierValue.equalsIgnoreCase(qualifier.defaultValue)){ returnQualifierObject = new QualifierValueObject(qualifier.name, classQualifierValue, class_.getName() + " (" + class_.getNearestPackage().getName() + ")" , -1); } // if (classQualifierValue == null && lastParent){ // // set default value and definedIn emptyString // returnQualifierObject = new QualifierValueObject(qualifier.name, // qualifier.defaultValue, "", -1); // } return returnQualifierObject; } public String existsOCL(Class class_ ){ String value = null; Package thisPackage = class_.getNearestPackage(); EList ownedMembersList = thisPackage.getOwnedMembers(); for(int i = 0; i < ownedMembersList.size(); i++){ if(ownedMembersList.get(i) instanceof Constraint){ Constraint thisConstraint = (Constraint)ownedMembersList.get(i); EList constrainedElements = thisConstraint.getConstrainedElements(); for(int j = 0; j < constrainedElements.size(); j++){ if(constrainedElements.get(j) instanceof Class){ Class thisClass = (Class)constrainedElements.get(j); if(thisClass.equals(class_)){ value = "{"+((OpaqueExpression)thisConstraint.getSpecification()).getBody()+"}"; i = ownedMembersList.size(); break; } } } } } // return the cantent of the constraint return value; } // public class QualifierValueObject{ // private String name; // private String value; // private String datatype; // private String definedIn; // private String inheritance; // private String translatable; // private String defaultValue; // private int index; // // public QualifierValueObject(String name, String value, String definedIn, int index){ // this.name = name; // this.value = value; // this.definedIn = definedIn; // this.index = index; // } // // public QualifierValueObject(String name, String value, String datatype, String definedIn, // String inheritance, String translatable, String defaultValue, int index){ // this.name = name; // this.value = value; // this.datatype = datatype; // this.definedIn = definedIn; // this.inheritance = inheritance; // this.translatable = translatable; // this.defaultValue = defaultValue; // this.index = index; // } // // public boolean equals(QualifierValueObject object){ // // if( // this.name.equalsIgnoreCase(object.name) && // this.value.equalsIgnoreCase(object.value) && // this.datatype.equalsIgnoreCase(object.datatype) && // this.definedIn.equalsIgnoreCase(object.definedIn) && // this.inheritance.equalsIgnoreCase(object.inheritance) && // this.translatable.equalsIgnoreCase(object.translatable) && // this.defaultValue.equalsIgnoreCase(object.defaultValue) && // this.index == object.index // ) // { // return true; // } else { // return false; // } // } // // public boolean isDirectMapped(){ // // if( this.name.equalsIgnoreCase("Association")|| // this.name.equalsIgnoreCase("Aggregation")|| // this.name.equalsIgnoreCase("Composition")|| // this.name.equalsIgnoreCase("Aggregate")|| // this.name.equalsIgnoreCase("In")|| // this.name.equalsIgnoreCase("Out")|| // this.name.equalsIgnoreCase("Inout")|| // this.name.equalsIgnoreCase("Min")|| // this.name.equalsIgnoreCase("Max")|| // this.name.equalsIgnoreCase("Octetstring")|| // this.name.equalsIgnoreCase("Static")|| // this.name.equalsIgnoreCase("Write")|| // this.name.equalsIgnoreCase("Description")|| // this.name.equalsIgnoreCase("Abstract")|| // this.name.equalsIgnoreCase("Deprecated")|| // this.name.equalsIgnoreCase("Key")|| // this.name.equalsIgnoreCase("ArrayType")|| // this.name.equalsIgnoreCase("OCL") // ){ // return true; // } else { // return false; // } // } // } } Index: QualifiersPropertySection.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/properties/QualifiersPropertySection.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- QualifiersPropertySection.java 6 Jun 2005 14:17:44 -0000 1.17 +++ QualifiersPropertySection.java 15 Jun 2005 09:41:47 -0000 1.18 @@ -7,9 +7,11 @@ import java.io.FileInputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetException; +import java.text.Collator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Vector; import org.eclipse.core.runtime.IProgressMonitor; @@ -26,6 +28,8 @@ import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; @@ -95,6 +99,8 @@ private static QualifiersList qualifiersList = null; private boolean qualifiersListChanged = false; + + ArrayList allAvailableQualifers = null; public QualifiersPropertySection() @@ -146,16 +152,46 @@ qualifiersTable.setLinesVisible(true); nameColumn = new TableColumn(qualifiersTable, 0); nameColumn.setText("Name"); + nameColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(0); + } + }); valueColumn = new TableColumn(qualifiersTable, 0); valueColumn.setText("Value"); + valueColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(1); + } + }); typeColumn = new TableColumn(qualifiersTable, 0); typeColumn.setText("Type"); + typeColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(2); + } + }); definedInColumn = new TableColumn(qualifiersTable, 0); definedInColumn.setText("Defined in"); + definedInColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(3); + } + }); inheritanceColumn = new TableColumn(qualifiersTable, 0); inheritanceColumn.setText("Inheritance Behavior"); + inheritanceColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(4); + } + }); translatableColumn = new TableColumn(qualifiersTable, SWT.CENTER); translatableColumn.setText("Translatable"); + translatableColumn.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event e) { + sortValuesTableBy(5); + } + }); qualifiersTable.addMouseListener(new MouseAdapter() { public void mouseDoubleClick(MouseEvent e){ @@ -207,66 +243,6 @@ return null; } - // tried to change the OCL qualifier of a class automatically - // when a class constraint body is changed --> failed -/* - if(element instanceof Class){ - List elementList = ((Class)element).getPackage().getOwnedElements(); - ArrayList constraintList = new ArrayList(); - for (int i = 0; i < elementList.size(); i++){ - if (elementList.get(i) instanceof Constraint) - constraintList.add(elementList.get(i)); - } - if (constraintList != null){ - for(int j = 0; j < constraintList.size(); j++){ - Constraint constraint = (Constraint)constraintList.get(j); - List constrainedElements = constraint.getConstrainedElements(); - for(int k = 0; k < constrainedElements.size(); k++){ - if(constrainedElements.get(k) instanceof Class){ - if(((Class)constrainedElements.get(k)).getName().equalsIgnoreCase(((Class)element).getName())){ - String body = ((OpaqueExpression)constraint.getSpecification()).getBody(); - int index = body.indexOf("\n"); - String qualifierValue = "{\""; - if (index != -1){ - qualifierValue = qualifierValue.concat(body.substring(0, index)); - } else { - qualifierValue = qualifierValue.concat(body.substring(0)); - } - qualifierValue = qualifierValue.concat("\""); - body = body.substring(index +1); - index = body.indexOf("\n"); - while (index != -1){ - qualifierValue = qualifierValue.concat(",\""); - qualifierValue = qualifierValue.concat(body.substring(0, index)); - qualifierValue = qualifierValue.concat("\""); - body = body.substring(index +1); - index = body.indexOf("\n"); - if(index == -1){ - qualifierValue = qualifierValue.concat(",\""); - qualifierValue = qualifierValue.concat(body.substring(0)); - qualifierValue = qualifierValue.concat("\""); - } - } - qualifierValue = qualifierValue.concat("}"); - System.out.println("OCL qualifier: " + qualifierValue); - Class thisClass = (Class)constrainedElements.get(k); - - Stereotype cimStereotype = thisClass.getAppliedStereotype("CIM::Qualifiers"); - List qualifierNameList = (List) thisClass.getValue(cimStereotype, "QualifierName"); - int stereotypeOCLIndex = -1; - for(int i = 0; i < qualifierNameList.size(); i++){ - if(qualifierNameList.get(i).toString().equalsIgnoreCase("OCL")){ - stereotypeOCLIndex = i; - } - } - thisClass.setValue(cimStereotype, "QualifierValue["+stereotypeOCLIndex+"]", qualifierValue); - } - } - } - } - } - } -*/ if (qualifiersList == null || qualifiersListChanged == true){ try { qualifiersListChanged = false; @@ -281,10 +257,11 @@ } Vector vector = qualifiersList.GetElements(); //make a copy of the qualifiers list to remove the qualifiers already displayed - ArrayList allAvailableQualifers = new ArrayList(); + allAvailableQualifers = new ArrayList(); for(int i=0; i < vector.size(); i++){ allAvailableQualifers.add(vector.get(i)); } + allAvailableQualifers.trimToSize(); String definedIn = ""; if(element instanceof Class){ @@ -581,8 +558,17 @@ } - //TODO - ArrayList inheritedQualifiers = getInheritedQualifers(element); +// //TODO +// ValuesTableHelper tableHelper = new ValuesTableHelper(qualifiersTable); +// ArrayList inheritedQualifiers = tableHelper.getInheritedQualifers(element, allAvailableQualifers); +// for(int k = 0; k < inheritedQualifiers.size(); k++){ +// qualifierName = ((QualifierValueObject)inheritedQualifiers.get(k)).name; +// String qualifierValue = ((QualifierValueObject)inheritedQualifiers.get(k)).value; +// definedIn = ((QualifierValueObject)inheritedQualifiers.get(k)).definedIn; +// Qualifier qualifierObject = qualifiersList.GetElement(qualifierName); +// addQualiferToTable(qualifierName, qualifierValue, definedIn, qualifierObject, -1, false); +// allAvailableQualifers.remove(qualifierObject); +// } //dispaly all qualifiers with default values if(showAllButton.getSelection()){ @@ -652,6 +638,53 @@ refresh(); } + private void sortValuesTableBy(int columnNumber){ + + Collator collator = Collator.getInstance(Locale.getDefault()); + + boolean decreasing = false; + TableItem[] column = qualifiersTable.getItems(); + for (int h = 0; h < column.length-1; h++) { + String value1 = column[h].getText(columnNumber); + String value2 = column[h+1].getText(columnNumber); + if (collator.compare(value1, value2) > 0) { + decreasing = true; + } + } + + TableItem[] items = qualifiersTable.getItems(); + for (int i = 1; i < items.length; i++) { + String value1 = items[i].getText(columnNumber); + QualifierValueObject data1 = (QualifierValueObject)items[i].getData(); + for (int j = 0; j < i; j++){ + String value2 = items[j].getText(columnNumber); + if(decreasing){ + if (collator.compare(value1, value2) < 0) { + String[] values = {items[i].getText(0), items[i].getText(1), items[i].getText(2), + items[i].getText(3), items[i].getText(4), items[i].getText(5)}; + items[i].dispose(); + TableItem item = new TableItem(qualifiersTable, SWT.NONE, j); + item.setText(values); + item.setData(data1); + items = qualifiersTable.getItems(); + break; + } + } else { + if (collator.compare(value1, value2) > 0) { + String[] values = {items[i].getText(0), items[i].getText(1), items[i].getText(2), + items[i].getText(3), items[i].getText(4), items[i].getText(5)}; + items[i].dispose(); + TableItem item = new TableItem(qualifiersTable, SWT.NONE, j); + item.setText(values); + item.setData(data1); + items = qualifiersTable.getItems(); + break; + } + } + } + } + } + private boolean propertyIsOwnedEnd(Property prop){ boolean isOwnedEnd = false; @@ -776,7 +809,8 @@ String as[] = {name, qualifierValue, type, definedIn, inheritance, translatable}; tableitem.setText(as); - tableitem.setData(new QualifierValueObject(name, qualifierValue, defaultValue, index)); + tableitem.setData(new QualifierValueObject(name, qualifierValue, + type, definedIn, inheritance, translatable, defaultValue, index)); return i; } @@ -823,11 +857,146 @@ return true; } - private ArrayList getInheritedQualifers(NamedElement element){ - //TODO - ArrayList list = new ArrayList(); - return list; - } +// private ArrayList getInheritedQualifers(NamedElement element, ArrayList allAvailableQualifiers){ +// //TODO BB +// ArrayList inheritedList = new ArrayList(); +// +// // get applicable qualifiers for the element +// ArrayList applicableQualifiers = new ArrayList(); +// for(int i = 0; i < allAvailableQualifiers.size(); i++){ +// +// Qualifier qualifier = (Qualifier)allAvailableQualifiers.get(i); +// if(element instanceof Class && qualifier.classScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } else if(element instanceof AssociationClass && qualifier.associationScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } else if(element instanceof Property && qualifier.propertyScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } else if(element instanceof Property && qualifier.referenceScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } else if(element instanceof Operation && qualifier.methodScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } else if(element instanceof Parameter && qualifier.parameterScope && !qualifier.RestrictedFlavor){ +// applicableQualifiers.add(qualifier); +// } +// } +// applicableQualifiers.trimToSize(); +// +// if(element instanceof Class && applicableQualifiers.size() > 0){ +// Class thisClass = (Class)element; +// // get parent classes +// ArrayList parents = new ArrayList(); +// List generals = thisClass.getGenerals(); +// while (generals.size() > 0){ +// Class class_ = (Class)generals.get(0); +// parents.add(class_); +// generals = class_.getGenerals(); +// } +// +// if(parents.size() > 0){ +// for(int i = 0; i < applicableQualifiers.size(); i++){ +// boolean lastParent = false; +// for(int j = 0; j < parents.size(); j++){ +// if(j == parents.size()-1) lastParent = true; +// QualifierValueObject isInherited = checkIfInherited((Qualifier)applicableQualifiers.get(i), (Class)parents.get(j), lastParent); +// if(isInherited != null){ +// inheritedList.add(isInherited); +// allAvailableQualifiers.remove((Qualifier)applicableQualifiers.get(i)); +// break; +// } +// } +// } +// } +// } +// +// return inheritedList; +// } +// +// private QualifierValueObject checkIfInherited(Qualifier qualifier, Class class_, boolean lastParent){ +// QualifierValueObject returnQualifierObject = null; +// String classQualifierValue = null; +// +// if(qualifier.name.equalsIgnoreCase("Abstract")){ +// if(class_.isAbstract()){ +// classQualifierValue = "true"; +// } else { +// classQualifierValue = "false"; +// } +// } else if (qualifier.name.equalsIgnoreCase("Description")){ +// EList list = class_.getOwnedComments(); +// Iterator it = list.iterator(); +// while (it.hasNext()){ +// Comment comment = (Comment)it.next(); +// Stereotype stereo = comment.getApplicableStereotype("Default::Documentation"); +// if(stereo != null){ +// classQualifierValue = comment.getBody(); +// } +// } +// } else if (qualifier.name.equalsIgnoreCase("Deprecated")){ +// Stereotype stereo = class_.getAppliedStereotype("CIM::Deprecated"); +// if(stereo != null){ +// classQualifierValue = (String)class_.getValue(stereo, "Value"); +// } +// } else if (!(class_ instanceof AssociationClass) && qualifier.name.equalsIgnoreCase("OCL")){ +// String oclValue = existsOCL(class_); +// if(oclValue != null) +// classQualifierValue = oclValue; +// } else if (class_ instanceof AssociationClass && qualifier.name.equalsIgnoreCase("Aggregation")){ +// AssociationClass aClass = (AssociationClass)class_; +// EList ends = aClass.getOwnedEnds(); +// Iterator iter = ends.iterator(); +// while(iter.hasNext()){ +// Property prop = (Property)iter.next(); +// if(prop.getAggregation().getValue()== AggregationKind.SHARED || +// prop.getAggregation().getValue()== AggregationKind.COMPOSITE){ +// classQualifierValue = "true"; +// break; +// } +// } +// +// } else if (class_ instanceof AssociationClass && qualifier.name.equalsIgnoreCase("Composition")){ +// AssociationClass aClass = (AssociationClass)class_; +// EList ends = aClass.getOwnedEnds(); +// Iterator iter = ends.iterator(); +// while(iter.hasNext()){ +// Property prop = (Property)iter.next(); +// if(prop.getAggregation().getValue()== AggregationKind.COMPOSITE){ +// classQualifierValue = "true"; +// break; +// } +// } +// } else { +// +// //get all qualifiers witch are set in the Qualifiers-Stereotype +// Stereotype cimStereotype = class_.getAppliedStereotype("CIM::Qualifiers"); +// List qualifierNames = (List) class_.getValue(cimStereotype, "QualifierName"); +// List qualifierValues = (List) class_.getValue(cimStereotype, "QualifierValue"); +// +// for(int i=0; i<qualifierNames.size(); i++){ +// String qualifierName = (String)qualifierNames.get(i); +// String qualifierValue = (String)qualifierValues.get(i); +// +// if(qualifierName.equalsIgnoreCase(qualifier.name)){ +// classQualifierValue = qualifierValue; +// break; +// } +// } +// +// } +// +// if(classQualifierValue != null && !classQualifierValue.equalsIgnoreCase(qualifier.defaultValue)){ +// returnQualifierObject = new QualifierValueObject(qualifier.name, +// classQualifierValue, class_.getName() + " (" + +// class_.getNearestPackage().getName() + ")" , -1); +// } +//// if (classQualifierValue == null && lastParent){ +//// // set default value and definedIn emptyString +//// returnQualifierObject = new QualifierValueObject(qualifier.name, +//// qualifier.defaultValue, "", -1); +//// } +// +// return returnQualifierObject; +// } private void packColumns() { @@ -1257,19 +1426,4 @@ } } } - - private class QualifierValueObject{ - private String name; - private String value; - private String defaultValue; - private int index; - - public QualifierValueObject(String name, String value, String defaultValue, int index){ - this.name = name; - this.value = value; - this.defaultValue = defaultValue; - this.index = index; - } - } - } |
From: Benjamin B. <bg...@us...> - 2005-06-15 09:41:57
|
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/dialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16123/Plugin/com/ibm/ecute/rsa/core/internal/dialogs Modified Files: EditQualifiersDialog.java Log Message: Version 2.1 beta 1d: Various changes in the edit qualifiers dialog (BB) Index: EditQualifiersDialog.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/core/internal/dialogs/EditQualifiersDialog.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- EditQualifiersDialog.java 6 Jun 2005 14:17:44 -0000 1.7 +++ EditQualifiersDialog.java 15 Jun 2005 09:41:48 -0000 1.8 @@ -4,9 +4,11 @@ package com.ibm.ecute.rsa.core.internal.dialogs; import java.lang.reflect.InvocationTargetException; +import java.text.Collator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Set; import java.util.Vector; [...1065 lines suppressed...] + // set default value + editValue(object, true); + + } resetRemovedValues(); @@ -4348,8 +4413,10 @@ private void fillDatatypeCombo(){ datatypeCombo.removeAll(); - datatypeCombo.add("Boolean"); - datatypeCombo.add("String"); + datatypeCombo.add("boolean"); + datatypeCombo.add("string"); + datatypeCombo.add("char16"); + datatypeCombo.add("datetime"); datatypeCombo.add("uint8"); datatypeCombo.add("sint8"); datatypeCombo.add("uint16"); |
From: Benjamin B. <bg...@us...> - 2005-06-15 09:41:57
|
Update of /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/ui/internal/wizards In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16123/Plugin/com/ibm/ecute/rsa/ui/internal/wizards Modified Files: ImportCIMMOFWizardPage.java Log Message: Version 2.1 beta 1d: Various changes in the edit qualifiers dialog (BB) Index: ImportCIMMOFWizardPage.java =================================================================== RCS file: /cvsroot/sblim/ecute/Plugin/com/ibm/ecute/rsa/ui/internal/wizards/ImportCIMMOFWizardPage.java,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- ImportCIMMOFWizardPage.java 31 May 2005 15:48:50 -0000 1.18 +++ ImportCIMMOFWizardPage.java 15 Jun 2005 09:41:48 -0000 1.19 @@ -807,7 +807,7 @@ modelName = modelName.trim(); if (modelName.length() > 0) { - Object models[] = getUML2Projects(getContainer(containerNameField.getText())); + Object models[] = getUML2Projects(getContainer(containerNameField.getText())); if(models != null){ for(int i = 0; i<models.length; i++){ if(((IFile)models[i]).getName().equalsIgnoreCase(modelName)){ @@ -1037,8 +1037,9 @@ try { IResource resources[] = container.members(); for(int i = 0; i<resources.length; i++){ - if(resources[i].getFileExtension().equalsIgnoreCase(FILE_EXT_MODEL) - || resources[i].getFileExtension().equalsIgnoreCase("uml2")){ + if(resources[i].getFileExtension() != null && + (resources[i].getFileExtension().equalsIgnoreCase(FILE_EXT_MODEL) + || resources[i].getFileExtension().equalsIgnoreCase("uml2"))){ if (resources[i] instanceof IFile) { models.add((IFile) resources[i]); } |
From: Adrian S. <a3s...@us...> - 2005-06-14 16:22:10
|
Update of /cvsroot/sblim/testsuite In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23872 Modified Files: associator.pm consistence.pm instance.pm run.sh Log Message: Added -verbose parameter support - -verbose causes actual wbemcli commands to be written to console prior to execution. Index: run.sh =================================================================== RCS file: /cvsroot/sblim/testsuite/run.sh,v retrieving revision 1.16 retrieving revision 1.17 diff -u -d -r1.16 -r1.17 --- run.sh 21 Jun 2004 17:43:43 -0000 1.16 +++ run.sh 14 Jun 2005 16:21:59 -0000 1.17 @@ -45,6 +45,7 @@ NAMESPACE="/root/cimv2" HOSTNAME="localhost" PORT="5988" +VERBOSE= while [ "$#" -gt 0 ] do @@ -80,6 +81,9 @@ elif [[ -n "$COMMAND" && "$COMMAND" == "-n" ]]; then NAMESPACE=$1; + elif [[ -n "$COMMAND" && "$COMMAND" == "-verbose" ]]; then + VERBOSE="yes"; + fi done @@ -103,6 +107,11 @@ export SBLIM_TESTSUITE_NAMESPACE="$NAMESPACE"; fi +if [[ -n $VERBOSE ]]; then + export SBLIM_TESTSUITE_VERBOSE=1; +fi + + #******************************************************************************# # # exit, if CIMOM is not running Index: instance.pm =================================================================== RCS file: /cvsroot/sblim/testsuite/instance.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- instance.pm 30 Mar 2004 00:10:14 -0000 1.13 +++ instance.pm 14 Jun 2005 16:21:59 -0000 1.14 @@ -45,6 +45,14 @@ # asked for in parameter ${class} -> Provider failure ? # +sub wbem_cli { + my ($cmd,$parm) = @_; + my @enum = (); + my $e = $ENV{'SBLIM_TESTSUITE_VERBOSE'}; + if (defined $e) { print "\n>>${cmd} ${parm}<<\n"; } + @enum = `${cmd} ${parm} 2>&1`; + return @enum +} #******************************************************************************# # call enumInstances or enumInstanceNames of a certain class @@ -64,10 +72,12 @@ my @rc = (0,""); $|=1; - if ( $op =~ /enumInstanceNames/) { @enum = `wbemein ${cimom::HOST}${class} 2>&1`; +# if ( $op =~ /enumInstanceNames/) { @enum = `wbemein ${cimom::HOST}${class} 2>&1`; + if ( $op =~ /enumInstanceNames/) { @enum = wbem_cli("wbemein", "${cimom::HOST}${class}"); $rc[7]= "wbemein ${cimom::HOST}${class}"; } - elsif ( $op =~ /enumInstances/ ) { @enum = `wbemei ${cimom::HOST}${class} 2>&1`; +# elsif ( $op =~ /enumInstances/ ) { @enum = `wbemei ${cimom::HOST}${class} 2>&1`; + elsif ( $op =~ /enumInstances/ ) { @enum = wbem_cli("wbemei", "${cimom::HOST}${class}"); $rc[7]= "wbemei ${cimom::HOST}${class}"; } else { @@ -126,7 +136,8 @@ my ($class, $volatile) = @_; my @stexec = times(); print $class." --- get() started "; - my @enum = `wbemein ${cimom::HOST}${class} 2>&1`; +# my @enum = `wbemein ${cimom::HOST}${class} 2>&1`; + my @enum = wbem_cli("wbemein","${cimom::HOST}${class}"); my @rc = (0,""); $rc[7]= "wbemein ${cimom::HOST}${class}"; $|=1; @@ -214,7 +225,8 @@ my $var = $input; $var =~ s/$class\.//; my @rc = (0,""); - my @rv = `wbemci '${cimom::HOST}$input' $var 2>&1`; +# my @rv = `wbemci '${cimom::HOST}$input' $var 2>&1`; + my @rv = wbem_cli("wbemci", "'${cimom::HOST}$input' $var"); $rc[7]= "wbemci '${cimom::HOST}$input' $var"; $|=1; @@ -231,7 +243,8 @@ } # getInstance to check if creation was really sucessfull - @rv = `wbemgi '${cimom::HOST}${input}' 2>&1`; +# @rv = `wbemgi '${cimom::HOST}${input}' 2>&1`; + @rv = wbem_cli("wbemgi", "'${cimom::HOST}${input}'"); # if $rv[1] contains no value, no exception occurred if ( ! defined $rv[1] ) { @@ -282,7 +295,8 @@ my @stexec = times(); print $class." --- delete() started "; my @rc = (0,""); - my @rv = `wbemdi '${cimom::HOST}${input}' 2>&1`; +# my @rv = `wbemdi '${cimom::HOST}${input}' 2>&1`; + my @rv = wbem_cli("wbemdi", "'${cimom::HOST}${input}'"); $rc[7]= "wbemdi '${cimom::HOST}${input}'"; $|=1; @@ -299,7 +313,8 @@ } # getInstance to check if deletion was really sucessfull - @rv = `wbemgi ${cimom::HOST}${input} 2>&1`; +# @rv = `wbemgi ${cimom::HOST}${input} 2>&1`; + @rv = wbem_cli("wbemgi","${cimom::HOST}${input}"); # if $rv[1] contains no value, no exception occurred if ( ! defined $rv[1] ) { @@ -358,7 +373,8 @@ if( $op =~ /associators/ || $op =~ /associatorNames/ || $op =~ /references/ || $op =~ /referenceNames/ ) { - @enum = `wbemein ${cimom::HOST}${input} 2>&1`; +# @enum = `wbemein ${cimom::HOST}${input} 2>&1`; + @enum = wbem_cli("wbemein", "${cimom::HOST}${input}"); $rc[9]= "wbemein ${cimom::HOST}${input}"; $input=$enum[0]; chomp($input); @@ -366,40 +382,49 @@ } # ---------------------------- Instance Interface -------------------------- # - if ( $op =~ /enumInstanceNames/) { @enum = `wbemein ${cimom::HOST}${class} 2>&1`; +# if ( $op =~ /enumInstanceNames/) { @enum = `wbemein ${cimom::HOST}${class} 2>&1`; + if ( $op =~ /enumInstanceNames/) { @enum = wbem_cli("wbemein", "${cimom::HOST}${class}"); $rc[7]= "wbemein ${cimom::HOST}${class}"; } - elsif ( $op =~ /enumInstances/ ) { @enum = `wbemei ${cimom::HOST}${class} 2>&1`; +# elsif ( $op =~ /enumInstances/ ) { @enum = `wbemei ${cimom::HOST}${class} 2>&1`; + elsif ( $op =~ /enumInstances/ ) { @enum = wbem_cli("wbemei", "${cimom::HOST}${class}"); $rc[7]= "wbemei ${cimom::HOST}${class}"; } - elsif ( $op =~ /get/ ) { @enum = `wbemgi '${cimom::HOST}${input}' 2>&1`; +# elsif ( $op =~ /get/ ) { @enum = `wbemgi '${cimom::HOST}${input}' 2>&1`; + elsif ( $op =~ /get/ ) { @enum = wbem_cli("wbemgi", "'${cimom::HOST}${input}'"); $rc[7]= "wbemgi '${cimom::HOST}${input}'"; } elsif ( $op =~ /create/ ) { my $var = $input; $var =~ s/$class\.|\"//; - @enum = `wbemci '${cimom::HOST}${input}' $var 2>&1`; +# @enum = `wbemci '${cimom::HOST}${input}' $var 2>&1`; + @enum = wbem_cli("wbemci", "'${cimom::HOST}${input}' $var"); $rc[7]= "wbemci '${cimom::HOST}${input}' $var"; } - elsif ( $op =~ /delete/ ) { @enum = `wbemdi '${cimom::HOST}${input}' 2>&1`; +# elsif ( $op =~ /delete/ ) { @enum = `wbemdi '${cimom::HOST}${input}' 2>&1`; + elsif ( $op =~ /delete/ ) { @enum = wbem_cli("wbemdi", "'${cimom::HOST}${input}'"); $rc[7]= "wbemdi '${cimom::HOST}${input}'"; } # -------------------------- Association Interface ------------------------- # elsif ( $op =~ /associators/) { - @enum = `wbemai -ac $class '${cimom::PROTOCOL}${input}' 2>&1`; +# @enum = `wbemai -ac $class '${cimom::PROTOCOL}${input}' 2>&1`; + @enum = wbem_cli("wbemai", "-ac $class '${cimom::PROTOCOL}${input}'"); $rc[9]= "wbemai -ac $class '${cimom::PROTOCOL}${input}'"; } elsif ( $op =~ /associatorNames/ ) { - @enum = `wbemain -ac $class '${cimom::PROTOCOL}${input}' 2>&1`; +# @enum = `wbemain -ac $class '${cimom::PROTOCOL}${input}' 2>&1`; + @enum = wbem_cli("wbemain", "-ac $class '${cimom::PROTOCOL}${input}'"); $rc[9]= "wbemain -ac $class '${cimom::PROTOCOL}${input}' "; } elsif ( $op =~ /references/) { - @enum = `wbemri -arc $class '${cimom::PROTOCOL}${input}' 2>&1`; +# @enum = `wbemri -arc $class '${cimom::PROTOCOL}${input}' 2>&1`; + @enum = wbem_cli("wbemri", "-arc $class '${cimom::PROTOCOL}${input}'"); $rc[9]= "wbemri -arc $class '${cimom::PROTOCOL}${input}'"; } elsif ( $op =~ /referenceNames/ ) { - @enum = `wbemrin -arc $class '${cimom::PROTOCOL}${input}' 2>&1`; +# @enum = `wbemrin -arc $class '${cimom::PROTOCOL}${input}' 2>&1`; + @enum = wbem_cli("wbemrin", "-arc $class '${cimom::PROTOCOL}${input}'"); $rc[9]= "wbemrin -arc $class '${cimom::PROTOCOL}${input}'"; } # --------------------------------- else ---------------------------------- # Index: associator.pm =================================================================== RCS file: /cvsroot/sblim/testsuite/associator.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- associator.pm 21 Jun 2004 16:12:23 -0000 1.13 +++ associator.pm 14 Jun 2005 16:21:51 -0000 1.14 @@ -28,6 +28,15 @@ use cimom; +sub wbem_cli { + my ($cmd,$parm) = @_; + my @enum = (); + my $e = $ENV{'SBLIM_TESTSUITE_VERBOSE'}; + if (defined $e) { print "\n>>${cmd} ${parm}<<\n"; } + @enum = `${cmd} ${parm} 2>&1`; + return @enum +} + #******************************************************************************# # ReturnCode Description : @@ -92,7 +101,8 @@ my @assoc; $|=1; - my @enum = `2>&1 wbemein ${cimom::HOST}${ref}`; +# my @enum = `2>&1 wbemein ${cimom::HOST}${ref}`; + my @enum = wbem_cli("wbemein", "${cimom::HOST}${ref}"); $rc[3]="wbemein ${cimom::HOST}${ref}"; if ( defined $enum[0] && defined $enum[1] ) { if ( $enum[0]=~/\*/ && $enum[1]=~/${cimom::ERROR_PREFIX}/i) { @@ -114,10 +124,12 @@ $count=0; chomp($elem); - if ( $op =~ /associatorNames/) { @assoc = `2>&1 wbemain -ac $class '${cimom::PROTOCOL}${elem}'`; +# if ( $op =~ /associatorNames/) { @assoc = `2>&1 wbemain -ac $class '${cimom::PROTOCOL}${elem}'`; + if ( $op =~ /associatorNames/) { @assoc = wbem_cli("wbemain", "-ac $class '${cimom::PROTOCOL}${elem}'"); $rc[3]="wbemain -ac $class '${cimom::PROTOCOL}${elem}'"; } - elsif ( $op =~ /associators/ ) { @assoc = `2>&1 wbemai -ac $class '${cimom::PROTOCOL}${elem}'`; +# elsif ( $op =~ /associators/ ) { @assoc = `2>&1 wbemai -ac $class '${cimom::PROTOCOL}${elem}'`; + elsif ( $op =~ /associators/ ) { @assoc = wbem_cli("wbemai", "-ac $class '${cimom::PROTOCOL}${elem}'"); $rc[3]="wbemai -ac $class '${cimom::PROTOCOL}${elem}'"; } else { @@ -220,7 +232,8 @@ my @refer; $|=1; - my @enum = `2>&1 wbemein ${cimom::HOST}${ref}`; +# my @enum = `2>&1 wbemein ${cimom::HOST}${ref}`; + my @enum = wbem_cli("wbemein", "${cimom::HOST}${ref}"); $rc[3]="wbemein ${cimom::HOST}${ref}"; if ( defined $enum[0] && defined $enum[1] ) { if ( $enum[0]=~/\*/ && $enum[1]=~/${cimom::ERROR_PREFIX}/i) { @@ -242,10 +255,12 @@ $count=0; chomp($elem); - if ( $op =~ /referenceNames/) { @refer = `2>&1 wbemrin -arc $class '${cimom::PROTOCOL}${elem}'`; +# if ( $op =~ /referenceNames/) { @refer = `2>&1 wbemrin -arc $class '${cimom::PROTOCOL}${elem}'`; + if ( $op =~ /referenceNames/) { @refer = wbem_cli("wbemrin", "-arc $class '${cimom::PROTOCOL}${elem}'"); $rc[3] = "wbemrin -arc $class '${cimom::PROTOCOL}${elem}'"; } - elsif ( $op =~ /references/ ) { @refer = `2>&1 wbemri -arc $class '${cimom::PROTOCOL}${elem}'`; +# elsif ( $op =~ /references/ ) { @refer = `2>&1 wbemri -arc $class '${cimom::PROTOCOL}${elem}'`; + elsif ( $op =~ /references/ ) { @refer = wbem_cli("wbemri", "-arc $class '${cimom::PROTOCOL}${elem}'"); $rc[3] = "wbemri -arc $class '${cimom::PROTOCOL}${elem}'"; } else { @@ -375,7 +390,8 @@ # enumerate instances of the sourceClass and take # each object path entry as reference for the # referenceNames and associatorNames calls - my @enum = `2>&1 wbemein ${cimom::HOST}${sourceClass}`; +# my @enum = `2>&1 wbemein ${cimom::HOST}${sourceClass}`; + my @enum = wbem_cli("wbemein", "${cimom::HOST}${sourceClass}"); if ( defined $enum[0] && defined $enum[1] ) { if ( $enum[0]=~/\*/ && $enum[1]=~/${cimom::ERROR_PREFIX}/i) { @@ -451,7 +467,8 @@ #-------------------------------------------------------------------# - @refer = `2>&1 wbemrin -arc $class -ar $role '${cimom::PROTOCOL}${elem}'`; +# @refer = `2>&1 wbemrin -arc $class -ar $role '${cimom::PROTOCOL}${elem}'`; + @refer = wbem_cli("wbemrin", "-arc $class -ar $role '${cimom::PROTOCOL}${elem}'"); $rc[8] = "wbemrin -arc $class -ar $role '${cimom::PROTOCOL}${elem}'"; if ( defined $refer[0] && defined $refer[1] ) { @@ -486,7 +503,8 @@ #-------------------------------------------------------------------# - @refer = `2>&1 wbemrin -arc $class -ar $resultRole '${cimom::PROTOCOL}${elem}'`; +# @refer = `2>&1 wbemrin -arc $class -ar $resultRole '${cimom::PROTOCOL}${elem}'`; + @refer = wbem_cli("wbemrin", "-arc $class -ar $resultRole '${cimom::PROTOCOL}${elem}'"); $rc[9] = "wbemrin -arc $class -ar $resultRole '${cimom::PROTOCOL}${elem}'"; if(defined $refer[0]) { @@ -522,11 +540,13 @@ $TEST_TARGETCLASS = $targetClass[0]->[$i]; if ( $op == 1 ) { - @assoc = `2>&1 wbemain -ac $class -ar $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -ar $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -ar $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"); $rc[8] = "wbemain -ac $class -ar $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"; } if ( $op == 2 ) { - @assoc = `2>&1 wbemain -ac $class -arr $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -arr $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -arr $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"); $rc[8] = "wbemain -ac $class -arr $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"; } @@ -583,12 +603,14 @@ #---------------------------------------------------------------------# if ( $op == 1 ) { - @assoc = `2>&1 wbemain -ac $class -ar $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -ar $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -ar $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"); $rc[9] = "wbemain -ac $class -ar $resultRole -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"; } if ( $op == 2 ) { - @assoc = `2>&1 wbemain -ac $class -arr $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -arr $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -arr $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"); $rc[9] = "wbemain -ac $class -arr $role -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"; } @@ -634,7 +656,8 @@ $TEST_TARGETCLASS = $targetClass[0]->[$i]; - @assoc = `2>&1 wbemain -ac $class -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"); $rc[8] = "wbemain -ac $class -arc $targetClass[0]->[$i] '${cimom::PROTOCOL}${elem}'"; $count=0; @@ -683,7 +706,8 @@ #---------------------------------------------------------------------# - @assoc = `2>&1 wbemain -ac $class -arc $sourceClass '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemain -ac $class -arc $sourceClass '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemain", "-ac $class -arc $sourceClass '${cimom::PROTOCOL}${elem}'"); $rc[9] = "wbemain -ac $class -arc $sourceClass '${cimom::PROTOCOL}${elem}'"; if(defined $assoc[0]) { Index: consistence.pm =================================================================== RCS file: /cvsroot/sblim/testsuite/consistence.pm,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- consistence.pm 21 Jun 2004 16:12:23 -0000 1.29 +++ consistence.pm 14 Jun 2005 16:21:59 -0000 1.30 @@ -31,6 +31,15 @@ use cimom; +sub wbem_cli { + my ($cmd,$parm) = @_; + my @enum = (); + my $e = $ENV{'SBLIM_TESTSUITE_VERBOSE'}; + if (defined $e) { print "\n>>${cmd} ${parm}<<\n"; } + @enum = `${cmd} ${parm} 2>&1`; + return @enum +} + #******************************************************************************# # ReturnCode Description : @@ -541,7 +550,8 @@ my $warning = 0; $|=1; - my @enum = `2>&1 wbemein ${cimom::HOST}${sourceClass}`; +# my @enum = `2>&1 wbemein ${cimom::HOST}${sourceClass}`; + my @enum = wbem_cli("wbemein", "${cimom::HOST}${sourceClass}"); if ( defined $enum[0] && defined $enum[1] ) { if ( $enum[0]=~/\*/ && $enum[1]=~/$cimom::ERROR_PREFIX|exception/i) { $rc[0]=2; @@ -563,7 +573,8 @@ chomp($elem); $inst = $elem; - @assoc = `2>&1 wbemai -ac $CLASS -arc $targetClass '${cimom::PROTOCOL}${elem}'`; +# @assoc = `2>&1 wbemai -ac $CLASS -arc $targetClass '${cimom::PROTOCOL}${elem}'`; + @assoc = wbem_cli("wbemai", "-ac $CLASS -arc $targetClass '${cimom::PROTOCOL}${elem}'"); $checkRef_ain = "wbemai -ac $CLASS -arc $targetClass '${cimom::PROTOCOL}${elem}'"; if( defined $assoc[0] && defined $assoc[1]) { @@ -593,7 +604,8 @@ if ( $assoc =~ /^(.*?)\s/ ) { my $path = $1; - my @get = `2>&1 wbemgi '${cimom::PROTOCOL}${path}'`; +# my @get = `2>&1 wbemgi '${cimom::PROTOCOL}${path}'`; + my @get = wbem_cli("wbemgi", "'${cimom::PROTOCOL}${path}'"); $checkRef_gi = "wbemgi '${cimom::PROTOCOL}${path}'"; if ( defined $get[0]) { |
From: Viktor M. <mih...@us...> - 2005-06-14 15:08:39
|
Update of /cvsroot/sblim/mofc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17484 Modified Files: ChangeLog NEWS mofc.y mofs.l symtab.c symtab.h Log Message: Bug fixed: 1220394 - Coredump on char16 literals. Index: symtab.h =================================================================== RCS file: /cvsroot/sblim/mofc/symtab.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- symtab.h 3 Mar 2005 09:08:48 -0000 1.1.1.1 +++ symtab.h 14 Jun 2005 15:08:28 -0000 1.2 @@ -142,6 +142,7 @@ value_chain * make_value_list(const char * value); void value_list_add(value_chain * val_ch1, const char * val); char * make_string(const char * string); +char * make_char(const char * string); char * append_string(char * string1, const char * string2); prop_or_method_list * make_pom_list(qual_chain * qu_ch, type_type typeid, Index: mofc.y =================================================================== RCS file: /cvsroot/sblim/mofc/mofc.y,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- mofc.y 3 Mar 2005 09:08:48 -0000 1.1.1.1 +++ mofc.y 14 Jun 2005 15:08:28 -0000 1.2 @@ -70,6 +70,7 @@ %token <lval_literal> IntLiteral %token <lval_literal> FloatLiteral %token <lval_literal> StringLiteral +%token <lval_literal> CharLiteral %token <lval_literal> BoolLiteral %token <lval_literal> NullLiteral %token AS @@ -279,6 +280,7 @@ base_literal : IntLiteral | FloatLiteral + | CharLiteral {$$=make_char($1);} | string_literal_list | BoolLiteral | NullLiteral Index: mofs.l =================================================================== RCS file: /cvsroot/sblim/mofc/mofs.l,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- mofs.l 3 Mar 2005 09:08:48 -0000 1.1.1.1 +++ mofs.l 14 Jun 2005 15:08:28 -0000 1.2 @@ -151,7 +151,7 @@ #if ! defined SCANDEBUG yylval.lval_literal = strdup(yytext); #endif - return token(StringLiteral); + return token(CharLiteral); } {punctuation}|"["|"]" { Index: ChangeLog =================================================================== RCS file: /cvsroot/sblim/mofc/ChangeLog,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ChangeLog 14 Jun 2005 09:01:40 -0000 1.3 +++ ChangeLog 14 Jun 2005 15:08:28 -0000 1.4 @@ -1,3 +1,13 @@ +2005-06-14 <mih...@dy...> + + * mofc.y: + * mofc.l: + Bug 1220394: Syntax Support for char literals. + + * symtab.c: + * symtab.h: + Bug 1220394: Helper functions for char literal extraction added. + 2005-06-13 <schuur@localhost.localdomain> * backend_sfcb.c: Index: NEWS =================================================================== RCS file: /cvsroot/sblim/mofc/NEWS,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- NEWS 14 Jun 2005 09:01:40 -0000 1.3 +++ NEWS 14 Jun 2005 15:08:28 -0000 1.4 @@ -1,3 +1,9 @@ +Changes in 0.7.3 +================ + +Bugs fixed: +- 1220394: Coredump on char literals. + Changes in 0.7.2 ================ Index: symtab.c =================================================================== RCS file: /cvsroot/sblim/mofc/symtab.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- symtab.c 3 Mar 2005 09:08:48 -0000 1.1.1.1 +++ symtab.c 14 Jun 2005 15:08:28 -0000 1.2 @@ -324,6 +324,16 @@ return dups; } +char * make_char(const char * string) +{ + char * dups; + char *strstart = strchr(string,'\''); + char *strend = strrchr(string,'\''); + dups = calloc( strend - strstart, 1 ); + strncpy(dups,strstart + 1,strend-strstart - 1); + return dups; +} + char * append_string(char * string1, const char * string2) { char * newstring = malloc ( strlen( string1 ) + strlen( string2 ) + 1 ); |
From: Adrian S. <a3s...@us...> - 2005-06-14 11:42:16
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1215 Modified Files: httpAdapter.c msgqueue.c sfcBroker.c Log Message: sfcbd now removes ipcs semphores when terminating. Index: sfcBroker.c =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcBroker.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- sfcBroker.c 7 Jun 2005 12:52:17 -0000 1.14 +++ sfcBroker.c 14 Jun 2005 11:42:04 -0000 1.15 @@ -138,7 +138,8 @@ static pthread_mutex_t sdMtx=PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t sdCnd=PTHREAD_COND_INITIALIZER; static int stopping=0; - +extern int remSem(); + static void stopBroker(void *p) { struct timespec waitTime; @@ -173,6 +174,7 @@ } if (providersStopped) break; } + remSem(); if (restartBroker) { char *emsg=strerror(errno); Index: httpAdapter.c =================================================================== RCS file: /cvsroot/sblim/sfcb/httpAdapter.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- httpAdapter.c 13 Jun 2005 12:50:33 -0000 1.10 +++ httpAdapter.c 14 Jun 2005 11:42:04 -0000 1.11 @@ -111,9 +111,10 @@ if ((httpProcSem=semget(httpProcSemKey,1,0666))!=-1) semctl(httpProcSem,0,IPC_RMID,sun); - if ((httpProcSem=semget(httpProcSemKey,1+p,IPC_CREAT | 0666))==-1) { + if ((httpProcSem=semget(httpProcSemKey,1+p,IPC_CREAT | IPC_EXCL | 0666))==-1) { char *emsg=strerror(errno); - mlogf(M_ERROR,M_SHOW,"--- Http Proc semaphore create %d: %s\n",currentProc,emsg); + mlogf(M_ERROR,M_SHOW,"\n--- Http Proc semaphore create key: 0x%x failed: %s\n",httpProcSemKey,emsg); + mlogf(M_ERROR,M_SHOW," use \"ipcrm -S 0x%x\" to remove semaphore\n\n",httpProcSemKey); abort(); } sun.val=p; @@ -126,15 +127,23 @@ if ((httpWorkSem=semget(httpWorkSemKey,1,0666))!=-1) semctl(httpWorkSem,0,IPC_RMID,sun); - if ((httpWorkSem=semget(httpWorkSemKey,1,IPC_CREAT | 0666))==-1) { + if ((httpWorkSem=semget(httpWorkSemKey,1,IPC_CREAT | IPC_EXCL | 0666))==-1) { char *emsg=strerror(errno); - mlogf(M_ERROR,M_SHOW,"--- Http ProcWork semaphore create %d: %s\n",currentProc,emsg); + mlogf(M_ERROR,M_SHOW,"\n--- Http ProcWork semaphore create key: 0x%x failed: %s\n",httpWorkSemKey,emsg); + mlogf(M_ERROR,M_SHOW," use \"ipcrm -S 0x%x\" to remove semaphore\n\n",httpProcSemKey); abort(); } sun.val=1; semctl(httpWorkSem,0,SETVAL,sun); } +int remProcCtl() +{ + semctl(httpProcSem,0,IPC_RMID,0); + semctl(httpWorkSem,0,IPC_RMID,0); + return 0; +} + int baValidate(char *cred, char **principle) { char *auth,*pw; @@ -940,6 +949,8 @@ close(connFd); } + remProcCtl(); + // printf("--- %s draining %d\n",processName,running); for (;;) { if (running==0) { Index: msgqueue.c =================================================================== RCS file: /cvsroot/sblim/sfcb/msgqueue.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- msgqueue.c 28 Apr 2005 00:18:43 -0000 1.6 +++ msgqueue.c 14 Jun 2005 11:42:04 -0000 1.7 @@ -121,7 +121,8 @@ if ((sfcbSem=semget(sfcbSemKey,4+(provs*3)+3,IPC_CREAT | IPC_EXCL | 0666))==-1) { char *emsg=strerror(errno); - mlogf(M_ERROR,M_SHOW,"SFCB semaphore create %d: %s\n",currentProc,emsg); + mlogf(M_ERROR,M_SHOW,"\n--- SFCB semaphore create key: 0x%x failed: %s\n",sfcbSemKey,emsg); + mlogf(M_ERROR,M_SHOW," use \"ipcrm -S 0x%x\" to remove semaphore\n\n",sfcbSemKey); abort(); } @@ -144,6 +145,11 @@ return 0; } +int remSem() +{ + return semctl(sfcbSem,0,IPC_RMID,0); +} + MsgSegment setCharsMsgSegment(char *str) { MsgSegment s; |
From: Viktor M. <mih...@us...> - 2005-06-14 09:01:53
|
Update of /cvsroot/sblim/mofc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19560 Modified Files: ChangeLog NEWS configure.ac Log Message: Bug fixed: 1220035 Dynamic Array Handling. Index: NEWS =================================================================== RCS file: /cvsroot/sblim/mofc/NEWS,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- NEWS 7 Jun 2005 08:39:37 -0000 1.2 +++ NEWS 14 Jun 2005 09:01:40 -0000 1.3 @@ -1,3 +1,9 @@ +Changes in 0.7.2 +================ + +Bugs fixed: +- 1220035: Corrected dynamic CMPI array handling. + Changes in 0.7.1 ================ Index: configure.ac =================================================================== RCS file: /cvsroot/sblim/mofc/configure.ac,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- configure.ac 7 Jun 2005 08:39:37 -0000 1.4 +++ configure.ac 14 Jun 2005 09:01:40 -0000 1.5 @@ -1,6 +1,6 @@ # $Id$ -AC_INIT(MOF Compiler, 0.7.1, sbl...@li...,mofc) +AC_INIT(MOF Compiler, 0.7.2, sbl...@li...,mofc) AC_CONFIG_SRCDIR([hash.c]) AC_CONFIG_HEADER([config.h]) Index: ChangeLog =================================================================== RCS file: /cvsroot/sblim/mofc/ChangeLog,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ChangeLog 7 Jun 2005 08:39:37 -0000 1.2 +++ ChangeLog 14 Jun 2005 09:01:40 -0000 1.3 @@ -1,3 +1,8 @@ +2005-06-13 <schuur@localhost.localdomain> + + * backend_sfcb.c: + Bug 122035 fixed: incorrect handling of qualifier values. + 2005-06-07 <mihajlov@localhost.localdomain> * backend_sfcb.c (make_cmpi_data): |
Update of /cvsroot/sblim/cmpi-tests/cmpi-instancetest/test/TestCaseSet2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20113 Added Files: TST_InstanceProperties.10.giErr.OK TST_InstanceProperties.10.giErr.xml TST_InstanceProperties.11.ciErr.OK TST_InstanceProperties.11.ciErr.xml TST_InstanceProperties.12.classNameErr.OK TST_InstanceProperties.12.classNameErr.xml TST_InstanceProperties.13.nameSpaceErr.OK TST_InstanceProperties.13.nameSpaceErr.xml TST_InstanceProperties.14.ciDataTypeErr.OK TST_InstanceProperties.14.ciDataTypeErr.xml TST_InstanceProperties.15.ciNameSpaceErr.OK TST_InstanceProperties.15.ciNameSpaceErr.xml TST_InstanceProperties.16.ciClassNameErr.OK TST_InstanceProperties.16.ciClassNameErr.xml TST_InstanceProperties.17.diInstanceNumErr.OK TST_InstanceProperties.17.diInstanceNumErr.xml TST_InstanceProperties.18.diClassNameErr.OK TST_InstanceProperties.18.diClassNameErr.xml TST_InstanceProperties.19.diNameSpaceErr.OK TST_InstanceProperties.19.diNameSpaceErr.xml TST_InstanceProperties.1.gi1.OK TST_InstanceProperties.1.gi1.xml TST_InstanceProperties.20.ein.OK TST_InstanceProperties.20.ein.xml TST_InstanceProperties.21.ei.OK TST_InstanceProperties.21.ei.xml TST_InstanceProperties.2.gc.OK TST_InstanceProperties.2.gc.xml TST_InstanceProperties.3.ci.OK TST_InstanceProperties.3.ci.xml TST_InstanceProperties.4.ciMin.OK TST_InstanceProperties.4.ciMin.xml TST_InstanceProperties.5.ciMax.OK TST_InstanceProperties.5.ciMax.xml TST_InstanceProperties.6.ciNULL.OK TST_InstanceProperties.6.ciNULL.xml TST_InstanceProperties.7.minOUTerr.OK TST_InstanceProperties.7.minOUTerr.xml TST_InstanceProperties.8.maxOUTerr.OK TST_InstanceProperties.8.maxOUTerr.xml TST_InstanceProperties.9.di.OK TST_InstanceProperties.9.di.xml TST_InstanceProperties.ciGeneral.OK wbemcliTest.txt xmltest.sh Log Message: Added New Boundary testcases --- NEW FILE: TST_InstanceProperties.1.gi1.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="InstanceName"><INSTANCENAME CLASSNAME="TST_InstanceProperties"><KEYBINDING NAME="CreationClassName"><KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE></KEYBINDING><KEYBINDING NAME="Id"><KEYVALUE VALUETYPE="string">Instance #1</KEYVALUE></KEYBINDING></INSTANCENAME></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.18.diClassNameErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="DeleteInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="InstanceName"><INSTANCENAME CLASSNAME="TST_InstanceProperty"><KEYBINDING NAME="CreationClassName"><KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE></KEYBINDING><KEYBINDING NAME="Id"><KEYVALUE VALUETYPE="string">Instance #1</KEYVALUE></KEYBINDING></INSTANCENAME></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.21.ei.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="EnumerateInstances"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> <IPARAMVALUE NAME="DeepInheritance"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.19.diNameSpaceErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="DeleteInstance"> <ERROR CODE="5" DESCRIPTION="Invalid namespace"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.ciGeneral.OK --- --- NEW FILE: TST_InstanceProperties.19.diNameSpaceErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="DeleteInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv3"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="InstanceName"><INSTANCENAME CLASSNAME="TST_InstanceProperties"><KEYBINDING NAME="CreationClassName"><KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE></KEYBINDING><KEYBINDING NAME="Id"><KEYVALUE VALUETYPE="string">Instance #1</KEYVALUE></KEYBINDING></INSTANCENAME></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.11.ciErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #1</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #1</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>250</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.2.gc.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetClass"> <IRETURNVALUE> <CLASS NAME="TST_InstanceProperties" SUPERCLASS="CIM_ManagedElement"> <QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="ElementName" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>A user-friendly name for the object. This property allows each instance to define a user-friendly name IN ADDITION TO its key properties/identity data, and description information. \nNote that ManagedSystemElement's Name property is also defined as a user-friendly name. But, it is often subclassed to be a Key. It is not reasonable that the same property can convey both identity and a user friendly name, without inconsistencies. Where Name exists and is not a Key (such as for instances of LogicalDevice), the same information MAY be present in both the Name and ElementName properties.</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Description" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>The Description property provides a textual description of the object.</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Caption" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>The Caption property is a short textual description (one- line string) of the object.</VALUE> </QUALIFIER> <QUALIFIER NAME="MaxLen" TYPE="uint32"> <VALUE>64</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="CreationClassName" TYPE="string"> <QUALIFIER NAME="Key" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Name of the class that created this instance</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <QUALIFIER NAME="Key" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Unique identifier for each instance of this class</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <QUALIFIER NAME="Maxlen" TYPE="uint32"> <VALUE>256</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a string property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint8 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint16 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint8 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint16 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a boolean property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a real32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a real64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a dateTime property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a char16 property</VALUE> </QUALIFIER> </PROPERTY> </CLASS> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.6.ciNULL.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #13</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.10.giErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="InstanceName"><INSTANCENAME CLASSNAME="TST_InstanceProperties"><KEYBINDING NAME="CreationClassName"><KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE></KEYBINDING><KEYBINDING NAME="Id"><KEYVALUE VALUETYPE="string">Instance #20</KEYVALUE></KEYBINDING></INSTANCENAME></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.16.ciClassNameErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetClass"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperty"/></IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.15.ciNameSpaceErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetClass"> <ERROR CODE="3" DESCRIPTION="The target namespace does not exist"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.9.di.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="DeleteInstance"> <IRETURNVALUE> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.3.ci.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #10</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #10</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>123</VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE>12345</VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE>1234567</VALUE></PROPERTY><PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE>123456789012</VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE>-123</VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE>-12345</VALUE></PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE>-1234567</VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE>-123456789012</VALUE></PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"><VALUE>TRUE</VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE>12.3456</VALUE></PROPERTY><PROPERTY NAME="Property_real64" TYPE="real64"><VALUE>12345.6789</VALUE></PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"><VALUE>20050503104354.000000:000</VALUE></PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"><VALUE>a</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.4.ciMin.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #11</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #11</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>0</VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE>0</VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE>0</VALUE></PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE>5346031692677120</VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE>-128</VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE>-32768</VALUE></PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE>-2147483648</VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE>-923372036854775808</VALUE></PROPERTY><PROPERTY NAME="Property_boolean" TYPE="boolean"><VALUE>TRUE</VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE>1.17549e-308</VALUE></PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"><VALUE>2.22507e-308</VALUE></PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"><VALUE>20050601104354.000000:000</VALUE></PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"><VALUE>a</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.18.diClassNameErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="DeleteInstance"> <ERROR CODE="5" DESCRIPTION="Class not found"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.13.nameSpaceErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="EnumerateInstanceNames"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv3"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.20.ein.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="EnumerateInstanceNames"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.14.ciDataTypeErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetClass"> <IRETURNVALUE> <CLASS NAME="TST_InstanceProperties" SUPERCLASS="CIM_ManagedElement"> <QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="ElementName" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>A user-friendly name for the object. This property allows each instance to define a user-friendly name IN ADDITION TO its key properties/identity data, and description information. \nNote that ManagedSystemElement's Name property is also defined as a user-friendly name. But, it is often subclassed to be a Key. It is not reasonable that the same property can convey both identity and a user friendly name, without inconsistencies. Where Name exists and is not a Key (such as for instances of LogicalDevice), the same information MAY be present in both the Name and ElementName properties.</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Description" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>The Description property provides a textual description of the object.</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Caption" TYPE="string"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>The Caption property is a short textual description (one- line string) of the object.</VALUE> </QUALIFIER> <QUALIFIER NAME="MaxLen" TYPE="uint32"> <VALUE>64</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="CreationClassName" TYPE="string"> <QUALIFIER NAME="Key" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Name of the class that created this instance</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <QUALIFIER NAME="Key" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>Unique identifier for each instance of this class</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <QUALIFIER NAME="Maxlen" TYPE="uint32"> <VALUE>256</VALUE> </QUALIFIER> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a string property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint8 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint16 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a uint64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint8 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint16 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a sint64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a boolean property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a real32 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a real64 property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a dateTime property</VALUE> </QUALIFIER> </PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"> <QUALIFIER NAME="Description" TYPE="string"> <VALUE>a char16 property</VALUE> </QUALIFIER> </PROPERTY> </CLASS> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.5.ciMax.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #12</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #12</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>255</VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE>65535</VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE>4294967295</VALUE></PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE>18446744073709551615</VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE>127</VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE>32767</VALUE></PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE>2147483647</VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE>9223372036854775807</VALUE></PROPERTY><PROPERTY NAME="Property_boolean" TYPE="boolean"><VALUE>FALSE</VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE>3.4028232635611925616003376e+38</VALUE></PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"><VALUE>1.79769e+308</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.21.ei.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="EnumerateInstances"> <IRETURNVALUE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #10</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #10</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #10</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>123</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>12345</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>1234567</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>123456789012</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>-123</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>-12345</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>-1234567</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>-123456789012</VALUE> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <VALUE>TRUE</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>1.2345600e+01</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>1.2345678900000001e+04</VALUE> </PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"> <VALUE>20050503104354.000000:000</VALUE> </PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"> <VALUE>a</VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #11</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #11</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #11</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>0</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>0</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>0</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>5346031692677120</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>-128</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>-32768</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>-2147483648</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>-923372036854775808</VALUE> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <VALUE>TRUE</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>0.0000000e+00</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>2.2250699999999998e-308</VALUE> </PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"> <VALUE>20050601104354.000000:000</VALUE> </PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"> <VALUE>a</VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #12</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #12</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #12</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>255</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>65535</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>4294967295</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>18446744073709551615</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>127</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>32767</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>2147483647</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>9223372036854775807</VALUE> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <VALUE>FALSE</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>3.4028233e+38</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>1.7976900000000001e+308</VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #13</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #13</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #13</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>232</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>22504</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>139876328</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>36421254090479592</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>-24</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>22504</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>139876328</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>36421254090479592</VALUE> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <VALUE>TRUE</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>6.4501258e-34</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>3.0962859712134322e-306</VALUE> </PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"> <VALUE></VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #14</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #14</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #14</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>255</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>65535</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>4294967295</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>95346031692677120</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>88</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>-15264</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>-2147483648</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>-9223372036854775808</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>0.0000000e+00</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>9.2250700000000002e-308</VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> <VALUE.NAMEDINSTANCE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #15</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #15</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #15</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>39</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>48031</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>4294967295</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>18446744073709551615</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>-89</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>15263</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>2147483647</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>9223372036854775807</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>inf</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>inf</VALUE> </PROPERTY> </INSTANCE> </VALUE.NAMEDINSTANCE> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.2.gc.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetClass"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: xmltest.sh --- #!/bin/sh _RC=0 # Check for wbemcat utility if ! which wbemcat > /dev/null; then echo "Cannot find wbemcat. Please check your PATH" exit 1 fi # Look for all *.xml test files and run them in sorted order (hence tests should be numbered) find -name "*.xml" | sort | while read _TESTXML; do _TEST=${_TESTXML%.xml} _TESTDIR=$( dirname $_TEST) _TESTOK=$_TEST.OK _TESTRESULT=$_TEST.result echo -n "Running test $_TESTXML ... " # Make sure we will be able to write the result file if [[ ! -w $_TESTDIR ]]; then echo "FAILED"; echo -e "\tCannot write to $_TESTDIR" continue fi # Remove any old test result file rm -f $_TESTRESULT # Send the test CIM-XML to the CIMOM and save the response, stripping off the http header wbemcat $_TESTXML | awk "{i++; if (i>7) print}" > $_TESTRESULT if [[ $? -ne 0 ]]; then echo "FAILED"; echo -e "\twbemcat failed to send CIM-XML request" _RC=1 continue fi # If we dont yet have the expected result file, then save this response as the expected result if [[ ! -f $_TESTOK ]]; then echo "OK"; echo -e "\tSaving response as $_TESTOK" mv $_TESTRESULT $_TESTOK # Compare the response XML against the expected XML for differences elif ! diff --brief $_TESTOK $_TESTRESULT > /dev/null; then echo "FAILED"; echo -e "\tCheck $_TESTRESULT for errors" _RC=1; continue # Got the expected response XML else echo "Passed" rm -f $_TESTRESULT fi done echo "Finished" exit $_RC --- NEW FILE: TST_InstanceProperties.6.ciNULL.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #13</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #13</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"><VALUE></VALUE></PROPERTY> <PROPERTY NAME="Property_char16" TYPE="char16"><VALUE></VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.7.minOUTerr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #14</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #14</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>-1</VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE>-1</VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE>-1</VALUE></PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE>95346031692677120</VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE>-9128</VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE>-932768</VALUE></PROPERTY><PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE>-92147483648</VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE>-9923372036854775808</VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE>9.17549e-308</VALUE></PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"><VALUE>9.22507e-308</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.14.ciDataTypeErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetClass"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.5.ciMax.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #12</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.11.ciErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <ERROR CODE="11" DESCRIPTION="Instance already exists"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.8.maxOUTerr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="CreateInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="NewInstance"><INSTANCE CLASSNAME="TST_InstanceProperties"><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Abstract" TYPE="boolean"> <VALUE>TRUE</VALUE> </QUALIFIER><QUALIFIER NAME="Version" TYPE="string"> <VALUE>2.2.0</VALUE> </QUALIFIER><QUALIFIER NAME="Description" TYPE="string"> <VALUE>Test class containing all the simple property types</VALUE> </QUALIFIER> <PROPERTY NAME="CreationClassName" TYPE="string"><VALUE>TST_InstanceProperties</VALUE></PROPERTY> <PROPERTY NAME="Id" TYPE="string"><VALUE>Instance #15</VALUE></PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"><VALUE>This is instance #15</VALUE></PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"><VALUE>9255</VALUE></PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"><VALUE>965535</VALUE></PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"><VALUE>94294967295</VALUE></PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"><VALUE>918446744073709551615</VALUE></PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"><VALUE>9127</VALUE></PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"><VALUE>932767</VALUE></PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"><VALUE>92147483647</VALUE></PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"><VALUE>99223372036854775807</VALUE></PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"><VALUE>93.4028232635611925616003376e+38</VALUE></PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"><VALUE>91.79769e+308</VALUE></PROPERTY></INSTANCE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.12.classNameErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="EnumerateInstanceNames"> <ERROR CODE="5" DESCRIPTION="Class not found"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.20.ein.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="EnumerateInstanceNames"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #10</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #11</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #12</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #13</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #14</KEYVALUE> </KEYBINDING> </INSTANCENAME> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #15</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.4.ciMin.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #11</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.17.diInstanceNumErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="DeleteInstance"> <ERROR CODE="6" DESCRIPTION="Requested instance not found"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.17.diInstanceNumErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="DeleteInstance"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="InstanceName"><INSTANCENAME CLASSNAME="TST_InstanceProperties"><KEYBINDING NAME="CreationClassName"><KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE></KEYBINDING><KEYBINDING NAME="Id"><KEYVALUE VALUETYPE="string">Instance #100</KEYVALUE></KEYBINDING></INSTANCENAME></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.8.maxOUTerr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #15</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.3.ci.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="CreateInstance"> <IRETURNVALUE> <INSTANCENAME CLASSNAME="TST_InstanceProperties"> <KEYBINDING NAME="CreationClassName"> <KEYVALUE VALUETYPE="string">TST_InstanceProperties</KEYVALUE> </KEYBINDING> <KEYBINDING NAME="Id"> <KEYVALUE VALUETYPE="string">Instance #10</KEYVALUE> </KEYBINDING> </INSTANCENAME> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.12.classNameErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="EnumerateInstanceNames"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"></NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE></LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TS_InstanceProperties"/></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.16.ciClassNameErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetClass"> <ERROR CODE="6" DESCRIPTION="The requested object could not be found"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: TST_InstanceProperties.10.giErr.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetInstance"> <ERROR CODE="6" DESCRIPTION="Requested instance not found"/> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM> --- NEW FILE: wbemcliTest.txt --- 1. get instance #1 wbemcli -dx gi 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #1"' 2. get class wbemcli -dx gc 'http://localhost:5988/root/cimv2:TST_InstanceProperties' 3. creat an instance wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #10"' 'CreationClassName="TST_InstanceProperties",Id="Instance #10",Property_string="This is instance #10",Property_uint8=123,Property_uint16=12345,Property_uint32=1234567,Property_uint64=123456789012,Property_sint8=-123,Property_sint16=-12345,Property_sint32=-1234567,Property_sint64=-123456789012,Property_boolean=TRUE,Property_real32=12.3456,Property_real64=12345.6789,Property_dateTime=20050503104354.000000:000,Property_char16='a'' 4. create Instance with Min Values wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #11"' 'CreationClassName="TST_InstanceProperties",Id="Instance #11",Property_string="This is instance #11",Property_uint8=0,Property_uint16=0,Property_uint32=0,Property_uint64=5346031692677120,Property_sint8=-128,Property_sint16=-32768,Property_sint32=-2147483648,Property_sint64=-923372036854775808,Property_boolean=TRUE,Property_real32=1.17549e-308,Property_real64=2.22507e-308,Property_dateTime=20050601104354.000000:000,Property_char16='a'' 5.Create Instance with Max value wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #12"' 'CreationClassName="TST_InstanceProperties",Id="Instance #12",Property_string="This is instance #12",Property_uint8=255,Property_uint16=65535,Property_uint32=4294967295,Property_uint64=18446744073709551615,Property_sint8=127,Property_sint16=32767,Property_sint32=2147483647,Property_sint64=9223372036854775807,Property_boolean=FALSE,Property_real32=3.4028232635611925616003376e+38,Property_real64=1.79769e+308' 6. Create Instance with Null Values wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #13"' 'CreationClassName="TST_InstanceProperties",Id="Instance #13",Property_string="This is instance #13",Property_uint8=,Property_uint16=,Property_uint32=,Property_uint64=,Property_sint8=,Property_sint16=,Property_sint32=,Property_sint64=,Property_boolean=,Property_real32=,Property_real64=,Property_char16=''' #The following testcases will attempt error injection variations 7. Create instance with Out of Min Range (ERR) wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #14"' 'CreationClassName="TST_InstanceProperties",Id="Instance #14",Property_string="This is instance #14",Property_uint8=-1,Property_uint16=-1,Property_uint32=-1,Property_uint64=95346031692677120,Property_sint8=-9128,Property_sint16=-932768,Property_sint32=-92147483648,Property_sint64=-9923372036854775808,Property_real32=9.17549e-308,Property_real64=9.22507e-308' 8. Create Instance with Out of Max Range (ERR) wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #15"' 'CreationClassName="TST_InstanceProperties",Id="Instance #15",Property_string="This is instance #15",Property_uint8=9255,Property_uint16=965535,Property_uint32=94294967295,Property_uint64=918446744073709551615,Property_sint8=9127,Property_sint16=932767,Property_sint32=92147483647,Property_sint64=99223372036854775807,Property_real32=93.4028232635611925616003376e+38,Property_real64=91.79769e+308' 9. delete instance wbemcli -dx di 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #1"' 10. get instance (non-existing instance Err) wbemcli -dx gi 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #20"' 11. instance already existed (instance id #1) wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #1"' 'CreationClassName="TST_InstanceProperties",Id="Instance #1",Property_string="This is instance #1",Property_uint8=250' 12.Enumerate instancename with the wrong class name wbemcli -dx ein 'http://localhost:5988/root/cimv2:TS_InstanceProperties' 13.Enumerate instancename with the wrong name space wbemcli -dx ein 'http://localhost:5988/root/cimv3:TST_InstanceProperties' 14. create instance with wrong data type wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #16"' 'CreationClassName="TST_InstanceProperties",Id="Instance #16",Property_string="This is instance #16",Property_uint8=123,Property_charnumber='a'' 15. create instance with wrong name space wbemcli -dx ci 'http://localhost:5988/root/cimv3:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #17"' 'CreationClassName="TST_InstanceProperties",Id="Instance #17",Property_string="This is instance #16",Property_uint8=123,Property_charnumber='a'' 16. create instance with wrong classname wbemcli -dx ci 'http://localhost:5988/root/cimv2:TST_InstanceProperty.CreationClassName="TST_InstanceProperties",Id="Instance #18"' 'CreationClassName="TST_InstanceProperties",Id="Instance #18",Property_string="This is instance #18",Property_uint8=123,Property_char16='a'' 17. delete instance with wrong instance name wbemcli -dx di 'http://localhost:5988/root/cimv2:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #100"' 18. delete instance with wrong class name wbemcli -dx di 'http://localhost:5988/root/cimv2:TST_InstanceProperty.CreationClassName="TST_InstanceProperties",Id="Instance #1"' 19. delete instance with wrong name space wbemcli -dx di 'http://localhost:5988/root/cimv3:TST_InstanceProperties.CreationClassName="TST_InstanceProperties",Id="Instance #1"' 20. wbemcli -dx ein 'http://localhost:5988/root/cimv2:TST_InstanceProperties' 21. wbemcli -dx ei 'http://localhost:5988/root/cimv2:TST_InstanceProperties' --- NEW FILE: TST_InstanceProperties.15.ciNameSpaceErr.xml --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL NAME="GetClass"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv3"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"><CLASSNAME NAME="TST_InstanceProperties"/></IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>TRUE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE></IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> --- NEW FILE: TST_InstanceProperties.1.gi1.OK --- <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="1.1"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="GetInstance"> <IRETURNVALUE> <INSTANCE CLASSNAME="TST_InstanceProperties"> <PROPERTY NAME="CreationClassName" TYPE="string"> <VALUE>TST_InstanceProperties</VALUE> </PROPERTY> <PROPERTY NAME="Id" TYPE="string"> <VALUE>Instance #1</VALUE> </PROPERTY> <PROPERTY NAME="Property_string" TYPE="string"> <VALUE>This is instance #1</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint8" TYPE="uint8"> <VALUE>255</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint16" TYPE="uint16"> <VALUE>65535</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint32" TYPE="uint32"> <VALUE>4294836225</VALUE> </PROPERTY> <PROPERTY NAME="Property_uint64" TYPE="uint64"> <VALUE>18445618199572250625</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint8" TYPE="sint8"> <VALUE>-127</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint16" TYPE="sint16"> <VALUE>-32767</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint32" TYPE="sint32"> <VALUE>-1073676289</VALUE> </PROPERTY> <PROPERTY NAME="Property_sint64" TYPE="sint64"> <VALUE>-1152780773560811521</VALUE> </PROPERTY> <PROPERTY NAME="Property_boolean" TYPE="boolean"> <VALUE>TRUE</VALUE> </PROPERTY> <PROPERTY NAME="Property_real32" TYPE="real32"> <VALUE>1.2345600e+37</VALUE> </PROPERTY> <PROPERTY NAME="Property_real64" TYPE="real64"> <VALUE>1.2345678901234499e+37</VALUE> </PROPERTY> <PROPERTY NAME="Property_dateTime" TYPE="datetime"> <VALUE>20050503104354.000000:000</VALUE> </PROPERTY> <PROPERTY NAME="P... [truncated message content] |
From: yeechan <ibm...@us...> - 2005-06-14 03:02:55
|
Update of /cvsroot/sblim/cmpi-tests/cmpi-instancetest/test/TestCaseSet2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16870/TestCaseSet2 Log Message: Directory /cvsroot/sblim/cmpi-tests/cmpi-instancetest/test/TestCaseSet2 added to the repository |
From: Adrian S. <a3s...@us...> - 2005-06-13 23:50:59
|
Update of /cvsroot/sblim/sfcc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19010 Modified Files: Makefile cimXmlParser.c cimXmlParser.h cimXmlResp.c cimXmlResp.h cimXmlResp.y client.c cmci.h cmcimacs.h native.h property.c test.c Added Files: constClass.c qualifier.c Log Message: Various fixes for getClass and getInstance processing Index: cimXmlResp.c =================================================================== RCS file: /cvsroot/sblim/sfcc/cimXmlResp.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- cimXmlResp.c 6 Jun 2005 15:28:27 -0000 1.2 +++ cimXmlResp.c 13 Jun 2005 23:50:46 -0000 1.3 @@ -257,6 +257,10 @@ extern int yyerror(char*); extern int yylex (void *lvalp, ParserControl *parm); +extern CMPIConstClass * native_new_CMPIConstClass ( char *cn, CMPIStatus * rc ); +extern int addClassProperty( CMPIConstClass * ccls, char * name, CMPIValue * value, CMPIType type, + CMPIValueState state); + int isBoolean(CMPIData data) { @@ -267,22 +271,6 @@ [...1039 lines suppressed...] { yyval.xtokKeyBinding.name=yyvsp[-2].xtokKeyBinding.name; yyval.xtokKeyBinding.value=NULL; @@ -1836,7 +2013,7 @@ } /* Line 999 of yacc.c. */ -#line 1839 "cimXmlResp.c" +#line 2016 "cimXmlResp.c" yyvsp -= yylen; yyssp -= yylen; @@ -2030,6 +2207,6 @@ } -#line 786 "cimXmlResp.y" +#line 961 "cimXmlResp.y" Index: cmci.h =================================================================== RCS file: /cvsroot/sblim/sfcc/cmci.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- cmci.h 6 Jun 2005 13:19:49 -0000 1.5 +++ cmci.h 13 Jun 2005 23:50:46 -0000 1.6 @@ -353,6 +353,88 @@ } CMCIClientFT; + + //--------------------------------------------------- + //-- + // _CMPIConstClass Function Table + //-- + //--------------------------------------------------- + + + /** This structure is a table of pointers providing access to Instance + support sevices. + */ +typedef struct _CMPIConstClassFT { + + /** Function table version + */ + int ftVersion; + + /** The ConstClass object will not be used any further and may be freed by + CMPI run time system. + @param ccls ConstClass this pointer. + @return Service return status. + */ + CMPIStatus (*release) + (CMPIConstClass* ccls); + + /** Create an independent copy of this CpnstClass object. The resulting + object must be released explicitly. + @param ccls ConstClass this pointer. + @param rc Output: Service return status (suppressed when NULL). + @return Pointer to copied ConstClass object. + */ + CMPIConstClass* (*clone) + (CMPIConstClass* ccls, CMPIStatus* rc); + + /** Gets the classname. + @param ccls ConstClass this pointer. + @param rc Output: Service return status (suppressed when NULL). + @return classname. + */ + CMPIString *(*getClassName) + ( CMPIConstClass * ccls, CMPIStatus * rc ); + + /** Gets a named property value. + @param ccls ConstClass this pointer. + @param name Property name. + @param rc Output: Service return status (suppressed when NULL). + @return Property value. + */ + CMPIData (*getProperty) + (CMPIConstClass* ccls, const char *name, CMPIStatus* rc); + + /** Gets a Property value defined by its index. + @param ccls ConstClass this pointer. + @param index Position in the internal Data array. + @param name Output: Returned property name (suppressed when NULL). + @param rc Output: Service return status (suppressed when NULL). + @return Property value. + */ + CMPIData (*getPropertyAt) + (CMPIConstClass* ccls, unsigned int index, CMPIString** name, + CMPIStatus* rc); + + /** Gets the number of properties contained in this Instance. + @param ccls ConstClass this pointer. + @param rc Output: Service return status (suppressed when NULL). + @return Number of properties. + */ + unsigned int (*getPropertyCount) + (CMPIConstClass* ccls, CMPIStatus* rc); + +} CMPIConstClassFT; + + +struct _CMPIConstClass { + void *hdl; + CMPIConstClassFT *ft; +}; + + + + + typedef struct clientData { char *hostName; char *port; Index: property.c =================================================================== RCS file: /cvsroot/sblim/sfcc/property.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- property.c 4 May 2005 18:20:08 -0000 1.1 +++ property.c 13 Jun 2005 23:50:46 -0000 1.2 @@ -36,11 +36,12 @@ for various native data types. */ struct native_property { - char * name; //!< Property identifier. - CMPIType type; //!< Associated CMPIType. - CMPIValueState state; //!< Current value state. - CMPIValue value; //!< Current value. - struct native_property * next; //!< Pointer to next property. + char * name; //!< Property identifier. + CMPIType type; //!< Associated CMPIType. + CMPIValueState state; //!< Current value state. + CMPIValue value; //!< Current value. + struct native_qualifier *qualifiers; //!< Qualifiers. + struct native_property * next; //!< Pointer to next property. }; @@ -87,35 +88,36 @@ tool_mm_alloc ( mm_add, sizeof ( struct native_property ) ); + tmp->qualifiers = NULL; tmp->name = strdup ( name ); if ( mm_add == TOOL_MM_ADD ) tool_mm_add ( tmp->name ); if ( type == CMPI_chars ) { - type = CMPI_string; - v.string = native_new_CMPIString ( (char *) value, - NULL ); + v.string = native_new_CMPIString ( (char *) value, NULL ); value = &v; } tmp->type = type; - if ( type != CMPI_null ) { + if ( type != CMPI_null && state != CMPI_nullValue) { tmp->state = state; if ( mm_add == TOOL_MM_ADD ) { tmp->value = *value; - } else { - + } + else { CMPIStatus rc; - tmp->value = native_clone_CMPIValue ( type, - value, - &rc ); + tmp->value = native_clone_CMPIValue ( type, value, &rc ); // what if clone() fails??? } - } else tmp->state = CMPI_nullValue; + } + else { + tmp->state = CMPI_nullValue; + tmp->value.uint64=0; + } return 0; } @@ -201,6 +203,20 @@ return __convert2CMPIData ( p, NULL ); } +static struct native_qualifier *__getDataPropertyQualifiers ( struct native_property * prop, + const char * name, + CMPIStatus * rc ) +{ + struct native_property * p = __getProperty ( prop, name ); + + if ( rc ) CMSetStatus ( rc, + ( p )? + CMPI_RC_OK: + CMPI_RC_ERR_NO_SUCH_PROPERTY ); + + return p ? p->qualifiers : NULL; +} + static struct native_property * __getPropertyAt ( struct native_property * prop, unsigned int pos ) @@ -299,6 +315,7 @@ __getDataProperty, __getDataPropertyAt, __getPropertyCount, + __getDataPropertyQualifiers, __release, __clone }; Index: test.c =================================================================== RCS file: /cvsroot/sblim/sfcc/test.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- test.c 6 Jun 2005 15:28:28 -0000 1.3 +++ test.c 13 Jun 2005 23:50:46 -0000 1.4 @@ -8,6 +8,8 @@ CMPIInstance *ci; CMPIEnumeration *enm; CMPIStatus rc; + CMPIConstClass *cls; + CMPIData data; cc=cmciConnect("localhost",NULL,NULL,NULL,NULL); cop=newCMPIObjectPath("root/cimv2",NULL,NULL); @@ -20,17 +22,28 @@ printf(" -- className: %s\n",(char*)cn->hdl); CMRelease(cn); } + CMRelease(enm); + CMRelease(cop); cop=newCMPIObjectPath("root/cimv2","Linux_ComputerSystem",NULL); + cls=cc->ft->getClass(cc,cop,0,NULL,&rc); + printf("--- getClass rc: %d - %s\n",rc.rc, rc.msg ? (char*)rc.msg->hdl : NULL); + data=cls->ft->getProperty(cls,"InstallDate",&rc); + printf("--- getProperty rc: %d - %s %x\n",rc.rc, rc.msg ? (char*)rc.msg->hdl : NULL,data.state); + data=cls->ft->getProperty(cls,"EnabledDefault",&rc); + printf("--- getProperty rc: %d - %s %x %d\n",rc.rc, rc.msg ? (char*)rc.msg->hdl : NULL,data.state,data.value.uint16); + CMAddKey(cop,"CreationClassName","Linux_ComputerSystem",CMPI_chars); enm=cc->ft->enumInstanceNames(cc,cop,&rc); printf("--- enumInstanceNames rc: %d - %s\n",rc.rc, rc.msg ? (char*)rc.msg->hdl : NULL); - CMAddKey(cop,"Name","localhost.localdomain",CMPI_chars); + if (argc==1) CMAddKey(cop,"Name","localhost.localdomain",CMPI_chars); + else CMAddKey(cop,"Name","dyn-9-152-143-58.boeblingen.de.ibm.com",CMPI_chars); ci=cc->ft->getInstance(cc,cop,0,NULL,&rc); printf("--- getInstance rc: %d - %s\n",rc.rc, rc.msg ? (char*)rc.msg->hdl : NULL); + if (rc.rc) printf("You may need to modify the hostname in line 41 or 42\n"); return 0; Index: cimXmlResp.h =================================================================== RCS file: /cvsroot/sblim/sfcc/cimXmlResp.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- cimXmlResp.h 6 Jun 2005 15:28:28 -0000 1.2 +++ cimXmlResp.h 13 Jun 2005 23:50:46 -0000 1.3 @@ -182,7 +182,7 @@ #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) -#line 121 "cimXmlResp.y" +#line 221 "cimXmlResp.y" typedef union YYSTYPE { int intValue; char boolValue; Index: native.h =================================================================== RCS file: /cvsroot/sblim/sfcc/native.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- native.h 4 May 2005 18:20:08 -0000 1.1 +++ native.h 13 Jun 2005 23:50:46 -0000 1.2 @@ -33,6 +33,20 @@ #include "cimXmlParser.h" +//! Forward declaration for anonymous struct. +struct native_property; +struct native_qualifier; + +struct native_constClass { + CMPIConstClass ccls; + int mem_state; + + char * classname; + + struct native_property * props; + struct native_qualifier *qualifiers; +}; + struct native_instance { CMPIInstance instance; int mem_state; @@ -47,9 +61,6 @@ struct native_property * props; }; -//! Forward declaration for anonymous struct. -struct native_property; - //! Function table for native_property handling functions. /*! @@ -90,6 +101,11 @@ CMPICount (* getPropertyCount) ( struct native_property *, CMPIStatus * ); + //! Looks up a specifix native_property and return qualifier chain. + struct native_qualifier *(*__getDataPropertyQualifiers ) ( struct native_property *, + const char *, + CMPIStatus * ); + //! Releases a complete list of native_property items. void (* release) ( struct native_property * ); @@ -99,6 +115,46 @@ }; +struct native_qualifierFT { + + //! Adds a new native_qualifier to a list. + int (* addQualifier) ( struct native_qualifier **, + int, + const char *, + CMPIType, + CMPIValueState, + CMPIValue * ); + + //! Resets the values of an existing native_qualifier, if existant. + int (* setQualifier) ( struct native_qualifier *, + int, + const char *, + CMPIType, + CMPIValue * ); + + //! Looks up a specifix native_qualifier in CMPIData format. + CMPIData (* getDataQualifier) ( struct native_qualifier *, + const char *, + CMPIStatus * ); + + //! Extract an indexed native_qualifier in CMPIData format. + CMPIData (* getDataQualifierAt) ( struct native_qualifier *, + unsigned int, + CMPIString **, + CMPIStatus * ); + + //! Yields the number of native_qualifier items in a list. + CMPICount (* getQualifierCount) ( struct native_qualifier *, + CMPIStatus * ); + + //! Releases a complete list of native_qualifier items. + void (* release) ( struct native_qualifier * ); + + //! Clones a complete list of native_qualifier items. + struct native_qualifier * (* clone) ( struct native_qualifier *, + CMPIStatus * ); +}; + /****************************************************************************/ Index: cmcimacs.h =================================================================== RCS file: /cvsroot/sblim/sfcc/cmcimacs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- cmcimacs.h 5 Jun 2005 21:06:56 -0000 1.2 +++ cmcimacs.h 13 Jun 2005 23:50:46 -0000 1.3 @@ -166,7 +166,10 @@ #define CMClone(o,rc) ((o)->ft->clone((o),(rc))) #define CMRelease(o) ((o)->ft->release((o))) #define CMGetCharPtr(s) ((char*)s->hdl) - + #define CMReleaseData(d) \ + if (((d)->type >= CMPI_instance && (d)->type <= CMPI_dateTime) || \ + ((d)->type >= CMPI_instanceA && (d)->type <= CMPI_dateTimeA)) \ + CMRelease((d)->value); // CMPIInstance macros Index: Makefile =================================================================== RCS file: /cvsroot/sblim/sfcc/Makefile,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile 4 May 2005 18:20:08 -0000 1.1 +++ Makefile 13 Jun 2005 23:50:46 -0000 1.2 @@ -17,8 +17,10 @@ datetime.c \ enumeration.c \ instance.c \ + constClass.c \ objectpath.c \ property.c \ + qualifier.c \ string.c \ value.c \ client.c \ @@ -58,7 +60,7 @@ libCmpiSfcc.so: $(SOURCES.CmpiSfcc:.c=.o) $(LINK_LIB) -test: LOADLIBES += -lCmpiSfcc -L. +test: LOADLIBES += -lCmpiSfcc -L. -lsfcBrokerCore test: $(SOURCES.test:.c=.o) $(LINK_BIN) --- NEW FILE: qualifier.c --- /*! \file qualifier.c \brief Native qualifier implementation. This module implements a native qualifier, which is not public to any provider programmer. It is used to implement various other data types natively, such as instances, object-paths and args. It provides means to maintain linked lists of named properties including functionality to add, remove, clone and release them. (C) Copyright IBM Corp. 2003 THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. You can obtain a current copy of the Common Public License from http://oss.software.ibm.com/developerworks/opensource/license-cpl.html \author Frank Scheffler $Revision: 1.1 $ */ #include <stdio.h> #include <string.h> #include "cmcidt.h" #include "cmcift.h" #include "cmcimacs.h" #include "tool.h" #include "native.h" //! Storage container for commonly needed data within native CMPI data types. /*! This structure is used to build linked lists of data containers as needed for various native data types. */ struct native_qualifier { char * name; //!< Qualifier identifier. CMPIType type; //!< Associated CMPIType. CMPIValueState state; //!< Current value state. CMPIValue value; //!< Current value. struct native_qualifier * next; //!< Pointer to next qualifier. }; /****************************************************************************/ static CMPIData __convert2CMPIData ( struct native_qualifier * qual, CMPIString ** qualname ) { CMPIData result; if ( qual != NULL ) { result.type = qual->type; result.state = qual->state; result.value = qual->value; if ( qualname ) { *qualname = native_new_CMPIString ( qual->name, NULL ); } } else { result.state = CMPI_nullValue; } return result; } /** * returns non-zero if already existant */ static int __addQualifier ( struct native_qualifier ** qual, int mm_add, const char * name, CMPIType type, CMPIValueState state, CMPIValue * value ) { CMPIValue v; if ( *qual == NULL ) { struct native_qualifier * tmp = *qual = (struct native_qualifier *) tool_mm_alloc ( mm_add, sizeof ( struct native_qualifier ) ); tmp->name = strdup ( name ); if ( mm_add == TOOL_MM_ADD ) tool_mm_add ( tmp->name ); if ( type == CMPI_chars ) { type = CMPI_string; v.string = native_new_CMPIString ( (char *) value, NULL ); value = &v; } tmp->type = type; if ( type != CMPI_null ) { tmp->state = state; if ( mm_add == TOOL_MM_ADD ) { tmp->value = *value; } else { CMPIStatus rc; tmp->value = native_clone_CMPIValue ( type, value, &rc ); // what if clone() fails??? } } else tmp->state = CMPI_nullValue; return 0; } return ( strcmp ( (*qual)->name, name ) == 0 || __addQualifier ( &( (*qual)->next ), mm_add, name, type, state, value ) ); } /** * returns -1 if non-existant */ static int __setQualifier ( struct native_qualifier * qual, int mm_add, const char * name, CMPIType type, CMPIValue * value ) { CMPIValue v; if ( qual == NULL ) { return -1; } if ( strcmp ( qual->name, name ) == 0 ) { CMPIStatus rc; if ( ! ( qual->state & CMPI_nullValue ) ) native_release_CMPIValue ( qual->type, &qual->value ); if ( type == CMPI_chars ) { type = CMPI_string; v.string = native_new_CMPIString ( (char *) value, NULL ); value = &v; } qual->type = type; if ( type != CMPI_null ) { qual->value = ( mm_add == TOOL_MM_ADD )? *value: native_clone_CMPIValue ( type, value, &rc ); // what if clone() fails ??? } else qual->state = CMPI_nullValue; return 0; } return __setQualifier ( qual->next, mm_add, name, type, value); } static struct native_qualifier * __getQualifier ( struct native_qualifier * qual, const char * name ) { if ( ! qual || ! name ) { return NULL; } return ( strcmp ( qual->name, name ) == 0 )? qual: __getQualifier ( qual->next, name ); } static CMPIData __getDataQualifier ( struct native_qualifier * qual, const char * name, CMPIStatus * rc ) { struct native_qualifier * p = __getQualifier ( qual, name ); if ( rc ) CMSetStatus ( rc, ( p )? CMPI_RC_OK: CMPI_RC_ERR_NO_SUCH_PROPERTY ); return __convert2CMPIData ( p, NULL ); } static struct native_qualifier * __getQualifierAt ( struct native_qualifier * qual, unsigned int pos ) { if ( ! qual ) { return NULL; } return ( pos == 0 )? qual: __getQualifierAt ( qual->next, --pos ); } static CMPIData __getDataQualifierAt ( struct native_qualifier * qual, unsigned int pos, CMPIString ** qualname, CMPIStatus * rc ) { struct native_qualifier * p = __getQualifierAt ( qual, pos ); if ( rc ) CMSetStatus ( rc, ( p )? CMPI_RC_OK: CMPI_RC_ERR_NO_SUCH_PROPERTY ); return __convert2CMPIData ( p, qualname ); } static CMPICount __getQualifierCount ( struct native_qualifier * qual, CMPIStatus * rc ) { CMPICount c = 0; if ( rc ) CMSetStatus ( rc, CMPI_RC_OK ); while ( qual != NULL ) { c++; qual = qual->next; } return c; } static void __release ( struct native_qualifier * qual ) { for ( ; qual; qual = qual->next ) { tool_mm_add ( qual ); tool_mm_add ( qual->name ); native_release_CMPIValue ( qual->type, &qual->value ); } } static struct native_qualifier * __clone ( struct native_qualifier * qual, CMPIStatus * rc ) { struct native_qualifier * result; CMPIStatus tmp; if ( qual == NULL ) { if ( rc ) CMSetStatus ( rc, CMPI_RC_OK ); return NULL; } result = (struct native_qualifier * ) tool_mm_alloc ( TOOL_MM_NO_ADD, sizeof ( struct native_qualifier ) ); result->name = strdup ( qual->name ); result->type = qual->type; result->state = qual->state; result->value = native_clone_CMPIValue ( qual->type, &qual->value, &tmp ); if ( tmp.rc != CMPI_RC_OK ) { result->state = CMPI_nullValue; } result->next = __clone ( qual->next, rc ); return result; } /** * Global function table to access native_qualifier helper functions. */ struct native_qualifierFT qualifierFT = { __addQualifier, __setQualifier, __getDataQualifier, __getDataQualifierAt, __getQualifierCount, __release, __clone }; /****************************************************************************/ /*** Local Variables: ***/ /*** mode: C ***/ /*** c-basic-offset: 8 ***/ /*** End: ***/ Index: client.c =================================================================== RCS file: /cvsroot/sblim/sfcc/client.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- client.c 6 Jun 2005 15:28:28 -0000 1.7 +++ client.c 13 Jun 2005 23:50:46 -0000 1.8 @@ -380,8 +380,9 @@ CMCIConnection *con=cl->connection; UtilStringBuffer *sb=newStringBuffer(2048); char *error; + CMPIString *cn; - addXmlClassnameParam(sb, cop); + cn=cop->ft->getClassName(cop,NULL); con->ft->genRequest(cl,"GetInstance",cop,0,0); addXmlHeader(sb); @@ -396,8 +397,9 @@ addXmlPropertyListParam(sb, properties); - addXmlClassnameParam(sb, cop); - + sb->ft->append3Chars(sb,"<IPARAMVALUE NAME=\"InstanceName\">\n" + "<INSTANCENAME CLASSNAME=\"",(char*)cn->hdl,"\">\n"); + pathToXml(sb, cop); sb->ft->appendChars(sb,"</INSTANCENAME>\n</IPARAMVALUE>\n"); @@ -975,7 +977,6 @@ UtilStringBuffer *sb=newStringBuffer(2048); char *error; - addXmlClassnameParam(sb, cop); con->ft->genRequest(cl,"GetClass",cop,0,0); addXmlHeader(sb); @@ -992,10 +993,6 @@ addXmlClassnameParam(sb, cop); - pathToXml(sb, cop); - - sb->ft->appendChars(sb,"</INSTANCENAME>\n</IPARAMVALUE>\n"); - sb->ft->appendChars(sb,"</IMETHODCALL></SIMPLEREQ>\n</MESSAGE></CIM>"); // fprintf(stderr,"%s\n",sb->ft->getCharPtr(sb)); @@ -1052,7 +1049,7 @@ CMSetStatusWithChars(rc,CMPI_RC_ERR_FAILED,error); return NULL; } - fprintf(stderr,"%s\n",con->mResponse->ft->getCharPtr(con->mResponse)); +// fprintf(stderr,"%s\n",con->mResponse->ft->getCharPtr(con->mResponse)); ResponseHdr rh=scanCimXmlResponse(con->mResponse->ft->getCharPtr(con->mResponse),cop); Index: cimXmlParser.c =================================================================== RCS file: /cvsroot/sblim/sfcc/cimXmlParser.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- cimXmlParser.c 4 May 2005 18:20:08 -0000 1.1 +++ cimXmlParser.c 13 Jun 2005 23:50:46 -0000 1.2 @@ -1079,7 +1079,7 @@ if (next == NULL) { return 0; } - // fprintf(stderr,"--- token: %.32s\n",next); +// fprintf(stderr,"--- token: %.32s\n",next); if (parm->xmb->eTagFound) { parm->xmb->eTagFound = 0; return parm->xmb->etag; Index: cimXmlResp.y =================================================================== RCS file: /cvsroot/sblim/sfcc/cimXmlResp.y,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- cimXmlResp.y 6 Jun 2005 15:28:28 -0000 1.2 +++ cimXmlResp.y 13 Jun 2005 23:50:46 -0000 1.3 @@ -48,6 +48,10 @@ extern int yyerror(char*); extern int yylex (void *lvalp, ParserControl *parm); +extern CMPIConstClass * native_new_CMPIConstClass ( char *cn, CMPIStatus * rc ); +extern int addClassProperty( CMPIConstClass * ccls, char * name, CMPIValue * value, CMPIType type, + CMPIValueState state); + int isBoolean(CMPIData data) { @@ -58,22 +62,6 @@ return -1; } -static void addInstProperty(CMPIInstance **ci, XtokProperty *p) -{ - CMPIValue val; - - if (*ci==NULL) *ci=newCMPIInstance(NULL,NULL); - switch (p->propType) { - case typeProperty_Value: ; - val=str2CMPIValue(p->valueType, p->val.value, NULL); - (*ci)->ft->setProperty(*ci,p->name,&val,p->valueType); - break; - case typeProperty_Reference: ; - case typeProperty_Array: ; - break; - } -} - static void createPath(CMPIObjectPath **op, XtokInstanceName *p) { int i,m; @@ -88,8 +76,6 @@ &val, &type); CMAddKey(*op, p->bindings.keyBindings[i].name, valp, type); } - CMPIString *path=(*op)->ft->toString(*op,NULL); - printf("parh: %s\n",(char*)path->hdl); } static void createClassPath(CMPIObjectPath **op, char *ns, char *cn) @@ -97,6 +83,120 @@ *op = newCMPIObjectPath(NULL, cn, NULL); } +static void setInstProperties(CMPIInstance *ci, XtokProperties *ps) +{ + XtokProperty *np=NULL,*p= ps ? ps->first : NULL; + CMPIValue val; + + while (p) { + switch (p->propType) { + case typeProperty_Value: ; + val=str2CMPIValue(p->valueType, p->val.value, NULL); + ci->ft->setProperty(ci,p->name,&val,p->valueType); + break; + case typeProperty_Reference: ; + case typeProperty_Array: ; + break; + } + np=p->next; + free(p); + p=np; + } + if (ps) ps->first=ps->last=NULL; +} + +static void setClassProperties(CMPIConstClass *cls, XtokProperties *ps) +{ + XtokProperty *np=NULL,*p= ps ? ps->first : NULL; + CMPIValue val; + CMPIValueState state; + + while (p) { + switch (p->propType) { + case typeProperty_Value: + if (p->val.null) state=CMPI_nullValue; + else { + state=0; + val=str2CMPIValue(p->valueType, p->val.value, NULL); + } + addClassProperty(cls,p->name,&val,p->valueType,state); + break; + case typeProperty_Reference: ; + case typeProperty_Array: ; + break; + } + np=p->next; + free(p); + p=np; + } + if (ps) ps->first=ps->last=NULL; +} + +static void addProperty(XtokProperties *ps, XtokProperty *p) +{ + XtokProperty *np; + np=(XtokProperty*)malloc(sizeof(XtokProperty)); + memcpy(np,p,sizeof(XtokProperty)); + np->next=NULL; + if (ps->last) { + ps->last->next=np; + } + else ps->first=np; + ps->last=np; +} + +static void addParamValue(XtokParamValues *vs, XtokParamValue *v) +{ + XtokParamValue *nv; + nv=(XtokParamValue*)malloc(sizeof(XtokParamValue)); + memcpy(nv,v,sizeof(XtokParamValue)); + nv->next=NULL; + if (vs->last) { + vs->last->next=nv; + } + else vs->first=nv; + vs->last=nv; +} + +static void addQualifier(XtokQualifiers *qs, XtokQualifier *q) +{ + XtokQualifier *nq; + nq=(XtokQualifier*)malloc(sizeof(XtokQualifier)); + memcpy(nq,q,sizeof(XtokQualifier)); + nq->next=NULL; + if (qs->last) { + qs->last->next=nq; + } + else qs->first=nq; + qs->last=nq; +} + +static void addMethod(XtokMethods *ms, XtokMethod *m) +{ + XtokMethod *nm; + nm=(XtokMethod*)malloc(sizeof(XtokMethod)); + memcpy(nm,m,sizeof(XtokMethod)); + nm->next=NULL; + if (ms->last) { + ms->last->next=nm; + } + else ms->first=nm; + ms->last=nm; +} + +static void addParam(XtokParams *ps, XtokParam *p) +{ + XtokParam *np; + np=(XtokParam*)malloc(sizeof(XtokParam)); + memcpy(np,p,sizeof(XtokParam)); + np->next=NULL; + if (ps->last) { + ps->last->next=np; + } + else ps->first=np; + ps->last=np; +} + static void setError(void *parm, XtokErrorResp *e) { int err=atoi(e->code); @@ -402,9 +502,17 @@ : /* empty */ | class { + PARM->curClass=native_new_CMPIConstClass($1.className,NULL); + setClassProperties(PARM->curClass,&PARM->properties); + simpleArrayAdd(PARM->respHdr.rvArray,(CMPIValue*)&PARM->curClass,CMPI_class); + PARM->curClass=NULL; } | classes class { + PARM->curClass=native_new_CMPIConstClass($2.className,NULL); + setClassProperties(PARM->curClass,&PARM->properties); + simpleArrayAdd(PARM->respHdr.rvArray,(CMPIValue*)&PARM->curClass,CMPI_class); + PARM->curClass=NULL; } ; @@ -412,12 +520,15 @@ : /* empty */ | instance { + PARM->curInstance=native_new_CMPIInstance(NULL,NULL); setInstNsAndCn(PARM->curInstance,$1.className,PARM->nameSpace); + setInstProperties(PARM->curInstance,&PARM->properties); simpleArrayAdd(PARM->respHdr.rvArray,(CMPIValue*)&PARM->curInstance,CMPI_instance); PARM->curInstance=NULL; } | instances instance { + PARM->curInstance=native_new_CMPIInstance(NULL,NULL); setInstNsAndCn(PARM->curInstance,$2.className,PARM->nameSpace); simpleArrayAdd(PARM->respHdr.rvArray,(CMPIValue*)&PARM->curInstance,CMPI_instance); PARM->curInstance=NULL; @@ -459,6 +570,15 @@ class : XTOK_CLASS classData ZTOK_CLASS { + if (PARM->Qs) + $$.qualifiers=PARM->qualifiers; + else memset(&$$.qualifiers,0,sizeof($$.qualifiers)); + if (PARM->Ps) + $$.properties=PARM->properties; + else memset(&$$.properties,0,sizeof($$.properties)); + if (PARM->Ms) + $$.methods=PARM->methods; + else memset(&$$.methods,0,sizeof($$.methods)); } ; @@ -466,16 +586,31 @@ : /* empty */ {;} | classData qualifier { + PARM->Qs++; + addQualifier(&(PARM->qualifiers),&$2); } | classData property { + PARM->Ps++; + addProperty(&(PARM->properties),&$2); } | classData method { + PARM->Ms++; + addMethod(&(PARM->methods),&$2); } ; method : XTOK_METHOD methodData ZTOK_METHOD { + if (PARM->MQs) + $$.qualifiers=$2.qualifiers; + else memset(&$$.qualifiers,0,sizeof($$.qualifiers)); + if (PARM->MPs) + $$.params=$2.params; + else memset(&$$.params,0,sizeof($$.params)); + PARM->MQs=0; + PARM->MPs=0; + PARM->MPQs=0; } ; @@ -483,9 +618,21 @@ : /* empty */ {;} | methodData qualifier { + if (PARM->MQs==0) + memset(&$$.qualifiers,0,sizeof($$.qualifiers)); + PARM->MQs++; + addQualifier(&($$.qualifiers),&$2); } | methodData XTOK_PARAM parameter ZTOK_PARAM { + if (PARM->MPs==0) + memset(&$$.params,0,sizeof($$.params)); + PARM->MPs++; + if (PARM->MPQs) + $2.qualifiers=$3.qualifiers; + else memset(&$2.qualifiers,0,sizeof($2.qualifiers)); + addParam(&($$.params),&$2); + PARM->MPQs=0; } ; @@ -493,6 +640,10 @@ : /* empty */ {;} | parameter qualifier { + if (PARM->MPQs==0) + memset(&$$.qualifiers,0,sizeof($$.qualifiers)); + PARM->MPQs++; + addQualifier(&($$.qualifiers),&$2); } ; @@ -504,6 +655,12 @@ instance : XTOK_INSTANCE instanceData ZTOK_INSTANCE { + if (PARM->Qs) + $$.qualifiers=PARM->qualifiers; + else memset(&$$.qualifiers,0,sizeof($$.qualifiers)); + if (PARM->Ps) + $$.properties=PARM->properties; + else memset(&$$.properties,0,sizeof($$.properties)); } ; @@ -511,10 +668,13 @@ : /* empty */ {;} | instanceData qualifier { + PARM->Qs++; + addQualifier(&(PARM->qualifiers),&$2); } | instanceData property { - addInstProperty(&(PARM->curInstance),&$2); + PARM->Ps++; + addProperty(&(PARM->properties),&$2); } ; @@ -527,35 +687,51 @@ : XTOK_PROPERTY propertyData ZTOK_PROPERTY { $$.val=$2; - } - | XTOK_PROPERTY ZTOK_PROPERTY - { - $$.val.null=1; - } - | XTOK_PROPERTYARRAY XTOK_VALUEARRAY valueArray ZTOK_VALUEARRAY ZTOK_PROPERTYARRAY + } + | XTOK_PROPERTYREFERENCE propertyData ZTOK_PROPERTYREFERENCE { - $$.val.array=$2; - } - | XTOK_PROPERTYARRAY ZTOK_PROPERTYARRAY + $$.val=$2; + } + | XTOK_PROPERTYARRAY propertyData ZTOK_PROPERTYARRAY { - $$.val.null=1; - } + $$.val=$2; + } ; propertyData - : propertyData qualifier + : /* empty */ {$$.null=1;} + | propertyData qualifier { + addQualifier(&(PARM->qualifiers),&$2); } - | value + | propertyData value { - $$.value=$1.value; + // printf("--- value: %s\n",$1.value); + $$.value=$2.value; + $$.null=0; } - | valueReference + | propertyData valueReference { - $$.ref=$1; + $$.ref=$2; + $$.null=0; + } + | propertyData XTOK_VALUEARRAY valueArray ZTOK_VALUEARRAY + { + // printf("--- valueArray: \n"); + $$.array=$2; + $$.null=0; } ; +//propertyArray +// : XTOK_PROPERTYARRAY ZTOK_PROPERTYARRAY +// { + // printf("--- propertyArray\n"); +// } +//; + + + /* * value @@ -623,7 +799,6 @@ : XTOK_CLASSNAME ZTOK_CLASSNAME { createClassPath(&PARM->curPath, NULL, $$); - printf("className.y: %s %p\n",$$,PARM->curPath); } ; --- NEW FILE: constClass.c --- /*! \file constClass.c \brief Native CMPIConstClass implementation. This is the native CMPIConstClass implementation as used for remote providers. It reflects the well-defined interface of a regular CMPIConstClass, however, it works independently from the management broker. It is part of a native broker implementation that simulates CMPI data types rather than interacting with the entities in a full-grown CIMOM. (C) Copyright IBM Corp. 2003 THIS FILE IS PROVIDED UNDER THE TERMS OF THE COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT. You can obtain a current copy of the Common Public License from http://oss.software.ibm.com/developerworks/opensource/license-cpl.html \author Adrian Schuur */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include "cmcidt.h" #include "cmcift.h" #include "cmcimacs.h" #include "tool.h" #include "native.h" /****************************************************************************/ /****************************************************************************/ static CMPIStatus __ccft_release ( CMPIConstClass * ccls ) { struct native_constClass * cc = (struct native_constClass *) ccls; if ( cc->mem_state == TOOL_MM_NO_ADD ) { cc->mem_state = TOOL_MM_ADD; tool_mm_add ( cc ); tool_mm_add ( cc->classname ); propertyFT.release ( cc->props ); CMReturn ( CMPI_RC_OK ); } CMReturn ( CMPI_RC_ERR_FAILED ); } static CMPIConstClass * __ccft_clone ( CMPIConstClass * ccls, CMPIStatus * rc ) { struct native_constClass * cc = (struct native_constClass *) ccls; struct native_constClass * new = (struct native_constClass *) tool_mm_alloc ( TOOL_MM_NO_ADD, sizeof ( struct native_constClass ) ); new->classname = strdup ( cc->classname ); new->props = propertyFT.clone ( cc->props, rc ); return (CMPIConstClass *) new; } static CMPIString *__ccft_getClassName ( CMPIConstClass * ccls, CMPIStatus * rc ) { struct native_constClass * cc = (struct native_constClass *) ccls; return native_new_CMPIString ( cc->classname, NULL ); } static CMPIData __ccft_getProperty ( CMPIConstClass * ccls, const char * name, CMPIStatus * rc ) { struct native_constClass * cc = (struct native_constClass *) ccls; return propertyFT.getDataProperty ( cc->props, name, rc ); } static CMPIData __ccft_getPropertyAt ( CMPIConstClass * ccls, unsigned int index, CMPIString ** name, CMPIStatus * rc ) { struct native_constClass * cc = (struct native_constClass *) ccls; return propertyFT.getDataPropertyAt ( cc->props, index, name, rc ); } static unsigned int __ccft_getPropertyCount ( CMPIConstClass * ccls, CMPIStatus * rc ) { struct native_constClass * cc = (struct native_constClass *) ccls; return propertyFT.getPropertyCount ( cc->props, rc ); } CMPIConstClass * native_new_CMPIConstClass ( char *cn, CMPIStatus * rc ) { static CMPIConstClassFT ccft = { NATIVE_FT_VERSION, __ccft_release, __ccft_clone, __ccft_getClassName, __ccft_getProperty, __ccft_getPropertyAt, __ccft_getPropertyCount }; static CMPIConstClass cc = { "CMPIConstClass", &ccft }; struct native_constClass * ccls = (struct native_constClass *) tool_mm_alloc ( TOOL_MM_ADD, sizeof ( struct native_constClass ) ); ccls->ccls = cc; ccls->mem_state = TOOL_MM_ADD; ccls->classname = strdup (cn ); return (CMPIConstClass *) ccls; } int addClassProperty( CMPIConstClass * ccls, char * name, CMPIValue * value, CMPIType type, CMPIValueState state) { struct native_constClass * cc = (struct native_constClass *) ccls; if ( propertyFT.setProperty ( cc->props, cc->mem_state, name, type, value ) ) { propertyFT.addProperty ( &cc->props, cc->mem_state, name, type, state, value ); } return ( CMPI_RC_OK ); } /****************************************************************************/ /*** Local Variables: ***/ /*** mode: C ***/ /*** c-basic-offset: 8 ***/ /*** End: ***/ Index: cimXmlParser.h =================================================================== RCS file: /cvsroot/sblim/sfcc/cimXmlParser.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- cimXmlParser.h 4 May 2005 18:20:08 -0000 1.1 +++ cimXmlParser.h 13 Jun 2005 23:50:46 -0000 1.2 @@ -297,6 +297,12 @@ char *nameSpace; CMPIInstance *curInstance; CMPIObjectPath *curPath; + CMPIConstClass *curClass; + XtokProperties properties; + XtokQualifiers qualifiers; + XtokMethods methods; + XtokParamValues paramValues; + int Qs,Ps,Ms,MPs,MQs,MPQs; } ParserControl; extern ResponseHdr scanCimXmlResponse(const char *xmlData, CMPIObjectPath *cop); |
From: Adrian S. <a3s...@us...> - 2005-06-13 23:37:42
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13003 Modified Files: array.c array.h cimXmlGen.c cimXmlRequest.c classProvider.c constClass.c constClass.h objectImpl.c objectImpl.h objectpath.c providerMgr.c Log Message: Fixed [ 1219651 ] Qualifiers with array values not correctly handled This is a large fix, most of the changes are because of statement reformatting. to have an effect, repositories must be rebuild. Index: cimXmlRequest.c =================================================================== RCS file: /cvsroot/sblim/sfcb/cimXmlRequest.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- cimXmlRequest.c 3 Jun 2005 10:31:56 -0000 1.11 +++ cimXmlRequest.c 13 Jun 2005 23:37:31 -0000 1.12 @@ -535,7 +535,7 @@ closeProviderContext(&binCtx); free(sreq); resp->rc--; - if (resp->rc == CMPI_RC_OK) { + if (resp->rc == CMPI_RC_OK) { cls = relocateSerializedConstClass(resp->object[0].data); sb = UtilFactory->newStrinBuffer(1024); cls2xml(cls, sb,binCtx.bHdr->flags); Index: cimXmlGen.c =================================================================== RCS file: /cvsroot/sblim/sfcb/cimXmlGen.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- cimXmlGen.c 30 May 2005 01:32:24 -0000 1.8 +++ cimXmlGen.c 13 Jun 2005 23:37:31 -0000 1.9 @@ -450,10 +450,11 @@ char *type; - if (data->type & CMPI_ARRAY) { + if (data->type & CMPI_ARRAY) { CMPIArray *ar = data->value.array; CMPIData d; int j, ac = CMGetArrayCount(ar, NULL); + sb->ft->appendChars(sb, bTag); sb->ft->appendChars(sb, (char *) name->hdl); if (param) sb->ft->appendChars(sb, "\" PARAMTYPE=\""); @@ -475,6 +476,7 @@ else { type = dataType(data->type); if (*type == '*') { + char *cn; sb->ft->appendChars(sb, bTag); sb->ft->appendChars(sb, (char *) name->hdl); sb->ft->appendChars(sb, "\" REFERENCECLASS=\""); @@ -657,8 +659,15 @@ "</PROPERTY.ARRAY>\n", sb, qsb, 0,0); else { type = dataType(data.type); - if (*type == '*') data2xml(&data,cls,name,"<PROPERTY.REFERENCE NAME=\"", - "</PROPERTY.REFERENCE>\n", sb, qsb, 0,0); + if (*type == '*') { + if (data.state &CMPI_nullValue) { + sb->ft->appendChars(sb, "<PROPERTY.REFERENCE NAME=\""); + sb->ft->appendChars(sb, (char*)name->hdl); + sb->ft->appendChars(sb, "\"</PROPERTY.REFERENCE>\n"); + } + else data2xml(&data,cls,name,"<PROPERTY.REFERENCE NAME=\"", + "</PROPERTY.REFERENCE>\n", sb, qsb, 0,0); + } else data2xml(&data,cls,name,"<PROPERTY NAME=\"", "</PROPERTY>\n", sb, qsb, 0,0); } Index: classProvider.c =================================================================== RCS file: /cvsroot/sblim/sfcb/classProvider.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- classProvider.c 27 May 2005 14:29:02 -0000 1.14 +++ classProvider.c 13 Jun 2005 23:37:31 -0000 1.15 @@ -250,7 +250,7 @@ cr->assocs++; if (cc->ft->getCharSuperClassName(cc) == NULL) cr->topAssocs++; } - } + } } else { mlogf(M_ERROR,M_SHOW,"--- %s contains invalid record(s) - directory skipped\n",fin); Index: providerMgr.c =================================================================== RCS file: /cvsroot/sblim/sfcb/providerMgr.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- providerMgr.c 3 Jun 2005 10:31:57 -0000 1.11 +++ providerMgr.c 13 Jun 2005 23:37:31 -0000 1.12 @@ -876,7 +876,7 @@ ((BinRequestHdr *) buf)->object[i].data = (void *) l; l += ol; break; - case MSG_SEG_CONSTCLASS: + case MSG_SEG_CONSTCLASS: getSerializedConstClass((CMPIConstClass *) hdr->object[i].data, buf + l); ((BinRequestHdr *) buf)->object[i].data = (void *) l; Index: objectImpl.h =================================================================== RCS file: /cvsroot/sblim/sfcb/objectImpl.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- objectImpl.h 25 Apr 2005 14:40:42 -0000 1.3 +++ objectImpl.h 13 Jun 2005 23:37:31 -0000 1.4 @@ -126,7 +126,7 @@ typedef struct { short iUsed, iMax; long iOffset; - long *index; + long *aIndex; long bUsed, bMax; CMPIData buf[1]; } ClArrayBuf; @@ -134,7 +134,7 @@ typedef struct { short iUsed, iMax; long iOffset; - long *index; + long *sIndex; long bUsed, bMax; char buf[1]; } ClStrBuf; Index: constClass.h =================================================================== RCS file: /cvsroot/sblim/sfcb/constClass.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- constClass.h 21 Mar 2005 14:22:38 -0000 1.2 +++ constClass.h 13 Jun 2005 23:37:31 -0000 1.3 @@ -41,10 +41,10 @@ struct _CMPIConstClass_FT { int version; CMPIStatus(*release) (CMPIConstClass * cc); - CMPIConstClass *(*clone) (CMPIConstClass * cc, CMPIStatus * rc); - void (*relocate) (CMPIConstClass * cc); - const char *(*getCharClassName) (CMPIConstClass * br); - const char *(*getCharSuperClassName) (CMPIConstClass * br); + CMPIConstClass *(*clone) (CMPIConstClass * cc, CMPIStatus * rc); + void (*relocate) (CMPIConstClass * cc); + const char *(*getCharClassName) (CMPIConstClass * br); + const char *(*getCharSuperClassName) (CMPIConstClass * br); CMPIBoolean(*isAssociation) (CMPIConstClass * cc); CMPIBoolean(*isAbstract) (CMPIConstClass * cc); CMPIBoolean(*isIndication) (CMPIConstClass * cc); Index: array.h =================================================================== RCS file: /cvsroot/sblim/sfcb/array.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- array.h 9 Mar 2005 12:25:09 -0000 1.1.1.1 +++ array.h 13 Jun 2005 23:37:31 -0000 1.2 @@ -34,7 +34,7 @@ CMPIArray array; int mem_state; - CMPICount size,max; + CMPICount size,max,dynamic; CMPIType type; struct native_array_item *data; }; Index: objectImpl.c =================================================================== RCS file: /cvsroot/sblim/sfcb/objectImpl.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- objectImpl.c 30 May 2005 01:32:24 -0000 1.7 +++ objectImpl.c 13 Jun 2005 23:37:31 -0000 1.8 @@ -95,30 +95,25 @@ { ClStrBuf *buf; - if (id->id == 0) - return NULL; - if MALLOCED - (hdr->strBufOffset) buf = (ClStrBuf *) hdr->strBufOffset; - else - buf = (ClStrBuf *) ((char *) hdr + abs(hdr->strBufOffset)); - return &(buf->buf[buf->index[id->id - 1]]); + if (id->id == 0) return NULL; + if MALLOCED (hdr->strBufOffset) buf = (ClStrBuf *) hdr->strBufOffset; + else buf = (ClStrBuf *) ((char *) hdr + abs(hdr->strBufOffset)); + return &(buf->buf[buf->sIndex[id->id - 1]]); } const CMPIData *ClObjectGetClArray(ClObjectHdr * hdr, ClArray * id) { ClArrayBuf *buf; - if MALLOCED (hdr->arrayBufOffset) - buf = (ClArrayBuf *) hdr->arrayBufOffset; - else - buf = (ClArrayBuf *) ((char *) hdr + abs(hdr->arrayBufOffset)); - return &(buf->buf[buf->index[id->id - 1]]); + if (id->id == 0) return NULL; + if MALLOCED(hdr->arrayBufOffset) buf = (ClArrayBuf *) hdr->arrayBufOffset; + else buf = (ClArrayBuf *) ((char *) hdr + abs(hdr->arrayBufOffset)); + return &(buf->buf[buf->aIndex[id->id - 1]]); } void *ClObjectGetClSection(ClObjectHdr * hdr, ClSection * s) { - if MALLOCED(s->offset) - return (void *) s->offset; + if MALLOCED(s->offset) return (void *) s->offset; return (void *) ((char *) hdr + abs(s->offset)); } @@ -170,35 +165,30 @@ buf->bMax = nmax; buf->bUsed = buf->iUsed = 0; buf->iOffset = (long) - (buf->index = (long *) malloc(sizeof(long) * 16)); + (buf->sIndex = (long *) malloc(sizeof(long) * 16)); buf->iMax = 16; hdr->flags |= HDR_Rebuild; } else { int malloced = MALLOCED(hdr->strBufOffset); - if (malloced) - buf = (ClStrBuf *) hdr->strBufOffset; - else - buf = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); + if (malloced) buf = (ClStrBuf *) hdr->strBufOffset; + else buf = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); if (buf->iUsed >= abs(buf->iMax)) { nmax = abs(buf->iMax) * 2; if (buf->iMax > 0) { if (!malloced) { - void *idx = (void *) buf->index; + void *idx = (void *) buf->sIndex; buf->iOffset = (long) - (buf->index = (long *) malloc(nmax * sizeof(long))); - memcpy((void *) buf->index, idx, buf->iMax * sizeof(long)); + (buf->sIndex = (long *) malloc(nmax * sizeof(long))); + memcpy((void *) buf->sIndex, idx, buf->iMax * sizeof(long)); } - else - buf->iOffset = (long) (buf->index = (long *) - realloc((void *) buf->index, - nmax * sizeof(long))); + else buf->iOffset = (long) (buf->sIndex = (long *) + realloc((void *) buf->sIndex,nmax * sizeof(long))); } - else - buf->iOffset = (long) - (buf->index = (long *) malloc(nmax * sizeof(long))); + else buf->iOffset = (long) + (buf->sIndex = (long *) malloc(nmax * sizeof(long))); buf->iMax = nmax; hdr->flags |= HDR_Rebuild; } @@ -210,16 +200,12 @@ if (!malloced) { hdr->strBufOffset = (long) malloc(((nmax - 1) * sizeof(char)) + sizeof(ClStrBuf)); - memcpy((void *) hdr->strBufOffset, buf, - buf->bMax + sizeof(ClStrBuf)); + memcpy((void *) hdr->strBufOffset, buf, buf->bMax + sizeof(ClStrBuf)); } - else - hdr->strBufOffset = (long) (realloc((void *) hdr->strBufOffset, - ((nmax - 1) * sizeof(char)) + - sizeof(ClStrBuf))); + else hdr->strBufOffset = (long) (realloc((void *) hdr->strBufOffset, + ((nmax - 1) * sizeof(char)) + sizeof(ClStrBuf))); } - else - hdr->strBufOffset = (long) + else hdr->strBufOffset = (long) malloc(((nmax - 1) * sizeof(char)) + sizeof(ClStrBuf)); buf = (ClStrBuf *) hdr->strBufOffset; buf->bMax = nmax; @@ -228,7 +214,7 @@ } strcpy(buf->buf + buf->bUsed, str); - buf->index[buf->iUsed++] = buf->bUsed; + buf->sIndex[buf->iUsed++] = buf->bUsed; buf->bUsed += l; _SFCB_RETURN(buf->iUsed); @@ -248,40 +234,37 @@ nmax = 16; for (; nmax <= l; nmax *= 2); buf = (ClArrayBuf *) (hdr->arrayBufOffset = (long) - malloc(((nmax - 1) * sizeof(CMPIData)) + - sizeof(ClArrayBuf))); + malloc(((nmax - 1) * sizeof(CMPIData)) + sizeof(ClArrayBuf))); buf->bMax = nmax; buf->bUsed = buf->iUsed = 0; - buf->iOffset = (long) - (buf->index = (long *) malloc(sizeof(long) * 16)); + buf->iOffset = (long) (buf->aIndex = (long *) malloc(sizeof(long) * 16)); buf->iMax = 16; hdr->flags |= HDR_Rebuild; } else { int malloced = MALLOCED(hdr->arrayBufOffset); - if (malloced) - buf = (ClArrayBuf *) hdr->arrayBufOffset; - else - buf = (ClArrayBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); + if (malloced) buf = (ClArrayBuf *) hdr->arrayBufOffset; + else buf = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); if (buf->iUsed >= abs(buf->iMax)) { nmax = abs(buf->iMax) * 2; if (buf->iMax > 0) { if (!malloced) { - void *idx = (void *) buf->index; + void *idx = (void *) buf->aIndex; buf->iOffset = (long) - (buf->index = (long *) malloc(nmax * sizeof(long))); - memcpy((void *) buf->index, idx, buf->iMax * sizeof(long)); + (buf->aIndex = (long *) malloc(nmax * sizeof(long))); + memcpy((void *) buf->aIndex, idx, buf->iMax * sizeof(long)); } - else - buf->iOffset = (long) (buf->index = (long *) - realloc((void *) buf->index, - nmax * sizeof(long))); + else { + buf->iOffset = (long) + (buf->aIndex = (long *)realloc((void *) buf->aIndex, nmax * sizeof(long))); + } } - else - buf->iOffset = (long) - (buf->index = (long *) malloc(nmax * sizeof(long))); + else { + buf->iOffset = (long) + (buf->aIndex = (long *) malloc(nmax * sizeof(long))); + } buf->iMax = nmax; hdr->flags |= HDR_Rebuild; } @@ -296,15 +279,10 @@ memcpy((void *) hdr->arrayBufOffset, buf, buf->bMax + sizeof(ClArrayBuf)); } - else - hdr->arrayBufOffset = - (long) (realloc - ((void *) hdr->arrayBufOffset, - ((nmax - 1) * sizeof(CMPIArray)) + - sizeof(ClArrayBuf))); + else hdr->arrayBufOffset = (long) (realloc ((void *) hdr->arrayBufOffset, + ((nmax - 1) * sizeof(CMPIData)) + sizeof(ClArrayBuf))); } - else - hdr->arrayBufOffset = (long) + else hdr->arrayBufOffset = (long) malloc(((nmax - 1) * sizeof(CMPIData)) + sizeof(ClArrayBuf)); buf = (ClArrayBuf *) hdr->arrayBufOffset; buf->bMax = nmax; @@ -314,25 +292,27 @@ td.state = 0; td.type = (ar->type == CMPI_string) ? CMPI_chars : ar->type; - td.value.sint32 = ar->size; - buf->index[buf->iUsed++] = buf->bUsed; + td.value.sint32 = ar->size; + buf->aIndex[buf->iUsed++] = buf->bUsed; buf->buf[buf->bUsed++] = td; for (i = 0, dp = buf->buf + buf->bUsed, m = ar->size; i < m; i++) { td.state = ar->data[i].state; - if (ar->type == CMPI_chars && (td.state & CMPI_nullValue) == 0) { + if (ar->type == CMPI_chars && ((td.state & CMPI_nullValue) == 0)) { td.value.chars = (char *) addClString(hdr, ar->data[i].value.chars); + td.type = CMPI_string; } - if (ar->type == CMPI_string && (td.state & CMPI_nullValue) == 0) { - td.value.chars = - (char *) addClString(hdr, ar->data[i].value.string->hdl); - td.type = CMPI_chars; + else if (ar->type == CMPI_string && ((td.state & CMPI_nullValue) == 0)) { + td.value.chars = (char *) addClString(hdr, ar->data[i].value.string->hdl); + td.type = CMPI_string; } - else + else { td.value = ar->data[i].value; + td.type =ar->type&~CMPI_ARRAY; + } dp[i] = td; } -// buf->index[buf->iUsed++]=buf->bUsed; + buf->bUsed += m; _SFCB_RETURN(buf->iUsed); @@ -392,7 +372,7 @@ else buf = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); - sz = sizeof(*buf) + buf->bUsed + (buf->iUsed * sizeof(*buf->index)); + sz = sizeof(*buf) + buf->bUsed + (buf->iUsed * sizeof(*buf->sIndex)); DEB(printf("--- sizeStringBuf: %lu-%p\n", sz, (void *) sz)); _SFCB_RETURN(sz); @@ -407,13 +387,12 @@ if (hdr->arrayBufOffset == 0) _SFCB_RETURN(0); - if MALLOCED - (hdr->arrayBufOffset) buf = (ClArrayBuf *) hdr->arrayBufOffset; - else - buf = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); + if MALLOCED(hdr->arrayBufOffset) buf = (ClArrayBuf *) hdr->arrayBufOffset; + else buf = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); sz = sizeof(*buf) + (buf->bUsed * sizeof(CMPIData)) + - (buf->iUsed * sizeof(*buf->index)); + (buf->iUsed * sizeof(*buf->aIndex)); + DEB(printf("--- sizeArrayBuf: %lu-%p\n", sz, (void *) sz)); _SFCB_RETURN(sz); @@ -427,19 +406,17 @@ long i, l, u; ClStrBuf *fb; - if MALLOCED - (hdr->strBufOffset) fb = (ClStrBuf *) hdr->strBufOffset; - else - fb = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); + if MALLOCED(hdr->strBufOffset) fb = (ClStrBuf *) hdr->strBufOffset; + else fb = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); ts = (char *) malloc(fb->bUsed); fs = &fb->buf[0]; for (u = i = 0; i < fb->iUsed; i++) { if (i != id - 1) { - char *f = fs + fb->index[i]; + char *f = fs + fb->sIndex[i]; l = strlen(f) + 1; - fb->index[i] = u; + fb->sIndex[i] = u; memcpy(ts + u, f, l); u += l; } @@ -453,7 +430,7 @@ else fb = (ClStrBuf *) (((char *) hdr) + abs(hdr->strBufOffset)); fb->iUsed--; - fb->index[id - 1] = fb->index[i-1]; + fb->sIndex[id - 1] = fb->sIndex[i-1]; _SFCB_EXIT(); } @@ -466,19 +443,17 @@ long i, l, u; ClArrayBuf *fb; - if MALLOCED - (hdr->arrayBufOffset) fb = (ClArrayBuf *) hdr->arrayBufOffset; - else - fb = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); + if MALLOCED (hdr->arrayBufOffset) fb = (ClArrayBuf *) hdr->arrayBufOffset; + else fb = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); ts = (CMPIData *) malloc(fb->bUsed * sizeof(CMPIData)); fs = &fb->buf[0]; for (u = i = 0; i < fb->iUsed; i++) { if (i != id - 1) { - CMPIData *f = fs + fb->index[i]; + CMPIData *f = fs + fb->aIndex[i]; l = (f->value.sint32 + 1) * sizeof(CMPIData); - fb->index[i] = u; + fb->aIndex[i] = u; memcpy(ts + u, f, l); u += f->value.sint32 + 1; } @@ -488,13 +463,11 @@ free(ts); i = addClArray(hdr, d); - if MALLOCED - (hdr->arrayBufOffset) fb = (ClArrayBuf *) hdr->arrayBufOffset; - else - fb = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); + if MALLOCED(hdr->arrayBufOffset) fb = (ClArrayBuf *) hdr->arrayBufOffset; + else fb = (ClArrayBuf *) (((char *) hdr) + abs(hdr->arrayBufOffset)); fb->iUsed--; - fb->index[id - 1] = i; + fb->aIndex[id - 1] = i; _SFCB_EXIT(); } @@ -506,26 +479,25 @@ ClStrBuf *fb, *tb; long l, il; - if (fh->strBufOffset == 0) - _SFCB_RETURN(ofs); + + if (fh->strBufOffset == 0) _SFCB_RETURN(ofs); tb = (ClStrBuf *) (((char *) th) + ofs); - if MALLOCED (fh->strBufOffset) - fb = (ClStrBuf *) fh->strBufOffset; + if MALLOCED (fh->strBufOffset) fb = (ClStrBuf *) fh->strBufOffset; else fb = (ClStrBuf *) (((char *) fh) + abs(fh->strBufOffset)); l = sizeof(*fb) + fb->bUsed; - il = fb->iUsed * sizeof(*fb->index); + il = fb->iUsed * sizeof(*fb->sIndex); memcpy(tb, fb, l); tb->bMax = tb->bUsed; th->strBufOffset = -ofs; ofs += l; - memcpy(((char *) th) + ofs, fb->index, il); + memcpy(((char *) th) + ofs, fb->sIndex, il); tb->iMax = tb->iUsed; tb->iOffset = -ofs; - tb->index = (long *) (((char *) th) + ofs); + tb->sIndex = (long *) (((char *) th) + ofs); _SFCB_RETURN(l + il); } @@ -537,31 +509,30 @@ ClArrayBuf *fb, *tb; long l, il; - if (fh->arrayBufOffset == 0) - _SFCB_RETURN(ofs); + if (fh->arrayBufOffset == 0) _SFCB_RETURN(ofs); tb = (ClArrayBuf *) (((char *) th) + ofs); - if MALLOCED - (fh->arrayBufOffset) fb = (ClArrayBuf *) fh->arrayBufOffset; - else - fb = (ClArrayBuf *) (((char *) fh) + abs(fh->arrayBufOffset)); - + if MALLOCED(fh->arrayBufOffset) fb = (ClArrayBuf *) fh->arrayBufOffset; + else fb = (ClArrayBuf *) (((char *) fh) + abs(fh->arrayBufOffset)); + l = sizeof(*fb) + (fb->bUsed * sizeof(CMPIData)); - fb->bMax = fb->bUsed; - il = fb->iUsed * sizeof(*fb->index); - fb->iMax = fb->iUsed; - + il = fb->iUsed * sizeof(*fb->aIndex); + memcpy(tb, fb, l); + tb->bMax = tb->bUsed; th->arrayBufOffset = -ofs; ofs += l; - - memcpy(((char *) th) + ofs, fb->index, il); + + memcpy(((char *) th) + ofs, fb->aIndex, il); + tb->iMax = tb->iUsed; tb->iOffset = -ofs; - tb->index = (long *) (((char *) th) + ofs); + tb->aIndex = (long *) (((char *) th) + ofs); _SFCB_RETURN(l + il); } + + //string concatenation static char *cat2string(stringControl * sc, const char *str) @@ -696,6 +667,9 @@ d.type = CMPI_chars; d.value.chars = (char *) addClString(hdr, (char *) d.value.string->hdl); } + else if ((d.type & CMPI_ARRAY) && (d.state & CMPI_nullValue) == 0) { + d.value.chars = (char *) addClArray(hdr, d); + } q.data = d; return q; @@ -813,6 +787,10 @@ data->value.string = native_new_CMPIString(str, NULL); data->type = CMPI_string; } + else if (data->type & CMPI_ARRAY) { + data->value.dataPtr.ptr = (void *) ClObjectGetClArray(&cls->hdr, + (ClArray *) & data->value.array); + } if (name) *name = strdup(ClObjectGetClString(&cls->hdr, &(q + id)->id)); return 0; } @@ -1343,24 +1321,18 @@ static void ClObjectRelocateStringBuffer(ClObjectHdr * hdr, ClStrBuf * buf) { - if (buf == NULL) - return; - if MALLOCED - (hdr->strBufOffset) buf = (ClStrBuf *) hdr->strBufOffset; - else - buf = (ClStrBuf *) ((char *) hdr + abs(hdr->strBufOffset)); - buf->index = (long *) ((char *) hdr + abs(buf->iOffset)); + if (buf == NULL) return; + if MALLOCED(hdr->strBufOffset) buf = (ClStrBuf *) hdr->strBufOffset; + else buf = (ClStrBuf *) ((char *) hdr + abs(hdr->strBufOffset)); + buf->sIndex = (long *) ((char *) hdr + abs(buf->iOffset)); } static void ClObjectRelocateArrayBuffer(ClObjectHdr * hdr, ClArrayBuf * buf) { - if (buf == NULL) - return; - if MALLOCED - (hdr->arrayBufOffset) buf = (ClArrayBuf *) hdr->arrayBufOffset; - else - buf = (ClArrayBuf *) ((char *) hdr + abs(hdr->arrayBufOffset)); - buf->index = (long *) ((char *) hdr + abs(buf->iOffset)); + if (buf == NULL) return; + if MALLOCED(hdr->arrayBufOffset) buf = (ClArrayBuf *) hdr->arrayBufOffset; + else buf = (ClArrayBuf *) ((char *) hdr + abs(hdr->arrayBufOffset)); + buf->aIndex = (long *) ((char *) hdr + abs(buf->iOffset)); } @@ -1374,9 +1346,8 @@ static ClClass *newClassH(ClObjectHdr * hdr, const char *cn, const char *pa) { ClClass *cls = (ClClass *) malloc(sizeof(ClClass)); - if (hdr == NULL) - hdr = &cls->hdr; - + if (hdr == NULL) hdr = &cls->hdr; + memset(cls, 0, sizeof(ClClass)); hdr->type = HDR_Class; if (cn) cls->name.id = addClString(hdr, cn); @@ -1446,6 +1417,9 @@ ofs += copyStringBuf(ofs, sz, &nc->hdr, hdr); ofs += copyArrayBuf(ofs, sz, &nc->hdr, hdr); + + //printArrayBuf(&nc->hdr); + nc->hdr.size = sz; return nc; @@ -1458,9 +1432,10 @@ void ClClassRelocateClass(ClClass * cls) { + _SFCB_ENTER(TRACE_OBJECTIMPL, "ClClassRelocateClass"); ClObjectRelocateStringBuffer(&cls->hdr, (ClStrBuf *) cls->hdr.strBufOffset); - ClObjectRelocateArrayBuffer(&cls->hdr, - (ClArrayBuf *) cls->hdr.arrayBufOffset); + ClObjectRelocateArrayBuffer(&cls->hdr, (ClArrayBuf *) cls->hdr.arrayBufOffset); + _SFCB_EXIT(); } void ClClassFreeClass(ClClass * cls) @@ -1586,6 +1561,7 @@ { ClProperty *p; ClQualifier *q; + p = (ClProperty *) ClObjectGetClSection(&cls->hdr, &cls->properties); if (id < 0 || id > cls->properties.used) return 1; p = p + id; @@ -1728,24 +1704,9 @@ void ClInstanceRelocateInstance(ClInstance * inst) { -// ClObjectRelocateStringBuffer(&inst->hdr,(ClStrBuf*)inst->hdr.strBufOffset); -// ClObjectRelocateArrayBuffer(&inst->hdr,(ClArrayBuf*)inst->hdr.arrayBufOffset); - _SFCB_ENTER(TRACE_OBJECTIMPL, "ClArgsRelocateArgs"); - if (inst->hdr.strBufOffset) { - ClStrBuf *buf; - if MALLOCED (inst->hdr.strBufOffset) - buf = (ClStrBuf *) inst->hdr.strBufOffset; - else buf = (ClStrBuf *) ((char *) inst + abs(inst->hdr.strBufOffset)); - buf->index = (long *) ((char *) inst + abs(buf->iOffset)); - } - - if (inst->hdr.arrayBufOffset) { - ClArrayBuf *buf; - if MALLOCED (inst->hdr.arrayBufOffset) - buf = (ClArrayBuf *) inst->hdr.arrayBufOffset; - else buf = (ClArrayBuf *) ((char *) inst + abs(inst->hdr.arrayBufOffset)); - buf->index = (long *) ((char *) inst + abs(buf->iOffset)); - } + _SFCB_ENTER(TRACE_OBJECTIMPL, "ClInstanceRelocateInstance"); + ClObjectRelocateStringBuffer(&inst->hdr,(ClStrBuf*)inst->hdr.strBufOffset); + ClObjectRelocateArrayBuffer(&inst->hdr,(ClArrayBuf*)inst->hdr.arrayBufOffset); _SFCB_EXIT(); } @@ -1931,8 +1892,10 @@ void ClObjectPathRelocateObjectPath(ClObjectPath * op) { + _SFCB_ENTER(TRACE_OBJECTIMPL, "ClObjectPathRelocateObjectPath"); ClObjectRelocateStringBuffer(&op->hdr, (ClStrBuf *) op->hdr.strBufOffset); ClObjectRelocateArrayBuffer(&op->hdr, (ClArrayBuf *) op->hdr.arrayBufOffset); + _SFCB_EXIT(); } void ClObjectPathFree(ClObjectPath * op) @@ -2109,25 +2072,9 @@ void ClArgsRelocateArgs(ClArgs * arg) { _SFCB_ENTER(TRACE_OBJECTIMPL, "ClArgsRelocateArgs"); - if (arg->hdr.strBufOffset) { - ClStrBuf *buf; - if MALLOCED - (arg->hdr.strBufOffset) - buf = (ClStrBuf *) arg->hdr.strBufOffset; - else - buf = (ClStrBuf *) ((char *) arg + abs(arg->hdr.strBufOffset)); - buf->index = (long *) ((char *) arg + abs(buf->iOffset)); - } - - if (arg->hdr.arrayBufOffset) { - ClArrayBuf *buf;; - if MALLOCED - (arg->hdr.arrayBufOffset) - buf = (ClArrayBuf *) arg->hdr.arrayBufOffset; - else - buf = (ClArrayBuf *) ((char *) arg + abs(arg->hdr.arrayBufOffset)); - buf->index = (long *) ((char *) arg + abs(buf->iOffset)); - } + + ClObjectRelocateStringBuffer(&arg->hdr,(ClStrBuf*)arg->hdr.strBufOffset); + ClObjectRelocateArrayBuffer(&arg->hdr,(ClArrayBuf*)arg->hdr.arrayBufOffset); _SFCB_EXIT(); } @@ -2185,6 +2132,17 @@ _SFCB_RETURN(addObjectPropertyH(&arg->hdr, prps, id, d)); } +void dumpClass(char *msg, CMPIConstClass *cls) +{ + ClClass *cl=(ClClass*)cls->hdl; + char *buf=(char*)cl; + printf("classDump: %s\n",msg); + printf("strBuf: %p arrayBuf %p\n",buf+abs(cl->hdr.strBufOffset),buf+abs(cl->hdr.arrayBufOffset)); + dump("strBuf",buf+abs(cl->hdr.strBufOffset),sizeof(ClStrBuf)); + dump("arrayBuf",buf+abs(cl->hdr.arrayBufOffset),sizeof(ClArrayBuf)); + dump(msg, buf, cl->hdr.size); +} + /* char *ClArgToString(ClArg * cls) { @@ -2207,6 +2165,7 @@ return sc.str; } */ +//#define MAIN_TEST #ifdef MAIN_TEST extern CMPIArray *NewCMPIArray(CMPICount size, CMPIType type, CMPIStatus * rc); Index: array.c =================================================================== RCS file: /cvsroot/sblim/sfcb/array.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- array.c 9 Mar 2005 12:25:09 -0000 1.1.1.1 +++ array.c 13 Jun 2005 23:37:31 -0000 1.2 @@ -140,13 +140,17 @@ return result; } - +/* static CMPIStatus __aft_setElementAt(CMPIArray * array, CMPICount index, CMPIValue * val, CMPIType type) { struct native_array *a = (struct native_array *) array; + if ( a->dynamic && index==a->size ) { + native_array_increase_size(array, 1); + } + if (index < a->size) { CMPIValue v; @@ -182,6 +186,49 @@ CMReturn(CMPI_RC_ERR_FAILED); } +*/ +static CMPIStatus setElementAt ( CMPIArray * array, CMPICount index, CMPIValue * val, + CMPIType type, int opt ) +{ + struct native_array * a = (struct native_array *) array; + + if ( a->dynamic && index==a->size ) { + native_array_increase_size(array, 1); + } + + if ( index < a->size ) { + CMPIValue v; + + if ( type == CMPI_chars && a->type == CMPI_string ) { + v.string = native_new_CMPIString ( (char *) val, NULL ); + type = CMPI_string; + val = &v; + } + + if ( opt || type == a->type ) { + CMPIStatus rc = {CMPI_RC_OK, NULL}; + a->data[index].state = 0; + if (opt) a->data[index].value = *val; + else a->data[index].value = ( a->mem_state == TOOL_MM_ADD )? *val: + native_clone_CMPIValue ( type, val, &rc ); + return rc; + } + + if ( type == CMPI_null ) { + if ( ! ( a->data[index].state & CMPI_nullValue ) ) { + __make_NULL ( a, index, index, a->mem_state == TOOL_MM_NO_ADD ); + } + CMReturn ( CMPI_RC_OK ); + } + } + CMReturn ( CMPI_RC_ERR_FAILED ); +} + +static CMPIStatus __aft_setElementAt ( CMPIArray * array, CMPICount index, CMPIValue * val, + CMPIType type ) +{ + return setElementAt(array,index,val,type,0); +} CMPIStatus arraySetElementNotTrackedAt(CMPIArray * array, CMPICount index, @@ -193,29 +240,22 @@ CMPIValue v; if (type == CMPI_chars && a->type == CMPI_string) { - v.string = native_new_CMPIString((char *) val, NULL); type = CMPI_string; val = &v; } if (type == a->type) { - CMPIStatus rc = { CMPI_RC_OK, NULL }; - a->data[index].state = 0; a->data[index].value =*val; - return rc; } if (type == CMPI_null) { - if (!(a->data[index].state & CMPI_nullValue)) { - __make_NULL(a, index, index, a->mem_state == TOOL_MM_NO_ADD); } - CMReturn(CMPI_RC_OK); } } @@ -271,11 +311,21 @@ array->array = a; array->mem_state = mm_add; - type &= ~CMPI_ARRAY; - array->type = (type == CMPI_chars) ? CMPI_string : type; - array->max = array->size = size; + type &= ~CMPI_ARRAY; + array->type = ( type == CMPI_chars )? CMPI_string: type; + array->size = size; + + if (array->size==0) { + array->max=8; + array->dynamic=1; + } + else { + array->max=array->size; + array->dynamic=0; + } + array->data = (struct native_array_item *) - tool_mm_alloc(mm_add, size * sizeof(struct native_array_item)); + tool_mm_alloc ( mm_add, array->max * sizeof ( struct native_array_item ) ); __make_NULL(array, 0, size - 1, 0); @@ -310,20 +360,31 @@ void *array = __new_empty_array(TOOL_MM_NO_ADD, av->value.sint32, av->type, rc); int i, m; -//asm("int $3"); + for (i = 0, m = (int) av->value.sint32; i < m; i++) - if (av->type == CMPI_chars) { - char *chars = av[i + 1].value.chars; - chars = (char *) ClObjectGetClString(hdr, (ClString *) & chars); - __aft_setElementAt((CMPIArray *) array, i, (CMPIValue *) chars, - av[i + 1].type); + if (av[i + 1].type == CMPI_string) { + char *chars = (char *) ClObjectGetClString(hdr, (ClString *) & av[i + 1].value.chars); + __aft_setElementAt((CMPIArray *) array, i, (CMPIValue *) chars, CMPI_chars); } - else - __aft_setElementAt((CMPIArray *) array, i, &av[i + 1].value, - av[i + 1].type); + else __aft_setElementAt((CMPIArray *) array, i, &av[i + 1].value, + av[i + 1].type); + return (CMPIArray *) array; } +CMPIStatus simpleArrayAdd(CMPIArray * array, CMPIValue * val, CMPIType type) +{ + struct native_array * a = (struct native_array *) array; + if (a->dynamic) { + if (a->size==0) { + a->type=type; + if (a->type==CMPI_chars) a->type=CMPI_string; + } + return setElementAt(array,a->size,val,type,1); + } + CMReturn ( CMPI_RC_ERR_FAILED ); +} + /****************************************************************************/ Index: constClass.c =================================================================== RCS file: /cvsroot/sblim/sfcb/constClass.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- constClass.c 13 Jun 2005 10:59:21 -0000 1.5 +++ constClass.c 13 Jun 2005 23:37:31 -0000 1.6 @@ -48,7 +48,7 @@ extern unsigned long ClSizeClass(ClClass * cls); extern ClClass *ClClassRebuildClass(ClClass * cls, void *area); extern void ClClassRelocateClass(ClClass * cls); -extern CMPIArray *native_make_CMPIArray(CMPIData * av, CMPIStatus * rc); +extern CMPIArray *native_make_CMPIArray(CMPIData * av, CMPIStatus * rc, ClObjectHdr * hdr); extern CMPIObjectPath *getObjectPath(char *path, char **msg); unsigned long getConstClassSerializedSize(CMPIConstClass * cl); @@ -63,14 +63,7 @@ static void relocate(CMPIConstClass * cc) { - ClClass *cls = (ClClass *) cc->hdl; - ClStrBuf *buf; - if MALLOCED - (cls->hdr.strBufOffset) - buf = (ClStrBuf *) cls->hdr.strBufOffset; - else - buf = (ClStrBuf *) ((char *) cls + abs(cls->hdr.strBufOffset)); - buf->index = (long *) ((char *) cls + abs(buf->iOffset)); + ClClassRelocateClass((ClClass *) cc->hdl); } static const char *getCharClassName(CMPIConstClass * cc) @@ -144,7 +137,7 @@ } if (rv.type & CMPI_ARRAY) { rv.value.array = - native_make_CMPIArray((CMPIData *) & rv.value.array, NULL); + native_make_CMPIArray((CMPIData *) & rv.value.array, NULL, &cls->hdr); } if (name) { *name = native_new_CMPIString(n, NULL); @@ -162,27 +155,23 @@ char *n; CMPIData rv = { 0, CMPI_notFound, {0} }; if (ClClassGetQualifierAt(cls, i, &rv, name ? &n : NULL)) { - if (rc) - CMSetStatus(rc, CMPI_RC_ERR_NOT_FOUND); + if (rc) CMSetStatus(rc, CMPI_RC_ERR_NOT_FOUND); return rv; } if (rv.type == CMPI_chars) { - rv.value.string = - native_new_CMPIString(ClObjectGetClString - (&cls->hdr, (ClString *) & rv.value.chars), - NULL); + rv.value.string = native_new_CMPIString(ClObjectGetClString + (&cls->hdr, (ClString *) & rv.value.chars), NULL); rv.type = CMPI_string; } if (rv.type & CMPI_ARRAY) { - rv.value.array = - native_make_CMPIArray((CMPIData *) & rv.value.array, NULL); + rv.value.array = native_make_CMPIArray((CMPIData *) & rv.value.array, + NULL, &cls->hdr); } if (name) { *name = native_new_CMPIString(n, NULL); free(n); } - if (rc) - CMSetStatus(rc, CMPI_RC_OK); + if (rc) CMSetStatus(rc, CMPI_RC_OK); return rv; } @@ -192,28 +181,25 @@ ClClass *cls = (ClClass *) cc->hdl; char *n; CMPIData rv = { 0, CMPI_notFound, {0} }; + if (ClClassGetPropQualifierAt(cls, p, i, &rv, name ? &n : NULL)) { - if (rc) - CMSetStatus(rc, CMPI_RC_ERR_NOT_FOUND); + if (rc) CMSetStatus(rc, CMPI_RC_ERR_NOT_FOUND); return rv; } if (rv.type == CMPI_chars) { - rv.value.string = - native_new_CMPIString(ClObjectGetClString - (&cls->hdr, (ClString *) & rv.value.chars), - NULL); + rv.value.string = native_new_CMPIString(ClObjectGetClString + (&cls->hdr, (ClString *) & rv.value.chars), NULL); rv.type = CMPI_string; } if (rv.type & CMPI_ARRAY) { - rv.value.array = - native_make_CMPIArray((CMPIData *) & rv.value.array, NULL); + rv.value.array = native_make_CMPIArray((CMPIData *) rv.value.dataPtr.ptr, + NULL, &cls->hdr); } if (name) { *name = native_new_CMPIString(n, NULL); free(n); } - if (rc) - CMSetStatus(rc, CMPI_RC_OK); + if (rc) CMSetStatus(rc, CMPI_RC_OK); return rv; } Index: objectpath.c =================================================================== RCS file: /cvsroot/sblim/sfcb/objectpath.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- objectpath.c 17 May 2005 13:04:21 -0000 1.5 +++ objectpath.c 13 Jun 2005 23:37:31 -0000 1.6 @@ -31,7 +31,7 @@ #include "native.h" #include "msgqueue.h" -extern CMPIArray *native_make_CMPIArray(CMPIData * av, CMPIStatus * rc); +extern CMPIArray *native_make_CMPIArray(CMPIData * av, CMPIStatus * rc,ClObjectHdr * hdr); extern CMPIObjectPath *interal_new_CMPIObjectPath(int mode, const char *, const char *, CMPIStatus *); extern CMPIBroker *Broker; @@ -161,7 +161,7 @@ } else if (rv.type & CMPI_ARRAY) { // should nor occcur rv.value.array = - native_make_CMPIArray((CMPIData *) & rv.value.array, NULL); + native_make_CMPIArray((CMPIData *) & rv.value.array, NULL,&cop->hdr); } if (rc) |
From: Adrian S. <a3s...@us...> - 2005-06-13 23:29:44
|
Update of /cvsroot/sblim/mofc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9791/mofc Modified Files: backend_sfcb.c Log Message: Fixed [ 1220035 ] Incorrect qualifier array handling in backend_sfcb.c Fixed line 114 Index: backend_sfcb.c =================================================================== RCS file: /cvsroot/sblim/mofc/backend_sfcb.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- backend_sfcb.c 7 Jun 2005 12:27:23 -0000 1.3 +++ backend_sfcb.c 13 Jun 2005 23:29:35 -0000 1.4 @@ -38,6 +38,7 @@ extern ClClass *ClClassRebuildClass(ClClass * cls, void *area); extern void ClClassFreeClass(ClClass * cls); extern char *ClClassToString(ClClass * cls); +extern CMPIStatus simpleArrayAdd(CMPIArray * array, CMPIValue * val, CMPIType type); extern CMPIBroker *Broker; @@ -89,6 +90,7 @@ CMPIData data; CMPIData arr_data; int i = 0; + CMPIStatus st; data.type = make_cmpi_type(lextype,arrayspec); data.value.uint64 = 0L; /* set to binary zeros */ @@ -106,10 +108,10 @@ if (data.type & CMPI_ARRAY) { /* process array entries */ data.value.array = - CMNewArray(Broker,arrayspec,data.type&~CMPI_ARRAY,NULL); + CMNewArray(Broker,0,data.type&~CMPI_ARRAY,NULL); while (vals && vals -> val_value) { arr_data = make_cmpi_data(lextype,-1,vals); - CMSetArrayElementAt(data.value.array, i, &arr_data.value, data.type); + st=simpleArrayAdd(data.value.array, &arr_data.value, data.type&~CMPI_ARRAY); i++; vals = vals -> val_next; } @@ -205,7 +207,7 @@ htinsert( he, upstrdup(ce -> class_id, strlen(ce -> class_id)), strlen(ce -> class_id), - (void *)1); + (void *)1); sfcbClass = ClClassNew( ce -> class_id, ce -> class_parent ? ce -> class_parent -> class_id : NULL ); |
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30425 Modified Files: Makefile.am cmpios.h control.c httpAdapter.c providerDrv.c sfcb.cfg.pre.in sfcb.init-none.in sfcb.init-redhat.in sfcb.init-suse.in Log Message: Bug fixed: 1218183. Adds support for the providerDirs variable in sfcb.cfg. This basically removes the need to have the providers in the libary path. On the other hand, providers in the library path will not be loaded automatically any more if not in providerDirs! Index: sfcb.init-suse.in =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcb.init-suse.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- sfcb.init-suse.in 27 Apr 2005 11:53:13 -0000 1.1 +++ sfcb.init-suse.in 13 Jun 2005 12:50:33 -0000 1.2 @@ -21,13 +21,6 @@ export LD_LIBRARY_PATH fi -# Add CMPI directory -if [ -z "$LD_LIBRARY_PATH" ] || echo $LD_LIBRARY_PATH | grep -qv @libdir@/cmpi -then - LD_LIBRARY_PATH=@libdir@/cmpi:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH -fi - start() { echo -n "Starting sfcb: " startproc @sbindir@/sfcbd -d Index: Makefile.am =================================================================== RCS file: /cvsroot/sblim/sfcb/Makefile.am,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- Makefile.am 6 Jun 2005 16:05:23 -0000 1.25 +++ Makefile.am 13 Jun 2005 12:50:33 -0000 1.26 @@ -32,6 +32,7 @@ AM_CPPFLAGS=-DSFCB_CONFDIR=\"$(sfcbconfdir)\" \ -DSFCB_STATEDIR=\"$(sfcbstatedir)\" + -DSFCB_LIBDIR=\"$(libdir)\" SUBDIRS=. $(MOFC_DIR) Index: sfcb.init-none.in =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcb.init-none.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- sfcb.init-none.in 27 Apr 2005 11:53:13 -0000 1.1 +++ sfcb.init-none.in 13 Jun 2005 12:50:33 -0000 1.2 @@ -12,13 +12,6 @@ export LD_LIBRARY_PATH fi -# Add CMPI directory -if [ -z "$LD_LIBRARY_PATH" ] || echo $LD_LIBRARY_PATH | grep -qv @libdir@/cmpi -then - LD_LIBRARY_PATH=@libdir@/cmpi:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH -fi - start() { echo -n "Starting sfcb: " @sbindir@/sfcbd -d && echo "done." && return 0 || Index: providerDrv.c =================================================================== RCS file: /cvsroot/sblim/sfcb/providerDrv.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- providerDrv.c 9 Jun 2005 21:10:34 -0000 1.15 +++ providerDrv.c 13 Jun 2005 12:50:33 -0000 1.16 @@ -25,6 +25,8 @@ #include <signal.h> #include <pthread.h> #include <time.h> +#include <sys/stat.h> +#include <unistd.h> #include "providerMgr.h" #include "utilft.h" @@ -36,7 +38,7 @@ #include "trace.h" #include "queryOperation.h" #include "selectexp.h" - +#include "control.h" #define PROVCHARS(p) (p && *((char*)p)) ? (char*)p : NULL @@ -88,35 +90,41 @@ unsigned long provTimeoutInterval=25; static int stopping=0; -void libraryName(const char *location, char *fullName) +void libraryName(const char *dir, const char *location, char *fullName) { -#if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC) - strcpy(fullName, location); - strcat(fullName, ".dll"); -#elif defined(PEGASUS_PLATFORM_LINUX_GENERIC_GNU) - strcpy(fullName, "lib"); - strcat(fullName, location); - strcat(fullName, ".so"); -#elif defined(PEGASUS_OS_HPUX) -#ifdef PEGASUS_PLATFORM_HPUX_PARISC_ACC - strcpy(fullName, "lib"); - strcat(fullName, location); - strcat(fullName, ".so"); -#else - strcpy(fullName, "lib"); - strcat(fullName, location); - strcat(fullName, ".so"); -#endif -#elif defined(PEGASUS_OS_OS400) +#if defined(CMPI_PLATFORM_WIN32_IX86_MSVC) + if (dir) { + sprintf(fullName,"%s\\%s.dll",dir,location); + } else { + sprintf(fullName,"%s.dll",location); + } +#elif defined(CMPI_PLATFORM_LINUX_GENERIC_GNU) + if (dir) { + sprintf(fullName,"%s/lib%s.so",dir,location); + } else { + sprintf(fullName,"lib%s.so",location); + } +#elif defined(CMPI_OS_HPUX) + if (dir) { + sprintf(fullName,"%s/lib%s.so",dir,location); + } else { + sprintf(fullName,"lib%s.so",location); + } +#elif defined(CMPI_OS_OS400) + if (dir) { strcpy(fullName, location); -#elif defined(PEGASUS_OS_DARWIN) - strcpy(fullName, "lib"); - strcat(fullName, location); - strcat(fullName, ".dylib"); +#elif defined(CMPI_OS_DARWIN) + if (dir) { + sprintf(fullName,"%s/lib%s.dylib",dir,location); + } else { + sprintf(fullName,"lib%s.dylib",location); + } #else - strcpy(fullName, "lib"); - strcat(fullName, location); - strcat(fullName, ".so"); + if (dir) { + sprintf(fullName,"%s/lib%s.so",dir,location); + } else { + sprintf(fullName,"lib%s.so",location); + } #endif } @@ -1652,13 +1660,44 @@ static int doLoadProvider(ProviderInfo *info, char *dlName) { + char *dirs,*dir,*dirlast, *dircpy; + char *fullname; + struct stat stbuf; + _SFCB_ENTER(TRACE_PROVIDERDRV, "doLoadProvider"); - libraryName((char *) info->location, dlName); - info->library = dlopen(dlName, RTLD_NOW); + if (getControlChars("providerDirs",&dirs) != 0) { + mlogf(M_ERROR,M_SHOW,"*** No provider directories configured.\n"); + abort(); + } + + + libraryName(NULL, (char *) info->location, dlName); + + dircpy = strdup(dirs); + fullname = malloc(strlen(dircpy)+strlen(dlName)+2); /* sufficient */ + dir=strtok_r(dircpy," \t",&dirlast); + info->library = NULL; + while (dir) { + libraryName(dir, (char *) info->location, fullname); + if (stat(fullname,&stbuf) == 0) { + info->library = dlopen(fullname, RTLD_NOW); + if (info->library == NULL) { + mlogf(M_ERROR,M_SHOW,"*** dlopen error: %s\n",dlerror()); + } else { + _SFCB_TRACE(1, ("--- Loaded provider library %s for %s-%d", + fullname, + info->providerName, + currentProc)); + } + break; + } + dir=strtok_r(NULL, " \t", &dirlast); + } + free(dircpy); + free(fullname); if (info->library == NULL) { - mlogf(M_ERROR,M_SHOW,"*** dlopen error: %s\n",dlerror()); _SFCB_RETURN(-1); } Index: sfcb.init-redhat.in =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcb.init-redhat.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- sfcb.init-redhat.in 27 Apr 2005 11:53:13 -0000 1.1 +++ sfcb.init-redhat.in 13 Jun 2005 12:50:33 -0000 1.2 @@ -21,13 +21,6 @@ export LD_LIBRARY_PATH fi -# Add CMPI directory -if [ -z "$LD_LIBRARY_PATH" ] || echo $LD_LIBRARY_PATH | grep -qv @libdir@/cmpi -then - LD_LIBRARY_PATH=@libdir@/cmpi:$LD_LIBRARY_PATH - export LD_LIBRARY_PATH -fi - start() { echo -n "Starting sfcb: " daemon @sbindir@/sfcbd -d && Index: sfcb.cfg.pre.in =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcb.cfg.pre.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- sfcb.cfg.pre.in 10 Mar 2005 15:40:46 -0000 1.2 +++ sfcb.cfg.pre.in 13 Jun 2005 12:50:33 -0000 1.3 @@ -11,3 +11,4 @@ sslKeyFilePath: @sysconfdir@/sfcb/file.pem sslCertificateFilePath: @sysconfdir@/sfcb/server.pem registrationDir: @localstatedir@/lib/sfcb/registration +providerDirs: @libdir@ @libdir@/cmpi Index: control.c =================================================================== RCS file: /cvsroot/sblim/sfcb/control.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- control.c 6 Jun 2005 16:05:23 -0000 1.8 +++ control.c 13 Jun 2005 12:50:33 -0000 1.9 @@ -40,6 +40,10 @@ #define SFCB_STATEDIR "/var/lib/sfcb" #endif +#ifndef SFCB_LIBDIR +#define SFCB_LIBDIR "/usr/lib" +#endif + typedef struct control { char *id; int type; @@ -79,6 +83,7 @@ {"sslCertificateFilePath", 0, SFCB_CONFDIR "/server.pem"}, {"registrationDir", 0, SFCB_STATEDIR "/registration"}, + {"providerDirs", 3, SFCB_LIBDIR " " SFCB_LIBDIR "/cmpi" }, /* 3: unstripped */ }; int setupControl(char *fn) @@ -127,8 +132,15 @@ case 2: for (i=0; i<sizeof(init)/sizeof(Control); i++) { if (strcmp(rv.id, init[i].id) == 0) { - init[i].strValue=strdup(cntlGetVal(&rv)); - goto ok; + if (init[i].type == 3) { + /* unstripped character string */ + init[i].strValue=strdup(rv.val); + if (strchr(init[i].strValue,'\n')) + *(strchr(init[i].strValue,'\n')) = 0; + } else { + init[i].strValue=strdup(cntlGetVal(&rv)); + } + goto ok; } } mlogf(M_ERROR,M_SHOW,"--- invalid control statement: \n\t%d: %s\n", n, stmt); @@ -160,7 +172,7 @@ Control *ctl; int rc = -1; if ((ctl = ct->ft->get(ct, id))) { - if (ctl->type == 0) { + if (ctl->type == 0 || ctl->type == 3) { *val = ctl->strValue; return 0; } Index: cmpios.h =================================================================== RCS file: /cvsroot/sblim/sfcb/cmpios.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- cmpios.h 9 Mar 2005 12:25:11 -0000 1.1.1.1 +++ cmpios.h 13 Jun 2005 12:50:33 -0000 1.2 @@ -37,7 +37,7 @@ long tv_nsec; }; -#elif defined( PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) +#elif defined( CMPI_PLATFORM_ZOS_ZSERIES_IBM) #define CMPI_THREAD_CDECL __cdecl #define CMPI_THREAD_KEY_TYPE pthread_key_t Index: httpAdapter.c =================================================================== RCS file: /cvsroot/sblim/sfcb/httpAdapter.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- httpAdapter.c 3 Jun 2005 10:31:57 -0000 1.9 +++ httpAdapter.c 13 Jun 2005 12:50:33 -0000 1.10 @@ -75,7 +75,7 @@ static int httpWorkSem; extern char *decode64(char *data); -extern void libraryName(const char *location, char *fullName); +extern void libraryName(const char* dir, const char *location, char *fullName); extern void *loadLibib(const char *libname); extern int getControlChars(char *id, char **val); extern void *loadLibib(const char *libname); @@ -156,7 +156,7 @@ char *ln; int err=1; if (getControlChars("basicAuthlib", &ln)==0) { - libraryName(ln,dlName); + libraryName(NULL,ln,dlName); if ((authLib=dlopen(dlName, RTLD_LAZY))) { authenticate= dlsym(authLib, "_sfcBasicAuthenticate"); if (authenticate) err=0; |
From: Adrian S. <a3s...@us...> - 2005-06-13 10:59:29
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31465 Modified Files: constClass.c Log Message: Fixed [ 1219622 ] Provider segfaults when getting keylist constClass.c:134 faile to check for CMPI_nullValue. Index: constClass.c =================================================================== RCS file: /cvsroot/sblim/sfcb/constClass.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- constClass.c 26 Apr 2005 14:11:19 -0000 1.4 +++ constClass.c 13 Jun 2005 10:59:21 -0000 1.5 @@ -138,8 +138,9 @@ } else if (rv.type == CMPI_ref) { char *msg; - rv.value.ref = getObjectPath( - (char*)ClObjectGetClString(&cls->hdr,(ClString *) & rv.value.chars), &msg); + if ((rv.state & CMPI_nullValue)==0) + rv.value.ref = getObjectPath( + (char*)ClObjectGetClString(&cls->hdr,(ClString *) & rv.value.chars), &msg); } if (rv.type & CMPI_ARRAY) { rv.value.array = |
From: Gareth S B. <bes...@us...> - 2005-06-09 21:52:42
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13574 Modified Files: interopProvider.c Log Message: fix for http://sourceforge.net/tracker/index.php?func=detail&aid=1206672&group_id=128809&atid=712784 Index: interopProvider.c =================================================================== RCS file: /cvsroot/sblim/sfcb/interopProvider.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- interopProvider.c 9 Jun 2005 20:34:59 -0000 1.9 +++ interopProvider.c 9 Jun 2005 21:52:28 -0000 1.10 @@ -544,37 +544,60 @@ CMPIStatus * st) { CMPIStatus rc; - char *principal=NULL; - char **fClasses=fi->qs->ft->getFromClassList(fi->qs); - CMPIData principalP=ctx->ft->getEntry(ctx,CMPIPrincipal,&rc); + char *principal = NULL; + char **fClasses = fi->qs->ft->getFromClassList(fi->qs); + CMPIData principalP = ctx->ft->getEntry(ctx,CMPIPrincipal,&rc); int irc; + int activated = 0; _SFCB_ENTER(TRACE_INDPROVIDER, "fowardSubscription"); - if (rc.rc==CMPI_RC_OK) - principal=(char*)principalP.value.string->hdl; + if (rc.rc == CMPI_RC_OK) { + principal = (char*)principalP.value.string->hdl; + _SFCB_TRACE(1,("--- principal=\"%s\"", principal)); + } + /* Go thru all the indication classes specified in the filter query and activate each */ for ( ; *fClasses; fClasses++) { - _SFCB_TRACE(1,("--- namespace=\"%s\" indication class=\"%s\"", fi->sns, *fClasses)); + _SFCB_TRACE(1,("--- indication class=\"%s\" namespace=\"%s\"", *fClasses, fi->sns)); - if (isa(fi->sns,*fClasses,"CIM_ProcessIndication")) { - *st=activateSubscription(principal, *fClasses, *fClasses, fi, &irc); + /* Check if this is a process indication */ + if (isa(fi->sns, *fClasses, "CIM_ProcessIndication")) { + *st = activateSubscription(principal, *fClasses, *fClasses, fi, &irc); + if (st->rc == CMPI_RC_OK) activated++; } - else if (isa("root/interop",*fClasses,"CIM_InstCreation")) { - *st=activateLifeCycleSubscription(principal, *fClasses, fi,CREATE_INST); + + /* Check if this is a lifecycle instance creation indication */ + else if (isa("root/interop", *fClasses, "CIM_InstCreation")) { + *st = activateLifeCycleSubscription(principal, *fClasses, fi, CREATE_INST); + if (st->rc == CMPI_RC_OK) activated++; } - else if (isa("root/interop",*fClasses,"CIM_InstDeletion")) { - *st=activateLifeCycleSubscription(principal, *fClasses, fi,DELETE_INST); + + /* Check if this is a lifecycle instance deletion indication */ + else if (isa("root/interop", *fClasses, "CIM_InstDeletion")) { + *st = activateLifeCycleSubscription(principal, *fClasses, fi, DELETE_INST); + if (st->rc == CMPI_RC_OK) activated++; } - else if (isa("root/interop",*fClasses,"CIM_InstModification")) { - *st=activateLifeCycleSubscription(principal, *fClasses, fi,MODIFY_INST); + + /* Check if this is a lifecycle instance modification indication */ + else if (isa("root/interop", *fClasses, "CIM_InstModification")) { + *st = activateLifeCycleSubscription(principal, *fClasses, fi, MODIFY_INST); + if (st->rc == CMPI_RC_OK) activated++; } + + /* Warn if this indication class is unknown and continue processing the rest, if any */ else { - setStatus(st,CMPI_RC_ERR_NOT_SUPPORTED,"Unsupported indication class specified in filter query"); - _SFCB_RETURN(-1); - } + _SFCB_TRACE(1,("--- Unsupported/unrecognized indication class")); + } } + /* Make sure at least one of the indication classes were successfully activated */ + if (!activated) { + setStatus(st, CMPI_RC_ERR_NOT_SUPPORTED, "No supported indication classes in filter query"); + _SFCB_RETURN(-1); + } + + setStatus(st, CMPI_RC_OK, NULL); _SFCB_RETURN(0); } |
From: Gareth S B. <bes...@us...> - 2005-06-09 21:10:57
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24346 Modified Files: providerDrv.c xmltest Log Message: fixed couple of debug messages in providerDrv.c fix for http://sourceforge.net/tracker/index.php?func=detail&aid=1215943&group_id=128809&atid=712784 Index: xmltest =================================================================== RCS file: /cvsroot/sblim/sfcb/xmltest,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- xmltest 2 Jun 2005 20:22:54 -0000 1.2 +++ xmltest 9 Jun 2005 21:10:35 -0000 1.3 @@ -29,7 +29,7 @@ exit 1 fi -# ------------------------------------------------------------------------------ +# ---------------------------------------------------------------------------- function _runxmltest { typeset _TESTXML=$1 @@ -49,15 +49,17 @@ # Remove any old test result file rm -f $_TESTRESULT - # Send the test CIM-XML to the CIMOM and save the response, stripping off the http header - wbemcat $_TESTXML | awk "{i++; if (i>7) print}" > $_TESTRESULT + # Send the test CIM-XML to the CIMOM and save the response, + # stripping off the http header + wbemcat $_TESTXML | awk '/<\?xml.*/{xml=1} {if (xml) print}' > $_TESTRESULT if [[ $? -ne 0 ]]; then echo "FAILED"; echo -e "\twbemcat failed to send CIM-XML request" _RC=1 continue fi - # If we dont yet have the expected result file, then save this response as the (new) expected result + # If we dont yet have the expected result file, then save this response + # as the (new) expected result if [[ ! -f $_TESTOK ]]; then echo "OK"; echo -e "\tSaving response as $_TESTOK" mv $_TESTRESULT $_TESTOK @@ -74,7 +76,7 @@ rm -f $_TESTRESULT fi } -# ------------------------------------------------------------------------------ +# ---------------------------------------------------------------------------- if [[ -f $1 ]]; then _runxmltest $1 @@ -85,7 +87,8 @@ _DIR=./ fi - # Look for all *.xml test files and run them in sorted order (hence tests should be numbered) + # Look for all *.xml test files and run them in sorted order, + # hence tests should be numbered find $_DIR -name "*.xml" | sort | while read _TESTXML; do _runxmltest $_TESTXML # Wait for the dust to settle before trying the next test... Index: providerDrv.c =================================================================== RCS file: /cvsroot/sblim/sfcb/providerDrv.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- providerDrv.c 30 May 2005 01:32:24 -0000 1.14 +++ providerDrv.c 9 Jun 2005 21:10:34 -0000 1.15 @@ -419,7 +419,7 @@ curProvProc=(*proc); resultSockets=sPairs[(*proc)->id+ptBase]; - _SFCB_TRACE(1,("--- Forked started for %s %d %d-%lu\n", + _SFCB_TRACE(1,("--- Forked started for %s %d %d-%lu", info->providerName, currentProc,providerSockets.receive, getInode(providerSockets.receive))); processName=info->providerName; @@ -440,7 +440,7 @@ else { info->startSeq=++seq; } - _SFCB_TRACE(1,("--- Fork provider OK %s %d %d\n", info->providerName, + _SFCB_TRACE(1,("--- Fork provider OK %s %d %d", info->providerName, info->pid, i)); _SFCB_RETURN(info->pid); } |
From: Gareth S B. <bes...@us...> - 2005-06-09 20:35:09
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6698 Modified Files: interopProvider.c Log Message: fix for http://sourceforge.net/tracker/index.php?func=detail&aid=1217159&group_id=128809&atid=712784 also tidied up code in interopProvider.c a bit (cosmetic changes only) Index: interopProvider.c =================================================================== RCS file: /cvsroot/sblim/sfcb/interopProvider.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- interopProvider.c 22 May 2005 21:05:42 -0000 1.8 +++ interopProvider.c 9 Jun 2005 20:34:59 -0000 1.9 @@ -36,6 +36,8 @@ #define LOCALCLASSNAME "InteropProvider" +/* ------------------------------------------------------------------------- */ + extern CMPIInstance *relocateSerializedInstance(void *area); extern void getSerializedInstance(CMPIInstance * ci, void *area); extern unsigned long getInstanceSerializedSize(CMPIInstance * ci); @@ -65,6 +67,8 @@ extern QLStatement *parseQuery(int mode, char *query, char *lang, char *sns, int *rc); +/* ------------------------------------------------------------------------- */ + static CMPIBroker *_broker; static int firstTime=1; @@ -95,27 +99,36 @@ static UtilHashTable *handlerHt = NULL; static UtilHashTable *subscriptionHt = NULL; +/* ------------------------------------------------------------------------- */ -static int interOpNameSpace(CMPIObjectPath *cop, CMPIStatus *st) +static int interOpNameSpace( + CMPIObjectPath * cop, + CMPIStatus * st) { - char *ns=(char*)CMGetNameSpace(cop,NULL)->hdl; + char *ns = (char*)CMGetNameSpace(cop,NULL)->hdl; if (strcasecmp(ns,"root/interop") && strcasecmp(ns,"root/pg_interop")) { - if (st) setStatus(st,CMPI_RC_ERR_FAILED,"Object must reside in root/interop"); + if (st) setStatus(st, CMPI_RC_ERR_FAILED, "Object must reside in root/interop"); return 0; } return 1; } +/* ------------------------------------------------------------------------- */ -static Subscription *addSubscription(CMPIInstance *ci, char *key, Filter *fi, Handler *ha) +static Subscription *addSubscription( + CMPIInstance * ci, + char * key, + Filter * fi, + Handler * ha) { Subscription *su; _SFCB_ENTER(TRACE_INDPROVIDER, "addSubscription"); - if (subscriptionHt==NULL) + if (subscriptionHt == NULL) { subscriptionHt=UtilFactory->newHashTable(61,UtilHashTable_charKey); - + } + _SFCB_TRACE(1,("-- Subscription: %s\n",key)); su=subscriptionHt->ft->get(subscriptionHt,key); @@ -132,21 +145,31 @@ _SFCB_RETURN(su); } -static Subscription *getSubscription(char *key) +/* ------------------------------------------------------------------------- */ + +static Subscription *getSubscription( + char * key) { Subscription *su; + + _SFCB_ENTER(TRACE_INDPROVIDER, "getSubscription"); + if (subscriptionHt==NULL) return NULL; - - su=subscriptionHt->ft->get(subscriptionHt,key); - return su; + su = subscriptionHt->ft->get(subscriptionHt,key); + + _SFCB_RETURN(su); } -static void removeSubscription(Subscription *su, char *key) +/* ------------------------------------------------------------------------- */ + +static void removeSubscription( + Subscription * su, + char * key) { _SFCB_ENTER(TRACE_INDPROVIDER, "removeSubscription"); if (subscriptionHt) { - filterHt->ft->remove(filterHt,key); + subscriptionHt->ft->remove(subscriptionHt,key); if (su) { if (su->fi) su->fi->useCount--; if (su->ha) su->ha->useCount--; @@ -159,11 +182,17 @@ _SFCB_EXIT(); } +/* ------------------------------------------------------------------------- */ -static Filter *addFilter(CMPIInstance *ci, char *key, QLStatement *qs, - char *query, char *lang, char *sns) +static Filter *addFilter( + CMPIInstance * ci, + char * key, + QLStatement * qs, + char * query, + char * lang, + char * sns) { - Filter *fi; + Filter * fi; _SFCB_ENTER(TRACE_INDPROVIDER, "addFilter"); @@ -188,16 +217,26 @@ _SFCB_RETURN(fi); } -static Filter *getFilter(char *key) +/* ------------------------------------------------------------------------- */ + +static Filter *getFilter( + char * key) { - Filter *fi; + Filter * fi; + + _SFCB_ENTER(TRACE_INDPROVIDER, "getFilter"); + if (filterHt==NULL) return NULL; - - fi=filterHt->ft->get(filterHt,key); - return fi; + fi = filterHt->ft->get(filterHt,key); + + _SFCB_RETURN(fi); } -static void removeFilter(Filter *fi, char *key) +/* ------------------------------------------------------------------------- */ + +static void removeFilter( + Filter * fi, + char * key) { _SFCB_ENTER(TRACE_INDPROVIDER, "removeFilter"); @@ -205,7 +244,7 @@ filterHt->ft->remove(filterHt,key); } if (fi) { - CMRelease(fi->fci); +// CMRelease(fi->fci); CMRelease(fi->qs); free(fi->query); free(fi->lang); @@ -216,7 +255,11 @@ _SFCB_EXIT(); } -static Handler *addHandler(CMPIInstance *ci, CMPIObjectPath *op) +/* ------------------------------------------------------------------------- */ + +static Handler *addHandler( + CMPIInstance *ci, + CMPIObjectPath * op) { Handler *ha; char *key; @@ -244,16 +287,26 @@ _SFCB_RETURN(ha); } -static Handler *getHandler(char *key) +/* ------------------------------------------------------------------------- */ + +static Handler *getHandler( + char * key) { Handler *ha; + + _SFCB_ENTER(TRACE_INDPROVIDER, "getFilter"); + if (handlerHt==NULL) return NULL; - ha=handlerHt->ft->get(handlerHt,key); - return ha; + + _SFCB_RETURN(ha); } -static void removeHandler(Handler *ha, char *key) +/* ------------------------------------------------------------------------- */ + +static void removeHandler( + Handler * ha, + char * key) { _SFCB_ENTER(TRACE_INDPROVIDER, "removeHandler"); @@ -267,6 +320,8 @@ _SFCB_EXIT(); } +/* ------------------------------------------------------------------------- */ + extern int isChild(const char *ns, const char *parent, const char* child); static int isa(const char *sns, const char *child, const char *parent) @@ -279,8 +334,13 @@ _SFCB_RETURN(rv); } +/* ------------------------------------------------------------------------- */ -CMPIStatus deactivateFilter(CMPIContext * ctx, char *ns, char *cn, Filter *fi) +CMPIStatus deactivateFilter( + CMPIContext * ctx, + char * ns, + char * cn, + Filter * fi) { CMPIObjectPath *path; CMPIStatus st={CMPI_RC_OK,NULL}; @@ -343,6 +403,7 @@ _SFCB_RETURN(st); } +/* ------------------------------------------------------------------------- */ #define CREATE_INST 1 #define DELETE_INST 2 @@ -350,8 +411,12 @@ extern CMPISelectExp *TempCMPISelectExp(QLStatement *qs); -CMPIStatus activateSubscription(char *principal, const char *cn, const char *type, - Filter *fi, int *rrc) +CMPIStatus activateSubscription( + char * principal, + const char * cn, + const char * type, + Filter * fi, + int * rrc) { CMPIObjectPath *path; CMPIStatus st={CMPI_RC_OK,NULL},rc; @@ -414,8 +479,13 @@ _SFCB_RETURN(st); } -CMPIStatus activateLifeCycleSubscription(char *principal, const char *cn, - Filter *fi, int type) +/* ------------------------------------------------------------------------- */ + +CMPIStatus activateLifeCycleSubscription( + char * principal, + const char * cn, + Filter * fi, + int type) { CMPIStatus st={CMPI_RC_OK,NULL}; CMPISelectExp *exp=TempCMPISelectExp(fi->qs); @@ -466,8 +536,12 @@ _SFCB_RETURN(st); } +/* ------------------------------------------------------------------------- */ -int fowardSubscription(CMPIContext * ctx, Filter *fi, CMPIStatus *st) +int fowardSubscription( + CMPIContext * ctx, + Filter * fi, + CMPIStatus * st) { CMPIStatus rc; char *principal=NULL; @@ -500,13 +574,19 @@ _SFCB_RETURN(-1); } } + _SFCB_RETURN(0); } +/* ------------------------------------------------------------------------- */ + extern UtilStringBuffer *instanceToString(CMPIInstance * ci, char **props); -static CMPIStatus processSubscription(CMPIBroker *broker, CMPIContext *ctx, - CMPIInstance *ci, CMPIObjectPath *cop) +static CMPIStatus processSubscription( + CMPIBroker *broker, + CMPIContext *ctx, + CMPIInstance *ci, + CMPIObjectPath *cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; Handler *ha; @@ -516,41 +596,49 @@ char *key,*skey; CMPIDateTime *dt; - _SFCB_ENTER(TRACE_INDPROVIDER, "processSubscription"); + _SFCB_ENTER(TRACE_INDPROVIDER, "processSubscription()"); - skey=internalProviderNormalizeObjectPath(cop); + _SFCB_TRACE(1,("--- checking for existing subscription")); + skey = internalProviderNormalizeObjectPath(cop); if (getSubscription(skey)) { + _SFCB_TRACE(1,("--- subscription already exists")); free(skey); - setStatus(&st,CMPI_RC_ERR_ALREADY_EXISTS,NULL); + setStatus(&st, CMPI_RC_ERR_ALREADY_EXISTS, NULL); _SFCB_RETURN(st); } - op=CMGetProperty(ci,"filter",&st).value.ref; - key=internalProviderNormalizeObjectPath(op); - fi=getFilter(key); - free(key); - - op=CMGetProperty(ci,"handler",&st).value.ref; - key=internalProviderNormalizeObjectPath(op); - ha=getHandler(key); + _SFCB_TRACE(1,("--- getting new subscription filter")); + op = CMGetProperty(ci, "filter", &st).value.ref; + key = internalProviderNormalizeObjectPath(op); + fi = getFilter(key); free(key); - - if (fi==NULL) { - setStatus(&st,CMPI_RC_ERR_NOT_FOUND,"Filter not found"); + + if (fi == NULL) { + _SFCB_TRACE(1,("--- cannot find specified subscription filter")); + setStatus(&st, CMPI_RC_ERR_NOT_FOUND, "Filter not found"); _SFCB_RETURN(st); } - if (ha==NULL) { - setStatus(&st,CMPI_RC_ERR_NOT_FOUND,"Handler not found"); + + _SFCB_TRACE(1,("--- getting new subscription handle")); + op = CMGetProperty(ci, "handler", &st).value.ref; + key = internalProviderNormalizeObjectPath(op); + ha = getHandler(key); + free(key); + + if (ha == NULL) { + _SFCB_TRACE(1,("--- cannot find specified subscription handler")); + setStatus(&st, CMPI_RC_ERR_NOT_FOUND, "Handler not found"); _SFCB_RETURN(st); } - dt=CMNewDateTime(_broker,NULL); - CMSetProperty(ci,"SubscriptionDuration",&dt,CMPI_dateTime); - - su=addSubscription(ci,skey,fi,ha); - fowardSubscription(ctx,fi,&st); + _SFCB_TRACE(1,("--- setting subscription duration")); + dt = CMNewDateTime(_broker,NULL); + CMSetProperty(ci, "SubscriptionDuration", &dt, CMPI_dateTime); + + su=addSubscription(ci, skey, fi, ha); + fowardSubscription(ctx, fi, &st); - if (st.rc!=CMPI_RC_OK) removeSubscription(su,skey); + if (st.rc != CMPI_RC_OK) removeSubscription(su, skey); _SFCB_RETURN(st); } @@ -559,7 +647,9 @@ * InterOp initialization * ------------------------------------------------------------------ */ -void initInterOp(CMPIBroker *broker, CMPIContext *ctx) +void initInterOp( + CMPIBroker *broker, + CMPIContext *ctx) { CMPIObjectPath *op; UtilList *ul; @@ -613,71 +703,84 @@ _SFCB_EXIT(); } - -/* ------------------------------------------------------------------ * - * Instance MI Cleanup - * ------------------------------------------------------------------ */ -CMPIStatus InteropProviderCleanup(CMPIInstanceMI * mi, CMPIContext * ctx) +/* --------------------------------------------------------------------------*/ +/* Instance Provider Interface */ +/* --------------------------------------------------------------------------*/ + +CMPIStatus InteropProviderCleanup( + CMPIInstanceMI * mi, + CMPIContext * ctx) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderCleanup"); - _SFCB_RETURN(st); } -/* ------------------------------------------------------------------ * - * Instance MI Functions - * ------------------------------------------------------------------ */ - +/* ------------------------------------------------------------------------- */ -CMPIStatus InteropProviderEnumInstanceNames(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref) +CMPIStatus InteropProviderEnumInstanceNames( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * ref) { - CMPIStatus st={CMPI_RC_OK,NULL}; + CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderEnumInstanceNames"); - if (interOpNameSpace(ref,NULL)!=1) _SFCB_RETURN(st); - st=InternalProviderEnumInstanceNames(NULL,ctx,rslt,ref); + + if (interOpNameSpace(ref,NULL) != 1) _SFCB_RETURN(st); + st=InternalProviderEnumInstanceNames(NULL, ctx, rslt, ref); + _SFCB_RETURN(st); } -CMPIStatus InteropProviderEnumInstances(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - char **properties) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderEnumInstances( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * ref, + char ** properties) { - CMPIStatus st={CMPI_RC_OK,NULL}; + CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderEnumInstances"); + // if (interOpNameSpace(ref,NULL)!=1) _SFCB_RETURN(st); - st=InternalProviderEnumInstances(NULL,ctx,rslt,ref,properties); + st=InternalProviderEnumInstances(NULL, ctx, rslt, ref, properties); + _SFCB_RETURN(st); } +/* ------------------------------------------------------------------------- */ -CMPIStatus InteropProviderGetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char **properties) +CMPIStatus InteropProviderGetInstance( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + char ** properties) { - CMPIStatus st; + CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderGetInstance"); - st=InternalProviderGetInstance(NULL,ctx,rslt,cop,properties); + + st = InternalProviderGetInstance(NULL, ctx, rslt, cop, properties); + _SFCB_RETURN(st); } -CMPIStatus InteropProviderCreateInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderCreateInstance( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + CMPIInstance * ci) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *cn = CMGetClassName(cop, NULL); - char *cns=cn->ft->getCharPtr(cn,NULL); + char *cns = cn->ft->getCharPtr(cn,NULL); _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderCreateInstance"); @@ -744,31 +847,36 @@ _SFCB_RETURN(st); } -CMPIStatus InteropProviderSetInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - CMPIInstance * ci, char **properties) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderSetInstance( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + CMPIInstance * ci, + char ** properties) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; - _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderSetInstance"); - _SFCB_RETURN(st); } -CMPIStatus InteropProviderDeleteInstance(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderDeleteInstance( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop) { CMPIStatus st = { CMPI_RC_OK, NULL }; CMPIString *cn = CMGetClassName(cop, NULL); - char *cns=cn->ft->getCharPtr(cn,NULL); - char *key=internalProviderNormalizeObjectPath(cop); + char *cns = cn->ft->getCharPtr(cn,NULL); + char *key = internalProviderNormalizeObjectPath(cop); Filter *fi; Subscription *su; - char *ns=(char*)CMGetNameSpace(cop,NULL)->hdl; + char *ns = (char*)CMGetNameSpace(cop,NULL)->hdl; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderDeleteInstance"); @@ -809,33 +917,44 @@ _SFCB_RETURN(st); } -CMPIStatus InteropProviderExecQuery(CMPIInstanceMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - char *lang, char *query) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderExecQuery( + CMPIInstanceMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + char * lang, + char * query) { CMPIStatus st = { CMPI_RC_ERR_NOT_SUPPORTED, NULL }; - return st; + _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderExecQuery"); + _SFCB_RETURN(st); } +/* --------------------------------------------------------------------------*/ +/* Method Provider Interface */ +/* --------------------------------------------------------------------------*/ -/* ---------------------------------------------------------------------------*/ -/* Method Provider Interface */ -/* ---------------------------------------------------------------------------*/ - -CMPIStatus InteropProviderMethodCleanup(CMPIMethodMI * mi, CMPIContext * ctx) +CMPIStatus InteropProviderMethodCleanup( + CMPIMethodMI * mi, + CMPIContext * ctx) { CMPIStatus st = { CMPI_RC_OK, NULL }; - return st; + _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderMethodCleanup"); + _SFCB_RETURN(st); } -CMPIStatus InteropProviderInvokeMethod(CMPIMethodMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * ref, - const char *methodName, - CMPIArgs * in, CMPIArgs * out) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderInvokeMethod( + CMPIMethodMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * ref, + const char * methodName, + CMPIArgs * in, + CMPIArgs * out) { CMPIStatus st = { CMPI_RC_OK, NULL }; char *ns=(char*)CMGetNameSpace(ref,NULL)->hdl; @@ -879,11 +998,11 @@ else if (strcasecmp(methodName, "_addHandler") == 0) { CMPIInstance *ci=in->ft->getArg(in,"handler",&st).value.inst; CMPIObjectPath *op=in->ft->getArg(in,"key",&st).value.ref; - CMPIString *str=CDToString(_broker,op,NULL); - CMPIString *ns=CMGetNameSpace(op,NULL); - _SFCB_TRACE(1,("--- _addHandler %s %s",(char*)ns->hdl,(char*)str->hdl)); + CMPIString *str=CDToString(_broker,op,NULL); + CMPIString *ns=CMGetNameSpace(op,NULL); + _SFCB_TRACE(1,("--- _addHandler %s %s",(char*)ns->hdl,(char*)str->hdl)); addHandler(ci,op); - } + } else if (strcasecmp(methodName, "_removeHandler") == 0) { CMPIObjectPath *op=in->ft->getArg(in,"key",&st).value.ref; @@ -901,81 +1020,88 @@ else { _SFCB_TRACE(1,("--- Invalid request method: %s",methodName)); - st.rc = CMPI_RC_ERR_METHOD_NOT_FOUND; + setStatus(&st, CMPI_RC_ERR_METHOD_NOT_FOUND, "Invalid request method"); } _SFCB_RETURN(st); } +/* --------------------------------------------------------------------------*/ +/* Association Provider Interface */ +/* --------------------------------------------------------------------------*/ -/* ------------------------------------------------------------------ * - * Association MI Functions - * ------------------------------------------------------------------ */ - -CMPIStatus InteropProviderAssociationCleanup(CMPIAssociationMI * mi, - CMPIContext * ctx) +CMPIStatus InteropProviderAssociationCleanup( + CMPIAssociationMI * mi, + CMPIContext * ctx) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderAssociationCleanup"); - _SFCB_RETURN(st); } -CMPIStatus InteropProviderAssociators(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - const char *assocClass, - const char *resultClass, - const char *role, - const char *resultRole, - char **propertyList) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderAssociators( + CMPIAssociationMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + const char * assocClass, + const char * resultClass, + const char * role, + const char * resultRole, + char ** propertyList) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderAssociators"); - _SFCB_RETURN(st); } -CMPIStatus InteropProviderAssociatorNames(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - const char *assocClass, - const char *resultClass, - const char *role, - const char *resultRole) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderAssociatorNames( + CMPIAssociationMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + const char * assocClass, + const char * resultClass, + const char * role, + const char * resultRole) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderAssociatorNames"); - _SFCB_RETURN(st); } -CMPIStatus InteropProviderReferences(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - const char *assocClass, - const char *role, char **propertyList) +/* ------------------------------------------------------------------------- */ + +CMPIStatus InteropProviderReferences( + CMPIAssociationMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + const char * assocClass, + const char * role, + char ** propertyList) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderReferences"); - _SFCB_RETURN(st); } +/* ------------------------------------------------------------------------- */ -CMPIStatus InteropProviderReferenceNames(CMPIAssociationMI * mi, - CMPIContext * ctx, - CMPIResult * rslt, - CMPIObjectPath * cop, - const char *assocClass, - const char *role) +CMPIStatus InteropProviderReferenceNames( + CMPIAssociationMI * mi, + CMPIContext * ctx, + CMPIResult * rslt, + CMPIObjectPath * cop, + const char * assocClass, + const char * role) { CMPIStatus st = { CMPI_RC_OK, NULL }; _SFCB_ENTER(TRACE_INDPROVIDER, "InteropProviderReferenceNames"); - _SFCB_RETURN(st); } @@ -988,5 +1114,8 @@ * ------------------------------------------------------------------ */ CMInstanceMIStub(InteropProvider, InteropProvider, _broker, CMNoHook); + CMAssociationMIStub(InteropProvider, InteropProvider, _broker, CMNoHook); + CMMethodMIStub(InteropProvider, InteropProvider, _broker, CMNoHook); + |
From: Gareth S B. <bes...@us...> - 2005-06-07 20:02:01
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15962 Modified Files: wbemcat Log Message: fix for missing CIMxxx headers Index: wbemcat =================================================================== RCS file: /cvsroot/sblim/sfcb/wbemcat,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- wbemcat 6 Jun 2005 18:59:06 -0000 1.5 +++ wbemcat 7 Jun 2005 20:01:52 -0000 1.6 @@ -66,8 +66,9 @@ # Necessary preamble specifying the length of the CIM-XML data my @preamble = ("POST /cimom HTTP/1.1\n", "Host:\n", - "Content-Type: application/xml; charset=\"utf-8\"\n". - "Content-Length: ", $size, "\n\n\n"); + "Content-Type: application/xml; charset=\"utf-8\"\n", + "Content-Length: ", $size, "CIMProtocolVersion: 1.0\n", + "CIMOperation: MethodCall\n", "\n\n\n"); # Pipe STDOUT to nc command # DEBUG: Comment out this line to see what data gets sent to the CIMOM |
From: Viktor M. <mih...@us...> - 2005-06-07 13:38:37
|
Update of /cvsroot/sblim/cmpi-base In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9939 Modified Files: configure.ac Log Message: Increased version number. Index: configure.ac =================================================================== RCS file: /cvsroot/sblim/cmpi-base/configure.ac,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- configure.ac 31 May 2005 14:28:08 -0000 1.7 +++ configure.ac 7 Jun 2005 13:38:16 -0000 1.8 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT(SBLIM BaseOS Providers Base, 1.5.1, sbl...@li...,sblim-cmpi-base) +AC_INIT(SBLIM BaseOS Providers Base, 1.5.2, sbl...@li...,sblim-cmpi-base) AC_CONFIG_SRCDIR([OSBase_Common.c]) AC_CONFIG_HEADER([config.h]) AM_INIT_AUTOMAKE |
From: Viktor M. <mih...@us...> - 2005-06-07 13:18:07
|
Update of /cvsroot/sblim/cmpi-samples/autotools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31200 Modified Files: provider-register.sh Log Message: Bug fixed: 1214090 Provider Deregistration. Index: provider-register.sh =================================================================== RCS file: /cvsroot/sblim/cmpi-samples/autotools/provider-register.sh,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- provider-register.sh 12 May 2005 15:10:07 -0000 1.5 +++ provider-register.sh 7 Jun 2005 13:17:59 -0000 1.6 @@ -79,10 +79,12 @@ done #produce Capabilities + let serial=0 for rf in $regfiles do cat $rf | grep -v '^[[:space:]]*#.*' | while read CLASSNAME NAMESPACE PROVIDERNAME PROVIDERMODULE CAPS do + let serial=serial+1 numcap= for cap in $CAPS do @@ -121,7 +123,7 @@ Namespaces = {"$NAMESPACE"}; SupportedProperties = NULL; SupportedMethods = NULL; - CapabilityID = "1"; + CapabilityID = "$serial"; }; EOFC @@ -241,7 +243,7 @@ echo "Error: wbemexec not found" >&2 return 1 fi - CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1` + CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1 | grep -v '^CIM_'` for cls in $CLASSES do chatter Delete CIM Class $cls |
From: Viktor M. <mih...@us...> - 2005-06-07 13:12:57
|
Update of /cvsroot/sblim/cmpi-base/test/system/linux In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27476/test/system/linux Modified Files: Linux_OperatingSystem.system Log Message: Bugs fixed: 1214090 Provider Deregistration. 1214092 CPU Percentage Calculation. Index: Linux_OperatingSystem.system =================================================================== RCS file: /cvsroot/sblim/cmpi-base/test/system/linux/Linux_OperatingSystem.system,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Linux_OperatingSystem.system 29 Mar 2004 15:36:31 -0000 1.5 +++ Linux_OperatingSystem.system 7 Jun 2005 13:12:43 -0000 1.6 @@ -19,7 +19,7 @@ RequestedState : -eq 2 EnabledDefault : -eq 2 Status : -empty -OperationalStatus : -eq 2 +OperationalStatus : -set OSType : -eq 36 Version : -eq -cmd Linux_OperatingSystem.version.sh |
From: Viktor M. <mih...@us...> - 2005-06-07 13:12:55
|
Update of /cvsroot/sblim/cmpi-base/mof In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27476/mof Modified Files: Linux_BaseIndication.registration Log Message: Bugs fixed: 1214090 Provider Deregistration. 1214092 CPU Percentage Calculation. Index: Linux_BaseIndication.registration =================================================================== RCS file: /cvsroot/sblim/cmpi-base/mof/Linux_BaseIndication.registration,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Linux_BaseIndication.registration 26 Apr 2005 16:39:40 -0000 1.2 +++ Linux_BaseIndication.registration 7 Jun 2005 13:12:43 -0000 1.3 @@ -2,7 +2,7 @@ Linux_Processor root/cimv2 OSBase_ProcessorProvider cmpiOSBase_ProcessorProvider instance Linux_UnixProcess root/cimv2 OSBase_UnixProcessProvider cmpiOSBase_UnixProcessProvider instance Linux_ComputerSystem root/cimv2 OSBase_ComputerSystemProvider cmpiOSBase_ComputerSystemProvider instance -Linux_OperatingSystem root/cimv2 OSBase_OperatingSystemProvider cmpiOSBase_OperatingSystemProvider instance indication +Linux_OperatingSystem root/cimv2 OSBase_OperatingSystemProvider cmpiOSBase_OperatingSystemProvider instance Linux_OperatingSystemStatisticalData root/cimv2 OSBase_OperatingSystemStatisticalDataProvider cmpiOSBase_OperatingSystemStatisticalDataProvider instance Linux_BaseBoard root/cimv2 OSBase_BaseBoardProvider cmpiOSBase_BaseBoardProvider instance Linux_RunningOS root/cimv2 OSBase_RunningOSProvider cmpiOSBase_RunningOSProvider instance association @@ -10,3 +10,5 @@ Linux_OperatingSystemStatistics root/cimv2 OSBase_OperatingSystemStatisticsProvider cmpiOSBase_OperatingSystemStatisticsProvider instance association Linux_CSProcessor root/cimv2 OSBase_CSProcessorProvider cmpiOSBase_CSProcessorProvider instance association Linux_CSBaseBoard root/cimv2 OSBase_CSBaseBoardProvider cmpiOSBase_CSBaseBoardProvider instance association +Linux_OperatingSystemIndication root/cimv2 OSBase_OperatingSystemProvider cmpiOSBase_OperatingSystemProvider indication +CIM_InstModification root/cimv2 OSBase_OperatingSystemProvider cmpiOSBase_OperatingSystemProvider indication |
From: Viktor M. <mih...@us...> - 2005-06-07 13:12:55
|
Update of /cvsroot/sblim/cmpi-base In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27476 Modified Files: ChangeLog NEWS README.INDICATION cmpiOSBase_OperatingSystem.c provider-register.sh Log Message: Bugs fixed: 1214090 Provider Deregistration. 1214092 CPU Percentage Calculation. Index: NEWS =================================================================== RCS file: /cvsroot/sblim/cmpi-base/NEWS,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- NEWS 31 May 2005 14:28:08 -0000 1.5 +++ NEWS 7 Jun 2005 13:12:42 -0000 1.6 @@ -1,3 +1,10 @@ +Changes in 1.5.2 +================ + +Bugs Fixed: +- 1214092 Improved algorithm for CPU percentage calculation. +- 1214090 Fixed provider registration. + Changes in 1.5.1 ================ Index: README.INDICATION =================================================================== RCS file: /cvsroot/sblim/cmpi-base/README.INDICATION,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- README.INDICATION 6 Apr 2005 15:43:16 -0000 1.3 +++ README.INDICATION 7 Jun 2005 13:12:42 -0000 1.4 @@ -15,6 +15,7 @@ consumer 03/09/2005: added sample indication subscription for Pegasus to test/indication directory + 06/01/2005: removed references to old build process. /* ---------------------------------------------------------------------------*/ @@ -27,10 +28,6 @@ - install the SBLIM package indication_helper. Please follow the instructions in the package. -- remove -DNOEVENTS from the CFLAGS (makefile) -- for PEGASUS: - - edit mof/makefile.pegasus to enable the registration of the Indication - class and provider (SimpleDisplayConsumerR.mof, Linux_BaseIndicationReg.mof) - now build the cmpi-base package as described in the README @@ -42,7 +39,7 @@ need to register the Pegasus Simple Display consumer. The registration command and mof is: -> cimmofl -nroot/PG_InterOp $(PEGASUS_ROOT)/src/Providers/sample/Load/SimpleDisplayConsumerR.mof +> cimmofl -nroot/PG_InterOp $PEGASUS_ROOT/src/Providers/sample/Load/SimpleDisplayConsumerR.mof The openPegasus SimpleDisplayConsumer writes received indications into the indicationLog file. You only need to set the PEGASUS_DISPLAYCONSUMER_DIR Index: cmpiOSBase_OperatingSystem.c =================================================================== RCS file: /cvsroot/sblim/cmpi-base/cmpiOSBase_OperatingSystem.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- cmpiOSBase_OperatingSystem.c 14 Apr 2005 14:37:05 -0000 1.17 +++ cmpiOSBase_OperatingSystem.c 7 Jun 2005 13:12:42 -0000 1.18 @@ -24,6 +24,7 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <pthread.h> #include "cmpidt.h" #include "cmpimacs.h" @@ -57,6 +58,8 @@ static int getcpu(CpuSample * cps); +static int getpctcpu(CpuSample * cps); + /* ---------------------------------------------------------------------------*/ @@ -150,8 +153,31 @@ cps->cpu=cps->total - idle; return 0; } - else + else { return -1; + } +} + +static int getpctcpu(CpuSample * cps) +{ + static CpuSample ocps = {0,0}; + int pctcpu = 0; + static pthread_mutex_t cpumux = PTHREAD_MUTEX_INITIALIZER; + if (cps) { + if (cps->total == ocps.total) { + if (cps->cpu == ocps.cpu) { + pctcpu = 0; + } else { + pctcpu = 100; + } + } else { + pctcpu = (100*(cps->cpu-ocps.cpu))/(cps->total-ocps.total); + } + ocps.total = cps->total; + ocps.cpu = cps->cpu; + } + pthread_mutex_unlock(&cpumux); + return pctcpu; } static CMPIInstance * _makeOS( CMPIBroker * _broker, @@ -220,7 +246,7 @@ free(keys); /* calculate cpu percentage */ - if(getcpu(&cs) == 0) { pctcpu = (100*cs.cpu)/cs.total; } + if(getcpu(&cs) == 0) { pctcpu = getpctcpu(&cs); } CMSetProperty( ci, "CSCreationClassName", CSCreationClassName, CMPI_chars ); CMSetProperty( ci, "CSName", get_system_name(), CMPI_chars ); @@ -334,7 +360,7 @@ unsigned short pctcpu = 0; if(getcpu(&cs) == 0) { - pctcpu = 100*cs.cpu/cs.total; + pctcpu = getpctcpu(&cs); _OSBASE_TRACE(2,("--- _check_OperationalStatus(): TotalCPUTimePct %d",pctcpu)); if(pctcpu>=90 && *OperationalStatus!=4) { *OperationalStatus = 4; Index: provider-register.sh =================================================================== RCS file: /cvsroot/sblim/cmpi-base/provider-register.sh,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- provider-register.sh 12 May 2005 15:15:07 -0000 1.7 +++ provider-register.sh 7 Jun 2005 13:12:42 -0000 1.8 @@ -79,10 +79,12 @@ done #produce Capabilities + let serial=0 for rf in $regfiles do cat $rf | grep -v '^[[:space:]]*#.*' | while read CLASSNAME NAMESPACE PROVIDERNAME PROVIDERMODULE CAPS do + let serial=serial+1 numcap= for cap in $CAPS do @@ -121,7 +123,7 @@ Namespaces = {"$NAMESPACE"}; SupportedProperties = NULL; SupportedMethods = NULL; - CapabilityID = "1"; + CapabilityID = "$serial"; }; EOFC @@ -241,7 +243,7 @@ echo "Error: wbemexec not found" >&2 return 1 fi - CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1` + CLASSES=`cat $myregs 2> /dev/null | grep -v '^[[:space:]]*#.*' | cut -d ' ' -f 1 | grep -v '^CIM_'` for cls in $CLASSES do chatter Delete CIM Class $cls Index: ChangeLog =================================================================== RCS file: /cvsroot/sblim/cmpi-base/ChangeLog,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- ChangeLog 31 May 2005 14:28:08 -0000 1.9 +++ ChangeLog 7 Jun 2005 13:12:42 -0000 1.10 @@ -1,3 +1,22 @@ +2005-06-07 <mihajlov@localhost.localdomain> + + * mof/Linux_BaseIndication.registration: + Bug 1214090: Fixed registration information for indication provider. + + * cmpiOSBase_OperatingSystem.c (getpctcpu): + Bug 1214092: Improved algorithm for computation of the CPU utilization. + + * test/system/linux/Linux_OperatingSystem.system: + Bug 1214092:Take into account that OperationalStatus is more volatile + now. + +2005-06-01 <mih...@dy...> + + * provider-register.sh: + Bug 1214090: Make sure not to delete CIM_ classes on de-registration. + Use unique capability id to allow multiple registrations + of a provider. + 2005-05-31 <mih...@dy...> * OSBase_UnixProcess.c: |
From: Viktor M. <mih...@us...> - 2005-06-07 12:52:26
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16272 Modified Files: configure.ac sfcBroker.c Log Message: Removed copyright blurb and bumped version to 0.9.0. Index: configure.ac =================================================================== RCS file: /cvsroot/sblim/sfcb/configure.ac,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- configure.ac 6 Jun 2005 16:05:23 -0000 1.12 +++ configure.ac 7 Jun 2005 12:52:17 -0000 1.13 @@ -21,7 +21,7 @@ # Process this file with autoconf to produce a configure script. -AC_INIT(Small Footprint CIM Broker, 0.8.9, sc...@de..., sblim-sfcb) +AC_INIT(Small Footprint CIM Broker, 0.9.0, sbl...@li..., sblim-sfcb) AC_CONFIG_SRCDIR([providerDrv.c]) AM_INIT_AUTOMAKE Index: sfcBroker.c =================================================================== RCS file: /cvsroot/sblim/sfcb/sfcBroker.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- sfcBroker.c 6 Jun 2005 16:05:23 -0000 1.13 +++ sfcBroker.c 7 Jun 2005 12:52:17 -0000 1.14 @@ -82,8 +82,6 @@ extern char * configfile; -char * copyright = "(C) Copyright IBM Corp. 2005"; - void clean_up(int sd, const char *the_file) { close(sd); @@ -368,7 +366,6 @@ startLogging("sfcb"); mlogf(M_INFO,M_SHOW,"--- %s V" sfcHttpDaemonVersion " started - %d\n", name, currentProc); - mlogf(M_INFO,M_SHOW,"--- (C) Copyright IBM Corp. 2004\n"); for (c = 0, i = 1; i < argc; i++) { if (strcmp(argv[i], "-d") == 0) |