[JBoss JIRA] (JBIDE-26164) internal packages are a mess
by Josef Kopriva (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26164?page=com.atlassian.jira.plugi... ]
Josef Kopriva closed JBIDE-26164.
---------------------------------
PR is merged, nothing to do.
> internal packages are a mess
> ----------------------------
>
> Key: JBIDE-26164
> URL: https://issues.jboss.org/browse/JBIDE-26164
> Project: Tools (JBoss Tools)
> Issue Type: Enhancement
> Components: openshift
> Affects Versions: 4.6.0.AM3
> Reporter: Andre Dietisheim
> Assignee: Andre Dietisheim
> Priority: Minor
> Labels: cleanup
> Fix For: 4.9.0.AM2
>
> Attachments: image-2018-07-04-15-42-01-395.png
>
>
> Our package structure is a mess, especially internal ones are wrong.
> Ex. org.jboss.tools.openshift ui:
> There are 2 internal packages:
> * org.jboss.tools.openshift.internal.ui
> * org.jboss.tools.openshift.ui.internal
> !image-2018-07-04-15-42-01-395.png!
> Internal packages have to follow the base component name, which in our case is org.jboss.tools.openshift:
> * org.jboss.tools.openshift.internal.ui: *{color:green}CORRECT{color}*
> * org.jboss.tools.openshift.ui.internal: *{color:red}WRONG{color}*
> For the background:
> * https://wiki.eclipse.org/Naming_Conventions#Internal_Implementation_Packages:
> {quote}
> All implementation packages should be flagged as internal, with the tag occurring just after the major package name
> {quote}
> * http://wiki.eclipse.org/Naming_Conventions#Java_Packages
> {quote}
> org.eclipse.jdt.internal.core.compiler - Correct usage
> org.eclipse.jdt.core.internal.compiler - Incorrect. internal should immediately follow project name.
> org.eclipse.core.internal.resources - Correct usage
> org.eclipse.internal.core.resources - Incorrect. internal should never immediately follow org.eclipse.
> org.eclipse.core.resources.internal - Incorrect. internal should immediately follow Eclipse Platform component name.
> {quote}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-22138) Server adapter: doesn't respect openshift maven profile
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-22138?page=com.atlassian.jira.plugi... ]
Andre Dietisheim commented on JBIDE-22138:
------------------------------------------
The PR for JBIDE-26175 activates the maven profile on publishing and includes a workaround for the J2EEDeployableFactory cache invalidation bug.
> Server adapter: doesn't respect openshift maven profile
> -------------------------------------------------------
>
> Key: JBIDE-22138
> URL: https://issues.jboss.org/browse/JBIDE-22138
> Project: Tools (JBoss Tools)
> Issue Type: Bug
> Components: openshift
> Environment: JBoss Developer Studio (Core Features) 9.1.0.GA-v20160403-1700-B477
> Openshift plugin 3.1.0.Final-v20160401-2357-B263
> Reporter: Rafael Benevides
> Assignee: Andre Dietisheim
> Labels: openshift_v3, server_adapter
> Fix For: 4.9.0.AM2
>
> Attachments: image-2018-06-22-19-02-57-247.png
>
>
> This is a follow up on JBIDE-22128.
> The maven profile is never read to determine the actual archive name. That will require more coupling to m2e, in order to load the pom.xml model using the openshift profile, if it exists, in order to determine the archive name. This will be a long running operation and will require more significant changes
> steps:
> # EXEC: follow steps outlined in https://github.com/redhat-helloworld-msa/helloworld-msa/blob/master/hello... (deploying with fabric8 maven plugin doesn't work, you end up having the pod failing with ImagePullBack error. You need to take the alternative road where you deploy via "oc new-build", "oc new-app", "oc expose" etc.)
> # EXEC: import the app into your Eclipse workspace
> # EXEC: "hello" (workspace) project: Properties > Maven > Active Maven Profile: set "openshift"
> # EXEC: create a server adapter and start it
> # ASSERT: adapter starts syncing, verify what war is used
> Result:
> The war that's created locally and then synced to the pod is "hello.war" even though the profile specifies "ROOT.war"
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-22138) Server adapter: doesn't respect openshift maven profile
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-22138?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-22138:
-------------------------------------
Git Pull Request: (was: https://github.com/jbosstools/jbosstools-openshift/pull/1785)
> Server adapter: doesn't respect openshift maven profile
> -------------------------------------------------------
>
> Key: JBIDE-22138
> URL: https://issues.jboss.org/browse/JBIDE-22138
> Project: Tools (JBoss Tools)
> Issue Type: Bug
> Components: openshift
> Environment: JBoss Developer Studio (Core Features) 9.1.0.GA-v20160403-1700-B477
> Openshift plugin 3.1.0.Final-v20160401-2357-B263
> Reporter: Rafael Benevides
> Assignee: Andre Dietisheim
> Labels: openshift_v3, server_adapter
> Fix For: 4.9.0.AM2
>
> Attachments: image-2018-06-22-19-02-57-247.png
>
>
> This is a follow up on JBIDE-22128.
> The maven profile is never read to determine the actual archive name. That will require more coupling to m2e, in order to load the pom.xml model using the openshift profile, if it exists, in order to determine the archive name. This will be a long running operation and will require more significant changes
> steps:
> # EXEC: follow steps outlined in https://github.com/redhat-helloworld-msa/helloworld-msa/blob/master/hello... (deploying with fabric8 maven plugin doesn't work, you end up having the pod failing with ImagePullBack error. You need to take the alternative road where you deploy via "oc new-build", "oc new-app", "oc expose" etc.)
> # EXEC: import the app into your Eclipse workspace
> # EXEC: "hello" (workspace) project: Properties > Maven > Active Maven Profile: set "openshift"
> # EXEC: create a server adapter and start it
> # ASSERT: adapter starts syncing, verify what war is used
> Result:
> The war that's created locally and then synced to the pod is "hello.war" even though the profile specifies "ROOT.war"
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-22138) Server adapter: doesn't respect openshift maven profile
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-22138?page=com.atlassian.jira.plugi... ]
Andre Dietisheim edited comment on JBIDE-22138 at 8/13/18 6:09 PM:
-------------------------------------------------------------------
[~rob.stryker] [~jeffmaury] I Finally found a fix in (upstream) *org.eclipse.jst.j2ee*:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
I now need to build a usecase that shows the bug and then file a bugzilla.
I created JBIDE-26304 to report this in Eclipse bugzilla and to create a PR.
was (Author: adietish):
[~rob.stryker] [~jeffmaury] I Finally found a fix in (upstream) *org.eclipse.jst.j2ee*:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
I now need to build a usecase that shows the bug and then file a bugzilla.
> Server adapter: doesn't respect openshift maven profile
> -------------------------------------------------------
>
> Key: JBIDE-22138
> URL: https://issues.jboss.org/browse/JBIDE-22138
> Project: Tools (JBoss Tools)
> Issue Type: Bug
> Components: openshift
> Environment: JBoss Developer Studio (Core Features) 9.1.0.GA-v20160403-1700-B477
> Openshift plugin 3.1.0.Final-v20160401-2357-B263
> Reporter: Rafael Benevides
> Assignee: Andre Dietisheim
> Labels: openshift_v3, server_adapter
> Fix For: 4.9.0.AM2
>
> Attachments: image-2018-06-22-19-02-57-247.png
>
>
> This is a follow up on JBIDE-22128.
> The maven profile is never read to determine the actual archive name. That will require more coupling to m2e, in order to load the pom.xml model using the openshift profile, if it exists, in order to determine the archive name. This will be a long running operation and will require more significant changes
> steps:
> # EXEC: follow steps outlined in https://github.com/redhat-helloworld-msa/helloworld-msa/blob/master/hello... (deploying with fabric8 maven plugin doesn't work, you end up having the pod failing with ImagePullBack error. You need to take the alternative road where you deploy via "oc new-build", "oc new-app", "oc expose" etc.)
> # EXEC: import the app into your Eclipse workspace
> # EXEC: "hello" (workspace) project: Properties > Maven > Active Maven Profile: set "openshift"
> # EXEC: create a server adapter and start it
> # ASSERT: adapter starts syncing, verify what war is used
> Result:
> The war that's created locally and then synced to the pod is "hello.war" even though the profile specifies "ROOT.war"
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22138 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
We need to file an Eclipse bug that reports this an create a PR for it (see *Fix* further down)
h2. Steps:
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
was:
JBIDE-22138 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h2. Task
We need to file a bugzilla reporting this and create a PR as a solution.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22138 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> We need to file an Eclipse bug that reports this an create a PR for it (see *Fix* further down)
> h2. Steps:
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> h2. Fix:
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22138 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h2. Task
We need to file a bugzilla reporting this and create a PR as a solution.
was:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h2. Task
We need to file a bugzilla reporting this and create a PR as a solution.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22138 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> h2. Steps:
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> h2. Fix:
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> h2. Task
> We need to file a bugzilla reporting this and create a PR as a solution.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h3. Task
We need to file a bugzilla reporting this and create a PR as a solution.
was:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h3. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h3. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> h2. Steps:
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> h2. Fix:
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> h3. Task
> We need to file a bugzilla reporting this and create a PR as a solution.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h2. Task
We need to file a bugzilla reporting this and create a PR as a solution.
was:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h2. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h2. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
h3. Task
We need to file a bugzilla reporting this and create a PR as a solution.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> h2. Steps:
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> h2. Fix:
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> h2. Task
> We need to file a bugzilla reporting this and create a PR as a solution.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
h3. Steps:
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
h3. Fix:
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
was:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> h3. Steps:
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> h3. Fix:
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months
[JBoss JIRA] (JBIDE-26304) File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
by Andre Dietisheim (JIRA)
[ https://issues.jboss.org/browse/JBIDE-26304?page=com.atlassian.jira.plugi... ]
Andre Dietisheim updated JBIDE-26304:
-------------------------------------
Description:
JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
# ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
# ASSERT: Initially I have
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="hello"
{code}.
# ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
# EXEC: I go project preferences > Maven and choose the "openshift" profile
# ASSERT: I see component settings being updated on disk.
{code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
deploy-name="ROOT"
{code}.
# RESULT: the configured module for my OpenShift server adapter is still called *hello*.
# ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
# EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
# RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
{code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
protected void cleanAllDelegates() {
Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
while(i.hasNext()) {
i.next().clearCache();
}
+ clearModuleCache();
modulesChanged();
}
+ @Override
+ public void clearModuleCache() {
+ clearCache(null);
+ }
{code}
ps. notice the oddness in terms of API:
{code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
> File Eclipse bugzilla reporting J2EEDeployableFactory module cache bug
> ----------------------------------------------------------------------
>
> Key: JBIDE-26304
> URL: https://issues.jboss.org/browse/JBIDE-26304
> Project: Tools (JBoss Tools)
> Issue Type: Task
> Components: openshift
> Affects Versions: 4.9.0.AM3
> Reporter: Andre Dietisheim
> Fix For: 4.9.0.AM3
>
>
> JBIDE-22318 was reported that the OpenShift Server adapter does not respect the "openshift" maven profile of a project.
> While implementing it was discovered that *J2EEDeployableFactory* is not clearing it's module cache when the *deploy-name* in *.settings/org.eclipse.wst.common.component* is changed.
> The following steps assume a change in maven profile which leads to a change in the deploy-name. The same can be achieved by simply editing *.settings/org.eclipse.wst.common.component* in an Eclipse editor, leaving maven aside.
> I have recorded the following screencast: https://www.youtube.com/watch?v=V_SdtXYkJHA&feature=youtu.be
> # ASSERT: I have a maven project "hello" where switching the profile switches the deployment name from *hello.war* (no profile selected) to *ROOT.war* (profile "openshift" selected).
> # ASSERT: Initially I have
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="hello"
> {code}.
> # ASSERT: Looking at the configured modules for my server adapter I see the module being called *hello*.
> # EXEC: I go project preferences > Maven and choose the "openshift" profile
> # ASSERT: I see component settings being updated on disk.
> {code:title=<workspace>hello/.settings/org.eclipse.wst.common.component}
> deploy-name="ROOT"
> {code}.
> # RESULT: the configured module for my OpenShift server adapter is still called *hello*.
> # ASSERT: the configured module for my OpenShift server adapter should be called *hello(ROOT)*.
> # EXEC: If I now go to some project property which updates the maven config (ex. Web Content Settings) and hit "Apply and Close"
> # RESULT: The available modules for my OpenShift Server adapter are updated, the configured module is now updated and called *hello(ROOT)*
> To fix this bad behaviour one has to change *J2EEDeployableFactory* in the following way:
> {code:title=org.eclipse.jst.j2ee.internal.deployables.J2EEDeployableFactory}
> protected void cleanAllDelegates() {
> Iterator<FlatComponentDeployable> i = moduleDelegates.values().iterator();
> while(i.hasNext()) {
> i.next().clearCache();
> }
> + clearModuleCache();
> modulesChanged();
> }
> + @Override
> + public void clearModuleCache() {
> + clearCache(null);
> + }
> {code}
> ps. notice the oddness in terms of API:
> {code}protected void clearCache(IProject project){code} has a parameter *IProject* but it's not being used in this class, nor in the super classes.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
7 years, 7 months