Code Monkey home page Code Monkey logo

atom-hopper's Introduction

    ___   __                     __  __                            
   /   | / /_____  ____ ___     / / / /____  ____  ____  ___  _____
  / /| |/ __/ __ \/ __ `__ \   / /_/ // __ \/ __ \/ __ \/ _ \/ ___/
 / ___ / /_/ /_/ / / / / / /  / __  // /_/ / /_/ / /_/ /  __/ /    
/_/  |_\__/\____/_/ /_/ /_/  /_/ /_/ \____/ .___/ .___/\___/_/     
                                         /_/   /_/                 

#ATOM Hopper - A Java ATOMPub Server#

Atom Hopper is a framework for accessing, processing, aggregating and indexing Atom formatted events. Atom Hopper was designed to make it easy to build both generalized and specialized persistence mechanisms for Atom XML data, based on the Atom Syndication Format and the Atom Publishing Protocol.

Benefits:

  • Simple. Atom Hopper is easy to use. It can be used out-of-the-box as an executable JAR (running within an embedded Jetty Server). For more flexibility, it can be deployed as a WAR file into any Servlet container (ie: Tomcat, Jetty, etc.). Most applications can use Atom Hopper with minimal configuration to specify the Atom Workspaces and the Content storage.
  • Scalable. Atom Hopper is very scalable because it is designed to be stateless, allowing state to be distributed across the web.
  • Layered. Atom Hopper allows any number of intermediaries, such as proxies, gateways, and firewalls so one can easily layer aspects such as Security, Compression, etc. on an as needed basis.
  • Built on a strong foundation. It is built on top of several open source projects such as Apache Abdera (a Java-based Atom Publishing framework), Hibernate, and MongoDB.
  • Flexible. Atom Hopper currently supports the following relational databases: H2, PostgresSQL, and MySQL (plus others that work with Hibernate) as well as the NoSQL database MongoDB.
  • High performance. Atom Hopper can handle high loads with high accuracy.
  • Improving. Atom Hopper is under development and actively being worked on.
  • Atom Hopper is currently being used at Rackspace in conjunction with OpenStack.

Atom Hopper works well with Repose especially if you need:

  • Authentication and Authorization
  • Rate Limiting
  • Versioning
  • HTTP Logging

###Notes Regarding Data Adapter### The current status of the Atom Hopper Data Adapters is as follows:

  • JDBC Data Adapter - ongoing development

  • Hibernate Data Adapter - not currently adding features/fixing defects

  • MongoDB Data Adapter - not currently adding features/fixing defects

  • Migration Data Adapter - ongoing development

  • Postgres Data Adapter - not currently adding features/fixing defects

To find out how to install and run Atom Hopper please see the Atom Hopper Wiki

###Notes Regarding licensing###

All files contained with this distribution of Atom Hopper are licenced under the Apache License v2.0. You must agree to the terms of this license and abide by them before viewing, utilizing or distributing the source code contained within this distribution.

atom-hopper's People

Contributors

ajstieren avatar carlosmarin avatar cartmanume avatar chadlung avatar chandraaddala avatar deep8103 avatar dependabot[bot] avatar jennyvo avatar mark-donoghue avatar mikenerone avatar nareshkurapati avatar omanand avatar reftel avatar sethbrayman avatar shintasmith avatar shub6691 avatar stanzikratel avatar thrawn01 avatar usnavi avatar zinic 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  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  avatar  avatar

atom-hopper's Issues

make wiki editable?

Hi, I'd like to make some improvements to the installation wiki page but it appears that it's read-only. Would it be possible to make the wiki read-write? Thanks!

Configuring indexes in MongoDB for optimizing Atomhopper performace

We've set up a Atomhopper server on top of a mongoDb database. After posting a lot of data we experienced slower response times and noticed that we should have configured an index for DateLastUpdated.

After setting that up we have still experienced slow response times on a 4 million document collection when loading the feed like this:

http:////obo/feed

Or when searching like this:

http:////obo/feed?format=json&search=

Is it possible to get more info on the index configuration for mongo? We suspect more indexes are needed. We have played around adding something like this (but still it takes time to search):

    {
            "v" : 1,
            "key" : {
                    "feed" : 1,
                    "categories.term" : 1,
                    "dateLastUpdated" : 1
            },
            "ns" : "atomhopper.obo.feed",
            "name" : "feed_1_categories.term_1_dateLastUpdated_1"
    },
    {
            "v" : 1,
            "key" : {
                    "feed" : 1,
                    "dateLastUpdated" : 1
            },
            "ns" : "atomhopper.obo.feed",
            "name" : "feed_1_dateLastUpdated_1"
    }

]

jaxb generated code different based on platfom that generates code

This causes a build failure in the workspace handler.

This affects WorkspaceConfiguration.java

method isEnableRegexFeeds() is not generated.

https://github.com/rackerlabs/atom-hopper/blob/master/hopper/src/main/java/org/atomhopper/abdera/WorkspaceHandler.java#L43-L54

[micah.yoder@MK92WBF1G3 hopper]$ mvn -version
Apache Maven 3.0.3 (r1075438; 2011-02-28 11:31:09-0600)
Maven home: /usr/share/maven
Java version: 1.7.0_21, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"

configuring for JDBC

newbie question - I have followed the instructions as described in the setup guide ( https://github.com/rackerlabs/atom-hopper/wiki/Using-the-JDBC-Data-Adapter )
however I get an error when starting up:

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'atomHopperDataSource' defined in URL [file:/etc/atomhopper/application-context.xml];

Am I missing a step?

Using relative path to atom-server.cfg.xml (Error)

I have a great problem with Atomhopper
atom-hopper\atomhopper\src\main\webapp\WEB-INF\web.xml
and a path to config file of atom server.

I need to change this

<init-param>
      <param-name>config-location</param-name>
      <param-value>file:///etc/atomhopper/atom-server.cfg.xml</param-value>
</init-param>

to

<init-param>
      <param-name>config-location</param-name>
      <param-value>/META-INF/atom-server.cfg.xml</param-value>
</init-param>

So as you can see i should keep this config file in war and use relative path.
So i use a maven-war-plugin and put it inside META-INF directory inside webapp
But i get an error

org.atomhopper.util.config.ConfigurationParserException: Failed to read the configuration. Reason: URI is not absolute - pump cause for more details
    at org.atomhopper.util.config.jaxb.JAXBConfigurationParser.readConfiguration(JAXBConfigurationParser.java:94) ~[core-1.2.16.jar:na]
    at org.atomhopper.util.config.AbstractConfigurationParser.read(AbstractConfigurationParser.java:35) ~[core-1.2.16.jar:na]
    at org.atomhopper.AtomHopperServlet.init(AtomHopperServlet.java:72) ~[core-1.2.16.jar:na]
    at javax.servlet.GenericServlet.init(GenericServlet.java:161) [javax.j2ee.servlet.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:336) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.init(ServletWrapperImpl.java:168) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.load(ServletWrapper.java:1360) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:982) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) [com.ibm.ws.webcontainer.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) [na:CCX.CF [o1103.02]]
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) [na:CCX.CF [o1103.02]]
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [com.ibm.ws.runtime.jar:na]
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) [com.ibm.ws.runtime.jar:na]
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690) [com.ibm.ws.runtime.jar:na]
Caused by: java.lang.IllegalArgumentException: URI is not absolute
    at java.net.URI.toURL(URI.java:1090) ~[na:1.6.0]
    at org.atomhopper.util.uri.CustomSchemeResolver.toURL(CustomSchemeResolver.java:43) ~[core-1.2.16.jar:na]
    at org.atomhopper.util.config.resource.uri.URIConfigurationResource.getInputStream(URIConfigurationResource.java:31) ~[core-1.2.16.jar:na]
    at org.atomhopper.util.config.jaxb.JAXBConfigurationParser.readConfiguration(JAXBConfigurationParser.java:81) ~[core-1.2.16.jar:na]

What does this mean, why so and how i could workaround this problem.
Thanks.

Deadlock when installing atom-hoper on Glassfish 4

Update:

Found the reason for the deadlock.
Looks like using the same name for the application root context and the URL pattern caused the problem.

Hi,

I'm trying to install atom-hopper on Glassfish4, but despite all my efforts, i.e. ensuring all the paths are correct and the permissions are granted on all the directories used by the config files, I still get the following messages:

WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@3230487 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!
WARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@3230487 -- APPARENT DEADLOCK!!! Complete Status:
Managed Threads: 3
Active Threads: 3
Active Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3ed93f41 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@28c7e4a3 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@5b739e3f (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
Pending Tasks:
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@39a6901
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@e63c280
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@377668e1
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3edfa839
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@4d9d566e
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@14957791
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@60dcdb25
Pool thread stack traces:
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
org.h2.engine.Engine.openSession(Engine.java:153)
org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
org.h2.engine.Engine.createSession(Engine.java:121)
org.h2.engine.Engine.createSession(Engine.java:28)
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:305)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:110)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:94)
org.h2.Driver.connect(Driver.java:72)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
org.h2.engine.Engine.openSession(Engine.java:153)
org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
org.h2.engine.Engine.createSession(Engine.java:121)
org.h2.engine.Engine.createSession(Engine.java:28)
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:305)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:110)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:94)
org.h2.Driver.connect(Driver.java:72)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
java.lang.Thread.sleep(Native Method)
org.h2.store.FileLock.sleep(FileLock.java:428)
org.h2.store.FileLock.lockFile(FileLock.java:334)
org.h2.store.FileLock.lock(FileLock.java:128)
org.h2.engine.Database.open(Database.java:542)
org.h2.engine.Database.openDatabase(Database.java:222)
org.h2.engine.Database.(Database.java:217)
org.h2.engine.Engine.openSession(Engine.java:56)
org.h2.engine.Engine.openSession(Engine.java:159)
org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
org.h2.engine.Engine.createSession(Engine.java:121)
org.h2.engine.Engine.createSession(Engine.java:28)
org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:305)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:110)
org.h2.jdbc.JdbcConnection.(JdbcConnection.java:94)
org.h2.Driver.connect(Driver.java:72)
com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

WARNING: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@3ed93f41 (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().

WARNING: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@28c7e4a3 (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().

WARNING: Task com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@5b739e3f (in deadlocked PoolThread) failed to complete in maximum time 60000ms. Trying interrupt().

WARNING: com.mchange.v2.resourcepool.BasicResourcePool@76851a56 -- Thread unexpectedly interrupted while performing an acquisition attempt.
java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1805)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

Any thoughts about it ?
I'm not quite sure what's the state of my application server since it doesn't seem to be able to load completely.

Thanks for your help!

Context Root is not detected in the individual entry URLs

Hi Team - I deployed Atom war ver 1.2.33 on to an tomcat instance, under the context root "atom". Here is the URL.

http://ec2-52-77-209-214.ap-southeast-1.compute.amazonaws.com:8080/atom/tracking/gmo

The feed URLs are updated with the context root "atom", but the individual entry URLs are not.

feed url:

http://ec2-52-77-209-214.ap-southeast-1.compute.amazonaws.com:8080/atom/tracking/gmo/

entry url:

http://ec2-52-77-209-214.ap-southeast-1.compute.amazonaws.com:8080/tracking/gmo/entries/urn:uuid:f95d3200-bee0-4e36-a949-19f92518e3a5

Is this a bug or am I missing any configurations?

Performance of category search with JDBC Adapter on Postgres

Hi, and thanks for this nice feed provider :)

When we have around 25 million entries in the feed, with Atom Hopper 1.2.33 and categories stored in a Postgres array, a search for entries with a given category value is prohibitively slow. When we get a page of entries, we also get the link to an older page. Finding the marker entry id for that link is what slows down everything. We find that atom hopper uses the SQL below.

We have also seen that categories can be stored in a dedicated column when a prefix column map is used, such that posting with the category customer:12312 would put 12312 in the column customer_id. That seems to be working well. However, I wonder why that option isn't properly documented. Are there great downsides to it, or better options? We don't want to rewrite Atom Hopper's SQL...

(SELECT * FROM entries WHERE feed = 'comp/dummyfeed' AND datelastupdated = '2017-05-16 11:22:16.710796' AND categories @> '{cat432542}'::varchar[] AND id < 14729912)
UNION ALL
(SELECT * FROM entries WHERE feed = 'comp/dummyfeed' AND datelastupdated < '2017-05-16 11:22:16.710796' AND categories @> '{cat432542}'::varchar[]
ORDER BY datelastupdated DESC, id DESC limit 1)
ORDER BY datelastupdated DESC, id DESC limit 1

NOTICE: This repo is moving.

On the morning of Saturday, March 23, 2013, the 'rackspace' organization on GitHub will be reorganized. All repos will be moved to the new 'rackerlabs' organization, except for those that are designed to be used by Rackspace customers and which are fully supported.

Please update any links to this repo to reflect the new location within GitHub. For example, if the link to your repo is 'https://github.com/rackspace/foo', you need to change it to 'https://github.com/rackerlabs/foo'.

Multiple dependency conflicts in atom-hopper, which may lead to the unexpected semantic behaviors

Hi, in atom-hopper-parent-1.2.33\adapters\mongodb there are multiple versions of library org.springframework:spring-core, i.e., org.springframework:spring-core:3.2.18 and org.springframework:spring-core:3.1.1. According to Maven management strategy, only the older version org.springframework:spring-core:3.1.1 can be loaded and org.springframework:spring-core:3.2.18 will be shadowed.

By static analysis, library org.springframework.data:spring-data-commons-core:jar:1.2.1.RELEASE:compile expects to reference the methods defined in class org.springframework.asm.MethodWriter included in version org.springframework:spring-core:3.2.18 via the following invocation path:

<org.atomhopper.mongodb.adapter.MongodbFeedPublisher: org.atomhopper.response.AdapterResponse postEntry(org.atomhopper.adapter.request.adapter.PostEntryRequest)> D:\testcase\TestProject\atom-hopper-parent-1.2.33\adapters\mongodb\target\classes
<org.dom4j.io.STAXEventWriter$AttributeIterator: java.lang.Object next()> D:\cEnvironment\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar
<org.dom4j.bean.BeanAttribute: java.lang.String getValue()> D:\cEnvironment\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar
<org.springframework.data.repository.query.Parameter: java.lang.String toString()> D:\cEnvironment\repository\org\springframework\data\spring-data-commons-core\1.2.1.RELEASE\spring-data-commons-core-1.2.1.RELEASE.jar
<org.springframework.data.repository.query.Parameter: java.lang.String getName()> D:\cEnvironment\repository\org\springframework\data\spring-data-commons-core\1.2.1.RELEASE\spring-data-commons-core-1.2.1.RELEASE.jar
<org.springframework.core.MethodParameter: java.lang.String getParameterName()> D:\cEnvironment\repository\org\springframework\spring-core\3.1.1.RELEASE\spring-core-3.1.1.RELEASE.jar
<org.springframework.core.LocalVariableTableParameterNameDiscoverer: java.lang.String[] getParameterNames(java.lang.reflect.Method)> D:\cEnvironment\repository\org\springframework\spring-core\3.1.1.RELEASE\spring-core-3.1.1.RELEASE.jar
<org.springframework.core.LocalVariableTableParameterNameDiscoverer: java.util.Map inspectClass(java.lang.Class)> D:\cEnvironment\repository\org\springframework\spring-core\3.1.1.RELEASE\spring-core-3.1.1.RELEASE.jar
<org.springframework.asm.ClassReader: void accept(org.springframework.asm.ClassVisitor,boolean)> D:\cEnvironment\repository\org\springframework\spring-asm\3.1.1.RELEASE\spring-asm-3.1.1.RELEASE.jar
<org.springframework.asm.ClassReader: void accept(org.springframework.asm.ClassVisitor,org.springframework.asm.Attribute[],boolean)> D:\cEnvironment\repository\org\springframework\spring-asm\3.1.1.RELEASE\spring-asm-3.1.1.RELEASE.jar
<org.springframework.asm.MethodWriter: void visitMultiANewArrayInsn(java.lang.String,int)>

However, org.springframework:spring-core:3.2.18 would not be loaded due to dependency conflicts, and the actual loaded version org.springframework:spring-core:3.1.1 does not contain this class at all!!
To my surprise, there is no classnotfoundexeceptions here!!
What a coincidence, another Jar file org.springframework:spring-asm:3.1.1.RELEASE also contain a class with the same fully qualified name "org.springframework.asm.MethodWriter".
As a result, it is forced referenced by library org.springframework.data:spring-data-commons-core:jar:1.2.1.RELEASE:compile via the above invocation path.
I think it is a danger signal for project maintenance.

By further analyzing, the expected callee <org.springframework.asm.MethodWriter: void visitMultiANewArrayInsn(java.lang.String,int)> in shadowed version org.springframework:spring-core:3.2.18 , has different implementations from the actual callee with the same signature (same method names, same paremeters) included in the unexpected (but actual loaded) version org.springframework:spring-asm:3.1.1.RELEASE, which leads to different behaviors.

Solution:

Upgrade org.springframework:spring-core.3.1.1 to 3.2.18, to keep the version consistency.

Dependency tree--
[INFO] org.atomhopper.adapter:mongodb-adapter:jar:1.2.33
[INFO] +- org.atomhopper:core:jar:1.2.33:compile
[INFO] | +- org.hibernate:hibernate-core:jar:4.1.3.Final:compile
[INFO] | | +- antlr:antlr:jar:2.7.7:compile
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
[INFO] | | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile
[INFO] | | +- dom4j:dom4j:jar:1.6.1:compile
[INFO] | | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
[INFO] | | +- (org.javassist:javassist:jar:3.16.1-GA:compile - version managed from 3.15.0-GA; omitted for duplicate)
[INFO] | | - org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile
[INFO] | | - (org.jboss.logging:jboss-logging:jar:3.1.0.CR2:compile - omitted for conflict with 3.1.0.GA)
[INFO] | +- (org.javassist:javassist:jar:3.16.1-GA:compile - version managed from 3.15.0-GA; omitted for duplicate)
[INFO] | +- com.h2database:h2:jar:1.3.167:compile
[INFO] | +- (org.apache.abdera:abdera-core:jar:1.1.2:compile - omitted for duplicate)
[INFO] | +- org.apache.abdera:abdera-server:jar:1.1.2:compile
[INFO] | | +- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
[INFO] | | +- (org.apache.abdera:abdera-core:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | +- org.apache.abdera:abdera-parser:jar:1.1.2:compile
[INFO] | | | +- (org.apache.abdera:abdera-core:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | | +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.10:compile
[INFO] | | | | +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.10:compile
[INFO] | | | | | +- (org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile - omitted for duplicate)
[INFO] | | | | | +- (org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile - omitted for duplicate)
[INFO] | | | | | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.0.4)
[INFO] | | | | | +- (jaxen:jaxen:jar:1.1.1:compile - omitted for duplicate)
[INFO] | | | | | - (org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile - omitted for duplicate)
[INFO] | | | | +- org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile
[INFO] | | | | +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile
[INFO] | | | | +- org.codehaus.woodstox:wstx-asl:jar:3.2.6:compile
[INFO] | | | | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.0.4)
[INFO] | | | | - (org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile - omitted for duplicate)
[INFO] | | | +- (org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile - omitted for duplicate)
[INFO] | | | +- (org.codehaus.woodstox:wstx-asl:jar:3.2.6:compile - scope updated from runtime; omitted for duplicate)
[INFO] | | | +- jaxen:jaxen:jar:1.1.1:compile
[INFO] | | | | +- xml-apis:xml-apis:jar:1.4.01:compile (version managed from 1.3.02)
[INFO] | | | | - xerces:xercesImpl:jar:2.11.0:compile (version managed from 2.6.2)
[INFO] | | | | - (xml-apis:xml-apis:jar:1.4.01:compile - version managed from 1.3.02; omitted for duplicate)
[INFO] | | | - (commons-logging:commons-logging:jar:1.0.4:runtime - omitted for duplicate)
[INFO] | | +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] | | +- javax.mail:mail:jar:1.4:compile
[INFO] | | | - javax.activation:activation:jar:1.1:compile
[INFO] | | - (commons-logging:commons-logging:jar:1.0.4:compile - omitted for duplicate)
[INFO] | +- org.apache.abdera:abdera-extensions-json:jar:1.1.2:compile
[INFO] | | +- (org.apache.abdera:abdera-server:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | +- org.apache.abdera:abdera-extensions-main:jar:1.1.2:compile
[INFO] | | | +- (org.apache.abdera:abdera-core:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | | - org.apache.abdera:abdera-client:jar:1.1.2:compile
[INFO] | | | +- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
[INFO] | | | +- (org.apache.abdera:abdera-core:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | | +- (org.apache.abdera:abdera-parser:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | | - commons-httpclient:commons-httpclient:jar:3.1:test (scope managed from compile)
[INFO] | | | +- (commons-logging:commons-logging:jar:1.0.4:test - omitted for duplicate)
[INFO] | | | - (commons-codec:commons-codec:jar:1.2:test - omitted for conflict with 1.4)
[INFO] | | - org.apache.abdera:abdera-extensions-html:jar:1.1.2:compile
[INFO] | | +- (org.apache.abdera:abdera-client:jar:1.1.2:compile - omitted for duplicate)
[INFO] | | - nu.validator.htmlparser:htmlparser:jar:1.0.5:compile
[INFO] | +- org.springframework:spring-core:jar:3.1.1.RELEASE:compile
[INFO] | | +- org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
[INFO] | | - (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.0.4)
[INFO] | +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
[INFO] | | - (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile
[INFO] | | +- org.springframework:spring-aop:jar:3.1.1.RELEASE:compile
[INFO] | | | +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate)
[INFO] | | | +- (org.springframework:spring-asm:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | | - (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | +- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | +- (org.springframework:spring-expression:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | - (org.springframework:spring-asm:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | +- org.springframework:spring-web:jar:3.1.1.RELEASE:compile
[INFO] | | +- aopalliance:aopalliance:jar:1.0:compile
[INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | - (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | +- (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.7.5; omitted for duplicate)
[INFO] | +- commons-lang:commons-lang:jar:2.6:compile
[INFO] | +- com.google.code.gson:gson:jar:2.1:compile
[INFO] | +- ch.qos.logback:logback-classic:jar:1.1.1:compile
[INFO] | | +- (ch.qos.logback:logback-core:jar:1.1.1:compile - omitted for duplicate)
[INFO] | | - (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.7.6; omitted for duplicate)
[INFO] | +- ch.qos.logback:logback-core:jar:1.1.1:compile
[INFO] | +- me.moocar:logback-gelf:jar:0.9.6:compile
[INFO] | | +- (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.6.1; omitted for duplicate)
[INFO] | | +- (ch.qos.logback:logback-classic:jar:1.1.1:compile - version managed from 0.9.29; omitted for duplicate)
[INFO] | | - (com.google.code.gson:gson:jar:2.1:compile - version managed from 1.4; omitted for duplicate)
[INFO] | +- com.codahale.metrics:metrics-core:jar:3.0.1:compile
[INFO] | | - (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.7.5; omitted for duplicate)
[INFO] | +- com.codahale.metrics:metrics-graphite:jar:3.0.1:compile
[INFO] | | +- (com.codahale.metrics:metrics-core:jar:3.0.1:compile - omitted for duplicate)
[INFO] | | - (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.7.5; omitted for duplicate)
[INFO] | - org.apache.tomcat:tomcat-jdbc:jar:7.0.27:compile
[INFO] | - org.apache.tomcat:tomcat-juli:jar:7.0.27:compile
[INFO] +- org.javassist:javassist:jar:3.16.1-GA:compile
[INFO] +- org.apache.abdera:abdera-core:jar:1.1.2:compile
[INFO] | +- org.apache.abdera:abdera-i18n:jar:1.1.2:compile
[INFO] | | +- (org.apache.geronimo.specs:geronimo-activation_1.0.2_spec:jar:1.1:compile - omitted for duplicate)
[INFO] | | - (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
[INFO] | +- org.apache.geronimo.specs:geronimo-activation_1.0.2_spec:jar:1.1:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile
[INFO] | +- commons-codec:commons-codec:jar:1.4:compile
[INFO] | - commons-logging:commons-logging:jar:1.0.4:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.6.5:compile
[INFO] +- org.springframework.data:spring-data-mongodb:jar:1.0.1.RELEASE:compile
[INFO] | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
[INFO] | | - (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - version managed from 3.2.18.RELEASE; omitted for duplicate)
[INFO] | +- org.springframework.data:spring-data-commons-core:jar:1.2.1.RELEASE:compile
[INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
[INFO] | | - org.springframework:spring-tx:jar:3.2.18.RELEASE:compile
[INFO] | | +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - version managed from 3.2.18.RELEASE; omitted for duplicate)
[INFO] | | - (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - version managed from 3.2.18.RELEASE; omitted for duplicate)
[INFO] | - org.mongodb:mongo-java-driver:jar:2.7.1:compile
[INFO] +- org.mockito:mockito-all:jar:1.8.5:test
[INFO] +- junit:junit:jar:4.8.2:test
[INFO] - com.yammer.metrics:metrics-core:jar:2.2.0:compile
[INFO] - (org.slf4j:slf4j-api:jar:1.6.5:compile - version managed from 1.7.2; omitted for duplicate)

maven build failure with documentation project

I simply cloned the repo to my local windows machine and executed the below command.

mvn clean install

I get the below error. Could you please let me know, if I am missing something?

[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ATOM Hopper - Documentation 1.2.34-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- clouddocs-maven-plugin:1.6.1:generate-webhelp (doc) @ documentation ---
[INFO] Processing input file: ah-intro.xml
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] ATOM Hopper - ATOMpub Server Collection ............ SUCCESS [ 0.365 s]
[INFO] ATOM Hopper - Test Utility ......................... SUCCESS [ 1.519 s]
[INFO] ATOM Hopper - ATOMpub Server Framework ............. SUCCESS [ 3.799 s]
[INFO] ATOM Hopper - Hibernate Adapter .................... SUCCESS [ 2.560 s]
[INFO] ATOM Hopper - MongoDB Adapter ...................... SUCCESS [ 2.026 s]
[INFO] ATOM Hopper - Postgres Adapter ..................... SUCCESS [ 1.695 s]
[INFO] ATOM Hopper - Default Jetty Server ................. SUCCESS [ 11.714 s]
[INFO] ATOM Hopper - Migration Adapter .................... SUCCESS [ 1.438 s]
[INFO] ATOM Hopper - JDBC Adapter ......................... SUCCESS [ 2.185 s]
[INFO] ATOM Hopper - AtomHopper-WAR-RPM-DEB ............... SUCCESS [ 3.751 s]
[INFO] ATOM Hopper - ATOMpub Server Framework Testing Suite SUCCESS [ 10.800 s]
[INFO] ATOM Hopper - Documentation ........................ FAILURE [ 2.247 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 44.383 s
[INFO] Finished at: 2015-12-04T12:35:46+05:30
[INFO] Final Memory: 33M/382M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.rackspace.cloud.api:clouddocs-maven-plugin:1.6.1:generate-webhelp (doc) on project documentation: Execution doc of goal com.rackspace.cloud.api:clouddocs-maven-plugin:1.6.1:generate-webhelp failed: String index out of range: -1 -> [Help 1]

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.