/* * Copyright 2010 to the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.rioproject.resolver; import java.io.*; import java.util.List; /** * Utilities test cases use in the resolver module */ public class Utils { public static void writeLocalM2RepoSettings() { StringBuilder sb = new StringBuilder(); sb.append("<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"").append("\n"); sb.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"").append("\n"); sb.append(" xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\">").append("\n"); sb.append(" <localRepository>target/test-repo/</localRepository> ").append("\n"); sb.append(" <profiles>").append("\n"); sb.append(" <profile>").append("\n"); sb.append(" <id>p1</id>").append("\n"); sb.append(" <activation>").append("\n"); sb.append(" <activeByDefault>true</activeByDefault>").append("\n"); sb.append(" </activation>").append("\n"); sb.append(" <repositories>").append("\n"); sb.append(" <repository>").append("\n"); sb.append(" <id>rio</id>").append("\n"); sb.append(" <url>http://www.rio-project.org/maven2</url>").append("\n"); sb.append(" <releases>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </releases>").append("\n"); sb.append(" <snapshots>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </snapshots>").append("\n"); sb.append(" </repository>").append("\n"); sb.append(" <repository>").append("\n"); sb.append(" <id>jboss</id>").append("\n"); sb.append(" <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>").append("\n"); sb.append(" <releases>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </releases>").append("\n"); sb.append(" <snapshots>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </snapshots>").append("\n"); sb.append(" </repository>").append("\n"); sb.append(" </repositories>").append("\n"); sb.append(" </profile>").append("\n"); sb.append(" </profiles>").append("\n"); sb.append(" <activeProfiles>").append("\n"); sb.append(" <activeProfile>p1</activeProfile>").append("\n"); sb.append(" </activeProfiles>").append("\n"); sb.append("</settings>").append("\n"); File localM2RepoSettingsFile = getM2Settings(); Writer output; try { output = new BufferedWriter(new FileWriter(localM2RepoSettingsFile)); output.write(sb.toString()); close(output); } catch (Exception e) { e.printStackTrace(); } } public static String getMirroredURL() { StringBuilder builder = new StringBuilder(); //builder.append("file://").append(System.getProperty("user.dir")).append(File.separator).append("target"); builder.append("http://repo1.maven.org/maven2"); return builder.toString(); } public static void writeLocalM2RepoSettingsWithMirror() { StringBuilder sb = new StringBuilder(); sb.append("<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"").append("\n"); sb.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"").append("\n"); sb.append(" xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd\">").append("\n"); sb.append(" <localRepository>target/test-repo/</localRepository> ").append("\n"); sb.append(" <mirrors>").append("\n"); sb.append(" <mirror>").append("\n"); sb.append(" <id>all</id>").append("\n"); sb.append(" <url>").append(getMirroredURL()).append("</url>").append("\n"); sb.append(" <mirrorOf>*</mirrorOf>").append("\n"); sb.append(" </mirror>").append("\n"); sb.append(" </mirrors>").append("\n"); sb.append(" <profiles>").append("\n"); sb.append(" <profile>").append("\n"); sb.append(" <id>p1</id>").append("\n"); sb.append(" <activation>").append("\n"); sb.append(" <activeByDefault>true</activeByDefault>").append("\n"); sb.append(" </activation>").append("\n"); sb.append(" <repositories>").append("\n"); sb.append(" <repository>").append("\n"); sb.append(" <id>rio</id>").append("\n"); sb.append(" <url>http://www.rio-project.org/maven2</url>").append("\n"); sb.append(" <releases>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </releases>").append("\n"); sb.append(" <snapshots>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </snapshots>").append("\n"); sb.append(" </repository>").append("\n"); sb.append(" <repository>").append("\n"); sb.append(" <id>jboss</id>").append("\n"); sb.append(" <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url>").append("\n"); sb.append(" <releases>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </releases>").append("\n"); sb.append(" <snapshots>").append("\n"); sb.append(" <enabled>true</enabled>").append("\n"); sb.append(" </snapshots>").append("\n"); sb.append(" </repository>").append("\n"); sb.append(" </repositories>").append("\n"); sb.append(" </profile>").append("\n"); sb.append(" </profiles>").append("\n"); sb.append(" <activeProfiles>").append("\n"); sb.append(" <activeProfile>p1</activeProfile>").append("\n"); sb.append(" </activeProfiles>").append("\n"); sb.append("</settings>").append("\n"); File localM2RepoSettingsFile = getM2Settings(); Writer output; try { output = new BufferedWriter(new FileWriter(localM2RepoSettingsFile)); output.write(sb.toString()); close(output); } catch (Exception e) { e.printStackTrace(); } } public static File getM2Settings() { return new File(System.getProperty("user.home"), ".m2/settings.xml"); } public static File saveM2Settings() throws IOException { File settings = getM2Settings(); File saveOrigSettings = null; if(settings.exists()) { saveOrigSettings = new File(System.getProperty("user.home"), ".m2/settings.xml.sav"); FileUtils.copy(settings, saveOrigSettings); } return saveOrigSettings; } public static void close(Closeable c) { try { if(c!=null) c.close(); } catch (IOException e) { } } public static String formatClassPath(String[] classPath) { StringBuilder sb = new StringBuilder(); for(String s : classPath) { if(sb.length()>0) sb.append("\n"); int ndx = s.lastIndexOf(File.separator); sb.append(s.substring(ndx+1)); } return sb.toString(); } public static String flatten(List<String> l) { StringBuilder sb = new StringBuilder(); for(String s : l) { if(sb.length()>0) sb.append(","); sb.append(s); } return sb.toString(); } /** * Search and Replace * * @param str The string to replace tokens for * @param pattern The pattern to look for * @param replace The replacement for the pattern * * @return A string with tokens replaced */ public static String replace(String str, String pattern, String replace) { int s = 0; int e; StringBuilder result = new StringBuilder(); while((e = str.indexOf(pattern, s)) >= 0) { result.append(str.substring(s, e)); result.append(replace); s = e+pattern.length(); } result.append(str.substring(s)); return result.toString(); } }