2016-04-02 8 views
2

Durum böyle bir Artifact Türü tanımlayan şu şekildedir: Ben de bir işleyici tanımlar Aynı zamandaYönetişim Eserlerinde wow2 Yönetişimi ile Nasıl Alabilirim?

<artifactType type="application/vnd.wso2-tets+xml" shortName="test" singularLabel="tests" pluralLabel="tests" hasNamespace="false" iconSet="9"> 
    <storagePath>/applications/@{name}/@{overview_version}</storagePath> 
    <nameAttribute>overview_name</nameAttribute> 
    <ui> 
     <list> 
      <column name="Name"> 
       <data type="path" value="overview_name" href="/applications/@{name}"/> 
      </column> 
      <column name="Version"> 
       <data type="path" value="overview_version" href="@{storagePath}"/> 
      </column> 
     </list> 
    </ui> 
    <content> 
     <table name="Overview"> 
      <field type="text" required="true"> 
       <name>Name</name> 
      </field> 
      <field type="text" required="true"> 
       <name>Version</name> 
      </field> 
      <field type="text-area"> 
       <name>Description</name> 
      </field> 
      <field type="options"> 
     <name label="Zcos">Zcos</name> 
     <values class="cn.oge.wso2.populator.AlgPopulator"/> 
     </field> 
     </table> 
    </content> 
</artifactType> 

, MediaType "application/vnd.wso2-tets + xml" böyle işleyicisi kodudur : Ben Örneğin, bir Artifacti eklemek için UI kullandığınızda

public class XcosMediaTypeHandler extends Handler { 

    public Resource get(RequestContext requestContext) throws RegistryException { 
     return null; 
    } 

    public void put(RequestContext requestContext) throws RegistryException { 
     Resource resource = requestContext.getResource(); 
     String name = ""; 
     String version = ""; 
     String description = ""; 
     String zcos = ""; 

     byte[] content = (byte[]) resource.getContent(); 
     ByteArrayInputStream in = new ByteArrayInputStream(content); 
     OMElement docElement = null; 
     try { 
      StAXOMBuilder builder = new StAXOMBuilder(in); 
      docElement = builder.getDocumentElement(); 
     } catch (Exception ae) { 
      throw new RegistryException(
        "Failed to parse the propject proposal. " 
          + "All project proposals should be in XML format."); 
     } 
     System.out.println("=========================================="); 
     OMElement firstElement = docElement.getFirstElement(); 
     System.out.println(firstElement); 
     Iterator<OMElement> ite = firstElement.getChildElements(); 
     for (OMElement e = ite.next(); ite.hasNext(); e = ite.next()) { 
      if (e.getLocalName().equals("name")) { 
       name = e.getText(); 
      } else if (e.getLocalName().equals("version")) { 
       version = e.getText(); 
      } else if (e.getLocalName().equals("description")) { 
       description = e.getText(); 
      } else if (e.getLocalName().equals("zcos")) { 
       zcos = e.getText(); 
      } 
     } 

     System.out.println("Name:" + name); 
     System.out.println("Version:" + version); 
     System.out.println("Description:" + description); 
     System.out.println("zcos:" + zcos);   
    } 

    public void importResource(RequestContext requestContext) 
      throws RegistryException { 
     System.out.println("importResource"); 
    } 

    public void delete(RequestContext requestContext) throws RegistryException { 

    } 

    public void putChild(RequestContext requestContext) 
      throws RegistryException { 
     System.out.println("putChild"); 
    } 

    public void importChild(RequestContext requestContext) 
      throws RegistryException { 
     System.out.println("importChild"); 
    } 

} 

soru geliyor: enter image description here

yukarıdaki kodda, Ad, Sürüm ve Açıklama için özellik değerini elde edebilirsiniz. ancak Zcos için öznitelik değerini alamıyorum. Eserin tanımında dosyalanmış türün Zos'u seçeneklerdir, dosyalanan türün diğer nitelikleri metin veya metin alanıdır. Neden Zcos özellik değerini alamıyorum? Teşekkür peşin! daha az karışıklık için

+0

İşleyicide hata ayıklayabilir ve görebilir misiniz? – harsha89

+0

Teşekkür ederim cevap try Denerim – Pourquoi

+0

@pourquoi aşağıdaki cevabı size yardımcı oldu mu? Eğer değilse lütfen bana ne olduğunu bildirin. – tkr

cevap

0

// Get the first OMElement child with name 'overview' 
OMElement elementOverview = getFirstChild(docElement, "overview"); 
// Get the first OMElement child with name 'zcos' and appending absolute path prefix. 
String zcos = getFirstChild(elementOverview, "zcos").getText(); 

bir örnek kod this blog post bulabilirsiniz bulmak için, kodunun altına

<field type="options"> 
    <name label="Zcos">zcos</name> 
    <values class="cn.oge.wso2.populator.AlgPopulator"/> 
</field> 

bulmak zcos değeri elde etmek, dosyalanan başvuru küçük aşağıda gibi olun.