<bean class="jetbrains.buildServer.nuget.server.publish.PublishRunType"/>\r
\r
\r
- <bean class="jetbrains.buildServer.nuget.server.feed.reader.FeedClient" destroy-method="dispose"/>\r
- <bean class="jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader"/>\r
- <bean class="jetbrains.buildServer.nuget.server.feed.reader.FeedGetMethodFactory"/>\r
- <bean class="jetbrains.buildServer.nuget.server.feed.reader.UrlResolver"/>\r
+ <bean class="jetbrains.buildServer.nuget.server.feed.reader.impl.FeedClient" destroy-method="dispose"/>\r
+ <bean class="jetbrains.buildServer.nuget.server.feed.reader.impl.NuGetFeedReaderImpl"/>\r
+ <bean class="jetbrains.buildServer.nuget.server.feed.reader.impl.FeedGetMethodFactory"/>\r
+ <bean class="jetbrains.buildServer.nuget.server.feed.reader.impl.UrlResolver"/>\r
\r
</beans>
\ No newline at end of file
\r
package jetbrains.buildServer.nuget.server.feed.reader;\r
\r
-import com.intellij.openapi.diagnostic.Logger;\r
-import com.intellij.openapi.util.Pair;\r
-import jetbrains.buildServer.util.FileUtil;\r
-import jetbrains.buildServer.util.XmlUtil;\r
-import org.apache.http.HttpHeaders;\r
-import org.apache.http.HttpResponse;\r
-import org.apache.http.client.methods.HttpGet;\r
-import org.jdom.Element;\r
-import org.jdom.JDOMException;\r
import org.jetbrains.annotations.NotNull;\r
\r
import java.io.IOException;\r
+import java.util.Collection;\r
\r
/**\r
* Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
- * Date: 11.08.11 15:42\r
+ * Date: 12.08.11 14:46\r
*/\r
-public class NuGetFeedReader {\r
- private static final Logger LOG = Logger.getInstance(NuGetFeedReader.class.getName());\r
- private final FeedClient myClient;\r
- private final UrlResolver myResolver;\r
- private final FeedGetMethodFactory myMethodFactory;\r
-\r
- public NuGetFeedReader(FeedClient client, UrlResolver resolver, FeedGetMethodFactory methodFactory) {\r
- myClient = client;\r
- myResolver = resolver;\r
- myMethodFactory = methodFactory;\r
- }\r
-\r
- public void queryPackage(@NotNull String feedUrl,\r
- @NotNull String packageId) throws IOException {\r
- LOG.debug("Connecting to NuGet feed url: " + feedUrl);\r
- final Pair<String, HttpResponse> pair = myResolver.resolvePath(feedUrl);\r
- feedUrl = pair.first;\r
- LOG.debug("Resolved NuGet feed URL to " + feedUrl);\r
- final Element element = toDocument(pair.second);\r
- LOG.debug("Recieved xml: " + XmlUtil.to_s(element));\r
-\r
- final HttpGet get = myMethodFactory.createGet(feedUrl + "/Packages()",\r
- new Param("$filter", "Id eq '" + packageId + "'")\r
- );\r
- get.setHeader(HttpHeaders.ACCEPT_ENCODING, "application/atom+xml");\r
-\r
- LOG.debug("Query for packages: " + get.getURI());\r
-\r
- final HttpResponse execute = myClient.getClient().execute(get);\r
- System.out.println(execute);\r
- execute.getEntity().writeTo(System.out);\r
- }\r
-\r
- private Element toDocument(HttpResponse response) throws IOException {\r
- try {\r
- return FileUtil.parseDocument(response.getEntity().getContent(), false);\r
- } catch (final JDOMException e) {\r
- throw new IOException("Failed to parse xml document. " + e.getMessage()) {{\r
- initCause(e);\r
- }};\r
- }\r
- }\r
+public interface NuGetFeedReader {\r
+ @NotNull\r
+ Collection<FeedPackage> queryPackageVersions(@NotNull String feedUrl,\r
+ @NotNull String packageId) throws IOException;\r
}\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
import jetbrains.buildServer.version.ServerVersionHolder;\r
import org.apache.http.client.HttpClient;\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
/**\r
* Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
import org.apache.http.HttpVersion;\r
import org.apache.http.NameValuePair;\r
--- /dev/null
+/*\r
+ * Copyright 2000-2011 JetBrains s.r.o.\r
+ *\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
+\r
+import com.intellij.openapi.diagnostic.Logger;\r
+import com.intellij.openapi.util.Pair;\r
+import jetbrains.buildServer.nuget.server.feed.reader.*;\r
+import jetbrains.buildServer.util.FileUtil;\r
+import jetbrains.buildServer.util.XmlUtil;\r
+import org.apache.http.HttpHeaders;\r
+import org.apache.http.HttpResponse;\r
+import org.apache.http.client.methods.HttpGet;\r
+import org.jdom.Element;\r
+import org.jdom.JDOMException;\r
+import org.jetbrains.annotations.NotNull;\r
+\r
+import java.io.IOException;\r
+import java.util.Collection;\r
+\r
+/**\r
+ * Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
+ * Date: 11.08.11 15:42\r
+ */\r
+public class NuGetFeedReaderImpl implements NuGetFeedReader {\r
+ private static final Logger LOG = Logger.getInstance(NuGetFeedReader.class.getName());\r
+ private final FeedClient myClient;\r
+ private final UrlResolver myResolver;\r
+ private final FeedGetMethodFactory myMethodFactory;\r
+ private final PackagesFeedParser myParser;\r
+\r
+ public NuGetFeedReaderImpl(FeedClient client, UrlResolver resolver, FeedGetMethodFactory methodFactory, PackagesFeedParser parser) {\r
+ myClient = client;\r
+ myResolver = resolver;\r
+ myMethodFactory = methodFactory;\r
+ myParser = parser;\r
+ }\r
+\r
+ @NotNull\r
+ public Collection<FeedPackage> queryPackageVersions(@NotNull String feedUrl,\r
+ @NotNull String packageId) throws IOException {\r
+ LOG.debug("Connecting to NuGet feed url: " + feedUrl);\r
+ final Pair<String, HttpResponse> pair = myResolver.resolvePath(feedUrl);\r
+ feedUrl = pair.first;\r
+ LOG.debug("Resolved NuGet feed URL to " + feedUrl);\r
+ final Element element = toDocument(pair.second);\r
+ LOG.debug("Recieved xml: " + XmlUtil.to_s(element));\r
+\r
+ final HttpGet get = myMethodFactory.createGet(feedUrl + "/Packages()",\r
+ new Param("$filter", "Id eq '" + packageId + "'")\r
+ );\r
+ get.setHeader(HttpHeaders.ACCEPT_ENCODING, "application/atom+xml");\r
+\r
+ LOG.debug("Query for packages: " + get.getURI());\r
+\r
+ final HttpResponse execute = myClient.getClient().execute(get);\r
+ return myParser.readPackages(toDocument(execute));\r
+ }\r
+\r
+ private Element toDocument(HttpResponse response) throws IOException {\r
+ try {\r
+ return FileUtil.parseDocument(response.getEntity().getContent(), false);\r
+ } catch (final JDOMException e) {\r
+ throw new IOException("Failed to parse xml document. " + e.getMessage()) {{\r
+ initCause(e);\r
+ }};\r
+ }\r
+ }\r
+}\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
import com.intellij.openapi.diagnostic.Logger;\r
import jetbrains.buildServer.nuget.common.PackageInfo;\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
import jetbrains.buildServer.util.StringUtil;\r
import org.jdom.Element;\r
import org.jdom.Namespace;\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
import org.apache.http.NameValuePair;\r
import org.jetbrains.annotations.NotNull;\r
* limitations under the License.\r
*/\r
\r
-package jetbrains.buildServer.nuget.server.feed.reader;\r
+package jetbrains.buildServer.nuget.server.feed.reader.impl;\r
\r
import com.intellij.openapi.util.Pair;\r
import org.apache.http.Header;\r
package jetbrains.buildServer.nuget.tests.integration;\r
\r
import jetbrains.buildServer.BaseTestCase;\r
-import jetbrains.buildServer.nuget.server.feed.reader.*;\r
-import org.apache.log4j.ConsoleAppender;\r
-import org.apache.log4j.Level;\r
-import org.apache.log4j.Logger;\r
-import org.apache.log4j.SimpleLayout;\r
+import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
+import jetbrains.buildServer.nuget.server.feed.reader.NuGetFeedReader;\r
+import jetbrains.buildServer.nuget.server.feed.reader.impl.*;\r
+import org.testng.Assert;\r
import org.testng.annotations.AfterMethod;\r
import org.testng.annotations.BeforeMethod;\r
import org.testng.annotations.Test;\r
\r
import java.io.IOException;\r
+import java.util.Collection;\r
\r
/**\r
* Created by Eugene Petrenko (eugene.petrenko@gmail.com)\r
super.setUp();\r
myClient = new FeedClient();\r
final FeedGetMethodFactory methods = new FeedGetMethodFactory();\r
- myReader = new NuGetFeedReader(myClient, new UrlResolver(myClient, methods), methods);\r
+ myReader = new NuGetFeedReaderImpl(myClient, new UrlResolver(myClient, methods), methods, new PackagesFeedParser());\r
}\r
\r
@AfterMethod\r
\r
@Test\r
public void testRead() throws IOException {\r
- enableDebug();\r
+ final Collection<FeedPackage> feedPackages = myReader.queryPackageVersions(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
+ Assert.assertTrue(feedPackages.size() > 0);\r
\r
- final Logger logger = Logger.getLogger("org.apache.commons");\r
- logger.setLevel(Level.DEBUG);\r
- logger.addAppender(new ConsoleAppender(new SimpleLayout()));\r
-\r
- myReader.queryPackage(FeedConstants.FEED_URL, "NuGet.CommandLine");\r
+ boolean hasLatest = false;\r
+ for (FeedPackage feedPackage : feedPackages) {\r
+ Assert.assertFalse(hasLatest && feedPackage.isLatestVersion(), "There could be only one latest");\r
+ hasLatest |= feedPackage.isLatestVersion();\r
+ System.out.println("feedPackage = " + feedPackage);\r
+ }\r
}\r
}\r
\r
import jetbrains.buildServer.BaseTestCase;\r
import jetbrains.buildServer.nuget.server.feed.reader.FeedPackage;\r
-import jetbrains.buildServer.nuget.server.feed.reader.PackagesFeedParser;\r
+import jetbrains.buildServer.nuget.server.feed.reader.impl.PackagesFeedParser;\r
import jetbrains.buildServer.nuget.tests.integration.Paths;\r
import jetbrains.buildServer.util.FileUtil;\r
import org.jdom.Element;\r
<class name="jetbrains.buildServer.nuget.tests.integration.InstallPackageIntegtatoinTest"/>\r
<class name="jetbrains.buildServer.nuget.tests.integration.NuGetExecutorTest"/>\r
<class name="jetbrains.buildServer.nuget.tests.integration.PackagesPublishIntegrationTest"/>\r
+ <class name="jetbrains.buildServer.nuget.tests.integration.FeedReaderTest"/>\r
</classes>\r
</test>\r
</suite>\r