Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
James Falkner
UPDATE: Marketplace App Approvals
January 4, 2013 1:33 PM
Answer

James Falkner

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1222

Join Date: September 17, 2010

Recent Posts

Hello Marketplace Developers!

Thanks to many of you for submitting your apps to the Liferay Marketplace. Back in November, when apps began rolling in, we noticed several unexpected things about them that would result in confusion in the future, and several things that could be improved in our internal workflow for approvals. We decided to stop the approval process for a while, and revise the policies and procedures to ensure a smooth transition. I'm happy to report that we have now sorted these issues out, and are actively reviewing (and hopefully approving) apps.

The following policies now apply to all app submissions going forward. You should familiarize yourself with the documentation for an overall guide to developing and submitting apps. This documentation is in the process of being revised to incorporate these new policies.

  1. Your app must have at least an English description. If you click the "Localized" checkbox you can submit descriptions for the other supported languages on liferay.com. Descriptions with poor grammar or other problems will need to be revised. Note that if you are logged into liferay.com using some other supported language, then the description you enter will by default be assumed to be in that language. You will need to click the "Localized" checkbox and switch to English to supply an English description.
  2. Your app must have at least one screenshot. If your app has no visible UI, you must still submit some kind of screenshot (for example, check out the screenshots for this app).
  3. The version specification in each embedded WAR must be terminated with a version using the + symbol. This ensures that your app will be deployable onto future versions of Liferay (but does not guarantee your app will work in future versions). So, 6.1.1 will not work, but 6.1.1+ will work. In most cases, as of 6.1.1, it is best to specify liferay-versions=6.1.1+ . This will guarantee your app is deployable onto Liferay 6.1 CE GA2 and later (including EE).
  4. You should not use overlapping version specifications, for example, do not use 6.1.1+,6.1.20+ . The documentation was not clear on this, and even used this as an example, but for consistency (and to reinforce the notion that apps developed for CE should be compatible with EE), you should simply use 6.1.1+ to capture all of those versions. In the future, if you discover that your app does not work with a particular version of Liferay, you can revise your versioning, but for now, we ask that you use 6.1.1+ for CE/EE apps, and 6.1.20+ for EE-only apps.
  5. If you use something other than the above for your version specification, be sure to include a description of it in the description of your app, or email marketplace-dev@liferay.com with some justification of your unusual versioning scheme, to aid in the app's approval. If your app is designed for EE only, you can use something like 6.1.20+. However, this will restrict your app only to EE customers.
  6. You must include a link for the following Metadata: "Website", "Support". These are currently "optional" in the Marketplace UI but will become required shortly.
  7. If your app is to be professionally offered/supported, you must submit the app on behalf of a registered company. If the nature of the app implies it is authored/supported by a company or non-profit organization, but is submitted by an individual with no explanation, the app will likely be rejected. To register your company, visit the Marketplace homepage and click on "Become a Developer" on the left.
  8. Be sure to choose a relatively short name for your app. "App that clears the database cache, expires web contents, and clears the in-memory cache" is not a good title. "ClearCache" is much better and catchier!
  9. The use of the Liferay Security Manager (aka PACL) is required (by putting security-manager-enabled=true in your liferay-plugin-package.properties file). However, it is not enough to test your app with PACL disabled, then at the last minute, with no further testing, enable it and submit your app. We noticed many apps that were submitted in this way, and they have been rejected as most apps will not work without a tested access control list. See the Liferay Security Manager documentation for details on how to enable this properly. If you believe your app does indeed work with simply PACL turned on, with no other access control specifiers, be sure to email marketplace-dev@liferay.com and let us know this.
  10. Be sure your screenshots and icons adhere to the requirements. Also, be sure you do not violate the copyright or trademark restrictions of other apps. For example, for a SharePoint-related app, do not use Microsoft's trademarked logo in your logo.


