dhmc
dhmc

Reputation: 313

Spring Roo 2.0.0.M2 Issue pizzashop sample issue 2 - Option 'class' is not available for this command

Downloaded and tried the new 2.0.0.M2 version and ran the pizzashop sample, but got this error

field string --fieldName shopCountry --class ~.domain.PizzaOrderPk
Option 'class' is not available for this command when the focus is set to one class.

Code from the samples directory but with commenting the first line:

//  tailor activate --name web-simple
// Create a new project
project setup --topLevelPackage com.springsource.pizzashop --projectName pizzashop

// Setup JPA persistence using EclipseLink and H2
jpa setup --provider ECLIPSELINK --database H2_IN_MEMORY

// Create domain entities
entity jpa --class ~.domain.Base --testAutomatically
field string --fieldName name --sizeMin 2 --notNull

entity jpa --class ~.domain.Topping --testAutomatically
field string --fieldName name --sizeMin 2 --notNull

entity jpa --class ~.domain.Pizza --testAutomatically
field string --fieldName name --notNull --sizeMin 2
field number --fieldName price --type java.math.BigDecimal
field set --fieldName toppings --type ~.domain.Topping
field reference --fieldName base --type ~.domain.Base

entity jpa --class ~.domain.PizzaOrder --testAutomatically --identifierType ~.domain.PizzaOrderPk
field string --fieldName name --notNull --sizeMin 2
field string --fieldName address --sizeMax 30
field number --fieldName total --type java.math.BigDecimal
field date --fieldName deliveryDate --type java.util.Date
field set --fieldName pizzas --type ~.domain.Pizza

field string --fieldName shopCountry --class ~.domain.PizzaOrderPk
field string --fieldName shopCity
field string --fieldName shopName

// Define a repository layer for persistence
repository jpa --interface ~.repository.ToppingRepository --entity ~.domain.Topping
repository jpa --interface ~.repository.BaseRepository --entity ~.domain.Base
repository jpa --interface ~.repository.PizzaRepository --entity ~.domain.Pizza
repository jpa --interface ~.repository.PizzaOrderRepository --entity ~.domain.PizzaOrder

// Define a service/facade layer
service type --interface ~.service.ToppingService --entity ~.domain.Topping
service type --interface ~.service.BaseService --entity ~.domain.Base
service type --interface ~.service.PizzaService --entity ~.domain.Pizza
service type --interface ~.service.PizzaOrderService --entity ~.domain.PizzaOrder

// Offer JSON remoting for all domain types through Spring MVC
json all --deepSerialize
web mvc json setup
web mvc json all --package ~.web

web mvc setup
web mvc all --package ~.web

// Example scripts for JSON remoting:
// curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{name: "Thin Crust"}' http://localhost:8080/pizzashop/bases
// curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '[{name: "Cheesy Crust"},{name: "Thick Crust"}]' http://localhost:8080/pizzashop/bases/jsonArray
// curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '[{name: "Fresh Tomato"},{name: "Prawns"},{name: "Mozarella"},{name: "Bogus"}]' http://localhost:8080/pizzashop/toppings/jsonArray
// curl -i -X DELETE -H "Accept: application/json" http://localhost:8080/pizzashop/toppings/7
// curl -i -X PUT -H "Content-Type: application/json" -H "Accept: application/json" -d '{id:6,name:"Mozzarella",version:1}' http://localhost:8080/pizzashop/toppings
// curl -i -H "Accept: application/json" http://localhost:8080/pizzashop/toppings
// curl -i -H "Accept: application/json" http://localhost:8080/pizzashop/toppings/6
// curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{name:"Napolitana",price:7.5,base:{id:1},toppings:[{name: "Anchovy fillets"},{name: "Mozzarella"}]}' http://localhost:8080/pizzashop/pizzas
// curl -i -X POST -H "Content-Type: application/json" -H "Accept: application/json" -d '{name:"Stefan",total:7.5,address:"Sydney, AU",deliveryDate:1314595427866,id:{shopCountry:"AU",shopCity:"Sydney",shopName:"Pizza Pan 1"},pizzas:[{id:8,version:1}]}' http://localhost:8080/pizzashop/pizzaorders

This will result in:

