Coder Social home page Coder Social logo

pulse00 / composer-eclipse-plugin Goto Github PK

View Code? Open in Web Editor NEW
49.0 49.0 13.0 3.03 MB

Eclipse integration for the PHP Dependency Manager Composer

Home Page: http://composer.dubture.com/

License: MIT License

Java 87.48% PHP 11.75% Shell 0.75% CSS 0.02%

composer-eclipse-plugin's People

Contributors

b4cedev avatar gossi avatar kaloyan-raev avatar pavelhoral avatar pulse00 avatar zulus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

composer-eclipse-plugin's Issues

Sometimes search stops working

Searching in the Composer Editor sometimes stops working.

I assume, there are some issues with aborting the get requests.

needinput

gossi

USE_PROJECT_PHAR not saved properly

Runtime settings are stored in: /.metadata/.plugins/org.eclipse.core.runtime/.settings/com.dubture.composer.core.prefs

Here is how to do it:

  1. cat com.dubture.composer.core.prefs => use_project_phar=true
  2. Eclipse > Settings > Composer > Select "global composer"
  3. Apply/Ok
  4. cat com.dubture.composer.core.prefs => use_project_phar=false
  5. Close Eclipse
  6. cat com.dubture.composer.core.prefs => use_project_phar=true

should be false at the end

Can't install when php dependency doesn't match php environment

Eclipse runs its own environment. Thus a user .profile to set additional environment settings is ignored. It's the blank environment by the operating system. This causes the following problem.

php via os: 5.3
php via homebrew: 5.4

composer.json:

require: {
  "php": ">= 5.4"
}

running composer from inside eclipse uses the os environment with the php 5.3 version and results in the following error:

Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package php >=5.4 could not be found.

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your minimum-stability setting
   see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.

Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.

When run via terminal the user environment is used and thus can be installed. This is unfortunately very sad for the end user as he does not know what's going on...

No dirty change on Edit Dialogs

In the composer UI, when editing a record in a TableSection, a dirty change isn't fired when the record changes. At the moment this affects changing an author or dependency.

Affected lines (e.g. AuthorSection, lines 192-195) :