If you submit an app, and it is rejected/denied, here's the procedure to correct the app:
  1. Navigate to your personal profile's "home" page (or your company's "home" page if you submitted on behalf of a company)
  2. Click on "App Manager"
  3. Click on the "Apps" tab
  4. Click on the App in question, and you will be taken to the App Summary screen. At the bottom will be a note with the reason for rejection.
  5. Click on "Edit", to step through the same screens you originally stepped through. This will allow you to make corrections on each screen.
  6. If you need to revise the WAR files, skip to the screen listing the WAR files of your app. Delete the old ones by clicking "Delete" next to the ones you need to delete. Make revisions to your WAR files locally, then re-upload them. Proceed to the final screen and click "Submit for Review". Your app is now re-submitted.


We are very excited to see the Marketplace flourish with high quality apps, and to those that have submitted thus far, I'd like to personally thank you for being an early adopter, apologize for the rough start, and ask that you keep at it - your apps should begin appearing on the Marketplace as we ramp up the approvals pipeline!
Gaurav Jain
RE: UPDATE: Marketplace App Approvals
January 8, 2013 8:31 AM
Answer

Gaurav Jain

Rank: Regular Member

Posts: 141

Join Date: January 31, 2011

Recent Posts

Wow that's great!
Florencia Gadea
RE: UPDATE: Marketplace App Approvals
January 8, 2013 9:01 AM
Answer

Florencia Gadea

Rank: Regular Member

Posts: 146

Join Date: March 27, 2012

Recent Posts

Great news!!

Could you please update this post or create new posts when a new app has been approved and uploaded in the Marketplace?
I would like to take a look at their PACL configuration.

What will happen with the bugs that the security manager has and require a core fix? Like this one: http://www.liferay.com/community/forums/-/message_boards/view_message/19023969#_19_message_19023969

Do we have to wait for the next Liferay's release?

Regards,

Flor.
Juan Gonzalez
RE: UPDATE: Marketplace App Approvals
January 8, 2013 9:03 AM
Answer

Juan Gonzalez

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1983

Join Date: October 28, 2008

Recent Posts

Florencia,

I am planning to commit another patches for Community Patcher's version:

http://www.liferay.com/community/forums/-/message_boards/message/18969121

And was thinking about including those involving PACL.

Just stay tunned...
Mohamed Rizwanuzaman
RE: UPDATE: Marketplace App Approvals
January 15, 2013 4:47 AM
Answer

Mohamed Rizwanuzaman

Rank: New Member

Posts: 18

Join Date: December 16, 2009

Recent Posts

HI james,
i tried to upload an app to market place. but its shows me a "No compatible liferay version found" error message.
i have added the below lines in liferay-plugin-package.properties file

name=multilingual
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Mohamed Rizwan
licenses=LGPL
security-manager-enabled=true
liferay-versions=6.1.1+

Please let me know what could be the issue.

Regards,
Rizwan
James Falkner
RE: UPDATE: Marketplace App Approvals
January 15, 2013 7:08 AM
Answer

James Falkner

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1222

Join Date: September 17, 2010

Recent Posts

Mohamed Rizwanuzaman:
HI james,
i tried to upload an app to market place. but its shows me a "No compatible liferay version found" error message.
i have added the below lines in liferay-plugin-package.properties file

name=multilingual
module-group-id=liferay
module-incremental-version=1
tags=
short-description=
change-log=
page-url=http://www.liferay.com
author=Mohamed Rizwan
licenses=LGPL
security-manager-enabled=true
liferay-versions=6.1.1+

Please let me know what could be the issue.

Regards,
Rizwan


Hmm.. everything looks correct. Make sure your WAR filename is correct. The documentation is in the process of being updated, but here are the WAR file requirements:

- WARs must contain a WEB-INF/liferay-plugin-package.properties file.

- WARs must not contain any WEB-INF/liferay-plugin-package.xml file.

- WAR file names must not contain any commas.

- WAR file names must conform to the following naming convention:

*context_name*-*plugin_type*-A.B.C.D.war

Where:

- *context_name* - Alpha-numeric (including `-` and `_`) short name of your app. This name will be used as the deployment context, and should not duplicate any other app's context (you will see a warning if you use a context name of any other app on the Marketplace).

- *plugin_type* - one of the following: `ext`, `hook`, `layouttpl`, `portlet`, `theme`, or `web`.

- A.B.C.D - The version of your WAR file. There must be 4 digits.

