Author: heiko.braun(a)jboss.com
Date: 2007-11-26 06:20:31 -0500 (Mon, 26 Nov 2007)
New Revision: 5107
Added:
rest/src/main/java/org/jboss/rest/media/MediaTypeProvider.java
rest/src/main/resources/jbossrest.jar/META-INF/services/javax.ws.rs.ext.ProviderFactory
Removed:
rest/src/test/java/org/jboss/test/rest/model/RunRegex.java
Modified:
rest/jboss-rest.ipr
rest/jboss-rest.iws
rest/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java
rest/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java
rest/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java
rest/src/main/java/org/jboss/rest/model/ParameterBinding.java
rest/src/main/java/org/jboss/rest/model/ResourceMethod.java
rest/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java
rest/src/main/java/org/jboss/rest/runtime/InvocationMediator.java
rest/src/main/java/org/jboss/rest/runtime/RuntimeContext.java
rest/src/main/java/org/jboss/rest/util/Convert.java
rest/src/test/java/org/jboss/test/rest/WidgetList.java
rest/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java
rest/src/test/java/org/jboss/test/rest/media/BookResource.java
rest/src/test/java/org/jboss/test/rest/media/BookStoreResource.java
rest/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java
Log:
First provider factory impl, added entity body binding
Modified: rest/jboss-rest.ipr
===================================================================
--- rest/jboss-rest.ipr 2007-11-26 10:53:50 UTC (rev 5106)
+++ rest/jboss-rest.ipr 2007-11-26 11:20:31 UTC (rev 5107)
@@ -252,6 +252,7 @@
</component>
<component name="ProjectModuleManager">
<modules>
+ <module
fileurl="file:///home/hbraun/Desktop/JSR-311/0.5/examples/Jersey-Examples.iml"
filepath="/home/hbraun/Desktop/JSR-311/0.5/examples/Jersey-Examples.iml" />
<module fileurl="file://$PROJECT_DIR$/jboss-rest.iml"
filepath="$PROJECT_DIR$/jboss-rest.iml" />
<module
fileurl="file:///home/hbraun/dev/prj/jbossas/trunk/webservices/jboss50.iml"
filepath="/home/hbraun/dev/prj/jbossas/trunk/webservices/jboss50.iml" />
<module
fileurl="file:///home/hbraun/dev/prj/jbossws/spi/trunk/spi.iml"
filepath="/home/hbraun/dev/prj/jbossws/spi/trunk/spi.iml" />
Modified: rest/jboss-rest.iws
===================================================================
--- rest/jboss-rest.iws 2007-11-26 10:53:50 UTC (rev 5106)
+++ rest/jboss-rest.iws 2007-11-26 11:20:31 UTC (rev 5107)
@@ -17,36 +17,30 @@
</component>
<component name="ChangeListManager">
<list default="true" name="Default" comment="">
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/deployment/DeploymentTestCase.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/deployment/DeploymentTestCase.java"
/>
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF"
/>
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/jbossrs.xml"
/>
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/samples" />
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/web.xml"
/>
- <change type="DELETED"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceViewServlet.java"
afterPath="" />
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/ant-import-tests/build-jars-rest.xml" />
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples/resourceview" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ModelDeploymentAspect.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ModelDeploymentAspect.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/resources/jbossrest-context.war/WEB-INF/web.xml"
afterPath="$PROJECT_DIR$/src/main/resources/jbossrest-context.war/WEB-INF/web.xml"
/>
+ <change type="DELETED"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/model/RunRegex.java"
afterPath="" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ParameterBinding.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ParameterBinding.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookResource.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookResource.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java"
/>
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/media/MediaTypeProvider.java"
/>
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/ant-import-tests/build-testsuite.xml"
afterPath="$PROJECT_DIR$/ant-import-tests/build-testsuite.xml" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/ant-import/macros-deploy-rs.xml"
afterPath="$PROJECT_DIR$/ant-import/macros-deploy-rs.xml" />
- <change type="DELETED"
beforePath="$PROJECT_DIR$/ant-import-tests/build-jars-jaxws.xml"
afterPath="" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/resources/jbossrest-context.war/index.html"
afterPath="$PROJECT_DIR$/src/main/resources/jbossrest-context.war/index.html"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/distro/bin-dist-build.xml"
afterPath="$PROJECT_DIR$/src/main/distro/bin-dist-build.xml" />
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/jboss-rest.ipr"
afterPath="$PROJECT_DIR$/jboss-rest.ipr" />
+ <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/main/resources/jbossrest.jar/META-INF/services/javax.ws.rs.ext.ProviderFactory"
/>
<change type="MODIFICATION"
beforePath="/home/hbraun/dev/prj/jbossas/trunk/webservices/build.xml"
afterPath="/home/hbraun/dev/prj/jbossas/trunk/webservices/build.xml" />
<change type="MODIFICATION"
beforePath="/home/hbraun/dev/prj/jbossws/spi/trunk/src/main/java/org/jboss/wsf/spi/deployment/Deployment.java"
afterPath="/home/hbraun/dev/prj/jbossws/spi/trunk/src/main/java/org/jboss/wsf/spi/deployment/Deployment.java"
/>
<change type="NEW" beforePath=""
afterPath="/home/hbraun/dev/prj/jbossas/trunk/webservices/jboss50.iml" />
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookStoreResource.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookStoreResource.java"
/>
<change type="MODIFICATION"
beforePath="/home/hbraun/dev/prj/jbossws/spi/trunk/version.properties"
afterPath="/home/hbraun/dev/prj/jbossws/spi/trunk/version.properties" />
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/model/RunRegex.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/model/RunRegex.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/dd/DeploymentDescriptorParser.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/dd/DeploymentDescriptorParser.java"
/>
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples" />
<change type="MODIFICATION"
beforePath="/home/hbraun/dev/prj/jbossas/trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml"
afterPath="/home/hbraun/dev/prj/jbossas/trunk/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-beans.xml"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/ResourceRegistry.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/ResourceRegistry.java"
/>
- <change type="NEW" beforePath=""
afterPath="$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/jboss-web.xml"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationMediator.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationMediator.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/util/Convert.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/util/Convert.java" />
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ResourceMethod.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ResourceMethod.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/RuntimeContext.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/RuntimeContext.java"
/>
<change type="MODIFICATION"
beforePath="/home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPostJSE.java"
afterPath="/home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookPostJSE.java"
/>
- <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/DescriptorDeploymentAspect.java"
afterPath="$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/DescriptorDeploymentAspect.java"
/>
+ <change type="MODIFICATION"
beforePath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/WidgetList.java"
afterPath="$PROJECT_DIR$/src/test/java/org/jboss/test/rest/WidgetList.java"
/>
<change type="MODIFICATION"
beforePath="$PROJECT_DIR$/jboss-rest.iws"
afterPath="$PROJECT_DIR$/jboss-rest.iws" />
</list>
</component>
@@ -119,8 +113,8 @@
</component>
<component name="DebuggerManager">
<line_breakpoints>
- <breakpoint
url="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ModelDeploymentAspect.java"
line="72" class="org.jboss.rest.container.wsf.ModelDeploymentAspect"
package="org.jboss.rest.container.wsf">
- <option name="ENABLED" value="true" />
+ <breakpoint
url="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationMediator.java"
line="32" class="org.jboss.rest.runtime.InvocationMediator"
package="org.jboss.rest.runtime">
+ <option name="ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@@ -132,7 +126,7 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
- <breakpoint
url="file:///home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ArchiveDeployerHook.java"
line="101" class="org.jboss.wsf.container.jboss50.ArchiveDeployerHook"
package="org.jboss.wsf.container.jboss50">
+ <breakpoint
url="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java"
line="96" class="org.jboss.rest.container.wsf.ResourceServlet"
package="org.jboss.rest.container.wsf">
<option name="ENABLED" value="true" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="LOG_ENABLED" value="false" />
@@ -145,7 +139,7 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
- <breakpoint
url="file:///home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ArchiveDeployerHook.java"
line="81" class="org.jboss.wsf.container.jboss50.ArchiveDeployerHook"
package="org.jboss.wsf.container.jboss50">
+ <breakpoint
url="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ParameterBinding.java"
line="167" class="org.jboss.rest.model.ParameterBinding"
package="org.jboss.rest.model">
<option name="ENABLED" value="true" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="LOG_ENABLED" value="false" />
@@ -206,8 +200,8 @@
<property name="field_breakpoints_groupByClasses"
value="true" />
<property name="method_breakpoints_groupByClasses"
value="true" />
<property name="exception_breakpoints_viewId" value="TABLE"
/>
+ <property name="field_breakpoints_viewId" value="TABLE"
/>
<property name="exception_breakpoints_groupByClasses"
value="true" />
- <property name="field_breakpoints_viewId" value="TABLE"
/>
<property name="method_breakpoints_groupByMethods"
value="false" />
</ui_properties>
</component>
@@ -218,45 +212,108 @@
<component name="FavoritesManager">
<favorites_list name="jboss-rest" />
</component>
- <component name="FavoritesProjectViewPane" />
+ <component name="FavoritesProjectViewPane">
+ <subPane subId="jboss-rest">
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" />
+ <option name="myItemType"
value="com.intellij.ide.favoritesTreeView.FavoritesTreeNodeDescriptor" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </component>
<component name="FileEditorManager">
<leaf>
- <file leaf-file-name="ResourceRegistry.java" pinned="false"
current="true" current-in-tab="true">
- <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/ResourceRegistry.java">
+ <file leaf-file-name="ParameterBinding.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ParameterBinding.java">
<provider selected="true"
editor-type-id="text-editor">
- <state line="33" column="13"
selection-start="1237" selection-end="1237"
vertical-scroll-proportion="0.24675325">
+ <state line="168" column="0"
selection-start="5574" selection-end="5574"
vertical-scroll-proportion="0.18688118">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="build-jars-rest.xml" pinned="false"
current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/ant-import-tests/build-jars-rest.xml">
+ <file leaf-file-name="Widget.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/Widget.java">
<provider selected="true"
editor-type-id="text-editor">
- <state line="50" column="88"
selection-start="2447" selection-end="2447"
vertical-scroll-proportion="0.72596157">
+ <state line="34" column="13"
selection-start="1304" selection-end="1304"
vertical-scroll-proportion="0.07654921">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="DeploymentTestCase.java"
pinned="false" current="false" current-in-tab="false">
- <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/deployment/DeploymentTestCase.java">
+ <file leaf-file-name="WidgetList.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/WidgetList.java">
<provider selected="true"
editor-type-id="text-editor">
- <state line="63" column="51"
selection-start="2080" selection-end="2080"
vertical-scroll-proportion="0.11216056">
+ <state line="47" column="11"
selection-start="1585" selection-end="1585"
vertical-scroll-proportion="0.5771567">
<folding />
</state>
</provider>
</entry>
</file>
+ <file leaf-file-name="InvocationMediator.java"
pinned="false" current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationMediator.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="65" column="0"
selection-start="2362" selection-end="2362"
vertical-scroll-proportion="0.75334144">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="ResourceServlet.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="99" column="17"
selection-start="3734" selection-end="3734"
vertical-scroll-proportion="0.41433778">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
<file leaf-file-name="MediaTypeTestCase.java" pinned="false"
current="false" current-in-tab="false">
<entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java">
<provider selected="true"
editor-type-id="text-editor">
- <state line="32" column="51"
selection-start="849" selection-end="849"
vertical-scroll-proportion="0.08028335">
+ <state line="55" column="6"
selection-start="1610" selection-end="1610"
vertical-scroll-proportion="0.6148238">
<folding />
</state>
</provider>
</entry>
</file>
+ <file leaf-file-name="InvocationBuilderTestCase.java"
pinned="false" current="true" current-in-tab="true">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="107" column="75"
selection-start="4161" selection-end="4161"
vertical-scroll-proportion="0.21506684">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="RuntimeContext.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/RuntimeContext.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="63" column="32"
selection-start="2108" selection-end="2108"
vertical-scroll-proportion="0.48481166">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="ResponseBuilderImpl.java"
pinned="false" current="false" current-in-tab="false">
+ <entry
file="file:///home/hbraun/Desktop/JSR-311/0.5/src/com/sun/ws/rest/impl/ResponseBuilderImpl.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="52" column="66"
selection-start="1923" selection-end="1923"
vertical-scroll-proportion="-0.60024303">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="BookResource.java" pinned="false"
current="false" current-in-tab="false">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookResource.java">
+ <provider selected="true"
editor-type-id="text-editor">
+ <state line="76" column="60"
selection-start="1371" selection-end="1371"
vertical-scroll-proportion="0.63791007">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
</leaf>
</component>
<component name="FindManager">
@@ -419,10 +476,6 @@
<option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -446,23 +499,23 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources/rest" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources/rest/samples" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources/rest/samples/resourceview"
/>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF"
/>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test/rest" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -488,13 +541,29 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/resources/rest" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test/rest" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media"
/>
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -537,28 +606,10 @@
<option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test/rest" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
- </PATH>
- <PATH>
<PATH_ELEMENT>
- <option name="myItemId" value="jboss-rest.ipr" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="jboss-rest" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test/java/org/jboss/test/rest/invocation"
/>
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/test" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -612,9 +663,17 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest-context.war"
/>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest.jar" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest.jar/META-INF"
/>
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest.jar/META-INF/services"
/>
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -638,17 +697,21 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest-context.war"
/>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/resources/jbossrest-context.war/WEB-INF"
/>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -687,6 +750,10 @@
<option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime" />
+ <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -726,7 +793,7 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/model" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/media" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -768,11 +835,11 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/model" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/container" />
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/model/dd" />
+ <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf"
/>
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -798,24 +865,6 @@
<option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
- <PATH>
- <PATH_ELEMENT>
- <option name="myItemId" value="jboss-rest.ipr" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="jboss-rest" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId"
value="PsiDirectory:$PROJECT_DIR$/ant-import-tests" />
- <option name="myItemType"
value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
</subPane>
</component>
<component name="ProjectReloadState">
@@ -829,7 +878,7 @@
<showLibraryContents />
<hideEmptyPackages ProjectPane="false" />
<abbreviatePackageNames />
- <showStructure PackagesPane="false" ProjectPane="false"
/>
+ <showStructure Favorites="false" PackagesPane="false"
Scope="false" ProjectPane="false" />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
@@ -838,8 +887,8 @@
<component name="PropertiesComponent">
<property name="GoToFile.includeJavaFiles" value="false"
/>
<property name="GoToClass.toSaveIncludeLibraries"
value="false" />
+ <property name="RunManagerConfig.showSettingsBeforeRunnig"
value="false" />
<property name="RunManagerConfig.compileBeforeRunning"
value="false" />
- <property name="RunManagerConfig.showSettingsBeforeRunnig"
value="false" />
<property name="MemberChooser.sorted" value="false" />
<property name="last_opened_file_path"
value="/home/hbraun/dev/prj/jbossas/trunk/build" />
<property name="MemberChooser.showClasses" value="true" />
@@ -853,6 +902,9 @@
<key name="CopyClassDialog.RECENTS_KEY">
<recent name="org.jboss.test.rest.util" />
</key>
+ <key name="IntroduceConstantDialog.RECENTS_KEY">
+ <recent name="" />
+ </key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
<recent name="org.jboss.test.rest.samples.resourceview" />
<recent name="org.jboss.wsf.container.jboss50.rest" />
@@ -860,22 +912,26 @@
</key>
</component>
<component name="RestoreUpdateTree" />
- <component name="RunManager"
selected="Application.RunRegex">
- <tempConfiguration default="false" name="RunRegex"
type="Application" factoryName="Application" enabled="false"
merge="false">
- <option name="MAIN_CLASS_NAME"
value="org.jboss.test.rest.model.RunRegex" />
+ <component name="RunManager" selected="Remote.client">
+ <configuration default="true" type="JUnit"
factoryName="JUnit" enabled="false" merge="false">
+ <module name="" />
+ <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"
/>
+ <option name="ALTERNATIVE_JRE_PATH" />
+ <option name="PACKAGE_NAME" />
+ <option name="MAIN_CLASS_NAME" />
+ <option name="METHOD_NAME" />
+ <option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" />
- <option name="PROGRAM_PARAMETERS" />
+ <option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"
/>
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"
/>
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <module name="jboss-rest" />
- <RunnerSettings RunnerId="Run" />
- <ConfigurationWrapper RunnerId="Run" />
+ <option name="ADDITIONAL_CLASS_PATH" />
+ <option name="TEST_SEARCH_SCOPE">
+ <value defaultName="wholeProject" />
+ </option>
<method>
<option name="Make" value="true" />
</method>
- </tempConfiguration>
+ </configuration>
<configuration default="true" type="Applet"
factoryName="Applet">
<module name="" />
<option name="MAIN_CLASS_NAME" />
@@ -888,6 +944,13 @@
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"
/>
<option name="ALTERNATIVE_JRE_PATH" />
</configuration>
+ <configuration default="true" type="Remote"
factoryName="Remote">
+ <option name="USE_SOCKET_TRANSPORT" value="true" />
+ <option name="SERVER_MODE" value="false" />
+ <option name="SHMEM_ADDRESS" value="javadebug" />
+ <option name="HOST" value="localhost" />
+ <option name="PORT" value="5005" />
+ </configuration>
<configuration default="true" type="Application"
factoryName="Application" enabled="false" merge="false">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
@@ -901,28 +964,23 @@
<option name="Make" value="true" />
</method>
</configuration>
- <configuration default="true" type="Remote"
factoryName="Remote">
- <option name="USE_SOCKET_TRANSPORT" value="true" />
- <option name="SERVER_MODE" value="false" />
- <option name="SHMEM_ADDRESS" value="javadebug" />
- <option name="HOST" value="localhost" />
- <option name="PORT" value="5005" />
- </configuration>
- <configuration default="true" type="JUnit"
factoryName="JUnit" enabled="false" merge="false">
- <module name="" />
+ <configuration default="false" name="RunRegex"
type="Application" factoryName="Application" enabled="false"
merge="false">
+ <option name="MAIN_CLASS_NAME"
value="org.jboss.test.rest.model.RunRegex" />
+ <option name="VM_PARAMETERS" />
+ <option name="PROGRAM_PARAMETERS" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"
/>
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false"
/>
<option name="ALTERNATIVE_JRE_PATH" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="TEST_OBJECT" value="class" />
- <option name="VM_PARAMETERS" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$"
/>
- <option name="ADDITIONAL_CLASS_PATH" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="wholeProject" />
- </option>
+ <option name="ENABLE_SWING_INSPECTOR" value="false" />
+ <module name="jboss-rest" />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="38109" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="true" />
+ </RunnerSettings>
+ <RunnerSettings RunnerId="Run" />
+ <ConfigurationWrapper RunnerId="Debug" />
+ <ConfigurationWrapper RunnerId="Run" />
<method>
<option name="Make" value="true" />
</method>
@@ -943,12 +1001,37 @@
<option name="Make" value="true" />
</method>
</configuration>
+ <configuration default="false" name="client"
type="Remote" factoryName="Remote">
+ <option name="USE_SOCKET_TRANSPORT" value="true" />
+ <option name="SERVER_MODE" value="false" />
+ <option name="SHMEM_ADDRESS" value="javadebug" />
+ <option name="HOST" value="localhost" />
+ <option name="PORT" value="5005" />
+ <RunnerSettings RunnerId="Debug">
+ <option name="DEBUG_PORT" value="5005" />
+ <option name="TRANSPORT" value="0" />
+ <option name="LOCAL" value="false" />
+ </RunnerSettings>
+ <ConfigurationWrapper RunnerId="Debug" />
+ <method>
+ <option name="Make" value="true" />
+ </method>
+ </configuration>
<configuration name="<template>" type="WebApp"
default="true" selected="false">
<Host>localhost</Host>
<Port>5050</Port>
</configuration>
</component>
- <component name="ScopeViewComponent" />
+ <component name="ScopeViewComponent">
+ <subPane subId="Project">
+ <PATH>
+ <PATH_ELEMENT USER_OBJECT="Root">
+ <option name="myItemId" value="" />
+ <option name="myItemType" value="" />
+ </PATH_ELEMENT>
+ </PATH>
+ </subPane>
+ </component>
<component name="SelectInManager" />
<component name="StarteamConfiguration">
<option name="SERVER" value="" />
@@ -1014,7 +1097,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
- <frame x="-3" y="25" width="1686"
height="1003" extended-state="6" />
+ <frame x="3" y="25" width="1674"
height="994" extended-state="2" />
<editor active="true" />
<layout>
<window_info id="UI Designer" active="false"
anchor="left" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="3" />
@@ -1022,7 +1105,7 @@
<window_info id="Palette" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="3" />
<window_info id="Ant Build" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.25"
order="1" />
<window_info id="Find" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.4498861"
order="1" />
- <window_info id="Debug" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.39863327"
order="3" />
+ <window_info id="Debug" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.39793578"
order="3" />
<window_info id="IDEtalk Messages" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="8" />
<window_info id="IDEtalk" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="3" />
<window_info id="Version Control" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="8" />
@@ -1034,10 +1117,10 @@
<window_info id="Module Dependencies" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="3" />
<window_info id="Dependency Viewer" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.74943054"
order="8" />
<window_info id="File View" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="3" />
- <window_info id="Project" active="false"
anchor="left" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="true" weight="0.29368487"
order="0" />
+ <window_info id="Project" active="false"
anchor="left" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="true" weight="0.28676924"
order="0" />
<window_info id="Hierarchy" active="false"
anchor="right" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.1563458"
order="2" />
<window_info id="Inspection" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.4"
order="6" />
- <window_info id="Run" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.32914287"
order="2" />
+ <window_info id="Run" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.48063782"
order="2" />
<window_info id="Cvs" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.25"
order="5" />
<window_info id="Message" active="false"
anchor="bottom" auto_hide="false" internal_type="DOCKED"
type="DOCKED" visible="false" weight="0.33"
order="0" />
<window_info id="Web" active="false" anchor="left"
auto_hide="false" internal_type="DOCKED" type="DOCKED"
visible="false" weight="0.25" order="2" />
@@ -1116,112 +1199,119 @@
<component
name="com.intellij.ide.util.scopeChooser.ScopeChooserConfigurable"
proportions="" version="1">
<option name="myLastEditedConfigurable" />
</component>
- <component
name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable"
proportions="0.16666667,0.5" version="1">
+ <component
name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable"
proportions="0.16666667" version="1">
<option name="myPlainMode" value="false" />
- <option name="myLastEditedConfigurable" value="spi" />
+ <option name="myLastEditedConfigurable"
value="Jersey-Examples" />
</component>
<component name="com.intellij.profile.ui.ErrorOptionsConfigurable"
proportions="" version="1">
<option name="myLastEditedConfigurable" />
</component>
<component name="editorHistoryManager">
- <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/model/AbstractResourceOperation.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="38" column="13"
selection-start="1586" selection-end="1586"
vertical-scroll-proportion="0.1794569">
+ <state line="49" column="44"
selection-start="1446" selection-end="1446"
vertical-scroll-proportion="0.47044632">
<folding />
</state>
</provider>
</entry>
- <entry
file="file:///home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ArchiveDeployerHook.java">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationBuilder.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="76" column="83"
selection-start="2851" selection-end="2986"
vertical-scroll-proportion="0.40023613">
+ <state line="57" column="0"
selection-start="1920" selection-end="1920"
vertical-scroll-proportion="0.799514">
<folding />
</state>
</provider>
</entry>
- <entry
file="file:///home/hbraun/dev/prj/jbossas/trunk/webservices/src/main/org/jboss/wsf/container/jboss50/rest/RestDeployerHookPostJSE.java">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/DefaultInvocationBuilder.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="43" column="76"
selection-start="1701" selection-end="1701"
vertical-scroll-proportion="0.6505313">
+ <state line="33" column="0"
selection-start="1286" selection-end="1286"
vertical-scroll-proportion="0.30012152">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/main/resources/jbossrest-context.war/WEB-INF/web.xml">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="13" column="0"
selection-start="456" selection-end="456"
vertical-scroll-proportion="0.29161748">
+ <state line="48" column="0"
selection-start="1355" selection-end="1355"
vertical-scroll-proportion="0.6993604">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/DescriptorDeploymentAspect.java">
+ <entry
file="file:///home/hbraun/Desktop/JSR-311/0.5/src/com/sun/ws/rest/impl/ResponseBuilderImpl.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="42" column="13"
selection-start="1619" selection-end="1619"
vertical-scroll-proportion="-0.08972845">
+ <state line="52" column="66"
selection-start="1923" selection-end="1923"
vertical-scroll-proportion="-0.60024303">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/main/resources/jbossrest-context.war/WEB-INF/jboss-web.xml">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/InvocationMediator.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0"
selection-end="0" vertical-scroll-proportion="0.0">
+ <state line="65" column="0"
selection-start="2362" selection-end="2362"
vertical-scroll-proportion="0.75334144">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/web.xml">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="1" column="0" selection-start="44"
selection-end="44" vertical-scroll-proportion="0.022432113">
+ <state line="55" column="6"
selection-start="1610" selection-end="1610"
vertical-scroll-proportion="0.6148238">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/jbossrs.xml">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0"
selection-end="0" vertical-scroll-proportion="0.0">
+ <state line="99" column="17"
selection-start="3734" selection-end="3734"
vertical-scroll-proportion="0.41433778">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/deployment/DeploymentTestCase.java">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/runtime/RuntimeContext.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="63" column="51"
selection-start="2080" selection-end="2080"
vertical-scroll-proportion="0.11216056">
+ <state line="63" column="32"
selection-start="2108" selection-end="2108"
vertical-scroll-proportion="0.48481166">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java">
+ <entry
file="jar:///home/hbraun/Desktop/JSR-311/0.5/lib/jsr311-api.jar!/javax/ws/rs/core/EntityTag.class">
<provider selected="true" editor-type-id="text-editor">
- <state line="32" column="51"
selection-start="849" selection-end="849"
vertical-scroll-proportion="0.08028335">
+ <state line="5" column="13"
selection-start="154" selection-end="154"
vertical-scroll-proportion="0.16204691">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/ant-import-tests/build-jars-rest.xml">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/media/BookResource.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="50" column="88"
selection-start="2447" selection-end="2447"
vertical-scroll-proportion="0.72596157">
+ <state line="76" column="60"
selection-start="1371" selection-end="1371"
vertical-scroll-proportion="0.63791007">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/resources/rest/samples/resourceview/WEB-INF/jboss-web.xml">
+ <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/model/ParameterBinding.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="12" column="25"
selection-start="324" selection-end="324"
vertical-scroll-proportion="0.26918536">
+ <state line="168" column="0"
selection-start="5574" selection-end="5574"
vertical-scroll-proportion="0.18688118">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/samples/resourceview/RegistryResource.java">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/Widget.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="13" column="18"
selection-start="408" selection-end="408"
vertical-scroll-proportion="0.022836538">
+ <state line="34" column="13"
selection-start="1304" selection-end="1304"
vertical-scroll-proportion="0.07654921">
<folding />
</state>
</provider>
</entry>
- <entry
file="file://$PROJECT_DIR$/src/main/java/org/jboss/rest/ResourceRegistry.java">
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/WidgetList.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="33" column="13"
selection-start="1237" selection-end="1237"
vertical-scroll-proportion="0.24675325">
+ <state line="47" column="11"
selection-start="1585" selection-end="1585"
vertical-scroll-proportion="0.5771567">
<folding />
</state>
</provider>
</entry>
+ <entry
file="file://$PROJECT_DIR$/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="107" column="75"
selection-start="4161" selection-end="4161"
vertical-scroll-proportion="0.21506684">
+ <folding />
+ </state>
+ </provider>
+ </entry>
</component>
</project>
Modified: rest/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java
===================================================================
--- rest/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/main/java/org/jboss/rest/container/wsf/ResourceServlet.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -95,9 +95,10 @@
{
// construct a runtime context
URI uri = new URI(req.getRequestURI());
- RuntimeContext rt = new RuntimeContext(method, uri, rootResources);
- parseAcceptHeader(req, rt);
-
+ RuntimeContext rt = new RuntimeContext(method, uri, rootResources);
+ parseMimeHeader(req, rt);
+ rt.setInStream(req.getInputStream());
+
// mediate the invocation
InvocationMediator mediator = new InvocationMediator(rt);
Object invocationResult = mediator.invoke();
@@ -115,32 +116,56 @@
returnValue = invocationResult;
}
- // response meta data
- // write to output stream, TODO: mediatypes
- ProviderFactory providerfactory = DefaultProviderFactory.newInstance();
- MessageBodyWriter writer =
providerfactory.createMessageBodyWriter(returnValue.getClass(), null);
- OutputStream out = res.getOutputStream();
- writer.writeTo(returnValue, null, null, out);
- out.flush();
- out.close();
+ // TODO: response meta data
+ // write to output stream
+ if(returnValue!=null)
+ {
+ // OK
+ res.setStatus(200);
+
+ ProviderFactory providerfactory = DefaultProviderFactory.newInstance();
+ MessageBodyWriter writer =
providerfactory.createMessageBodyWriter(returnValue.getClass(), null);
+ OutputStream out = res.getOutputStream();
+ writer.writeTo(returnValue, null, null, out);
+ out.flush();
+ out.close();
+ }
+ else
+ {
+ // No content
+ res.setStatus(204);
+ }
+
}
catch(ResourceError resourceError)
{
+ log.error(resourceError);
serverError(resourceError.status, resourceError.getMessage(), res);
}
catch (Throwable e)
{
- throw new ServletException(e);
+ log.error(e);
+ serverError(500, e.getMessage(), res);
}
}
- private void parseAcceptHeader(HttpServletRequest req, RuntimeContext rt) throws
ServletException {
+ private void parseMimeHeader(HttpServletRequest req, RuntimeContext rt) throws
ServletException {
String requestAccept = req.getHeader("Accept");
+ String requestContentType = req.getHeader("Content-Type");
+
if(requestAccept!=null)
rt.parseAcceptHeader(requestAccept);
else
throw new ServletException("Accept header is missing");
+
+ if(req.getMethod().equals("PUT") ||
req.getMethod().equals("POST"))
+ {
+ if(requestContentType!=null)
+ rt.parseContentTypeHeader(requestContentType);
+ else
+ throw new ServletException("Content-Type header is missing");
+ }
}
private void serverError(int status, String message, HttpServletResponse res)
Modified: rest/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java
===================================================================
--- rest/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/main/java/org/jboss/rest/media/DefaultContentNegotiation.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -28,7 +28,7 @@
import org.jboss.rest.model.ResourceMethod;
import org.jboss.rest.runtime.RuntimeContext;
-import javax.activation.MimeType;
+import javax.ws.rs.core.MediaType;
import java.util.ArrayList;
import java.util.List;
@@ -119,13 +119,13 @@
// matching by input mime only works on POST and PUT
if(MethodHTTP.POST == requestMethod || MethodHTTP.PUT == requestMethod)
{
- MimeType produceMime = context.getProvideMimeType();
+ MediaType produceMime = context.getProvideMimeType();
for(ResourceMethod candiate : candidates)
{
- for(MimeType consumeMime : candiate.getConsumeMimeTypes())
+ for(MediaType consumeMime : candiate.getConsumeMimeTypes())
{
- if(consumeMime.match(produceMime))
+ if(consumeMime.isCompatible(produceMime))
matches.add(candiate);
}
}
@@ -155,22 +155,22 @@
throws NoMethodException
{
List<ResourceMethod> matches = new ArrayList<ResourceMethod>();
- List<MimeType> requestConsumeMimes = context.getConsumeMimeTypes();
+ List<MediaType> requestAcceptMime = context.getAcceptMimeTypes();
for(ResourceMethod candiate : candidates)
{
- for(MimeType methodProduceMime : candiate.getProduceMimeTypes())
+ for(MediaType methodProduceMime : candiate.getProduceMimeTypes())
{
- for(MimeType requestConsumeMime : requestConsumeMimes)
+ for(MediaType requestConsumeMime : requestAcceptMime)
{
- if(methodProduceMime.match(requestConsumeMime))
+ if(requestConsumeMime.isCompatible(methodProduceMime))
matches.add(candiate);
}
}
}
if(matches.isEmpty())
- throw new NoMethodException(415, "No producer for " +
requestConsumeMimes);
+ throw new NoMethodException(415, "No producer for " +
requestAcceptMime);
return matches;
}
Modified: rest/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java
===================================================================
--- rest/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/main/java/org/jboss/rest/media/DefaultProviderFactory.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -13,7 +13,8 @@
/**
- * Ugly hack.
+ * Prelimenary solution.
+ *
* TODO: Provide a scoped (classloading) reader/writer registry that this class can
delegate to.
*/
public class DefaultProviderFactory extends ProviderFactory
@@ -21,9 +22,11 @@
private static List<MessageBodyReader> reader = new
ArrayList<MessageBodyReader>();
private static List<MessageBodyWriter> writer = new
ArrayList<MessageBodyWriter>();
+ private static List<HeaderProvider> headerProvider = new
ArrayList<HeaderProvider>();
static final JAXBProvider JAXB = new JAXBProvider();
static final StringProvider STRING = new StringProvider();
+ static final MediaTypeProvider MEDIA_TYPE = new MediaTypeProvider();
static
{
@@ -32,6 +35,8 @@
writer.add( JAXB );
writer.add( STRING );
+
+ headerProvider.add(MEDIA_TYPE);
}
public static ProviderFactory newInstance()
@@ -41,12 +46,27 @@
public <T> T createInstance(Class<T> aClass)
{
- return null;
+ throw new IllegalArgumentException("Cannot create instance for " +
aClass);
}
+ @SuppressWarnings("unchecked")
public <T> HeaderProvider<T> createHeaderProvider(Class<T> aClass)
{
- throw new IllegalArgumentException("Not implemented");
+ HeaderProvider<T> provider = null;
+
+ for(HeaderProvider h : headerProvider)
+ {
+ if(h.supports(aClass))
+ {
+ provider = h;
+ break;
+ }
+ }
+
+ if(null==provider)
+ throw new IllegalArgumentException("No header provider for type: " +
aClass);
+
+ return provider;
}
public <T> MessageBodyReader<T> createMessageBodyReader(Class<T>
aClass, MediaType mediaType)
Added: rest/src/main/java/org/jboss/rest/media/MediaTypeProvider.java
===================================================================
--- rest/src/main/java/org/jboss/rest/media/MediaTypeProvider.java
(rev 0)
+++ rest/src/main/java/org/jboss/rest/media/MediaTypeProvider.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -0,0 +1,46 @@
+package org.jboss.rest.media;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.ext.HeaderProvider;
+import java.text.ParseException;
+import java.util.StringTokenizer;
+
+public class MediaTypeProvider implements HeaderProvider<MediaType> {
+
+ public boolean supports(Class<?> type) {
+ return type==MediaType.class ? true : false;
+ }
+
+ public String toString(MediaType header) {
+ StringBuilder b = new StringBuilder();
+ b.append(header.getType());
+ b.append('/');
+ b.append(header.getSubtype());
+ for (String key: header.getParameters().keySet()) {
+ b.append(';');
+ b.append(key);
+ b.append('=');
+ b.append( header.getParameters().get(key) );
+ }
+ return b.toString();
+ }
+
+ public MediaType fromString(String header) throws ParseException {
+
+ if (header==null)
+ return new MediaType();
+
+ StringTokenizer tok = new StringTokenizer(header, "/");
+
+ assert tok.countTokens() == 2;
+
+ String type = tok. nextToken();
+ String subType = tok.nextToken();
+
+ // TODO: parameter parsing
+
+ return new MediaType(type,subType);
+ }
+
+}
+
Property changes on: rest/src/main/java/org/jboss/rest/media/MediaTypeProvider.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: rest/src/main/java/org/jboss/rest/model/ParameterBinding.java
===================================================================
--- rest/src/main/java/org/jboss/rest/model/ParameterBinding.java 2007-11-26 10:53:50 UTC
(rev 5106)
+++ rest/src/main/java/org/jboss/rest/model/ParameterBinding.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -21,7 +21,9 @@
*/
package org.jboss.rest.model;
+import org.jboss.logging.Logger;
import org.jboss.rest.MethodHTTP;
+import org.jboss.rest.media.DefaultProviderFactory;
import org.jboss.rest.runtime.ContextAdapterBuilder;
import org.jboss.rest.runtime.Invocation;
import org.jboss.rest.runtime.InvocationModel;
@@ -30,6 +32,9 @@
import javax.ws.rs.HeaderParam;
import javax.ws.rs.UriParam;
import javax.ws.rs.core.HttpContext;
+import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.ProviderFactory;
+import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.HashMap;
@@ -63,6 +68,8 @@
*/
public class ParameterBinding implements InvocationModel
{
+ private static Logger log = Logger.getLogger(ParameterBinding.class);
+
/* Pattern of the owning ResourceMethod */
private final Pattern regex;
@@ -94,6 +101,7 @@
this.regex = rootPattern;
}
+ @SuppressWarnings("unchecked")
public void accept(Invocation invocation)
{
RuntimeContext ctx = invocation.getContext();
@@ -110,10 +118,25 @@
throw new RuntimeException("RuntimeContext doesn't match invocation
model");
// @UriParam
- for(String param : uriParam.keySet())
- {
- int paramIndex = uriParam.get(param);
- String paramValue = matcher.group(regexMapping.get(param));
+ for(String paramName : uriParam.keySet())
+ {
+ int paramIndex = uriParam.get(paramName);
+ String paramValue;
+
+ Integer group = regexMapping.get(paramName); // can be null when parent
parameter
+ if(group!=null)
+ {
+ paramValue = matcher.group(group);
+ ctx.addBoundParameter(paramName, paramValue);
+ }
+ else
+ {
+ paramValue = ctx.getBoundParameter(paramName);
+ }
+
+ if(null == paramValue)
+ throw new RuntimeException("Parameter '" + paramName +
"' not bound");
+
invocation.insertParameterInstance(paramIndex, paramValue);
}
@@ -130,14 +153,29 @@
invocation.insertParameterInstance(contextParamter.get(paramType),
paramInstance);
}
- // TODO: Entity body
+ // Bind entity body
if(entityBodyType != null)
{
boolean validRequestMethod = MethodHTTP.POST == ctx.getRequestMethod() ||
MethodHTTP.PUT == ctx.getRequestMethod();
+
if(!validRequestMethod)
throw new RuntimeException("No entity body with request type " +
ctx.getRequestMethod());
- // unmarshall body
+
+ try
+ {
+ // unmarshall body
+ ProviderFactory providerfactory = DefaultProviderFactory.newInstance();
+ MessageBodyReader reader =
providerfactory.createMessageBodyReader(entityBodyType, null);
+ Object messageBody = reader.readFrom(entityBodyType, null, null,
ctx.getInStream() );
+
+ // provide the invocation
+ invocation.insertParameterInstance(entityBodyIndex, messageBody);
+
+ } catch (IOException e)
+ {
+ throw new RuntimeException("Failed to unmarshall request body",
e);
+ }
}
}
@@ -150,7 +188,7 @@
{
for (Annotation[] parameterAnnotations : method.getParameterAnnotations())
{
- if (parameterAnnotations!=null)
+ if (parameterAnnotations.length >0)
{
for (Annotation annotation : parameterAnnotations)
{
@@ -186,7 +224,7 @@
if(entityBodyType!=null)
throw new RuntimeException("Method " + method.getName() + "
contains more then one possible entity body parameters");
- entityBodyType = method.getParameterTypes()[totalParameters-1];
+ entityBodyType = method.getParameterTypes()[totalParameters];
entityBodyIndex = totalParameters;
}
Modified: rest/src/main/java/org/jboss/rest/model/ResourceMethod.java
===================================================================
--- rest/src/main/java/org/jboss/rest/model/ResourceMethod.java 2007-11-26 10:53:50 UTC
(rev 5106)
+++ rest/src/main/java/org/jboss/rest/model/ResourceMethod.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -24,9 +24,9 @@
import org.jboss.rest.MethodHTTP;
import org.jboss.rest.util.Convert;
-import javax.activation.MimeType;
import javax.ws.rs.ConsumeMime;
import javax.ws.rs.ProduceMime;
+import javax.ws.rs.core.MediaType;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -41,8 +41,8 @@
public class ResourceMethod extends AbstractResourceOperation {
private MethodHTTP methodHTTP;
- private List<MimeType> consumeMimeTypes = new ArrayList<MimeType>();
- private List<MimeType> produceMimeTypes = new ArrayList<MimeType>();
+ private List<MediaType> consumeMimeTypes = new ArrayList<MediaType>();
+ private List<MediaType> produceMimeTypes = new ArrayList<MediaType>();
ResourceMethod(ResourceModel parent, MethodHTTP method, String uriTemplate, Method
invocationTarget)
{
@@ -73,12 +73,12 @@
}
- public List<MimeType> getConsumeMimeTypes()
+ public List<MediaType> getConsumeMimeTypes()
{
return consumeMimeTypes;
}
- public List<MimeType> getProduceMimeTypes()
+ public List<MediaType> getProduceMimeTypes()
{
return produceMimeTypes;
}
@@ -96,7 +96,7 @@
// ConsumeMime
ConsumeMime consumeMime = (ConsumeMime)mimeFromMethodOrClass(ConsumeMime.class);
if(consumeMime != null)
- consumeMimeTypes.addAll(Convert.annotationToMimeType(consumeMime));
+ consumeMimeTypes.addAll(Convert.annotationToMediaType(consumeMime));
else
consumeMimeTypes.add( Convert.ANY_MIME );
Modified: rest/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java
===================================================================
--- rest/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/main/java/org/jboss/rest/model/StatefulResourceResolver.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -99,7 +99,7 @@
resourceMethod = dfsResourceMatch(rootResource);
}
- if(null == resourceMethod && visitedLocator.isEmpty())
+ if(null == resourceMethod)
throw new NoMethodException("No method matches URI
'"+context.getPath());
// gotcha
@@ -150,16 +150,11 @@
ResourceLocator bridge = locators.next();
RegexQualifier qualifier = bridge.resolve(uriToken);
- if(qualifier!=null && ! qualifier.marksEnd() )
+ if(qualifier!=null)
{
- // a subresource method is the target
+ // a subresource method is the target
weightedResults.add( new ResourceMatch<ResourceModel>( bridge.field(),
qualifier) );
}
- else if(qualifier!=null)
- {
- // the locator is the target itself
- rememberLocator(bridge, uriToken);
- }
}
if(!weightedResults.isEmpty())
@@ -177,8 +172,6 @@
}
}
-
-
return match;
}
Modified: rest/src/main/java/org/jboss/rest/runtime/InvocationMediator.java
===================================================================
--- rest/src/main/java/org/jboss/rest/runtime/InvocationMediator.java 2007-11-26 10:53:50
UTC (rev 5106)
+++ rest/src/main/java/org/jboss/rest/runtime/InvocationMediator.java 2007-11-26 11:20:31
UTC (rev 5107)
@@ -24,10 +24,10 @@
public Object invoke() throws ResourceError
{
- Object result = null;
-
+ Object returnValue;
+
StatefulResourceResolver resolver =
StatefulResourceResolver.newInstance(runtimeContext);
- ResourceMethod resourceMethod = resolver.resolve();
+ ResourceMethod resourceMethod = resolver.resolve(); // not null, throws exception
// evaluate locator stack
Object subResourceInstance = null;
@@ -38,33 +38,33 @@
runtimeContext.setWorkingPath(resolver.getLocatorWorkingPath(loc));
InvocationBuilder builder = new DefaultInvocationBuilder();
+
+ if(subResourceInstance!=null)
+ builder.addInvocationModel(new PresetInvocationTarget(subResourceInstance));
+
builder.addInvocationModel(loc.getParameterBinding());
builder.addInvocationModel(loc.getOperationBinding());
Invocation locatorInvocation = builder.build(runtimeContext);
InvocationHandler bridgeInvoker = new DefaultInvocationHandler();
subResourceInstance = bridgeInvoker.invoke(locatorInvocation);
- result = subResourceInstance; // best match
}
- if(resourceMethod!=null)
- {
- // create an Invocation instance
- InvocationBuilder builder = new DefaultInvocationBuilder();
- runtimeContext.setWorkingPath(resolver.getMethodWorkingPath());
+ // create an Invocation instance
+ InvocationBuilder builder = new DefaultInvocationBuilder();
+ runtimeContext.setWorkingPath(resolver.getMethodWorkingPath());
- if(subResourceInstance!=null)
- builder.addInvocationModel(new PresetInvocationTarget(subResourceInstance));
+ if(subResourceInstance!=null)
+ builder.addInvocationModel(new PresetInvocationTarget(subResourceInstance));
- builder.addInvocationModel( resourceMethod.getParameterBinding() );
- builder.addInvocationModel( resourceMethod.getOperationBinding() );
- Invocation invocation = builder.build(runtimeContext);
+ builder.addInvocationModel( resourceMethod.getParameterBinding() );
+ builder.addInvocationModel( resourceMethod.getOperationBinding() );
+ Invocation invocation = builder.build(runtimeContext);
- // invoke it
- InvocationHandler invoker = new DefaultInvocationHandler();
- result = invoker.invoke(invocation); // more fine grained match
- }
+ // invoke it
+ InvocationHandler invoker = new DefaultInvocationHandler();
+ returnValue = invoker.invoke(invocation); // more fine grained match
- return result;
+ return returnValue;
}
}
Modified: rest/src/main/java/org/jboss/rest/runtime/RuntimeContext.java
===================================================================
--- rest/src/main/java/org/jboss/rest/runtime/RuntimeContext.java 2007-11-26 10:53:50 UTC
(rev 5106)
+++ rest/src/main/java/org/jboss/rest/runtime/RuntimeContext.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -25,14 +25,16 @@
import org.jboss.rest.model.ResourceModel;
import org.jboss.rest.util.Convert;
-import javax.activation.MimeType;
-import javax.activation.MimeTypeParseException;
+import javax.ws.rs.core.MediaType;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import java.io.InputStream;
/**
- * Requesting a resource thorugh HTTP creates a runtime context<br>
+ * Requesting a resource through HTTP creates a runtime context<br>
* The context is associated with a set of {@link ResourceModel}
*
* @author Heiko.Braun(a)jboss.com
@@ -41,28 +43,39 @@
public class RuntimeContext
{
// Request method
- private MethodHTTP requestMethod;
+ private final MethodHTTP requestMethod;
// Request URI
- private URI uri;
+ private final URI uri;
+ // The associated runtime model for a web context
+ private final List<ResourceModel> rootResources;
+
private String path;
private String webcontext;
// Accepted response body mime types
- private List<MimeType> consumeMimeTypes = new ArrayList<MimeType>();
+ private List<MediaType> acceptMimeTypes = new ArrayList<MediaType>();
// Request body content-type, available with POST or PUT requests
- private MimeType provideMimeType;
+ private MediaType provideMimeType;
- // The associated runtime model for a web context
- private List<ResourceModel> rootResources;
+ private InputStream inStream;
+
+ // ----------------- mutable properties ------
+ /* Path that should be used when invoking resources */
private String workingPath;
+ /* Bound parameter are resolved across invocations, i.e. parent UriParameter*/
+ private Map<String, String> boundParameterInstances = new HashMap<String,
String>();
+
+
+ // ----------------- end mutable properties ------
+
public RuntimeContext(MethodHTTP requestMethod, URI uri, List<ResourceModel>
rootResources)
- {
+ {
this.requestMethod = requestMethod;
this.rootResources = rootResources;
this.uri = uri;
@@ -107,28 +120,21 @@
public void parseAcceptHeader(String headerValue)
{
assert headerValue!=null;
- consumeMimeTypes.addAll( Convert.mimeStringToMimeTypes(headerValue) );
+ acceptMimeTypes.addAll( Convert.mimeStringToMediaTypes(headerValue) );
}
public void parseContentTypeHeader(String headerValue)
{
- try
- {
- this.provideMimeType = new MimeType(headerValue);
- }
- catch (MimeTypeParseException e)
- {
- throw new IllegalArgumentException("Failed to parse 'Content-Type'
header", e);
- }
+ this.provideMimeType = new MediaType(headerValue);
}
- public List<MimeType> getConsumeMimeTypes()
+ public List<MediaType> getAcceptMimeTypes()
{
- return consumeMimeTypes;
+ return acceptMimeTypes;
}
- public MimeType getProvideMimeType()
+ public MediaType getProvideMimeType()
{
if(! (requestMethod == MethodHTTP.POST || requestMethod == MethodHTTP.PUT) )
throw new IllegalArgumentException(requestMethod + " does not provide a
'Content-Type header'");
@@ -160,4 +166,46 @@
{
this.workingPath = workingPath;
}
+
+ /**
+ * Get a parameter that has been reolved in previous invocations
+ * @param name
+ * @return a String value
+ */
+ public String getBoundParameter(String name)
+ {
+ return boundParameterInstances.get(name);
+ }
+
+ /**
+ * Keep already resolved parameter
+ * @param name
+ * @param value
+ */
+ public void addBoundParameter(String name, String value)
+ {
+ boundParameterInstances.put(name, value);
+ }
+
+
+ public Map<String, String> getBoundParameterInstances()
+ {
+ return boundParameterInstances;
+ }
+
+ public void setBoundParameterInstances(Map<String, String>
boundParameterInstances)
+ {
+ this.boundParameterInstances = boundParameterInstances;
+ }
+
+ public InputStream getInStream()
+ {
+ return inStream;
+ }
+
+ public void setInStream(InputStream inStream)
+ {
+ this.inStream = inStream;
+ }
+
}
Modified: rest/src/main/java/org/jboss/rest/util/Convert.java
===================================================================
--- rest/src/main/java/org/jboss/rest/util/Convert.java 2007-11-26 10:53:50 UTC (rev
5106)
+++ rest/src/main/java/org/jboss/rest/util/Convert.java 2007-11-26 11:20:31 UTC (rev
5107)
@@ -23,11 +23,10 @@
import org.jboss.rest.MethodHTTP;
-import javax.activation.MimeType;
-import javax.activation.MimeTypeParseException;
import javax.ws.rs.ConsumeMime;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.ProduceMime;
+import javax.ws.rs.core.MediaType;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
@@ -39,20 +38,8 @@
*/
public class Convert
{
-
- public static MimeType ANY_MIME;
- static
- {
- try
- {
- ANY_MIME = new MimeType("*/*");
- }
- catch (MimeTypeParseException e)
- {
- //
- }
- }
+ public static MediaType ANY_MIME = new MediaType("*", "*");
public static MethodHTTP prefixToMethodHTTP(Method m)
{
@@ -70,12 +57,12 @@
if(null==result)
throw new IllegalArgumentException("Failed to match method by prefix:
" + methodName);
-
+
return result;
}
public static MethodHTTP annotationToMethodHTTP(HttpMethod a)
- {
+ {
HttpMethod hm = (HttpMethod)a;
MethodHTTP result = null;
@@ -95,54 +82,40 @@
}
- public static List<MimeType> annotationToMimeType(ConsumeMime consumeMime)
+ public static List<MediaType> annotationToMediaType(ConsumeMime consumeMime)
{
return mimeStringsToMimeTypes(consumeMime.value());
}
- public static List<MimeType> annotationToMimeType(ProduceMime produceMime)
+ public static List<MediaType> annotationToMimeType(ProduceMime produceMime)
{
return mimeStringsToMimeTypes(produceMime.value());
}
- public static List<MimeType> mimeStringToMimeTypes(String mime)
+ public static List<MediaType> mimeStringToMediaTypes(String mime)
{
- List<MimeType> mimes = new ArrayList<MimeType>();
+ List<MediaType> mimes = new ArrayList<MediaType>();
- try
+ StringTokenizer tokenizer = new StringTokenizer(mime, ",");
+ while(tokenizer.hasMoreTokens())
{
- StringTokenizer tokenizer = new StringTokenizer(mime, ",");
- while(tokenizer.hasMoreTokens())
- {
- String tok = tokenizer.nextToken().trim();
- if(tok.indexOf("/") != -1) // Ignore mimes without subtype, i.e
'*; q=.2'
- mimes.add( new MimeType(tok) );
- }
+ String tok = tokenizer.nextToken().trim();
+ if(tok.indexOf("/") != -1) // Ignore mimes without subtype, i.e
'*; q=.2'
+ mimes.add( new MediaType(tok) );
}
- catch (MimeTypeParseException e)
- {
- throw new IllegalArgumentException("Failed to parse mime string
'"+mime+"'", e);
- }
+
return mimes;
}
- public static List<MimeType> mimeStringsToMimeTypes(String[] mimeStrings)
+ public static List<MediaType> mimeStringsToMimeTypes(String[] mimeStrings)
{
- List<MimeType> mimes = new ArrayList<MimeType>();
-
- try
+ List<MediaType> mimes = new ArrayList<MediaType>();
+ for(String s : mimeStrings)
{
- for(String s : mimeStrings)
- {
- mimes.add( new MimeType(s) );
- }
+ mimes.add( new MediaType(s) );
}
- catch (MimeTypeParseException e)
- {
- throw new IllegalArgumentException("Failed to parse mime string
'"+mimeStrings+"'", e);
- }
-
+
return mimes;
}
}
Added:
rest/src/main/resources/jbossrest.jar/META-INF/services/javax.ws.rs.ext.ProviderFactory
===================================================================
---
rest/src/main/resources/jbossrest.jar/META-INF/services/javax.ws.rs.ext.ProviderFactory
(rev 0)
+++
rest/src/main/resources/jbossrest.jar/META-INF/services/javax.ws.rs.ext.ProviderFactory 2007-11-26
11:20:31 UTC (rev 5107)
@@ -0,0 +1 @@
+org.jboss.rest.media.DefaultProviderFactory
\ No newline at end of file
Modified: rest/src/test/java/org/jboss/test/rest/WidgetList.java
===================================================================
--- rest/src/test/java/org/jboss/test/rest/WidgetList.java 2007-11-26 10:53:50 UTC (rev
5106)
+++ rest/src/test/java/org/jboss/test/rest/WidgetList.java 2007-11-26 11:20:31 UTC (rev
5107)
@@ -45,7 +45,7 @@
@ConsumeMime({"text/xml", "application/xml"})
public void putDiscounted(
@HttpContext HttpHeaders headers,
- Widget special
+ String special
)
{
Modified:
rest/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java
===================================================================
---
rest/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java 2007-11-26
10:53:50 UTC (rev 5106)
+++
rest/src/test/java/org/jboss/test/rest/invocation/InvocationBuilderTestCase.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -33,6 +33,7 @@
import java.net.URI;
import java.util.List;
import java.util.Stack;
+import java.io.ByteArrayInputStream;
/**
* @author Heiko.Braun(a)jboss.com
@@ -104,6 +105,8 @@
URI uri = new URI("/rest/widgets/special");
RuntimeContext context = defaultRuntimeContext(MethodHTTP.PUT, uri);
context.parseContentTypeHeader("text/xml");
+ context.setInStream( new ByteArrayInputStream("MySpecial".getBytes()) );
+
StatefulResourceResolver resolver = StatefulResourceResolver.newInstance(context);
ResourceMethod method = resolver.resolve();
Modified: rest/src/test/java/org/jboss/test/rest/media/BookResource.java
===================================================================
--- rest/src/test/java/org/jboss/test/rest/media/BookResource.java 2007-11-26 10:53:50 UTC
(rev 5106)
+++ rest/src/test/java/org/jboss/test/rest/media/BookResource.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -1,7 +1,6 @@
package org.jboss.test.rest.media;
-import javax.ws.rs.HttpMethod;
-import javax.ws.rs.UriTemplate;
+import javax.ws.rs.*;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@@ -59,4 +58,29 @@
{
this.title = title;
}
+
+ @HttpMethod
+ @ProduceMime("text/xml")
+ public BookResource getBook(
+ @UriParam("isbn") String isbn
+ )
+ {
+ return BookStoreResource.findBook(isbn);
+ }
+
+ @HttpMethod
+ @ConsumeMime("text/xml")
+ public void putBook(
+ @UriParam("isbn") String isbn,
+ BookResource book)
+ {
+ BookResource match = BookStoreResource.findBook(isbn);
+ match.updateFrom(book);
+ }
+
+ public void updateFrom(BookResource update)
+ {
+ this.title = update.title;
+ this.author = update.author;
+ }
}
Modified: rest/src/test/java/org/jboss/test/rest/media/BookStoreResource.java
===================================================================
--- rest/src/test/java/org/jboss/test/rest/media/BookStoreResource.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/test/java/org/jboss/test/rest/media/BookStoreResource.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -10,10 +10,10 @@
@UriTemplate("books")
public class BookStoreResource
{
-
- private List<BookResource> availableBooks = new
ArrayList<BookResource>();
- public BookStoreResource()
+ private static List<BookResource> availableBooks = new
ArrayList<BookResource>();
+
+ static
{
availableBooks.add( new BookResource("Leonard Richardson",
"596529260", "RESTful Web Services") );
availableBooks.add( new BookResource("Sam Ruby", "3897217279",
"Web Services mit REST") );
@@ -23,9 +23,20 @@
public BookResource getBookByISBN(
@UriParam("isbn")
String isbn)
+ {
+ return findBook(isbn);
+ }
+
+ @HttpMethod
+ @ProduceMime("text/xml")
+ public List<BookResource> getAllBooks()
{
+ return availableBooks;
+ }
+
+ protected static BookResource findBook(String isbn)
+ {
BookResource match = null;
-
for(BookResource book : availableBooks)
{
if(book.getISBN().equals(isbn))
@@ -35,13 +46,10 @@
}
}
+ if(null == match)
+ throw new RuntimeException("No book matching ISBN " + isbn);
+
return match;
}
- @HttpMethod
- @ProduceMime("text/xml")
- public List<BookResource> getAllBooks()
- {
- return availableBooks;
- }
}
Modified: rest/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java
===================================================================
--- rest/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java 2007-11-26
10:53:50 UTC (rev 5106)
+++ rest/src/test/java/org/jboss/test/rest/media/MediaTypeTestCase.java 2007-11-26
11:20:31 UTC (rev 5107)
@@ -2,6 +2,7 @@
import junit.framework.Test;
import org.jboss.rest.media.DefaultProviderFactory;
+import org.jboss.rest.MethodHTTP;
import org.jboss.test.rest.util.RestCase;
import org.jboss.test.rest.util.RestTestSetup;
@@ -24,30 +25,52 @@
}
/**
- * Request a xml resource representation
+ * GET a xml resource representation
*
* @throws Exception
*/
- public void testRequest1() throws Exception
+ public void testGetXMLRepresentation() throws Exception
{
URL url = new
URL("http://localhost:8080/rest-mediatype/books/3897217279");
- Object response = doMediaRequest(url, null);
+ Object response = executeRequest(url, MethodHTTP.GET, null );
assertNotNull(response );
assertTrue( (response instanceof BookResource));
assertEquals( "Sam Ruby", ((BookResource)response ).getAuthor());
}
- private Object doMediaRequest(URL url, Object data) throws Exception
+ /**
+ * PUT a resource representation
+ * @throws Exception
+ */
+ public void testPutXMLRepresentation() throws Exception
{
+ URL url = new
URL("http://localhost:8080/rest-mediatype/books/3897217279");
+
+ BookResource book = new BookResource("Sam Ruby", "3897217279",
"Web Services mit REST, Edition 2");
+
+ Object response = executeRequest(url, MethodHTTP.PUT, book);
+ assertNull(response);
+
+ // verify update
+ response = executeRequest(url, MethodHTTP.GET, null );
+ assertTrue( (response instanceof BookResource));
+ assertEquals( "Web Services mit REST, Edition 2", ((BookResource)response
).getTitle());
+ }
+
+ private Object executeRequest(URL url, MethodHTTP method, Object data) throws
Exception
+ {
ProviderFactory providerFactory = DefaultProviderFactory.newInstance();
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput( data!=null );
conn.setRequestProperty("accept", "text/xml");
+ conn.setRequestMethod(method.toString());
if(data !=null)
{
+ conn.setRequestProperty("Content-Type", "text/xml");
+
OutputStream out = conn.getOutputStream();
MessageBodyWriter writer =
providerFactory.createMessageBodyWriter(data.getClass(), null);
writer.writeTo(data, null, null, out);
@@ -56,10 +79,13 @@
}
Object returnValue = null;
- MessageBodyReader reader =
providerFactory.createMessageBodyReader(BookResource.class, null);
- if(reader.isReadable(BookResource.class))
+ if(conn.getResponseCode() == 200)
{
- returnValue = reader.readFrom(BookResource.class, null, null,
conn.getInputStream());
+ MessageBodyReader reader =
providerFactory.createMessageBodyReader(BookResource.class, null);
+ if(reader.isReadable(BookResource.class))
+ {
+ returnValue = reader.readFrom(BookResource.class, null, null,
conn.getInputStream());
+ }
}
return returnValue;
Deleted: rest/src/test/java/org/jboss/test/rest/model/RunRegex.java
===================================================================
--- rest/src/test/java/org/jboss/test/rest/model/RunRegex.java 2007-11-26 10:53:50 UTC
(rev 5106)
+++ rest/src/test/java/org/jboss/test/rest/model/RunRegex.java 2007-11-26 11:20:31 UTC
(rev 5107)
@@ -1,78 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.jboss.test.rest.model;
-
-import java.net.URI;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.Collection;
-import java.util.List;
-import java.util.ArrayList;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- * @version $Revision$
- */
-public class RunRegex
-{
- public static void main(String[] args) throws Exception
- {
-
- /*URI uri = new
URI("http://jboss.com/widgets/special");
- System.out.println(uri.getPath());
-
- String s = "spec";
- System.out.println("> " +s);
- Pattern p = Pattern.compile("(\\bspec\\b)(.*?)(/)?");
- //Pattern p = Pattern.compile("(\\bspec\\b)(/)?");
- Matcher m = p.matcher(s);
-
- System.out.println("? " + m.matches());
-
- int matchingGroups = 0;
- for(int i=1; i<=m.groupCount(); i++)
- {
- String s1 = m.group(i);
- System.out.println("g '" + s1 + "'");
- if(s1!=null && "".equals(s1)==false)
- matchingGroups++;
- }
-
- System.out.println("! "+matchingGroups);
- System.out.println("< "+m.group(m.groupCount()));
- System.out.println("---"); */
-
-
- List<String> l = new ArrayList<String>();
- Class type = getComponentType(l);
- System.out.println(type);
- System.out.println( type == String.class );
-
- }
-
- public static Class getComponentType(Collection<?> c)
- {
- System.out.println(c.getClass().getConstructors()[0].getParameterTypes());
- return c.getClass();
- }
-
-}