Person author = (Person)((StructuredSelection)authorViewer.getSelection()).getFirstElement();
PersonDialog diag = new PersonDialog(authorViewer.getTable().getShell(), author.clone());
if (diag.open() == Dialog.OK) {
    author = diag.getPerson();

Person gets obviously passed as copy and not as reference? Thus if there happens a change within the dialog, the propertyChangeListeners don't fire back to the composerPackage in ComposerFormEditor.

Use h2 database to persist metadata

Currently the composer metadata is stored in memory. Therefore each time eclipse is re-opened, a full build is needed to collect all metadata.

Use h2 store to persist the data across sessions.

Improve dependency graph

To make the dependency graph more useful for debugging dependency problems, the following functionality should be added:

  • Add a search box to highlight matched dependencies in the graph
  • Show the package version in each node
  • Open the corresponding composer.json when double clicking a node

Speed up search

At the moment, searching for a new dependency at almost every(?) char that is entered, a json is downloaded, parsed and so forth and the result is displayed in the result list. With that it happens, that I enter a word, but only see the first chars, need to wait for the download job to be done and then see the rest of my chars written down by a ghostwriter. I sometimes see the rainbow cursor on my mac.

So, here is an idea to speed up the search:

  1. Download the packagist json to the workspace (cache version)
  2. Load the cached version, read the contents
  3. The search result is a jface viewer with a filter, that when a search happens, this filter is updated and the view is populated. (When there is no search, the view is hidden - current behavior).

Update the cache:

  • Check the md5 of the cached version and the online version (Is there a md5 file on packagist?), with a difference download new version
  • Check should be run before search is available, when a download happens the ui is delayed (in an ajax world we would see one of the fancy loader icons)
  • I don't know how good the jface viewers scale

=> Would be a fast responsive incremental search

Add vendor libraries to PHP Libraries

Vendor dependencies could be added to the PHP Libraries of PDT, and projects which require the exact same versions of the library could share the same libraries internally - this would improve the indexing times tremendously as only one library needs to be indexed per workspace.

Add dependency dialog - no matching items are suggested (the search list always stays empty)

Hello,

Add dependency dialog does not suggest any items filtered by the entered string for a ZF2 project in Zend Studio 10.

Preconditions:
Have Composer extra plugins installed.
The plugin version is com.dubture.composer.feature_0.0.7.201302172111
I created a ZF2 project.
Right-click on project name in PHP Explorer view > Configure > Convert to Faceted form.
Project properties dialog is launched > Go to Project Facets > Select both "Composer PHP Facet" and "PHP Core Facet" > Apply > OK

Scenario:
Right-click on project name in PHP Explorer view > Composer > Add dependency
Type some suitable word in Search string, e.g. zend, http
Wait for a while.

Expected:
Matching items should be listed.

Actual:
You just get an empty list.

Could you, please, handle this problem?

Thanks,
Kalin Yanev

Make Composer Eclipse Plugin standalone

At the moment, the Eclipse Composer plugin is bundled as part of the symfony plugin. Is it mature enough to make it available as a standalone feature as part of PEX?

target-dir not respected

When a namespace is injected into a new class, the target-dir option is not respected:

{
    "name": "dubture/core-bundle",
    "type": "symfony-bundle",

    "autoload": {
        "psr-0": { "Dubture\\CoreBundle": "" }
    },
    "target-dir": "Dubture/CoreBundle"
}

When a new class is created in Dubture/Core/Controller, the injected namespace is Controller instead of Dubture\Core\Controller

Updating selected dependencies

Currently it's only possible to update all dependencies.
If I would like to update a single dependency I can't do it right now.

Build Path Management configuration

When I'm trying to access I have error:

An error has occurred. See error log for more details.
org.eclipse.core.internal.resources.Project cannot be cast to org.eclipse.dltk.core.IScriptProject

and in logs I see:

preference option missing: com.dubture.composer.core/com.dubture.composer.corecomposer_phar (com.dubture.composer.ui.preferences.ComposerConfigurationBlock)
preference option missing: com.dubture.composer.core/com.dubture.composer.corephp_executable (com.dubture.composer.ui.preferences.ComposerConfigurationBlock)

Eclipse 4.3 (latest), PDT 3.2, DLTK 5.0

Automated Build-Path Management and PHP Include Path

Once the buildpath management builder runs, at the end, sometimes the "PHP Include Path" node of the project explorer is replaced by the "PHP Language Library" which in fact looks like a duplication for this node.

Maybe because of dltk nightly? Sometimes there happens to be errors in builders after the composer builder, during this the "PHP Include Path" node is visible.

Not configured composer breaks build on Symfony 2.0.x projects

Steps to reproduce:

  1. Install Eclipse Juno, add PDT, Subversion
  2. Install Symfony2 plugin, which requires Composer
  3. Checkout an existing project from SVN repo as Symfony 2.0.X project

Result:

Build halts at "Invoking 'Lucene Builder' on project..."

Expected result:

Completed build.

Additional notes:
Composer is not required by Symfony 2.0.X project, so it should not be added to the project.
Composer is not configured by default -- so if it's required, it should be included and configured, so issues like that would not appear.
Some basic documentation would be useful! I know software is provided as is with no guarantee, but basics should work out of the box with no hidden tips on how to configure it.
Many thanks!

Backslashes are not escaped

When I modify the composer.json with the plugin, backslashes are not escaped anymore. This makes composer.json invalid.

Original composer.json:


    "scripts" : {
        "post-update-cmd" : [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-install-cmd" : [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },

And the result after saving the file with the plugin:


    "scripts" : {
        "post-update-cmd" : [
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile"
        ],
        "post-install-cmd" : [
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installAssets",
            "Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::installRequirementsFile"
        ]
    },

Extract package search section

To make the packagist.org search section available in other views, extract it so it has no direct dependency to the EditorPart.

Building a composer project holds at 50%

I converted a project into a composer project. While rebuilding the project, it holds at 50% with the message Invoking 'Lucene Builder' on project 'xxx'. I stopped the process after 5 minutes (stopping the job doesn't work either, killed eclipse the assassin way via activity monitor on osx). At that time I didn't hat the Lucene Indexing Feature installed. I thought, hmm maybe that could help, installed it from p2.dubture.com, restarted eclipse but same message again. Eclipse by then almost unusable, because that job was blocking almost every other job, that got enqueued in the process window. I removed it by manually removing the composer and the lucene by manually editing the .project file.

React on composer.json Changes

Automated Build-Path Management

I've already seen there is a Composer Builder that experimentally manages the build-path. So, here are my ideas:

UI Contributions

Add a Build-Path Page to the Composer Editor. This page contains an introductionary text and a checkbox to enable or disable automated build-path management (technically enables or disables the composer builder).
Below are two sections for include and exclude folders.

Scanning

Scanning for new folders is done, by looping over packages installed from composer, reading each composer.json looking inspecting autoload to get the relevant folders. Add include folders, and remove exclude folders (includes and excludes are stored in the project itself .settings).

Applying changes

Done after each composer installation.

  1. Remove all build-path entries
  2. scan for build-path folders
  3. add them

Open Questions

I'm right now not really sure about (1) in the applying.

Make jobs react to the cancel flag

Composer executions happening in a job should react whether the user triggered the cancel action. This requires a constant polling if the cancel flag has been set.

Composer executables

At the moment, the composer plugin adds a composer.phar per project. Actually, I run my own composer installation via the composer command on my own shell. Others use php composer.phar. However, there is a composer available at these systems. The question is to use them?
A global configuration page can help here I think where end-users can select which composer executable to use. The two options from above or - as third option - to install composer.phar per project. However, I know eclipse runs its own environment when it comes to shell usage. So, the first option with composer would require the exact path to it. The second option with php composer.phar would require a php executable (which has already a configuration page from pdt) and a path to composer.phar, third option would require a php executable only (?).
Assuming an end-user is using one of the composer commands the first time. A dialog pop ups telling him, that a composer executable is not defined yet and he should please do so, explaining him all the options.

Implement wildcard version selector

The dropdown of the available versions when installing pulls the versionnumbers from packagist.org. However, having fixed version constraints is not recommended, so there should be a way to set the version constraint using wildcards e.g. 1.0.*.

composer.json file cannot be created for a PHP project, you get an error in a dialog.

Hello,

I have problems in creating composer.json file for a php project in Zend Studio 10.

The plugin version is:
com.dubture.composer.feature_0.0.7.201302172111

Preconditions:
Have Composer extra plugins installed.
I created a ZF1/PHP project.
Right-click on project name in PHP Explorer view > Configure > Convert to Faceted form.
Project properties dialog is launched > Go to Project Facets > Select both "Composer PHP Facet" and "PHP Core Facet" > Apply > OK

Scenario:
Right-click on project name in PHP Explorer view > Composer > Add dependency
You get "No composer.phar found" dialog, you are asked if you want to install composer in this project. Click OK.
composer.phar is created and added to the project. This is good.

Right-click on project name in PHP Explorer view > Composer > Install dependency
You get "No composer.json found" dialog, you are asked if you want to create one. Click OK.

Result:
Just after that you get unexpectedly "No composer.phar found" dialog again. You are asked if you want to install composer in this project. Pay attention composer.phar was already created. Anyway, click OK.

You get an error message in a dialog:
"Downloading composer.phar" has encountered a problem. See log for details.

But the log does not say anything helpful, you jut get this one:

!ENTRY com.dubture.composer.core 4 0 2013-03-20 15:32:57.895
!MESSAGE Error while downloading composer.phar. See {workspace}/.metadata/.log for details

Anyway, composer.json is not created.

Could you please handle this problem?

2013-03-20_153925

Thanks,
Kalin Yanev

Cannot search with spaces

When searching for a dependency with a space, there is a NPE. Here is the trace from the log:

!ENTRY org.eclipse.ui 4 4 2012-10-16 23:34:09.559
!MESSAGE An internal error has occurred.
!STACK 0
java.lang.IllegalArgumentException
    at java.net.URI.create(URI.java:841)
    at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:69)
    at org.getcomposer.core.packagist.Downloader.downloadResource(Downloader.java:76)
    at org.getcomposer.core.packagist.SearchResultDownloader.loadPackages(SearchResultDownloader.java:60)
    at org.getcomposer.core.packagist.SearchResultDownloader.searchPackages(SearchResultDownloader.java:34)
    at com.dubture.composer.core.ui.wizard.require.RequirePageOne$1.runInUIThread(RequirePageOne.java:49)
    at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3944)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3621)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
    at org.eclipse.jface.window.Window.open(Window.java:801)
    at com.dubture.composer.core.ui.handler.RequireHandler.execute(RequireHandler.java:32)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:229)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:210)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:814)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:707)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:691)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:630)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4134)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1458)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1481)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1271)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3980)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3619)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1029)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:923)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