D:\Source\Test\Pizza
λ \Tools\spring-roo-2.0.0.M2\bin\roo.bat
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/    2.0.0.M2 [rev 003b42c]


Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
Spring Roo Eastern Grey UI started at 'http://localhost:9191/'
roo> script --file pizzashop.roo
//    tailor activate --name web-simple
// Create a new project
project setup --topLevelPackage com.springsource.pizzashop --projectName pizzashop
Created ROOT\pom.xml
Created SRC_MAIN_RESOURCES
Created SRC_MAIN_JAVA\com\springsource\pizzashop
Created SRC_MAIN_JAVA\com\springsource\pizzashop\PizzashopApplication.java
Created SRC_MAIN_RESOURCES\banner.txt

// Setup JPA persistence using EclipseLink and H2
jpa setup --provider ECLIPSELINK --database H2_IN_MEMORY
Created SRC_MAIN_RESOURCES\application.properties
Updated ROOT\pom.xml [added dependencies org.springframework.boot:spring-boot-starter-data-jpa:, com.h2database:h2:]

// Create domain entities
entity jpa --class ~.domain.Base --testAutomatically
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Base.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\BaseDataOnDemand.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\BaseIntegrationTest.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Base_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Base_Roo_ToString.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\BaseIntegrationTest_Roo_Configurable.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\BaseDataOnDemand_Roo_Configurable.aj
field string --fieldName name --sizeMin 2 --notNull
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Base.java
Updated ROOT\pom.xml [added dependency javax.validation:validation-api:null]
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Base_Roo_JavaBean.aj

entity jpa --class ~.domain.Topping --testAutomatically
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Topping.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\ToppingDataOnDemand.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\ToppingIntegrationTest.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Topping_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Topping_Roo_ToString.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\ToppingIntegrationTest_Roo_Configurable.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\ToppingDataOnDemand_Roo_Configurable.aj
field string --fieldName name --sizeMin 2 --notNull
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Topping.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Topping_Roo_JavaBean.aj

entity jpa --class ~.domain.Pizza --testAutomatically
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaDataOnDemand.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaIntegrationTest.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_ToString.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaIntegrationTest_Roo_Configurable.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaDataOnDemand_Roo_Configurable.aj
field string --fieldName name --notNull --sizeMin 2
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_JavaBean.aj
field number --fieldName price --type java.math.BigDecimal
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_JavaBean.aj
field set --fieldName toppings --type ~.domain.Topping
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_JavaBean.aj
field reference --fieldName base --type ~.domain.Base
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\Pizza_Roo_JavaBean.aj

entity jpa --class ~.domain.PizzaOrder --testAutomatically --identifierType ~.domain.PizzaOrderPk
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaOrderDataOnDemand.java
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaOrderIntegrationTest.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_Jpa_Entity.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_ToString.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaOrderDataOnDemand_Roo_Configurable.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk_Roo_Configurable.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk_Roo_Serializable.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk_Roo_Identifier.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk_Roo_Equals.aj
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrderPk_Roo_ToString.aj
Created SRC_TEST_JAVA\com\springsource\pizzashop\domain\PizzaOrderIntegrationTest_Roo_Configurable.aj
field string --fieldName name --notNull --sizeMin 2
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Created SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_JavaBean.aj
field string --fieldName address --sizeMax 30
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_JavaBean.aj
field number --fieldName total --type java.math.BigDecimal
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_JavaBean.aj
field date --fieldName deliveryDate --type java.util.Date
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_JavaBean.aj
field set --fieldName pizzas --type ~.domain.Pizza
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder.java
Updated SRC_MAIN_JAVA\com\springsource\pizzashop\domain\PizzaOrder_Roo_JavaBean.aj

field string --fieldName shopCountry --class ~.domain.PizzaOrderPk
Option 'class' is not available for this command when the focus is set to one class.
Script required 2.173 seconds to execute
Script execution aborted
~.domain.PizzaOrder roo>

Upvotes: 0

Views: 291

Answers (1)

jcgarcia
jcgarcia

Reputation: 3882

Hi and thanks for your report.

I've just created a new issue related with this question on the Spring Roo JIRA issue tracker to review .roo scripts provided on the Spring Roo distribution.

https://jira.spring.io/browse/ROO-3752

Answering your question, in Spring Roo 2.0.0.M2 version, field commands are prepared to be used on current entities and future implementation of DTOs. Depending of the type of the focused class, entity or dto, some command parameters will be available or not. So, if you have already the focus in some class, you are not able to indicate another different class using --class parameter to prevent that you change to other type and use invalid parameters for the selected one.

However, maybe this is not the best way to deal with it, so we're analyzing this behaviour.

As workaround, you could execute the following command to change the focused class before to execute the field command:

focus --class ~.domain.PizzaOrderPk

Hope this helps.

Upvotes: 2

Related Questions