- Example: myapp-portlet-1.0.0.0.war
Mohamed Rizwanuzaman
RE: UPDATE: Marketplace App Approvals
January 16, 2013 2:01 AM
Answer

Mohamed Rizwanuzaman

Rank: New Member

Posts: 18

Join Date: December 16, 2009

Recent Posts

Thanks James, I just enabled the Security PACL. so i have added the set bean ,get bean service enable properties. while i accessing the portlet , i have getting below error
 1
 2java.lang.SecurityException: Attempted to access declared members
 3    at com.liferay.portal.security.pacl.checker.BaseChecker.throwSecurityException(BaseChecker.java:259)
 4    at com.liferay.portal.security.pacl.checker.RuntimeChecker.checkPermission(RuntimeChecker.java:71)
 5    at com.liferay.portal.security.pacl.ActivePACLPolicy.checkPermission(ActivePACLPolicy.java:55)
 6    at com.liferay.portal.security.lang.PortalSecurityManager.checkPermission(PortalSecurityManager.java:103)
 7    at com.liferay.portal.security.lang.PortalSecurityManager.checkPermission(PortalSecurityManager.java:74)
 8    at java.lang.SecurityManager.checkMemberAccess(SecurityManager.java:1662)
 9    at java.lang.Class.checkMemberAccess(Class.java:2157)
10    at java.lang.Class.getDeclaredField(Class.java:1879)
11    at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclaredField(ReflectionNavigator.java:243)
12    at com.sun.xml.internal.bind.v2.model.nav.ReflectionNavigator.getDeclaredField(ReflectionNavigator.java:47)
13    at com.sun.xml.internal.bind.v2.model.impl.RegistryInfoImpl.<init>(RegistryInfoImpl.java:70)
14    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.addRegistry(ModelBuilder.java:346)
15    at com.sun.xml.internal.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:316)
16    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:430)
17    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:277)
18    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1100)
19    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:143)
20    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:110)
21    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:191)
22    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
23    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
24    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
25    at java.lang.reflect.Method.invoke(Method.java:597)
26    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128)
27    at javax.xml.bind.ContextFinder.find(ContextFinder.java:290)
28    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
29    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
30    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:244)
31    at com.msat.portlet.multilingual.MultilingualContent.addUpdateContent(MultilingualContent.java:240)
]
because i tried to use the Jaxb in my class

JAXBContext context = JAXBContext.newInstance("com.msat.xmlscheme.beans");

i have note those class in my properties
security-manager-set-bean-property=\
javax.xml.bind.JAXBContext,\
com.msat.xmlscheme.beans.Root,\
com.msat.xmlscheme.beans.Root.Language,\
com.msat.xmlscheme.beans.Root.Language.Content.Field
security-manager-get-bean-property=\
javax.xml.bind.JAXBContext,\
com.msat.xmlscheme.beans.Root,\
com.msat.xmlscheme.beans.Root.Language,\
com.msat.xmlscheme.beans.Root.Language.Content.Field

but i couldn't make it out. Please help me to sort out this.

Regards,
Rizwan
James Falkner
RE: UPDATE: Marketplace App Approvals
January 17, 2013 6:17 AM
Answer

James Falkner

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1222

Join Date: September 17, 2010

Recent Posts

Mohamed Rizwanuzaman:
Thanks James, I just enabled the Security PACL. so i have added the set bean ,get bean service enable properties. while i accessing the portlet , i have getting below error
1
2java.lang.SecurityException: Attempted to access declared members
3    at com.liferay.portal.security.pacl.checker.BaseChecker.throwSecurityException(BaseChecker.java:259)
4    at com.liferay.portal.security.pacl.checker.RuntimeChecker.checkPermission(RuntimeChecker.java:71)
5    at com.liferay.portal.security.pacl.ActivePACLPolicy.checkPermission(ActivePACLPolicy.java:55)
6...
]
because i tried to use the Jaxb in my class

JAXBContext context = JAXBContext.newInstance("com.msat.xmlscheme.beans");



This is due to reflection being used by JAXB, and PACL not knowing how to deal with it. See this thread for details, but the short answer is it's broken and will be fixed in the upcoming GA3 release.