Caused by: java.net.URISyntaxException: Illegal character in query at index 43: https://packagist.org/search.json?q=symfony http
    at java.net.URI$Parser.fail(URI.java:2810)
    at java.net.URI$Parser.checkChars(URI.java:2983)
    at java.net.URI$Parser.parseHierarchical(URI.java:3073)
    at java.net.URI$Parser.parse(URI.java:3015)
    at java.net.URI.<init>(URI.java:577)
    at java.net.URI.create(URI.java:839)
    ... 57 more

StackOverflowError when editing composer.json

When I try to edit the composer.json with the plugin (Open with > Composer then I click the composer.json tab), I get an StackOverflowError.

Unhandled event loop exception
java.lang.StackOverflowError

NPE when trying to initialize project

I have 2 projects in workspace: a ZF2 project (with composer.json) and new empty project.
I clicked "Configure->Convert to Composer" on both.
Then I tried clicking "Initialize Composer" on empty project -> Seen the initialize project wizard, pressed cancel.
Then I clicked "Initialize Composer" on ZF2 project and then on that empty project again. In both cases I got NPE error (below).
It seems that it happens when trying to open error message that project is already initialized. So instead of message, nothing happens.

!ENTRY org.eclipse.ui 4 0 2012-09-24 09:35:02.431
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:229)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:210)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:854)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:747)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:731)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:670)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4134)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1458)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1481)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1271)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3980)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3619)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1022)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:916)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:585)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:540)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
Caused by: java.lang.NullPointerException
at com.dubture.composer.core.ui.handler.InitHandler.execute(InitHandler.java:33)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
... 37 more

