I want to create a SonarQube XPath custom rule that detects (with SSLR java toolkit) all classes that do not declare a given method. I hoped to be able to do it with [not(contains(...))], but I'm stuck.
For instance, how can I detect all classes that do not declare the public String toString() method ?
//typeDeclaration//classDeclaration (that do not contain a memberDecl of type String, that has an IDENTIFIER with value "toString" and has no formal parameters)
Here follows a java example class containing the method (this one should not match the XPath expression)
public class Example {
public String toString() {
return "";
}
}
Here follows the XML code corresponding to the AST of the Example java class.
<compilationUnit tokenValue="public" tokenLine="1" tokenColumn="0">
<typeDeclaration tokenValue="public" tokenLine="1" tokenColumn="0">
<modifier tokenValue="public" tokenLine="1" tokenColumn="0">
<PUBLIC tokenValue="public" tokenLine="1" tokenColumn="0">
<TOKEN tokenValue="public" tokenLine="1" tokenColumn="0"/>
</PUBLIC>
</modifier>
<classDeclaration tokenValue="class" tokenLine="1" tokenColumn="7">
<CLASS tokenValue="class" tokenLine="1" tokenColumn="7">
<TOKEN tokenValue="class" tokenLine="1" tokenColumn="7"/>
</CLASS>
<IDENTIFIER tokenValue="Example" tokenLine="1" tokenColumn="13">
<TOKEN tokenValue="Example" tokenLine="1" tokenColumn="13"/>
</IDENTIFIER>
<classBody tokenValue="{" tokenLine="1" tokenColumn="21">
<LWING tokenValue="{" tokenLine="1" tokenColumn="21">
<TOKEN tokenValue="{" tokenLine="1" tokenColumn="21"/>
</LWING>
<classBodyDeclaration tokenValue="public" tokenLine="2" tokenColumn="2">
<modifier tokenValue="public" tokenLine="2" tokenColumn="2">
<PUBLIC tokenValue="public" tokenLine="2" tokenColumn="2">
<TOKEN tokenValue="public" tokenLine="2" tokenColumn="2"/>
</PUBLIC>
</modifier>
<memberDecl tokenValue="String" tokenLine="2" tokenColumn="9">
<type tokenValue="String" tokenLine="2" tokenColumn="9">
<classType tokenValue="String" tokenLine="2" tokenColumn="9">
<IDENTIFIER tokenValue="String" tokenLine="2" tokenColumn="9">
<TOKEN tokenValue="String" tokenLine="2" tokenColumn="9"/>
</IDENTIFIER>
</classType>
</type>
<IDENTIFIER tokenValue="toString" tokenLine="2" tokenColumn="16">
<TOKEN tokenValue="toString" tokenLine="2" tokenColumn="16"/>
</IDENTIFIER>
<methodDeclaratorRest tokenValue="(" tokenLine="2" tokenColumn="24">
<formalParameters tokenValue="(" tokenLine="2" tokenColumn="24">
<LPAR tokenValue="(" tokenLine="2" tokenColumn="24">
<TOKEN tokenValue="(" tokenLine="2" tokenColumn="24"/>
</LPAR>
<RPAR tokenValue=")" tokenLine="2" tokenColumn="25">
<TOKEN tokenValue=")" tokenLine="2" tokenColumn="25"/>
</RPAR>
</formalParameters>
<methodBody tokenValue="{" tokenLine="2" tokenColumn="27">
<block tokenValue="{" tokenLine="2" tokenColumn="27">
<LWING tokenValue="{" tokenLine="2" tokenColumn="27">
<TOKEN tokenValue="{" tokenLine="2" tokenColumn="27"/>
</LWING>
<blockStatements tokenValue="return" tokenLine="3" tokenColumn="4">
<blockStatement tokenValue="return" tokenLine="3" tokenColumn="4">
<statement tokenValue="return" tokenLine="3" tokenColumn="4">
<returnStatement tokenValue="return" tokenLine="3" tokenColumn="4">
<RETURN tokenValue="return" tokenLine="3" tokenColumn="4">
<TOKEN tokenValue="return" tokenLine="3" tokenColumn="4"/>
</RETURN>
<expression tokenValue="""" tokenLine="3" tokenColumn="11">
<primary tokenValue="""" tokenLine="3" tokenColumn="11">
<literal tokenValue="""" tokenLine="3" tokenColumn="11">
<LITERAL tokenValue="""" tokenLine="3" tokenColumn="11">
<TOKEN tokenValue="""" tokenLine="3" tokenColumn="11"/>
</LITERAL>
</literal>
</primary>
</expression>
<SEMI tokenValue=";" tokenLine="3" tokenColumn="13">
<TOKEN tokenValue=";" tokenLine="3" tokenColumn="13"/>
</SEMI>
</returnStatement>
</statement>
</blockStatement>
</blockStatements>
<RWING tokenValue="}" tokenLine="4" tokenColumn="2">
<TOKEN tokenValue="}" tokenLine="4" tokenColumn="2"/>
</RWING>
</block>
</methodBody>
</methodDeclaratorRest>
</memberDecl>
</classBodyDeclaration>
<RWING tokenValue="}" tokenLine="5" tokenColumn="0">
<TOKEN tokenValue="}" tokenLine="5" tokenColumn="0"/>
</RWING>
</classBody>
</classDeclaration>
</typeDeclaration>
<EOF tokenValue="" tokenLine="5" tokenColumn="1"/>
</compilationUnit>
Thank you in advance.
Here is the solution to my own question :
//classBody[not(//memberDecl[type[#tokenValue='String'] and IDENTIFIER[#tokenValue='toString'] and methodDeclaratorRest/formalParameters[not(formalParameterDecls)]])]
Related
Given the XML below, I am trying to write a XPath which returns only this match:
<TOKEN BEGIN="17" END="19" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="C" DOUBLE="YES" />
This is the input file:
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT>
<SECTION>
<PARAGRAPH TRACK="4">
<SENTENCE NAME="PRIMARY" COUNT="4">
<TOKEN BEGIN="9" END="11" SENTENCE_BEGIN="0" SENTENCE_END="156" />
<TOKEN BEGIN="32" END="37" SENTENCE_BEGIN="0" SENTENCE_END="156" />
<TOKEN BEGIN="167" END="169" SENTENCE_BEGIN="158" SENTENCE_END="316" />
<TOKEN BEGIN="210" END="215" SENTENCE_BEGIN="158" SENTENCE_END="316" />
</SENTENCE>
<SENTENCE NAME="SECONDARY" COUNT="2">
<TOKEN BEGIN="139" END="141" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="A" DOUBLE="YES" />
<TOKEN BEGIN="143" END="145" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="B" />
</SENTENCE>
<SENTENCE NAME="SECONDARY" COUNT="1">
<TOKEN BEGIN="17" END="19" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="C" DOUBLE="YES" />
</SENTENCE>
</PARAGRAPH>
</SECTION>
</DOCUMENT>
This is my xpath string:
//TOKEN [#DOUBLE] [#BEGIN <= ../../SENTENCE[#NAME='PRIMARY']/TOKEN/#END] [ (#SENTENCE_BEGIN = ../../SENTENCE[#NAME='PRIMARY']/TOKEN/#SENTENCE_BEGIN) and (#SENTENCE_END = ../../SENTENCE[#NAME='PRIMARY']/TOKEN/#SENTENCE_END) ]
I receive as output two nodes:
<TOKEN BEGIN="17" END="19" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="C" DOUBLE="YES" />
and
<TOKEN BEGIN="139" END="141" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="A" DOUBLE="YES" />
The result above is not correct because I want to check that:
the SENTENCE_BEGIN SENTENCE_END values of TOKEN[#DOULBE=YES] and
SENTENCE[#NAME="PRIMARY"]/TOKEN are the same, and
the value of the attribute BEGIN of TOKEN[#DOULBE=YES] is less than the BEGIN of SENTENCE[#NAME="PRIMARY"]/TOKEN
The result
<TOKEN BEGIN="139" END="141" SENTENCE_BEGIN="0" SENTENCE_END="156" PROP="A" DOUBLE="YES" />
is not correct, as the BEGIN value (139) is greater than the corresponding BEGIN values of the tokens with the same SENTENCE_BEGIN SENTENCE_END values:
<TOKEN BEGIN="9" END="11" SENTENCE_BEGIN="0" SENTENCE_END="156" />
<TOKEN BEGIN="32" END="37" SENTENCE_BEGIN="0" SENTENCE_END="156" />
How can I modify the code line to obtain the desired result?
Since you've tagged your question XSLT 1.0, I'd use XSLT instead of pure XPath. That way you can use xsl:key and also current().
Example...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="primary_tokens"
match="SENTENCE[#NAME='PRIMARY']/TOKEN"
use="concat(#SENTENCE_BEGIN,'|',#SENTENCE_END)"/>
<xsl:template match="/*">
<xsl:for-each select=".//TOKEN[#DOUBLE='YES'][key('primary_tokens',concat(#SENTENCE_BEGIN,'|',#SENTENCE_END))]">
<xsl:if test="key('primary_tokens',concat(#SENTENCE_BEGIN,'|',#SENTENCE_END))[#BEGIN > current()/#BEGIN]">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Fiddle: http://xsltfiddle.liberty-development.net/gWmuiJ8
I am trying to develop an MDB for listening to remote queue in JBoss7, I Didn't receive messages from the queue.
I got warnings in the server log:
11:32:41,882 WARN [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl] (hornetq-failure-check-thread) Connection failure has been detected: Did not receive data from /137.72.223.212:50835. It is likely the client has exited or crashed without closing its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be closed. [code=3]
11:32:41,882 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Client connection failed, clearing up resources for session a79ee8f8-6a4e-11e4-b696-d65d20524153
11:32:41,882 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Cleared up resources for session a79ee8f8-6a4e-11e4-b696-d65d20524153
11:32:41,882 WARN [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl] (hornetq-failure-check-thread) Connection failure has been detected: Did not receive data from /137.72.223.212:50834. It is likely the client has exited or crashed without closing its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be closed. [code=3]
11:32:41,897 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Client connection failed, clearing up resources for session a797bd07-6a4e-11e4-b696-d65d20524153
11:32:41,897 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Cleared up resources for session a797bd07-6a4e-11e4-b696-d65d20524153
11:32:41,897 WARN [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl] (hornetq-failure-check-thread) Connection failure has been detected: Did not receive data from /137.72.223.212:50833. It is likely the client has exited or crashed without closing its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be closed. [code=3]
11:32:41,913 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Client connection failed, clearing up resources for session a7930216-6a4e-11e4-b696-d65d20524153
11:32:41,913 WARN [org.hornetq.core.server.impl.ServerSessionImpl] (hornetq-failure-check-thread) Cleared up resources for session a7930216-6a4e-11e4-b696-d65d20524153
11:32:41,913 WARN [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl] (hornetq-failure-check-thread) Connection failure has been detected: Did not receive data from /137.72.223.212:50836. It is likely the client has exited or crashed without closing its connection, or the network between the server and client has failed. You also might have configured connection-ttl and client-failure-check-period incorrectly. Please check user manual for more information. The connection will now be closed. [code=3]
My MDB configuration:
#MessageDriven(activationConfig = {
#ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
#ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/queue/MyQueue") ,
#ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "RemoteConnectionFactory"),
#ActivationConfigProperty(propertyName = "connectorClassName", propertyValue = "org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"),
#ActivationConfigProperty(propertyName = "connectionParameters", propertyValue = "host=vm-thi-blg-qa2;port=5445"),
#ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
})
The JBoss standalone.xml:
<?xml version='1.0' encoding='UTF-8'?>
<server xmlns="urn:jboss:domain:1.2">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.cmp"/>
<extension module="org.jboss.as.configadmin"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jacorb"/>
<extension module="org.jboss.as.jaxr"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jdr"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.jsr77"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.mail"/>
<extension module="org.jboss.as.messaging"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.osgi"/>
<extension module="org.jboss.as.pojo"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.threads"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.web"/>
<extension module="org.jboss.as.webservices"/>
<extension module="org.jboss.as.weld"/>
</extensions>
<management>
<security-realms>
<security-realm name="ManagementRealm">
<authentication>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
</security-realm>
<security-realm name="ApplicationRealm">
<authentication>
<properties path="application-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
</security-realm>
</security-realms>
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket-binding native="management-native"/>
</native-interface>
<http-interface security-realm="ManagementRealm">
<socket-binding http="management-http"/>
</http-interface>
</management-interfaces>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:1.1">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="jacorb">
<level name="WARN"/>
</logger>
<logger category="jacorb.config">
<level name="ERROR"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
<subsystem xmlns="urn:jboss:domain:cmp:1.0"/>
<subsystem xmlns="urn:jboss:domain:configadmin:1.0"/>
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<security>
<user-name>jala1</user-name>
<password>jala</password>
</security>
</datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.1">
<deployment-scanner path="deployments" relative-to="jboss.server.base.dir" scan-interval="5000"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:1.0"/>
<subsystem xmlns="urn:jboss:domain:ejb3:1.2">
<session-bean>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
<stateful default-access-timeout="5000" cache-ref="simple"/>
<singleton default-access-timeout="5000"/>
</session-bean>
<mdb>
<resource-adapter-ref resource-adapter-name="hornetq-ra"/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>
<pools>
<bean-instance-pools>
<strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
<strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>
</bean-instance-pools>
</pools>
<caches>
<cache name="simple" aliases="NoPassivationCache"/>
<cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>
</caches>
<passivation-stores>
<file-passivation-store name="file"/>
</passivation-stores>
<async thread-pool-name="default"/>
<timer-service thread-pool-name="default">
<data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>
</timer-service>
<remote connector-ref="remoting-connector" thread-pool-name="default"/>
<thread-pools>
<thread-pool name="default">
<max-threads count="10"/>
<keepalive-time time="100" unit="milliseconds"/>
</thread-pool>
</thread-pools>
<iiop enable-by-default="false" use-qualified-name="false"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="hibernate">
<cache-container name="hibernate" default-cache="local-query">
<local-cache name="entity">
<transaction mode="NON_XA"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="local-query">
<transaction mode="NONE"/>
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="timestamps">
<transaction mode="NONE"/>
<eviction strategy="NONE"/>
</local-cache>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jacorb:1.1">
<orb>
<initializers security="on" transactions="spec"/>
</orb>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxr:1.1">
<connection-factory jndi-name="java:jboss/jaxr/ConnectionFactory"/>
<properties/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<subsystem xmlns="urn:jboss:domain:jca:1.1">
<archive-validation enabled="true" fail-on-error="true" fail-on-warn="false"/>
<bean-validation enabled="true"/>
<default-workmanager>
<short-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</short-running-threads>
<long-running-threads>
<core-threads count="50"/>
<queue-length count="50"/>
<max-threads count="50"/>
<keepalive-time time="10" unit="seconds"/>
</long-running-threads>
</default-workmanager>
<cached-connection-manager/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jdr:1.0"/>
<subsystem xmlns="urn:jboss:domain:jmx:1.1">
<show-model value="true"/>
<remoting-connector/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.0">
<jpa default-datasource=""/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jsr77:1.0"/>
<subsystem xmlns="urn:jboss:domain:mail:1.0">
<mail-session jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
</subsystem>
<subsystem xmlns="urn:jboss:domain:messaging:1.1">
<hornetq-server>
<persistence-enabled>true</persistence-enabled>
<journal-file-size>102400</journal-file-size>
<journal-min-files>2</journal-min-files>
<connectors>
<netty-connector name="netty" socket-binding="messaging"/>
<netty-connector name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
</netty-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging"/>
<netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<address-full-policy>BLOCK</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="RemoteConnectionFactory"/>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/JmsXA"/>
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="testQueue">
<entry name="queue/test"/>
<entry name="java:jboss/exported/jms/queue/test"/>
</jms-queue>
<jms-queue name="MyQueue">
<entry name="java:/jms/MyQueue"/>
<durable>false</durable>
</jms-queue>
<jms-queue name="q">
<entry name="java:/queue/MyQueue"/>
<durable>true</durable>
</jms-queue>
<jms-topic name="testTopic">
<entry name="topic/test"/>
<entry name="java:jboss/exported/jms/topic/test"/>
</jms-topic>
</jms-destinations>
</hornetq-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:1.1"/>
<subsystem xmlns="urn:jboss:domain:osgi:1.2" activation="lazy">
<properties>
<property name="org.osgi.framework.startlevel.beginning">
1
</property>
</properties>
<capabilities>
<capability name="javax.servlet.api:v25"/>
<capability name="javax.transaction.api"/>
<capability name="org.apache.felix.log" startlevel="1"/>
<capability name="org.jboss.osgi.logging" startlevel="1"/>
<capability name="org.apache.felix.configadmin" startlevel="1"/>
<capability name="org.jboss.as.osgi.configadmin" startlevel="1"/>
</capabilities>
</subsystem>
<subsystem xmlns="urn:jboss:domain:pojo:1.0"/>
<subsystem xmlns="urn:jboss:domain:remoting:1.1">
<connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
<subsystem xmlns="urn:jboss:domain:sar:1.0"/>
<subsystem xmlns="urn:jboss:domain:security:1.1">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="RealmUsersRoles" flag="required">
<module-option name="usersProperties" value="${jboss.server.config.dir}/application-users.properties"/>
<module-option name="rolesProperties" value="${jboss.server.config.dir}/application-roles.properties"/>
<module-option name="realm" value="ApplicationRealm"/>
<module-option name="password-stacking" value="useFirstPass"/>
<module-option name="unauthenticatedIdentity" value="guest"/>
</login-module>
</authentication>
</security-domain>
<security-domain name="jboss-web-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
<security-domain name="jboss-ejb-policy" cache-type="default">
<authorization>
<policy-module code="Delegating" flag="required"/>
</authorization>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:threads:1.1"/>
<subsystem xmlns="urn:jboss:domain:transactions:1.1">
<core-environment>
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
<coordinator-environment default-timeout="300"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:1.1">
<modify-wsdl-address>true</modify-wsdl-address>
<wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
<endpoint-config name="Standard-Endpoint-Config"/>
<endpoint-config name="Recording-Endpoint-Config">
<pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
<handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
</pre-handler-chain>
</endpoint-config>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:1.0"/>
</profile>
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:0.0.0.0}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="unsecure">
<inet-address value="${jboss.bind.address.unsecure:127.0.0.1}"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="management-native" interface="management" port="${jboss.management.native.port:9999}"/>
<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
<socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9443}"/>
<socket-binding name="ajp" port="8009"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jacorb" interface="unsecure" port="3528"/>
<socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-throughput" port="5455"/>
<socket-binding name="osgi-http" interface="management" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
</socket-binding-group>
<deployments>
<deployment name="loadSimulator.war" runtime-name="loadSimulator.war">
<content sha1="ad5c4080accb0e644bcb0bf2842f8f230fbe8e75"/>
</deployment>
<deployment name="Hops.war" runtime-name="Hops.war" enabled="false">
<content sha1="ba2746c8e115729b37343704b2540d258f0ec614"/>
</deployment>
<deployment name="Agent_Footprint.war" runtime-name="Agent_Footprint.war">
<content sha1="9d9893741e9f24d609c3d39eb9b1bd5ec08d7556"/>
</deployment>
</deployments>
</server>
If the server doesn't receive the ping in a certain time then it closes the connection, in this instance it is an invm connection from the MDB.
The usual causes for this are the server or client becoming unresponsive because of overload, memory issues etc. For that, you must to add the following elements to connection-factory in standalone.xml.
<connection-ttl>-1</connection-ttl>
<client-failure-check-period>-1</client-failure-check-period>
A value of -1 for ConnectionTTL means the server will never time out the connection on the server side.
I have a XPath 2.0 query (which seems to be ok and which returns the node I expect it to return) however, but I need to have it written in XPath 1.0. Is it possible and if yes how can I do it ?
Info :
What i want to do is to concatenate the tokenValue of all IDENTIFIER and DOT nodes below qualifiedIdentifier and select the qualifiedIdentifier nodes if this concatenation results in a String which starts with "another.pkg".
The XPath 2.0 query :
//importDeclaration/qualifiedIdentifier[starts-with(string-join(descendant::*/*/#tokenValue,''),'another.pkg')]
The xml :
<compilationUnit tokenValue="package" tokenLine="1" tokenColumn="0">
<packageDeclaration tokenValue="package" tokenLine="1" tokenColumn="0">
<PACKAGE tokenValue="package" tokenLine="1" tokenColumn="0">
<TOKEN tokenValue="package" tokenLine="1" tokenColumn="0"/>
</PACKAGE>
<qualifiedIdentifier tokenValue="my" tokenLine="1" tokenColumn="8">
<IDENTIFIER tokenValue="my" tokenLine="1" tokenColumn="8">
<TOKEN tokenValue="my" tokenLine="1" tokenColumn="8"/>
</IDENTIFIER>
<DOT tokenValue="." tokenLine="1" tokenColumn="10">
<TOKEN tokenValue="." tokenLine="1" tokenColumn="10"/>
</DOT>
<IDENTIFIER tokenValue="pkg" tokenLine="1" tokenColumn="11">
<TOKEN tokenValue="pkg" tokenLine="1" tokenColumn="11"/>
</IDENTIFIER>
</qualifiedIdentifier>
<SEMI tokenValue=";" tokenLine="1" tokenColumn="14">
<TOKEN tokenValue=";" tokenLine="1" tokenColumn="14"/>
</SEMI>
</packageDeclaration>
<importDeclaration tokenValue="import" tokenLine="3" tokenColumn="0">
<IMPORT tokenValue="import" tokenLine="3" tokenColumn="0">
<TOKEN tokenValue="import" tokenLine="3" tokenColumn="0"/>
</IMPORT>
<qualifiedIdentifier tokenValue="another" tokenLine="3" tokenColumn="7">
<IDENTIFIER tokenValue="another" tokenLine="3" tokenColumn="7">
<TOKEN tokenValue="another" tokenLine="3" tokenColumn="7"/>
</IDENTIFIER>
<DOT tokenValue="." tokenLine="3" tokenColumn="14">
<TOKEN tokenValue="." tokenLine="3" tokenColumn="14"/>
</DOT>
<IDENTIFIER tokenValue="pkg" tokenLine="3" tokenColumn="15">
<TOKEN tokenValue="pkg" tokenLine="3" tokenColumn="15"/>
</IDENTIFIER>
<DOT tokenValue="." tokenLine="3" tokenColumn="18">
<TOKEN tokenValue="." tokenLine="3" tokenColumn="18"/>
</DOT>
<IDENTIFIER tokenValue="AnotherClass" tokenLine="3" tokenColumn="19">
<TOKEN tokenValue="AnotherClass" tokenLine="3" tokenColumn="19"/>
</IDENTIFIER>
</qualifiedIdentifier>
<SEMI tokenValue=";" tokenLine="3" tokenColumn="31">
<TOKEN tokenValue=";" tokenLine="3" tokenColumn="31"/>
</SEMI>
</importDeclaration>
<typeDeclaration tokenValue="public" tokenLine="5" tokenColumn="0">
<modifier tokenValue="public" tokenLine="5" tokenColumn="0">
<PUBLIC tokenValue="public" tokenLine="5" tokenColumn="0">
<TOKEN tokenValue="public" tokenLine="5" tokenColumn="0"/>
</PUBLIC>
</modifier>
<classDeclaration tokenValue="class" tokenLine="5" tokenColumn="7">
<CLASS tokenValue="class" tokenLine="5" tokenColumn="7">
<TOKEN tokenValue="class" tokenLine="5" tokenColumn="7"/>
</CLASS>
<IDENTIFIER tokenValue="AClass" tokenLine="5" tokenColumn="13">
<TOKEN tokenValue="AClass" tokenLine="5" tokenColumn="13"/>
</IDENTIFIER>
<classBody tokenValue="{" tokenLine="5" tokenColumn="20">
<LWING tokenValue="{" tokenLine="5" tokenColumn="20">
<TOKEN tokenValue="{" tokenLine="5" tokenColumn="20"/>
</LWING>
<RWING tokenValue="}" tokenLine="6" tokenColumn="0">
<TOKEN tokenValue="}" tokenLine="6" tokenColumn="0"/>
</RWING>
</classBody>
</classDeclaration>
</typeDeclaration>
<EOF tokenValue="" tokenLine="6" tokenColumn="1"/>
</compilationUnit>
Thank you in advance !
I don't think there's a way to do it in XPath 1.0 that's as general as the 2.0 version, you'd have to be much more specific, e.g. check if the first three tokens are another, . and pkg respectively
//importDeclaration/qualifiedIdentifier[*[1]/*/#tokenValue = 'another']
[*[2]/*/#tokenValue = '.']
[*[3]/*/#tokenValue = 'pkg']
This is slightly stricter than your 2.0 version, to be exactly equivalent you'd have to check that the third token starts with pkg instead of being equal to pkg (allowing "another.pkgfoo", for example, though this may not in fact be desirable).
If the tokenization is always the same, you can just concatenate the first three tokens:
//importDeclaration/qualifiedIdentifier[concat((.//*/*/#tokenValue)[1],
(.//*/*/#tokenValue)[2],
(.//*/*/#tokenValue)[3])='another.pkg']
i have got some trouble, using the XPath. (Later i want to add my expression on SonarQube to rule of xpath pattern so i can create my own rules there. But SonarQube is not required yet)
I want to create a rule which throws exception if a project was analyzed and something special was written in the comments (e.g. "ERROR") of my java projects (e.g. myXPathTry.java).
I am testing all my expressions with this SSLR Toolkit. Just need to download it and execute it.
Usage is simple: add your code on the left, click "Parse Source Code" right under the box. Then add your xpath rule in the box on the bottom and finally click "Evaluate XPath". Result should be marked. You are also allowed to view the automatic created XML for your source code if you click the xml button above the right box.
My problem is: all the comments are saved in "unaccessable" TRIVIA path (as you can see in the AST). I can access all other things and check against there values and parameters, but not this TRIVIA stuff. (JavaCode, AST (Abstract Syntax Tree) and XML are added below.)
Do you know a way how i can get access to the comments?
Thanks for your Help! :)
Already tested:
neighter //*/comment() , nor //*/TOKEN/TRIVIA does have any effect.
//*/TOKEN works and has affect, but does not contain the needed information.
Java Code:
public class MyXPathTry{
public static void main(String[] args){
System.out.println("Just to have some code");
//This is a comment
/* This is a second comment */
/* This is a second comment with ERROR*/
}
}
In the AST the blue line (RWING, if image is not visable) was selectet after i clicked on any comment on the left of the toolkit. Path downwards was not opend by default. I opened RWING and the TOKEN subfolder by myself, just do show you what i mean with TRIVIA files)
Toolkit Auto-Created XML:
<compilationUnit tokenValue="public" tokenLine="1" tokenColumn="0">
<typeDeclaration tokenValue="public" tokenLine="1" tokenColumn="0">
<modifier tokenValue="public" tokenLine="1" tokenColumn="0">
<PUBLIC tokenValue="public" tokenLine="1" tokenColumn="0">
<TOKEN tokenValue="public" tokenLine="1" tokenColumn="0"/>
</PUBLIC>
</modifier>
<classDeclaration tokenValue="class" tokenLine="1" tokenColumn="7">
<CLASS tokenValue="class" tokenLine="1" tokenColumn="7">
<TOKEN tokenValue="class" tokenLine="1" tokenColumn="7"/>
</CLASS>
<IDENTIFIER tokenValue="MyXPathTry" tokenLine="1" tokenColumn="13">
<TOKEN tokenValue="MyXPathTry" tokenLine="1" tokenColumn="13"/>
</IDENTIFIER>
<classBody tokenValue="{" tokenLine="1" tokenColumn="23">
<LWING tokenValue="{" tokenLine="1" tokenColumn="23">
<TOKEN tokenValue="{" tokenLine="1" tokenColumn="23"/>
</LWING>
<classBodyDeclaration tokenValue="public" tokenLine="2" tokenColumn="4">
<modifier tokenValue="public" tokenLine="2" tokenColumn="4">
<PUBLIC tokenValue="public" tokenLine="2" tokenColumn="4">
<TOKEN tokenValue="public" tokenLine="2" tokenColumn="4"/>
</PUBLIC>
</modifier>
<modifier tokenValue="static" tokenLine="2" tokenColumn="11">
<STATIC tokenValue="static" tokenLine="2" tokenColumn="11">
<TOKEN tokenValue="static" tokenLine="2" tokenColumn="11"/>
</STATIC>
</modifier>
<memberDecl tokenValue="void" tokenLine="2" tokenColumn="18">
<VOID tokenValue="void" tokenLine="2" tokenColumn="18">
<TOKEN tokenValue="void" tokenLine="2" tokenColumn="18"/>
</VOID>
<IDENTIFIER tokenValue="main" tokenLine="2" tokenColumn="23">
<TOKEN tokenValue="main" tokenLine="2" tokenColumn="23"/>
</IDENTIFIER>
<voidMethodDeclaratorRest tokenValue="(" tokenLine="2" tokenColumn="27">
<formalParameters tokenValue="(" tokenLine="2" tokenColumn="27">
<LPAR tokenValue="(" tokenLine="2" tokenColumn="27">
<TOKEN tokenValue="(" tokenLine="2" tokenColumn="27"/>
</LPAR>
<formalParameterDecls tokenValue="String" tokenLine="2" tokenColumn="28">
<type tokenValue="String" tokenLine="2" tokenColumn="28">
<classType tokenValue="String" tokenLine="2" tokenColumn="28">
<IDENTIFIER tokenValue="String" tokenLine="2" tokenColumn="28">
<TOKEN tokenValue="String" tokenLine="2" tokenColumn="28"/>
</IDENTIFIER>
</classType>
<dim tokenValue="[" tokenLine="2" tokenColumn="34">
<LBRK tokenValue="[" tokenLine="2" tokenColumn="34">
<TOKEN tokenValue="[" tokenLine="2" tokenColumn="34"/>
</LBRK>
<RBRK tokenValue="]" tokenLine="2" tokenColumn="35">
<TOKEN tokenValue="]" tokenLine="2" tokenColumn="35"/>
</RBRK>
</dim>
</type>
<formalParametersDeclsRest tokenValue="args" tokenLine="2" tokenColumn="37">
<variableDeclaratorId tokenValue="args" tokenLine="2" tokenColumn="37">
<IDENTIFIER tokenValue="args" tokenLine="2" tokenColumn="37">
<TOKEN tokenValue="args" tokenLine="2" tokenColumn="37"/>
</IDENTIFIER>
</variableDeclaratorId>
</formalParametersDeclsRest>
</formalParameterDecls>
<RPAR tokenValue=")" tokenLine="2" tokenColumn="41">
<TOKEN tokenValue=")" tokenLine="2" tokenColumn="41"/>
</RPAR>
</formalParameters>
<methodBody tokenValue="{" tokenLine="2" tokenColumn="42">
<block tokenValue="{" tokenLine="2" tokenColumn="42">
<LWING tokenValue="{" tokenLine="2" tokenColumn="42">
<TOKEN tokenValue="{" tokenLine="2" tokenColumn="42"/>
</LWING>
<blockStatements tokenValue="System" tokenLine="3" tokenColumn="1">
<blockStatement tokenValue="System" tokenLine="3" tokenColumn="1">
<statement tokenValue="System" tokenLine="3" tokenColumn="1">
<expressionStatement tokenValue="System" tokenLine="3" tokenColumn="1">
<statementExpression tokenValue="System" tokenLine="3" tokenColumn="1">
<expression tokenValue="System" tokenLine="3" tokenColumn="1">
<primary tokenValue="System" tokenLine="3" tokenColumn="1">
<qualifiedIdentifier tokenValue="System" tokenLine="3" tokenColumn="1">
<IDENTIFIER tokenValue="System" tokenLine="3" tokenColumn="1">
<TOKEN tokenValue="System" tokenLine="3" tokenColumn="1"/>
</IDENTIFIER>
<DOT tokenValue="." tokenLine="3" tokenColumn="7">
<TOKEN tokenValue="." tokenLine="3" tokenColumn="7"/>
</DOT>
<IDENTIFIER tokenValue="out" tokenLine="3" tokenColumn="8">
<TOKEN tokenValue="out" tokenLine="3" tokenColumn="8"/>
</IDENTIFIER>
<DOT tokenValue="." tokenLine="3" tokenColumn="11">
<TOKEN tokenValue="." tokenLine="3" tokenColumn="11"/>
</DOT>
<IDENTIFIER tokenValue="println" tokenLine="3" tokenColumn="12">
<TOKEN tokenValue="println" tokenLine="3" tokenColumn="12"/>
</IDENTIFIER>
</qualifiedIdentifier>
<identifierSuffix tokenValue="(" tokenLine="3" tokenColumn="19">
<arguments tokenValue="(" tokenLine="3" tokenColumn="19">
<LPAR tokenValue="(" tokenLine="3" tokenColumn="19">
<TOKEN tokenValue="(" tokenLine="3" tokenColumn="19"/>
</LPAR>
<expression tokenValue=""Just to have some code"" tokenLine="3" tokenColumn="20">
<primary tokenValue=""Just to have some code"" tokenLine="3" tokenColumn="20">
<literal tokenValue=""Just to have some code"" tokenLine="3" tokenColumn="20">
<LITERAL tokenValue=""Just to have some code"" tokenLine="3" tokenColumn="20">
<TOKEN tokenValue=""Just to have some code"" tokenLine="3" tokenColumn="20"/>
</LITERAL>
</literal>
</primary>
</expression>
<RPAR tokenValue=")" tokenLine="3" tokenColumn="44">
<TOKEN tokenValue=")" tokenLine="3" tokenColumn="44"/>
</RPAR>
</arguments>
</identifierSuffix>
</primary>
</expression>
</statementExpression>
<SEMI tokenValue=";" tokenLine="3" tokenColumn="45">
<TOKEN tokenValue=";" tokenLine="3" tokenColumn="45"/>
</SEMI>
</expressionStatement>
</statement>
</blockStatement>
</blockStatements>
<RWING tokenValue="}" tokenLine="7" tokenColumn="4">
<TOKEN tokenValue="}" tokenLine="7" tokenColumn="4"/>
</RWING>
</block>
</methodBody>
</voidMethodDeclaratorRest>
</memberDecl>
</classBodyDeclaration>
<RWING tokenValue="}" tokenLine="8" tokenColumn="0">
<TOKEN tokenValue="}" tokenLine="8" tokenColumn="0"/>
</RWING>
</classBody>
</classDeclaration>
</typeDeclaration>
<EOF tokenValue="" tokenLine="8" tokenColumn="1"/>
</compilationUnit>
.
This is not possible. For your information the ability to write custom rules in XPath will be dropped in favor of writing them in Java.
IF I use this schema:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="Chick">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="count" type="xsd:decimal" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
With this wsdl:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.example.org/test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="test"
xmlns:chi="chick"
targetNamespace="http://www.example.org/test/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/test/">
<xsd:include schemaLocation="testschema.xsd"></xsd:include>
<xsd:include id="ada" schemaLocation="testschema.xsd" />
<xsd:element name="doTheRightThing">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Chick" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="doTheRightThingResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="doTheRightThingRequest">
<wsdl:part element="tns:doTheRightThing" name="parameters" />
</wsdl:message>
<wsdl:message name="doTheRightThingResponse">
<wsdl:part element="tns:doTheRightThingResponse" name="parameters" />
</wsdl:message>
<wsdl:portType name="test">
<wsdl:operation name="doTheRightThing">
<wsdl:input message="tns:doTheRightThingRequest" />
<wsdl:output message="tns:doTheRightThingResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="testSOAP" type="tns:test">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="doTheRightThing">
<soap:operation
soapAction="http://www.example.org/test/doTheRightThing" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="test">
<wsdl:port binding="tns:testSOAP" name="testSOAP">
<soap:address location="http://www.example.org/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
I get this error message:
Error building the Schema Type system for the WSDL:
D:\Oracle\Middleware_11.1.1.6.0\user_projects\domains\osb_cookbook_domain\test:0: error: src-resolve.a: Could not find element 'Chick'. Do you mean to refer to the element named Chick#http://www.example.org/test/ (in testschema)?
If I change this line in wsdl:
<xsd:element ref="Chick" />
to this:
<xsd:element ref="tns:Chick" />
I could not deploy, OEPE returns this error message:
The WSDL is not semantically valid: error: src-resolve: element 'Chick#http://www.example.org/test/' not found..
Is this a bug?
Patch 14003546 solved this issue:
WSDL WITH EMBEDDED SCHEMA INCLUDE TO NO-NAMESPACE FAILS VALIDATION