Can't install Composer feature from http://p2.dubture.com due to missing Gson

When trying to install Composer feature I'm getting following error:

Cannot complete the install because one or more required items could not be found.
Software being installed: Composer Feature 0.0.5 (com.dubture.composer.feature.feature.group 0.0.5)
Missing requirement: Composer Eclipse Plugin 0.0.5 (com.dubture.composer.core 0.0.5) requires 'bundle com.google.gson 0.0.0' but it could not be found
Cannot satisfy dependency:
From: Composer Feature 0.0.5 (com.dubture.composer.feature.feature.group 0.0.5)
To: com.dubture.composer.core [0.0.5]

Nature vs. Facet

At the moment, there is this AddNature handler, which installs the composer nature to a project. Also there is a Facet installer, which installs the composer nature and additionally the composer builder (not through nature-builder binding).

The nature enables a builder, which shall be used for the automated buildpath management -> #27. As builders are bound to a nature, this is a good thing.

Generally, I would say, activating the composer facet and not the nature. This requires the project to have facet support. What if not and a user wants to install composer support and facets are not installed for that particular project. Force the install of the facet first?

Cannot uninstall composer facet

Go to a composer enabled project an open its preferences. Right-click on a project -> Properties. Go to "Project Facets". Unlock the composer facet if necessary (right-click -> unlock). Uncheck the composer facet:

"Composer facet 1 cannot be uninstalled."

Expected BEGIN_OBJECT but was BEGIN_ARRAY from Composer plugin

I'm getting an exception in the log which says that json file begins with array instead with object. Indeed, that file begins with array, not object, but is it a bug in composer, or Gson?

Below is log with exception and futher below is composer file. It's from a ZF2-based project.

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:180)
at com.google.gson.Gson.fromJson(Gson.java:755)
at com.google.gson.Gson.fromJson(Gson.java:694)
at com.dubture.indexing.core.build.IndexingBuilder.callParticipants(IndexingBuilder.java:117)
at com.dubture.indexing.core.build.IndexingBuilder.access$0(IndexingBuilder.java:96)
at com.dubture.indexing.core.build.IndexingBuilder$IndexingResourceVisitor.visit(IndexingBuilder.java:179)
at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:126)
at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:85)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:95)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:124)
at org.eclipse.core.internal.resources.Resource.accept(Resource.java:108)
at com.dubture.indexing.core.build.IndexingBuilder.fullBuild(IndexingBuilder.java:62)
at com.dubture.indexing.core.build.IndexingBuilder.build(IndexingBuilder.java:46)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2
at com.google.gson.stream.JsonReader.expect(JsonReader.java:339)
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:168)
... 30 more

[
{
"name": "zendframework/zendframework",
"version": "2.0.0",
"version_normalized": "2.0.0.0",
"source": {
"type": "git",
"url": "git://github.com/zendframework/zf2.git",
"reference": "release-2.0.0"
},
"dist": {
"type": "zip",
"url": "https://github.com/zendframework/zf2/zipball/release-2.0.0",
"reference": "release-2.0.0",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"replace": {
"zendframework/zend-acl": "self.version",
"zendframework/zend-authentication": "self.version",
"zendframework/zend-barcode": "self.version",
"zendframework/zend-cache": "self.version",
"zendframework/zend-captcha": "self.version",
"zendframework/zend-code": "self.version",
"zendframework/zend-config": "self.version",
"zendframework/zend-console": "self.version",
"zendframework/zend-crypt": "self.version",
"zendframework/zend-db": "self.version",
"zendframework/zend-di": "self.version",
"zendframework/zend-dom": "self.version",
"zendframework/zend-escaper": "self.version",
"zendframework/zend-eventmanager": "self.version",
"zendframework/zend-feed": "self.version",
"zendframework/zend-file": "self.version",
"zendframework/zend-filter": "self.version",
"zendframework/zend-form": "self.version",
"zendframework/zend-http": "self.version",
"zendframework/zend-i18n": "self.version",
"zendframework/zend-inputfilter": "self.version",
"zendframework/zend-json": "self.version",
"zendframework/zend-ldap": "self.version",
"zendframework/zend-loader": "self.version",
"zendframework/zend-log": "self.version",
"zendframework/zend-mail": "self.version",
"zendframework/zend-markup": "self.version",
"zendframework/zend-math": "self.version",
"zendframework/zend-memory": "self.version",
"zendframework/zend-mime": "self.version",
"zendframework/zend-modulemanager": "self.version",
"zendframework/zend-mvc": "self.version",
"zendframework/zend-navigation": "self.version",
"zendframework/zend-paginator": "self.version",
"zendframework/zend-progressbar": "self.version",
"zendframework/zend-serializer": "self.version",
"zendframework/zend-server": "self.version",
"zendframework/zend-servicemanager": "self.version",
"zendframework/zend-session": "self.version",
"zendframework/zend-soap": "self.version",
"zendframework/zend-stdlib": "self.version",
"zendframework/zend-tag": "self.version",
"zendframework/zend-text": "self.version",
"zendframework/zend-uri": "self.version",
"zendframework/zend-validator": "self.version",
"zendframework/zend-view": "self.version",
"zendframework/zend-xmlrpc": "self.version"
},
"require-dev": {
"doctrine/common": ">=2.1"
},
"suggest": {
"doctrine/common": "Doctrine\Common >=2.1 for annotation features",
"ext-intl": "ext/intl for i18n features",
"pecl-weakref": "Implementation of weak references for Zend\Stdlib\CallbackHandler",
"zendframework/zendpdf": "ZendPdf for creating PDF representations of barcodes",
"zendframework/zendservice-recaptcha": "ZendService\ReCaptcha for rendering ReCaptchas in Zend\Captcha and/or Zend\Form"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Zend": "library/",
"ZendTest": "tests/"
}
}
}
]

Resolve psr-0 autoloaders

Parse composer.json and resolve the paths to the psr-0 autoloaders to provide namespace resolving functionality for other plugins.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.