You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ha...@apache.org on 2015/08/18 17:03:33 UTC
[24/64] [abbrv] incubator-brooklyn git commit: BROOKLYN-162 - apply
org.apache package prefix to utils-common
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/logging/SimpleOneLineLogFormatter.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/logging/SimpleOneLineLogFormatter.java b/utils/common/src/main/java/brooklyn/util/logging/SimpleOneLineLogFormatter.java
deleted file mode 100644
index 19ca7e6..0000000
--- a/utils/common/src/main/java/brooklyn/util/logging/SimpleOneLineLogFormatter.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.logging;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.logging.Formatter;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-
-import com.google.common.base.Throwables;
-
-//useful for java.util.logger, which by default puts every message on two lines (horrid)
-//however we don't typically use java.util.logger...
-public class SimpleOneLineLogFormatter extends Formatter {
-
- public SimpleOneLineLogFormatter() {
- this(true, false, false);
- }
-
- public SimpleOneLineLogFormatter(boolean showLevel, boolean showThread, boolean showCaller) {
- this.showLevel = showLevel;
- this.showThread = showThread;
- this.showCaller = showCaller;
- }
-
-
- public final boolean showLevel;
- public final boolean showThread;
- public final boolean showCaller;
-
- // use shared date and formatter to minimize memory/time overhead
- protected final Date date = new Date();
- protected DateFormat dateFormat = new SimpleDateFormat(getDateFormat());
-
- public String getDateFormat() {
- return "yyyy-MM-dd HH:mm:ss.SSSZ";
- }
-
- /** uses "YYYY-DD-MM hh:mm:ss.SSS message" format */
- public String format(LogRecord record) {
- StringBuffer sb = new StringBuffer();
- appendDate(record, sb);
- appendLevel(record, sb);
- sb.append(" ");
- sb.append(formatMessage(record));
- appendThreadAndCaller(record, sb);
- appendDetailsWithNewLine(sb, record);
- return sb.toString();
- }
-
- protected void appendLevel(LogRecord record, StringBuffer sb) {
- if (showLevel) {
- sb.append(" [").append(record.getLevel()).append("]");
- }
- }
-
- protected void appendDate(LogRecord record, StringBuffer sb) {
- synchronized (date) {
- date.setTime(record.getMillis());
- sb.append(dateFormat.format(date));
- }
- }
-
- protected void appendThreadAndCaller(LogRecord record, StringBuffer sb) {
- if (showThread || showCaller) {
- sb.append(" [");
- if (showThread)
- sb.append(getThreadName(record));
- if (showThread && showCaller) sb.append(", ");
- if (showCaller) {
- if (record.getSourceClassName() != null) {
- sb.append(record.getSourceClassName());
- } else {
- sb.append(record.getLoggerName());
- }
- if (record.getSourceMethodName() != null) {
- sb.append(" ");
- sb.append(record.getSourceMethodName());
- }
- }
- sb.append("]");
- }
- }
-
- protected void appendDetailsWithNewLine(StringBuffer sb, LogRecord record) {
- if (record.getThrown() != null) {
- try {
- sb.append('\n');
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- record.getThrown().printStackTrace(pw);
- pw.close();
- sb.append(sw.toString());
- } catch (Exception ex) {
- //shouldn't happen with printwriter
- throw Throwables.propagate(ex);
- }
- } else {
- sb.append('\n');
- }
- }
-
- protected String getThreadName(LogRecord record) {
- //try to get the thread's name
- //only possible if we are the thread (unless do something messy like cache or access private fields)
- //fortunately we typically are the thread
- LogRecord lr = new LogRecord(Level.INFO, "");
- if (lr.getThreadID()==record.getThreadID())
- return Thread.currentThread().getName() + " ("+record.getThreadID()+")";
- //otherwise just say the number
- return "thread ("+record.getThreadID()+")";
- }
-
- public static class LogFormatterWithThreadAndCaller extends SimpleOneLineLogFormatter {
- public LogFormatterWithThreadAndCaller() {
- super(true, true, true);
- }
- }
-
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/math/BitList.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/math/BitList.java b/utils/common/src/main/java/brooklyn/util/math/BitList.java
deleted file mode 100644
index f145352..0000000
--- a/utils/common/src/main/java/brooklyn/util/math/BitList.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.math;
-
-import java.math.BigInteger;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.List;
-
-import com.google.common.collect.Lists;
-import com.google.common.primitives.Bytes;
-
-/** represents an immutable ordered collection of bits with a known length
- * <p>
- * when converting to and from bytes and larger numbers, this representation
- * uses the least-significant first convention both for bits and for bytes (little endian)
- * <p>
- * (i.e. least significant byte is first, as is the least significant bit;
- * ninth element in this list is the least significant bit in the second byte,
- * so a list {0,0,0,0,0,0,0,0,1,0} represents 256)
- **/
-public class BitList {
-
- private final BitSet bits;
- protected final int length;
-
- protected BitList(BitSet bits, int length) {
- assert length >= bits.length();
- this.bits = bits;
- this.length = length;
- }
-
- public static BitList newInstance(BitSet bits, int length) {
- return new BitList(bits, length);
- }
-
- public int length() {
- return length;
- }
-
- public boolean get(int index) {
- if (index<0 || index>=length)
- throw new IndexOutOfBoundsException("Index "+index+" in "+this);
- return bits.get(index);
- }
-
- public static BitList newInstance(byte ...bytes) {
- BitSet bits = new BitSet();
- for (int i=0; i < bytes.length*8; i++)
- if ((bytes[i/8] & (1 << (i%8))) > 0)
- bits.set(i);
- return newInstance(bits, bytes.length*8);
- }
-
- /** as {@link #newInstance(byte...)}, but accepting ints for convenience;
- * only the least significant 8 bits of the parameters are considered */
- public static BitList newInstanceFromBytes(int ...bytes) {
- BitSet bits = new BitSet();
- for (int i=0; i < bytes.length*8; i++)
- if ((bytes[i/8] & (1 << (i%8))) > 0)
- bits.set(i);
- return newInstance(bits, bytes.length*8);
- }
-
- public static BitList newInstance(List<Boolean> l) {
- BitSet bs = new BitSet();
- for (int i=0; i<l.size(); i++)
- bs.set(i, l.get(i));
- return new BitList(bs, l.size());
- }
-
- public static BitList newInstance(boolean ...l) {
- BitSet bs = new BitSet();
- for (int i=0; i<l.length; i++)
- bs.set(i, l[i]);
- return new BitList(bs, l.length);
- }
-
- public static BitList newInstance(BigInteger x) {
- BitSet bs = new BitSet();
- for (int i=0; i<x.bitLength(); i++)
- if (x.testBit(i)) bs.set(i);
- return new BitList(bs, x.bitLength());
- }
-
- /**
- * returns the bits converted to bytes, with least significant bit first
- * *and* first 8 bits in the first byte
- * <p>
- * NB this may be different to BitSet.valueOf available since java 7 (as late as that!)
- * which reverses the order of the bytes */
- public byte[] asBytes() {
- byte[] bytes = new byte[(length+7)/8];
- for (int i=0; i<bits.length(); i++)
- if (bits.get(i))
- bytes[i/8] |= 1 << (i%8);
- return bytes;
- }
-
- public int[] asUnsignedBytes() {
- int[] bytes = new int[(length+7)/8];
- for (int i=0; i<bits.length(); i++)
- if (bits.get(i))
- bytes[i/8] |= 1 << (i%8);
- return bytes;
- }
-
- /** nb: BitSet forgets the length */
- public BitSet asBitSet() {
- return (BitSet) bits.clone();
- }
-
- public List<Boolean> asList() {
- List<Boolean> list = new ArrayList<Boolean>();
- for (int i=0; i<length(); i++) {
- list.add(get(i));
- }
- return list;
- }
-
- /** represents the result of this bit list logically ORred with the other */
- public BitList orred(BitList other) {
- BitSet result = asBitSet();
- result.or(other.asBitSet());
- return new BitList(result, Math.max(length, other.length));
- }
-
- /** represents the result of this bit list logically ANDed with the other */
- public BitList anded(BitList other) {
- BitSet result = asBitSet();
- result.and(other.asBitSet());
- return new BitList(result, Math.max(length, other.length));
- }
-
- /** represents the result of this bit list logically XORred with the other */
- public BitList xorred(BitList other) {
- BitSet result = asBitSet();
- result.xor(other.asBitSet());
- return new BitList(result, Math.max(length, other.length));
- }
-
- /** represents the result of this bit list logically notted */
- public BitList notted() {
- BitSet result = asBitSet();
- result.flip(0, length);
- return new BitList(result, length);
- }
-
- /** creates a new instance with the given length, either reducing the list or padding it with 0's
- * (at the end, in both cases)
- */
- public BitList resized(int length) {
- BitSet b2 = asBitSet();
- if (b2.length()>length)
- b2.clear(length, b2.length());
- return newInstance(b2, length);
- }
-
- public BitList reversed() {
- BitSet b = new BitSet();
- for (int from=bits.length()-1, to=length-bits.length(); from>=0; from--, to++) {
- if (get(from)) b.set(to);
- }
- return new BitList(b, length);
- }
-
- public int commonPrefixLength(BitList other) {
- int i=0;
- while (i<length && i<other.length) {
- if (get(i)!=other.get(i)) return i;
- i++;
- }
- return i;
- }
-
- /** true iff the length is 0; see also isZero */
- public boolean isEmpty() {
- return length==0;
- }
-
- /** true iff all bits are 0 */
- public boolean isZero() {
- return bits.cardinality()==0;
- }
-
- public BigInteger asBigInteger() {
- if (length==0) return BigInteger.ZERO;
- return new BigInteger(Bytes.toArray(Lists.reverse(asByteList())));
- }
-
- public boolean[] asArray() {
- boolean[] result = new boolean[length];
- for (int i=0; i<length; i++)
- result[i] = get(i);
- return result;
- }
-
- public List<Byte> asByteList() {
- return Bytes.asList(asBytes());
- }
-
- /** returns value of this as a byte(ignoring any too-high bits) */
- public byte byteValue() {
- return asBigInteger().byteValue();
- }
-
- /** returns value of this as an integer (ignoring any too-high bits) */
- public int intValue() {
- return asBigInteger().intValue();
- }
-
- /** returns value of this as a long (ignoring any too-high bits) */
- public long longValue() {
- return asBigInteger().longValue();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((bits == null) ? 0 : bits.hashCode());
- result = prime * result + length;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- BitList other = (BitList) obj;
- if (bits == null) {
- if (other.bits != null)
- return false;
- } else if (!bits.equals(other.bits))
- return false;
- if (length != other.length)
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- for (int i=0; i<length; i++) {
- if (i%8==0 && i>0) sb.append(":"); //for readability
- sb.append(get(i) ? '1' : '0');
- }
- return sb.toString();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/math/BitUtils.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/math/BitUtils.java b/utils/common/src/main/java/brooklyn/util/math/BitUtils.java
deleted file mode 100644
index fd3159a..0000000
--- a/utils/common/src/main/java/brooklyn/util/math/BitUtils.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.math;
-
-public class BitUtils {
-
- /** reverses the bits in a byte, i.e. 128 = 0b1000000 = bit list {0,0,0,0,0,0,0,1},
- * reversed yields 1 = 0b00000001 = bit list {1,0,0,0,0,0,0,0} */
- public static byte reverseBitSignificance(byte b) {
- int result = 0;
- for (int i=0; i<8; i++) {
- result <<= 1;
- if ((b&1)==1) result++;
- b >>= 1;
- }
- return (byte)result;
- }
-
- /** as {@link #reverseBitSignificance(byte)} but accepting int for convenience */
- public static byte reverseBitSignificanceInByte(int b) {
- return reverseBitSignificance((byte)b);
- }
-
- /** returns an array of bytes where the bits in each byte have been reversed;
- * note however the order of the arguments is not reversed;
- * useful e.g. in working with IP address CIDR's */
- public static byte[] reverseBitSignificance(byte ...bytes) {
- byte[] result = new byte[bytes.length];
- for (int i=0; i<bytes.length; i++)
- result[i] = reverseBitSignificance(bytes[i]);
- return result;
- }
-
- /** as {@link #reverseBitSignificance(byte...)}, but taking ints for convenience (ignoring high bits) */
- public static byte[] reverseBitSignificanceInBytes(int ...bytes) {
- byte[] result = new byte[bytes.length];
- for (int i=0; i<bytes.length; i++)
- result[i] = reverseBitSignificance((byte)bytes[i]);
- return result;
- }
-
- /** why oh why are bytes signed! */
- public static int unsigned(byte b) {
- if (b<0) return b+256;
- return b;
- }
-
- /** returns the value in 0..255 which is equivalent mod 256 */
- public static int unsignedByte(int b) {
- if (b<0) return (b%256)+256;
- return (b%256);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/math/MathFunctions.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/math/MathFunctions.java b/utils/common/src/main/java/brooklyn/util/math/MathFunctions.java
deleted file mode 100644
index 8c35d21..0000000
--- a/utils/common/src/main/java/brooklyn/util/math/MathFunctions.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.math;
-
-import javax.annotation.Nullable;
-
-import brooklyn.util.text.Strings;
-
-import com.google.common.base.Function;
-
-public class MathFunctions {
-
- public static Function<Number, Integer> plus(final int addend) {
- return new Function<Number, Integer>() {
- public Integer apply(@Nullable Number input) {
- if (input==null) return null;
- return input.intValue() + addend;
- }
- };
- }
-
- public static Function<Number, Long> plus(final long addend) {
- return new Function<Number, Long>() {
- public Long apply(@Nullable Number input) {
- if (input==null) return null;
- return input.longValue() + addend;
- }
- };
- }
-
- public static Function<Number, Double> plus(final double addend) {
- return new Function<Number, Double>() {
- public Double apply(@Nullable Number input) {
- if (input==null) return null;
- return input.doubleValue() + addend;
- }
- };
- }
-
- public static Function<Number, Integer> times(final int multiplicand) {
- return new Function<Number, Integer>() {
- public Integer apply(@Nullable Number input) {
- if (input==null) return null;
- return input.intValue() * multiplicand;
- }
- };
- }
-
- public static Function<Number, Long> times(final long multiplicand) {
- return new Function<Number, Long>() {
- public Long apply(@Nullable Number input) {
- if (input==null) return null;
- return input.longValue() * multiplicand;
- }
- };
- }
-
- public static Function<Number, Double> times(final double multiplicand) {
- return new Function<Number, Double>() {
- public Double apply(@Nullable Number input) {
- if (input==null) return null;
- return input.doubleValue() * multiplicand;
- }
- };
- }
-
- public static Function<Number, Double> divide(final double divisor) {
- return new Function<Number, Double>() {
- public Double apply(@Nullable Number input) {
- if (input==null) return null;
- return input.doubleValue() / divisor;
- }
- };
- }
-
- public static <T> Function<T, Double> divide(final Function<T, ? extends Number> input, final double divisor) {
- return new Function<T, Double>() {
- public Double apply(@Nullable T input2) {
- if (input==null) return null;
- Number n = input.apply(input2);
- if (n==null) return null;
- return n.doubleValue() / divisor;
- }
- };
- }
-
- /** returns a string of up to maxLen length (longer in extreme cases) also capped at significantDigits significantDigits */
- public static Function<Number, String> readableString(final int significantDigits, final int maxLen) {
- return new Function<Number, String>() {
- public String apply(@Nullable Number input) {
- if (input==null) return null;
- return Strings.makeRealString(input.doubleValue(), maxLen, significantDigits, 0);
- }
- };
- }
-
- /** returns a string where the input number is expressed as percent, with given number of significant digits */
- public static Function<Number, String> percent(final int significantDigits) {
- return new Function<Number, String>() {
- public String apply(@Nullable Number input) {
- if (input==null) return null;
- return readableString(significantDigits, significantDigits+3).apply(input.doubleValue() * 100d)+"%";
- }
- };
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/math/MathPredicates.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/math/MathPredicates.java b/utils/common/src/main/java/brooklyn/util/math/MathPredicates.java
deleted file mode 100644
index 41f4024..0000000
--- a/utils/common/src/main/java/brooklyn/util/math/MathPredicates.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.math;
-
-import javax.annotation.Nullable;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-
-public class MathPredicates {
-
- /**
- * Creates a predicate comparing a given number with {@code val}.
- * A number of {@code null} passed to the predicate will always return false.
- */
- public static <T extends Number> Predicate<T> greaterThan(final double val) {
- return new Predicate<T>() {
- public boolean apply(@Nullable T input) {
- return (input == null) ? false : input.doubleValue() > val;
- }
- };
- }
-
- /**
- * Creates a predicate comparing a given number with {@code val}.
- * A number of {@code null} passed to the predicate will always return false.
- */
- public static <T extends Number> Predicate<T> greaterThanOrEqual(final double val) {
- return new Predicate<T>() {
- public boolean apply(@Nullable T input) {
- return (input == null) ? false : input.doubleValue() >= val;
- }
- };
- }
-
- /**
- * Creates a predicate comparing a given number with {@code val}.
- * A number of {@code null} passed to the predicate will always return false.
- */
- public static <T extends Number> Predicate<T> lessThan(final double val) {
- return new Predicate<T>() {
- public boolean apply(@Nullable T input) {
- return (input == null) ? false : input.doubleValue() < val;
- }
- };
- }
-
- /**
- * Creates a predicate comparing a given number with {@code val}.
- * A number of {@code null} passed to the predicate will always return false.
- */
- public static <T extends Number> Predicate<T> lessThanOrEqual(final double val) {
- return new Predicate<T>() {
- public boolean apply(@Nullable T input) {
- return (input == null) ? false : input.doubleValue() <= val;
- }
- };
- }
-
- /**
- * Creates a predicate comparing a given number with {@code val}.
- * A number of {@code null} passed to the predicate will always return false.
- */
- public static <T extends Number> Predicate<T> equalsApproximately(final Number val, final double delta) {
- return new EqualsApproximately<T>(val, delta);
- }
- /** Convenience for {@link #equalsApproximately(double,double)} with a delta of 10^{-6}. */
- public static <T extends Number> Predicate<T> equalsApproximately(final Number val) {
- return equalsApproximately(val, 0.0000001);
- }
-
- private static final class EqualsApproximately<T extends Number> implements Predicate<T> {
- private final double val;
- private final double delta;
- private EqualsApproximately(Number val, double delta) {
- this.val = val.doubleValue();
- Preconditions.checkArgument(delta>=0, "delta must be non-negative");
- this.delta = delta;
- }
- public boolean apply(@Nullable T input) {
- return (input == null) ? false : Math.abs(input.doubleValue() - val) <= delta;
- }
- @Override
- public String toString() {
- return "equals-approximately("+val+" +- "+delta+")";
- }
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/maven/MavenArtifact.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/maven/MavenArtifact.java b/utils/common/src/main/java/brooklyn/util/maven/MavenArtifact.java
deleted file mode 100644
index 5e847e5..0000000
--- a/utils/common/src/main/java/brooklyn/util/maven/MavenArtifact.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.maven;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.util.collections.MutableList;
-import brooklyn.util.javalang.JavaClassNames;
-import brooklyn.util.text.Strings;
-
-public class MavenArtifact {
-
- private static final Logger log = LoggerFactory.getLogger(MavenArtifact.class);
-
- protected final @Nonnull String groupId;
- protected final @Nonnull String artifactId;
- protected final @Nonnull String packaging;
- protected final @Nullable String classifier;
- protected final @Nonnull String version;
-
- /** a custom marker inserted after the artifactId and before the version, offset by an additional "-";
- * defaults to null (nothing)
- * <p>
- * uses: when a shaded JAR is built, sometimes the word shaded is inserted before the version
- * (and the "with-dependencies" classifier overwritten) */
- protected @Nullable String customFileNameAfterArtifactMarker;
-
- /** a custom marker inserted after the version and before the extension, offset by an additional "-" if non-empty;
- * defaults to {@link #getClassifier()} if null, but can replace the classifier
- * <p>
- * uses: removing classifier by specifying "", or adding a notional classifier such as "dist" */
- protected @Nullable String classifierFileNameMarker;
-
- public MavenArtifact(String groupId, String artifactId, String packaging, String classifier, String version) {
- super();
- this.groupId = groupId;
- this.artifactId = artifactId;
- this.packaging = packaging;
- this.classifier = classifier;
- this.version = version;
- }
-
- public MavenArtifact(String groupId, String artifactId, String packaging, String version) {
- super();
- this.groupId = groupId;
- this.artifactId = artifactId;
- this.packaging = packaging;
- this.classifier = null;
- this.version = version;
- }
-
- public static MavenArtifact fromCoordinate(String coordinate) {
- String[] parts = checkNotNull(coordinate, "coordinate").split(":");
- if (parts.length==4)
- return new MavenArtifact(parts[0], parts[1], parts[2], parts[3]);
- if (parts.length==5)
- return new MavenArtifact(parts[0], parts[1], parts[2], parts[3], parts[4]);
- throw new IllegalArgumentException("Invalid maven coordinate '"+coordinate+"'");
- }
-
- public String getGroupId() {
- return groupId;
- }
-
- public String getArtifactId() {
- return artifactId;
- }
-
- public String getVersion() {
- return version;
- }
-
- @Nullable public String getClassifier() {
- return classifier;
- }
-
- public String getPackaging() {
- return packaging;
- }
-
- public boolean isSnapshot() {
- return getVersion().toUpperCase().contains("SNAPSHOT");
- }
-
- /** @see #customFileNameAfterArtifactMarker */
- public String getCustomFileNameAfterArtifactMarker() {
- return customFileNameAfterArtifactMarker;
- }
-
- /** @see #customFileNameAfterArtifactMarker */
- public void setCustomFileNameAfterArtifactMarker(String customFileNameMarker) {
- this.customFileNameAfterArtifactMarker = customFileNameMarker;
- }
-
- /** @ee {@link #classifierFileNameMarker} */
- public String getClassifierFileNameMarker() {
- return classifierFileNameMarker!=null ? classifierFileNameMarker : getClassifier();
- }
-
- /** @ee {@link #classifierFileNameMarker} */
- public void setClassifierFileNameMarker(String classifierFileNameMarker) {
- this.classifierFileNameMarker = classifierFileNameMarker;
- }
-
- /** returns a "groupId:artifactId:version:(classifier:)packaging" string
- * which maven refers to as the co-ordinate */
- public String getCoordinate() {
- return Strings.join(MutableList.<String>of().append(groupId, artifactId, packaging).
- appendIfNotNull(classifier).append(version), ":");
- }
-
- public String getFilename() {
- return artifactId+"-"+
- (Strings.isNonEmpty(getCustomFileNameAfterArtifactMarker()) ? getCustomFileNameAfterArtifactMarker()+"-" : "")+
- version+
- (Strings.isNonEmpty(getClassifierFileNameMarker()) ? "-"+getClassifierFileNameMarker() : "")+
- (Strings.isNonEmpty(getExtension()) ? "."+getExtension() : "");
- }
-
- /** returns an extension, defaulting to {@link #packaging} if one cannot be inferred */
- @Nullable public String getExtension() {
- if ("jar".equalsIgnoreCase(packaging) || "bundle".equalsIgnoreCase(packaging))
- return "jar";
- if ("war".equalsIgnoreCase(packaging))
- return "war";
- log.debug("Unrecognised packaging for autodetecting extension, defaulting to {} for: {}", packaging, this);
- return packaging;
- }
-
- @Override
- public String toString() {
- return JavaClassNames.simpleClassName(this)+"["+getCoordinate()+"]";
- }
-
- @Override
- public int hashCode() {
- // autogenerated code
-
- final int prime = 31;
- int result = 1;
- result = prime * result + ((artifactId == null) ? 0 : artifactId.hashCode());
- result = prime * result + ((classifier == null) ? 0 : classifier.hashCode());
- result = prime * result + ((classifierFileNameMarker == null) ? 0 : classifierFileNameMarker.hashCode());
- result = prime * result + ((customFileNameAfterArtifactMarker == null) ? 0 : customFileNameAfterArtifactMarker.hashCode());
- result = prime * result + ((groupId == null) ? 0 : groupId.hashCode());
- result = prime * result + ((packaging == null) ? 0 : packaging.hashCode());
- result = prime * result + ((version == null) ? 0 : version.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- // autogenerated code
-
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- MavenArtifact other = (MavenArtifact) obj;
- if (artifactId == null) {
- if (other.artifactId != null)
- return false;
- } else if (!artifactId.equals(other.artifactId))
- return false;
- if (classifier == null) {
- if (other.classifier != null)
- return false;
- } else if (!classifier.equals(other.classifier))
- return false;
- if (classifierFileNameMarker == null) {
- if (other.classifierFileNameMarker != null)
- return false;
- } else if (!classifierFileNameMarker.equals(other.classifierFileNameMarker))
- return false;
- if (customFileNameAfterArtifactMarker == null) {
- if (other.customFileNameAfterArtifactMarker != null)
- return false;
- } else if (!customFileNameAfterArtifactMarker.equals(other.customFileNameAfterArtifactMarker))
- return false;
- if (groupId == null) {
- if (other.groupId != null)
- return false;
- } else if (!groupId.equals(other.groupId))
- return false;
- if (packaging == null) {
- if (other.packaging != null)
- return false;
- } else if (!packaging.equals(other.packaging))
- return false;
- if (version == null) {
- if (other.version != null)
- return false;
- } else if (!version.equals(other.version))
- return false;
- return true;
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/maven/MavenRetriever.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/maven/MavenRetriever.java b/utils/common/src/main/java/brooklyn/util/maven/MavenRetriever.java
deleted file mode 100644
index 7840d7b..0000000
--- a/utils/common/src/main/java/brooklyn/util/maven/MavenRetriever.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.maven;
-
-import java.io.File;
-
-import brooklyn.util.net.Urls;
-import brooklyn.util.text.Strings;
-
-import com.google.common.base.Function;
-
-/** returns the URL for accessing the artifact, assuming sonatype for snapshots and maven.org for releases by default,
- * with some methods checking local file system, and allowing the generators for each to be specified */
-public class MavenRetriever {
-
- public static final Function<MavenArtifact,String> CONDITIONAL_SNAPSHOT_URL_GENERATOR = new Function<MavenArtifact, String>() {
- public String apply(MavenArtifact artifact) {
- if (artifact.groupId.startsWith("org.apache")) {
- return APACHE_SNAPSHOT_URL_GENERATOR.apply(artifact);
- } else {
- return SONATYPE_SNAPSHOT_URL_GENERATOR.apply(artifact);
- }
- }
- };
-
- public static final Function<MavenArtifact,String> SONATYPE_SNAPSHOT_URL_GENERATOR =
- nexusSnapshotUrlGenerator("https://oss.sonatype.org");
-
- public static final Function<MavenArtifact,String> APACHE_SNAPSHOT_URL_GENERATOR =
- nexusSnapshotUrlGenerator("https://repository.apache.org");
-
- public static Function<MavenArtifact,String> nexusSnapshotUrlGenerator(final String baseUrl) {
- return new Function<MavenArtifact, String>() {
- public String apply(MavenArtifact artifact) {
- return baseUrl+"/service/local/artifact/maven/redirect?" +
- "r=snapshots&" +
- "v="+Urls.encode(artifact.version)+"&" +
- "g="+Urls.encode(artifact.groupId)+"&" +
- "a="+Urls.encode(artifact.artifactId)+"&" +
- (artifact.classifier!=null ? "c="+Urls.encode(artifact.classifier)+"&" : "")+
- "e="+Urls.encode(artifact.packaging);
- }
- };
- }
-
- public static final Function<MavenArtifact,String> MAVEN_CENTRAL_URL_GENERATOR = new Function<MavenArtifact, String>() {
- public String apply(MavenArtifact artifact) {
- return "http://search.maven.org/remotecontent?filepath="+
- Urls.encode(Strings.replaceAllNonRegex(artifact.groupId, ".", "/")+"/"+
- artifact.artifactId+"/"+artifact.version+"/"+
- artifact.getFilename());
- }
- };
-
- public static final Function<MavenArtifact,String> LOCAL_REPO_PATH_GENERATOR = new Function<MavenArtifact, String>() {
- public String apply(MavenArtifact artifact) {
- return System.getProperty("user.home")+"/.m2/repository/"+
- Strings.replaceAllNonRegex(artifact.groupId, ".", "/")+"/"+
- artifact.artifactId+"/"+artifact.version+"/"+
- artifact.getFilename();
- }
- };
-
- protected Function<MavenArtifact,String> snapshotUrlGenerator = CONDITIONAL_SNAPSHOT_URL_GENERATOR;
- protected Function<MavenArtifact,String> releaseUrlGenerator = MAVEN_CENTRAL_URL_GENERATOR;
-
- public void setSnapshotUrlGenerator(Function<MavenArtifact, String> snapshotUrlGenerator) {
- this.snapshotUrlGenerator = snapshotUrlGenerator;
- }
-
- public void setReleaseUrlGenerator(Function<MavenArtifact, String> releaseUrlGenerator) {
- this.releaseUrlGenerator = releaseUrlGenerator;
- }
-
- public String getHostedUrl(MavenArtifact artifact) {
- if (artifact.isSnapshot()) return snapshotUrlGenerator.apply(artifact);
- else return releaseUrlGenerator.apply(artifact);
- }
-
- public String getLocalPath(MavenArtifact artifact) {
- return LOCAL_REPO_PATH_GENERATOR.apply(artifact);
- }
-
- public boolean isInstalledLocally(MavenArtifact artifact) {
- return new File(getLocalPath(artifact)).exists();
- }
-
- /** returns a URL for accessing the given artifact, preferring a local file if available,
- * else generating a hosted URL (but not checking) */
- public String getLocalUrl(MavenArtifact artifact) {
- if (isInstalledLocally(artifact)) return new File(getLocalPath(artifact)).toURI().toString();
- if (artifact.isSnapshot()) return snapshotUrlGenerator.apply(artifact);
- else return releaseUrlGenerator.apply(artifact);
- }
-
- /** returns a URL for accessing the artifact from the local machine (ie preferring a local repo),
- * using the default remote sits (sonatype for snapshots and maven.org for releases) */
- public static String localUrl(MavenArtifact artifact) {
- return new MavenRetriever().getLocalUrl(artifact);
- }
-
- /** returns a URL for accessing the artifact from any machine (ie not allowing a local repo),
- * using the default remote sits (sonatype for snapshots and maven.org for releases) */
- public static String hostedUrl(MavenArtifact artifact) {
- return new MavenRetriever().getHostedUrl(artifact);
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/Cidr.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/Cidr.java b/utils/common/src/main/java/brooklyn/util/net/Cidr.java
deleted file mode 100644
index 64768f4..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/Cidr.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.util.Arrays;
-import java.util.List;
-
-import brooklyn.util.exceptions.Exceptions;
-import brooklyn.util.math.BitList;
-import brooklyn.util.math.BitUtils;
-import brooklyn.util.text.Strings;
-
-import com.google.common.collect.ImmutableList;
-
-/** represents a CIDR (classless inter-domain routing) token, i.e. 10.0.0.0/8 or 192.168.4.0/24 */
-public class Cidr implements Serializable {
-
- private static final long serialVersionUID = -4605909101590811958L;
-
- /** 0.0.0.0/0 -- matches all addresses */
- public static final Cidr UNIVERSAL = new Cidr();
-
- public static final Cidr _10 = new Cidr(10);
- public static final Cidr _172_16 = new Cidr("172.16.0.0/12");
- public static final Cidr _192_168 = new Cidr(192, 168);
- public static final Cidr CLASS_A = _10;
- public static final Cidr CLASS_B = _172_16;
- public static final Cidr CLASS_C = _192_168;
-
- public static final List<Cidr> PRIVATE_NETWORKS_RFC_1918 = ImmutableList.<Cidr>of(_192_168, _172_16, _10);
-
- public static final Cidr _169_254 = new Cidr("169.254.0.0/16");
- public static final Cidr LINK_LOCAL = _169_254;
-
- public static final Cidr _127 = new Cidr("127.0.0.0/8");
- public static final Cidr LOOPBACK = _127;
-
- public static final List<Cidr> NON_PUBLIC_CIDRS = ImmutableList.<Cidr>builder().addAll(PRIVATE_NETWORKS_RFC_1918).add(LINK_LOCAL).add(LOOPBACK).build();
-
-
- final int[] subnetBytes = new int[] { 0, 0, 0, 0 };
- final int length;
-
-
- public Cidr(String cidr) {
- if (Strings.isBlank(cidr))
- // useful e.g. if user leaves it blank in gui
- cidr = "0.0.0.0/0";
- int slash = cidr.indexOf('/');
- if (slash==-1) throw new IllegalArgumentException("CIDR should be of form 192.168.0.0/16 (missing slash); input="+cidr);
- String subnet = cidr.substring(0, slash);
- String lengthS = cidr.substring(slash+1);
- this.length = Integer.parseInt(lengthS);
- String[] bytes = subnet.split("\\.");
- int i=0;
- for (; i<this.length/8; i++)
- subnetBytes[i] = Integer.parseInt(bytes[i]);
- for (; i<(this.length+7)/8; i++)
- // for fractional parts: reverse significance, trim, reverse back
- subnetBytes[i] =
- BitUtils.unsigned( BitUtils.reverseBitSignificanceInByte(
- BitList.newInstanceFromBytes(BitUtils.reverseBitSignificanceInByte(Integer.parseInt(bytes[i]))).
- resized(this.length % 8).intValue() ));
- }
-
- /** returns true iff this CIDR is well-formed and canonical,
- * i.e. 4 dot-separated bytes followed by a slash and a length,
- * where length is <= 32, and the preceding 4 bytes don't include any 1 bits beyond the indicated length;
- * e.g. 10.0.0.0/8 -- but not 10.0.0.1/8 or 10.../8
- * (although the latter ones are accepted by the constructor and converted to the canonical CIDR) */
- public static boolean isCanonical(String cidr) {
- try {
- return cidr.equals(new Cidr(cidr).toString());
- } catch (Throwable e) {
- Exceptions.propagateIfFatal(e);
- return false;
- }
- }
-
- /** allows creation as Cidr(192, 168) for 192.168.0.0/16;
- * zero bits or ints included are significant, i.e. Cidr(10, 0) gives 10.0.0.0/16 */
- public Cidr(int ...unsignedBytes) {
- length = unsignedBytes.length*8;
- System.arraycopy(unsignedBytes, 0, subnetBytes, 0, unsignedBytes.length);
- }
-
- public Cidr(int[] subnetBytes, int length) {
- this.length = length;
- if (subnetBytes.length>4)
- throw new IllegalArgumentException("Cannot create CIDR beyond 4 bytes: "+Arrays.toString(subnetBytes));
- if (length>32)
- throw new IllegalArgumentException("Cannot create CIDR beyond 4 bytes: length "+length);
- // reverse the bits to remove zeroed bits, then reverse back
- byte[] significantSubnetBytes = BitList.newInstance(BitUtils.reverseBitSignificanceInBytes(subnetBytes)).resized(length).asBytes();
- for (int i=0; i<significantSubnetBytes.length; i++)
- this.subnetBytes[i] = BitUtils.unsigned(BitUtils.reverseBitSignificance(significantSubnetBytes[i]));
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + length;
- result = prime * result + Arrays.hashCode(subnetBytes);
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Cidr other = (Cidr) obj;
- if (length != other.length)
- return false;
- if (!Arrays.equals(subnetBytes, other.subnetBytes))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder();
- int i=0;
- while (i<(length+7)/8) {
- if (sb.length()>0) sb.append(".");
- sb.append(""+subnetBytes[i]);
- i++;
- }
- while (i<4) {
- if (sb.length()>0) sb.append(".");
- sb.append("0");
- i++;
- }
- sb.append("/");
- sb.append(""+length);
- return sb.toString();
- }
-
- public int[] getBytes() {
- return Arrays.copyOf(subnetBytes, 4);
- }
-
- public int getLength() {
- return length;
- }
-
- public Cidr subnet(int ...extraUnsignedBytes) {
- if ((length%8)!=0) throw new IllegalStateException("subnet can only be used for byte boundary subnetted CIDR's; not "+this);
- int[] newBytes = getBytes();
- int newLen = this.length + extraUnsignedBytes.length*8;
- if (newLen>32) throw new IllegalStateException("further subnet for "+Arrays.toString(extraUnsignedBytes)+" not possible on CIDR "+this);
- for (int i=0; i<extraUnsignedBytes.length; i++) {
- newBytes[this.length/8 + i] = extraUnsignedBytes[i];
- }
- return new Cidr(newBytes, newLen);
- }
-
- /** returns the netmask for this cidr; e.g. for a /24 cidr returns 255.255.255.0 */
- public InetAddress netmask() {
- final byte[] netmaskBytes = new byte[] { 0, 0, 0, 0 };
- int lengthLeft = length;
- int i=0;
- while (lengthLeft>0) {
- if (lengthLeft>=8) {
- netmaskBytes[i] = (byte)255;
- } else {
- netmaskBytes[i] = (byte) ( (1 << lengthLeft) - 1 );
- }
- lengthLeft -= 8;
- i++;
- }
- return Networking.getInetAddressWithFixedName(netmaskBytes);
- }
-
- /** taking the addresses in the CIDR in order, returns the one in the offset^th position
- * (starting with the CIDR itself, even if final bits are 0) */
- public InetAddress addressAtOffset(int offset) {
- int[] ints = getBytes();
- ints[3] += offset;
- {
- int i=3;
- while (ints[i]>=256) {
- ints[i-1] += (ints[i] / 256);
- ints[i] %= 256;
- i--;
- }
- }
- byte[] bytes = new byte[] { 0, 0, 0, 0 };
- for (int i=0; i<4; i++)
- bytes[i] = (byte) ints[i];
- return Networking.getInetAddressWithFixedName(bytes);
- }
-
- /** returns length of the prefix in common between the two cidrs */
- public int commonPrefixLength(Cidr other) {
- return asBitList().commonPrefixLength(other.asBitList());
- }
-
- public Cidr commonPrefix(Cidr other) {
- return new Cidr(other.getBytes(), commonPrefixLength(other));
- }
-
- /** returns list of bits for the significant (length) bits of this CIDR */
- public BitList asBitList() {
- return BitList.newInstance(BitUtils.reverseBitSignificanceInBytes(getBytes())).resized(getLength());
- }
-
- public boolean contains(Cidr target) {
- return commonPrefixLength(target) == getLength();
- }
-
- // FIXME remove from here, promote NetworkUtils
- /** @deprecated use {@link Networking#getInetAddressWithFixedName(byte[])} */
- @Deprecated
- public static InetAddress getInetAddressWithFixedName(byte[] ip) {
- return Networking.getInetAddressWithFixedName(ip);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/HasNetworkAddresses.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/HasNetworkAddresses.java b/utils/common/src/main/java/brooklyn/util/net/HasNetworkAddresses.java
deleted file mode 100644
index 18d1019..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/HasNetworkAddresses.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-import java.util.Set;
-
-import javax.annotation.Nullable;
-
-import com.google.common.annotations.Beta;
-
-@Beta
-public interface HasNetworkAddresses {
-
- /**
- * <h4>note</h4> hostname is something that is set in the operating system.
- * This value may or may not be set in DNS.
- *
- * @return hostname of the node, or null if unknown
- */
- @Nullable
- String getHostname();
-
- /**
- * All public IP addresses, potentially including shared ips.
- */
- Set<String> getPublicAddresses();
-
- /**
- * All private IP addresses.
- */
- Set<String> getPrivateAddresses();
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/NetworkMultiAddressUtils.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/NetworkMultiAddressUtils.java b/utils/common/src/main/java/brooklyn/util/net/NetworkMultiAddressUtils.java
deleted file mode 100644
index e1635f2..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/NetworkMultiAddressUtils.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-import java.util.Collection;
-
-/**
- * Given several strings, determines which have the longest, and shorted, initial matching prefix.
- * Particularly useful as a poor-man's way to determine which IP's are likely to be the same subnet.
- */
-public class NetworkMultiAddressUtils {
-
- // TODO should convert to byte arrays then binary, and look at binary digit match length !
-
-// public static Collection<String> sortByInitialSimilarity(final String pattern, Collection<String> targets) {
-// List<String> result = new ArrayList<String>(targets);
-// Collections.sort(result, new Comparator<String>() {
-// @Override
-// public int compare(String o1, String o2) {
-// int i1 = 0; int i2 = 0;
-// for (int i=0; i<pattern.length(); i++) {
-// if (o1.length()<i || o2.length()<i) break;
-// if (o1.substring(0, i).equals(anObject))
-// }
-// }
-// });
-// return result;
-// }
-
- public static String getClosest(final String pattern, Collection<String> targets) {
- int score = -1;
- String best = null;
- for (String target: targets) {
- int thisScore = matchLength(pattern, target);
- if (thisScore > score) {
- score = thisScore;
- best = target;
- }
- }
- return best;
- }
-
- public static String getFurthest(final String pattern, Collection<String> targets) {
- int score = 65535;
- String best = null;
- for (String target: targets) {
- int thisScore = matchLength(pattern, target);
- if (thisScore < score) {
- score = thisScore;
- best = target;
- }
- }
- return best;
- }
-
- private static int matchLength(String pattern, String target) {
- int i=0;
- while (i<pattern.length() && i<target.length() && pattern.charAt(i)==target.charAt(i))
- i++;
- return i;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/Networking.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/Networking.java b/utils/common/src/main/java/brooklyn/util/net/Networking.java
deleted file mode 100644
index 4337dc4..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/Networking.java
+++ /dev/null
@@ -1,548 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-import java.io.IOException;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.NetworkInterface;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.util.exceptions.Exceptions;
-import brooklyn.util.text.Identifiers;
-import brooklyn.util.time.Time;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Stopwatch;
-import com.google.common.base.Throwables;
-import com.google.common.net.HostAndPort;
-import com.google.common.primitives.UnsignedBytes;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-public class Networking {
-
- private static final Logger log = LoggerFactory.getLogger(Networking.class);
-
- public static final int MIN_PORT_NUMBER = 1;
- public static final int MAX_PORT_NUMBER = 65535;
-
- // based on http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address
- // but updated to allow leading zeroes
- public static final String VALID_IP_ADDRESS_REGEX = "^((0*[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}(0*[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$";
-
- public static final Pattern VALID_IP_ADDRESS_PATTERN;
- static {
- VALID_IP_ADDRESS_PATTERN = Pattern.compile(VALID_IP_ADDRESS_REGEX);
- }
-
- public static final List<Cidr> PRIVATE_NETWORKS = Cidr.PRIVATE_NETWORKS_RFC_1918;
-
- public static InetAddress ANY_NIC = getInetAddressWithFixedName(0, 0, 0, 0);
- public static InetAddress LOOPBACK = getInetAddressWithFixedName(127, 0, 0, 1);
-
- public static boolean isPortAvailable(int port) {
- return isPortAvailable(ANY_NIC, port);
- }
- public static boolean isPortAvailable(InetAddress localAddress, int port) {
- if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
- throw new IllegalArgumentException("Invalid start port: " + port);
- }
-
- Stopwatch watch = Stopwatch.createStarted();
- try {
- //despite http://stackoverflow.com/questions/434718/sockets-discover-port-availability-using-java
- //(recommending the following) it isn't 100% reliable (e.g. nginx will happily coexist with ss+ds)
- //
- //Svet - SO_REUSEADDR (enabled below) will allow one socket to listen on 0.0.0.0:X and another on
- //192.168.0.1:X which explains the above comment (nginx sets SO_REUSEADDR as well). Moreover there
- //is no TIME_WAIT for listening sockets without any connections so why enable it at all.
- ServerSocket ss = null;
- DatagramSocket ds = null;
- try {
- // Check TCP port
- ss = new ServerSocket();
- ss.setSoTimeout(250);
- ss.setReuseAddress(true);
- ss.bind(new InetSocketAddress(localAddress, port));
-
- // Check UDP port
- ds = new DatagramSocket(null);
- ds.setSoTimeout(250);
- ds.setReuseAddress(true);
- ds.bind(new InetSocketAddress(localAddress, port));
- } catch (IOException e) {
- if (log.isTraceEnabled()) log.trace("Failed binding to " + localAddress + " : " + port, e);
- return false;
- } finally {
- closeQuietly(ds);
- closeQuietly(ss);
- }
-
- if (localAddress==null || ANY_NIC.equals(localAddress)) {
- // sometimes 0.0.0.0 can be bound to even if 127.0.0.1 has the port as in use;
- // check all interfaces if 0.0.0.0 was requested
- Enumeration<NetworkInterface> nis = null;
- try {
- nis = NetworkInterface.getNetworkInterfaces();
- } catch (SocketException e) {
- throw Exceptions.propagate(e);
- }
- // When using a specific interface saw failures not caused by port already bound:
- // * java.net.SocketException: No such device
- // * java.net.BindException: Cannot assign requested address
- // * probably many more
- // Check if the address is still valid before marking the port as not available.
- boolean foundAvailableInterface = false;
- while (nis.hasMoreElements()) {
- NetworkInterface ni = nis.nextElement();
- Enumeration<InetAddress> as = ni.getInetAddresses();
- while (as.hasMoreElements()) {
- InetAddress a = as.nextElement();
- if (!isPortAvailable(a, port)) {
- if (isAddressValid(a)) {
- if (log.isTraceEnabled()) log.trace("Port {} : {} @ {} is taken and the address is valid", new Object[] {a, port, nis});
- return false;
- }
- } else {
- foundAvailableInterface = true;
- }
- }
- }
- if (!foundAvailableInterface) {
- //Aborting with an error, even nextAvailablePort won't be able to find a free port.
- throw new RuntimeException("Unable to bind on any network interface, even when letting the OS pick a port. Possible causes include file handle exhaustion, port exhaustion. Failed on request for " + localAddress + ":" + port + ".");
- }
- }
-
- return true;
- } finally {
- // Until timeout was added, was taking 1min5secs for /fe80:0:0:0:1cc5:1ff:fe81:a61d%8 : 8081
- // Svet - Probably caused by the now gone new Socket().connect() call, SO_TIMEOUT doesn't
- // influence bind(). Doesn't hurt having it though.
- long elapsed = watch.elapsed(TimeUnit.SECONDS);
- boolean isDelayed = (elapsed >= 1);
- boolean isDelayedByMuch = (elapsed >= 30);
- if (isDelayed || log.isTraceEnabled()) {
- String msg = "Took {} to determine if port was available for {} : {}";
- Object[] args = new Object[] {Time.makeTimeString(watch.elapsed(TimeUnit.MILLISECONDS), true), localAddress, port};
- if (isDelayedByMuch) {
- log.warn(msg, args);
- } else if (isDelayed) {
- log.debug(msg, args);
- } else {
- log.trace(msg, args);
- }
- }
- }
- }
-
- /**
- * Bind to the specified IP, but let the OS pick a port.
- * If the operation fails we know it's not because of
- * non-available port, the interface could be down.
- *
- * If there's port exhaustion on a single interface we won't catch it
- * and declare the port is free. Doesn't matter really because the
- * subsequent bind of the caller will fail anyway and nextAvailablePort
- * wouldn't be able to find a free one either.
- */
- private static boolean isAddressValid(InetAddress addr) {
- ServerSocket ss;
- try {
- ss = new ServerSocket();
- ss.setSoTimeout(250);
- } catch (IOException e) {
- throw Exceptions.propagate(e);
- }
- try {
- ss.bind(new InetSocketAddress(addr, 0));
- return true;
- } catch (IOException e) {
- if (log.isTraceEnabled()) log.trace("Binding on {} failed, interface could be down, being reconfigured, file handle exhaustion, port exhaustion, etc.", addr);
- return false;
- } finally {
- closeQuietly(ss);
- }
- }
-
- /** returns the first port available on the local machine >= the port supplied */
- public static int nextAvailablePort(int port) {
- checkArgument(port >= MIN_PORT_NUMBER && port <= MAX_PORT_NUMBER, "requested port %s is outside the valid range of %s to %s", port, MIN_PORT_NUMBER, MAX_PORT_NUMBER);
- int originalPort = port;
- while (!isPortAvailable(port) && port < MAX_PORT_NUMBER) port++;
- if (port >= MAX_PORT_NUMBER)
- throw new RuntimeException("unable to find a free port at or above " + originalPort);
- return port;
- }
-
- public static boolean isPortValid(Integer port) {
- return (port!=null && port>=Networking.MIN_PORT_NUMBER && port<=Networking.MAX_PORT_NUMBER);
- }
- public static int checkPortValid(Integer port, String errorMessage) {
- if (!isPortValid(port)) {
- throw new IllegalArgumentException("Invalid port value "+port+": "+errorMessage);
- }
- return port;
- }
-
- public static void checkPortsValid(Map<?, ?> ports) {
- for (Map.Entry<?,?> entry : ports.entrySet()) {
- Object val = entry.getValue();
- if (val == null){
- throw new IllegalArgumentException("port for "+entry.getKey()+" is null");
- } else if (!(val instanceof Integer)) {
- throw new IllegalArgumentException("port "+val+" for "+entry.getKey()+" is not an integer ("+val.getClass()+")");
- }
- checkPortValid((Integer)val, ""+entry.getKey());
- }
- }
-
- /**
- * Check if this is a private address, not exposed on the public Internet.
- *
- * For IPV4 addresses this is an RFC1918 subnet (site local) address ({@code 10.0.0.0/8},
- * {@code 172.16.0.0/12} and {@code 192.168.0.0/16}), a link-local address
- * ({@code 169.254.0.0/16}) or a loopback address ({@code 127.0.0.1/0}).
- * <p>
- * For IPV6 addresses this is the RFC3514 link local block ({@code fe80::/10})
- * and site local block ({@code feco::/10}) or the loopback block
- * ({@code ::1/128}).
- *
- * @return true if the address is private
- */
- public static boolean isPrivateSubnet(InetAddress address) {
- return address.isSiteLocalAddress() || address.isLoopbackAddress() || address.isLinkLocalAddress();
- }
-
- /** Check whether this address is definitely not going to be usable on any other machine;
- * i.e. if it is a loopback address or a link-local (169.254)
- */
- public static boolean isLocalOnly(InetAddress address) {
- return address.isLoopbackAddress() || address.isLinkLocalAddress();
- }
-
- /** As {@link #isLocalOnly(InetAddress)} but taking a string;
- * does not require the string to be resolvable, and generally treats non-resolvable hostnames as NOT local-only
- * (although they are treated as private by {@link #isPrivateSubnet(String)}),
- * although certain well-known hostnames are recognised as local-only
- * <p>
- * note however {@link InetAddress#getByName(String)} can ignore settings in /etc/hosts, on OS X at least,
- * and give different values than the system */
- public static boolean isLocalOnly(String hostnameOrIp) {
- Preconditions.checkNotNull(hostnameOrIp, "hostnameOrIp");
- if ("127.0.0.1".equals(hostnameOrIp)) return true;
- if ("localhost".equals(hostnameOrIp)) return true;
- if ("localhost.localdomain".equals(hostnameOrIp)) return true;
- try {
- InetAddress ia = getInetAddressWithFixedName(hostnameOrIp);
- return isLocalOnly(ia);
- } catch (Exception e) {
- log.debug("Networking cannot resolve "+hostnameOrIp+": assuming it is not a local-only address, but it is a private address");
- return false;
- }
- }
-
- /** As {@link #isPrivateSubnet(InetAddress)} but taking a string; sepcifically local-only address ARE treated as private.
- * does not require the string to be resolvable, and things which aren't resolvable are treated as private
- * unless they are known to be local-only */
- public static boolean isPrivateSubnet(String hostnameOrIp) {
- Preconditions.checkNotNull(hostnameOrIp, "hostnameOrIp");
- try {
- InetAddress ia = getInetAddressWithFixedName(hostnameOrIp);
- return isPrivateSubnet(ia);
- } catch (Exception e) {
- log.debug("Networking cannot resolve "+hostnameOrIp+": assuming it IS a private address");
- return true;
- }
- }
-
- private static boolean triedUnresolvableHostname = false;
- private static String cachedAddressOfUnresolvableHostname = null;
-
- /** returns null in a sane DNS environment, but if DNS provides a bogus address for made-up hostnames, this returns that address */
- public synchronized static String getAddressOfUnresolvableHostname() {
- if (triedUnresolvableHostname) return cachedAddressOfUnresolvableHostname;
- String h = "noexistent-machine-"+Identifiers.makeRandomBase64Id(8);
- try {
- cachedAddressOfUnresolvableHostname = InetAddress.getByName(h).getHostAddress();
- log.info("Networking detected "+cachedAddressOfUnresolvableHostname+" being returned by DNS for bogus hostnames ("+h+")");
- } catch (Exception e) {
- log.debug("Networking detected failure on DNS resolution of unknown hostname ("+h+" throws "+e+")");
- cachedAddressOfUnresolvableHostname = null;
- }
- triedUnresolvableHostname = true;
- return cachedAddressOfUnresolvableHostname;
- }
-
- /** resolves the given hostname to an IP address, returning null if unresolvable or
- * if the resolution is bogus (eg 169.* subnet or a "catch-all" IP resolution supplied by some miscreant DNS services) */
- public static InetAddress resolve(String hostname) {
- try {
- InetAddress a = InetAddress.getByName(hostname);
- if (a==null) return null;
- String ha = a.getHostAddress();
- if (log.isDebugEnabled()) log.debug("Networking resolved "+hostname+" as "+a);
- if (ha.equals(getAddressOfUnresolvableHostname())) return null;
- if (ha.startsWith("169.")) return null;
- return a;
- } catch (Exception e) {
- if (log.isDebugEnabled()) log.debug("Networking failed to resolve "+hostname+", threw "+e);
- return null;
- }
- }
-
- /**
- * Gets an InetAddress using the given IP, and using that IP as the hostname (i.e. avoids any hostname resolution).
- * <p>
- * This is very useful if using the InetAddress for updating config files on remote machines, because then it will
- * not be pickup a hostname from the local /etc/hosts file, which might not be known on the remote machine.
- */
- public static InetAddress getInetAddressWithFixedName(byte[] ip) {
- try {
- StringBuilder name = new StringBuilder();
- for (byte part : ip) {
- if (name.length() > 0) name.append(".");
- name.append(part);
- }
- return InetAddress.getByAddress(name.toString(), ip);
- } catch (UnknownHostException e) {
- throw Throwables.propagate(e);
- }
- }
-
- public static InetAddress getInetAddressWithFixedName(int ip1, int ip2, int ip3, int ip4) {
- return getInetAddressWithFixedName(asByteArray(ip1, ip2, ip3, ip4));
- }
-
- public static InetAddress getInetAddressWithFixedName(int ip1, int ip2, int ip3, int ip4, int ip5, int ip6) {
- return getInetAddressWithFixedName(asByteArray(ip1, ip2, ip3, ip4, ip5, ip6));
- }
-
- /** creates a byte array given a var-arg number of (or bytes or longs);
- * checks that all values are valid as _unsigned_ bytes (i.e. in [0,255] ) */
- public static byte[] asByteArray(long ...bytes) {
- byte[] result = new byte[bytes.length];
- for (int i=0; i<bytes.length; i++)
- result[i] = UnsignedBytes.checkedCast(bytes[i]);
- return result;
- }
-
- /** checks whether given string matches a valid numeric IP (v4) address, e.g. 127.0.0.1,
- * but not localhost or 1.2.3.256 */
- public static boolean isValidIp4(String input) {
- return VALID_IP_ADDRESS_PATTERN.matcher(input).matches();
- }
-
- /**
- * Gets an InetAddress using the given hostname or IP. If it is an IPv4 address, then this is equivalent
- * to {@link getInetAddressWithFixedName(byte[])}. If it is a hostname, then this hostname will be used
- * in the returned InetAddress.
- */
- public static InetAddress getInetAddressWithFixedName(String hostnameOrIp) {
- try {
- if (isValidIp4(hostnameOrIp)) {
- byte[] ip = new byte[4];
- String[] parts = hostnameOrIp.split("\\.");
- assert parts.length == 4 : "val="+hostnameOrIp+"; split="+Arrays.toString(parts)+"; length="+parts.length;
- for (int i = 0; i < parts.length; i++) {
- ip[i] = (byte)Integer.parseInt(parts[i]);
- }
- return InetAddress.getByAddress(hostnameOrIp, ip);
- } else {
- return InetAddress.getByName(hostnameOrIp);
- }
- } catch (UnknownHostException e) {
- throw Throwables.propagate(e);
- }
- }
-
- /** returns local IP address, or 127.0.0.1 if it cannot be parsed */
- public static InetAddress getLocalHost() {
- try {
- return InetAddress.getLocalHost();
- } catch (UnknownHostException e) {
- InetAddress result = null;
- result = getInetAddressWithFixedName("127.0.0.1");
- log.warn("Localhost is not resolvable; using "+result);
- return result;
- }
- }
-
- /** returns all local addresses */
- public static Map<String,InetAddress> getLocalAddresses() {
- Map<String, InetAddress> result = new LinkedHashMap<String, InetAddress>();
- Enumeration<NetworkInterface> ne;
- try {
- ne = NetworkInterface.getNetworkInterfaces();
- } catch (SocketException e) {
- log.warn("Local network interfaces are not resolvable: "+e);
- ne = null;
- }
- while (ne != null && ne.hasMoreElements()) {
- NetworkInterface nic = ne.nextElement();
- Enumeration<InetAddress> inets = nic.getInetAddresses();
- while (inets.hasMoreElements()) {
- InetAddress inet = inets.nextElement();
- result.put(inet.getHostAddress(), inet);
- }
- }
- if (result.isEmpty()) {
- log.warn("No local network addresses found; assuming 127.0.0.1");
- InetAddress loop = Cidr.LOOPBACK.addressAtOffset(0);
- result.put(loop.getHostAddress(), loop);
- }
- return result;
- }
-
- /** returns a CIDR object for the given string, e.g. "10.0.0.0/8" */
- public static Cidr cidr(String cidr) {
- return new Cidr(cidr);
- }
-
- /** returns any well-known private network (e.g. 10.0.0.0/8 or 192.168.0.0/16)
- * which the given IP is in, or the /32 of local address if none */
- public static Cidr getPrivateNetwork(String ip) {
- Cidr me = new Cidr(ip+"/32");
- for (Cidr c: PRIVATE_NETWORKS)
- if (c.contains(me))
- return c;
- return me;
- }
-
- public static Cidr getPrivateNetwork(InetAddress address) {
- return getPrivateNetwork(address.getHostAddress());
- }
-
- /** returns whether the IP is _not_ in any private subnet */
- public static boolean isPublicIp(String ipAddress) {
- Cidr me = new Cidr(ipAddress+"/32");
- for (Cidr c: Cidr.NON_PUBLIC_CIDRS)
- if (c.contains(me)) return false;
- return true;
- }
-
- /** returns true if the supplied string matches any known IP (v4 or v6) for this machine,
- * or if it can be resolved to any such address */
- public static boolean isLocalhost(String remoteAddress) {
- Map<String, InetAddress> addresses = getLocalAddresses();
- if (addresses.containsKey(remoteAddress)) return true;
-
- if ("127.0.0.1".equals(remoteAddress)) return true;
-
- String modifiedIpV6Address = remoteAddress;
- // IPv6 localhost "ip" strings may vary;
- // comes back as 0:0:0:0:0:0:0:1%1 for me.
- // following deals with the cases which seem likely.
- // (svet suggests using InetAddress parsing but I -- Alex -- am not sure if that's going to have it's own bugs)
- if (modifiedIpV6Address.contains("%")) {
- // trim any description %dex
- modifiedIpV6Address = modifiedIpV6Address.substring(0, modifiedIpV6Address.indexOf("%"));
- }
- if ("0:0:0:0:0:0:0:1".equals(modifiedIpV6Address)) return true;
- if ("::1".equals(modifiedIpV6Address)) return true;
- if (addresses.containsKey(remoteAddress) || addresses.containsKey(modifiedIpV6Address))
- return true;
-
- try {
- InetAddress remote = InetAddress.getByName(remoteAddress);
- if (addresses.values().contains(remote))
- return true;
- } catch (Exception e) {
- Exceptions.propagateIfFatal(e);
- log.debug("Error resolving address "+remoteAddress+" when checking if it is local (assuming not: "+e, e);
- }
-
- return false;
- }
-
- public static boolean isReachable(HostAndPort endpoint) {
- try {
- Socket s = new Socket(endpoint.getHostText(), endpoint.getPort());
- closeQuietly(s);
- return true;
- } catch (Exception e) {
- if (log.isTraceEnabled()) log.trace("Error reaching "+endpoint+" during reachability check (return false)", e);
- return false;
- }
- }
-
- public static void closeQuietly(Socket s) {
- if (s != null) {
- try {
- s.close();
- } catch (IOException e) {
- /* should not be thrown */
- }
- }
- }
-
- public static void closeQuietly(ServerSocket s) {
- if (s != null) {
- try {
- s.close();
- } catch (IOException e) {
- /* should not be thrown */
- }
- }
- }
-
- public static void closeQuietly(DatagramSocket s) {
- if (s != null) {
- s.close();
- }
- }
-
-
- // TODO go through nic's, looking for public, private, etc, on localhost
-
- /**
- * force use of TLSv1, fixing:
- * http://stackoverflow.com/questions/9828414/receiving-sslhandshakeexception-handshake-failure-despite-my-client-ignoring-al
- */
- public static void installTlsOnlyForHttpsForcing() {
- System.setProperty("https.protocols", "TLSv1");
- }
- public static void installTlsForHttpsIfAppropriate() {
- if (System.getProperty("https.protocols")==null && System.getProperty("brooklyn.https.protocols.leave_untouched")==null) {
- installTlsOnlyForHttpsForcing();
- }
- }
- static {
- installTlsForHttpsIfAppropriate();
- }
-
- /** does nothing, but forces the class to be loaded and do static initialization */
- public static void init() {}
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/Protocol.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/Protocol.java b/utils/common/src/main/java/brooklyn/util/net/Protocol.java
deleted file mode 100644
index a91b1a3..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/Protocol.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-public enum Protocol {
-
- TCP("tcp"),
- UDP("udp"),
- ICMP("icmp"),
- ALL("all");
-
- final String protocol;
-
- private Protocol(String protocol) {
- this.protocol = protocol;
- }
-
- @Override
- public String toString() {
- return protocol;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/cf2f7a93/utils/common/src/main/java/brooklyn/util/net/URLParamEncoder.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/brooklyn/util/net/URLParamEncoder.java b/utils/common/src/main/java/brooklyn/util/net/URLParamEncoder.java
deleted file mode 100644
index 4ff3620..0000000
--- a/utils/common/src/main/java/brooklyn/util/net/URLParamEncoder.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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 brooklyn.util.net;
-
-/**
- * Encodes URLs, escaping as appropriate.
- *
- * Copied from fmucar's answer in http://stackoverflow.com/questions/724043/http-url-address-encoding-in-java
- *
- * TODO Want to use a library utility, but couldn't find this in guava and don't want to introduce
- * dependency on commons-httpclient-3.1 to use URIUtil.
- *
- * @author aled
- */
-public class URLParamEncoder {
-
- public static String encode(String input) {
- StringBuilder resultStr = new StringBuilder();
- for (char ch : input.toCharArray()) {
- if (isUnsafe(ch)) {
- resultStr.append('%');
- resultStr.append(toHex(ch / 16));
- resultStr.append(toHex(ch % 16));
- } else {
- resultStr.append(ch);
- }
- }
- return resultStr.toString();
- }
-
- private static char toHex(int ch) {
- return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10);
- }
-
- private static boolean isUnsafe(char ch) {
- if (ch > 128 || ch < 0)
- return true;
- return (" %$&+,/:;=?@<>#%"
- // these are included in httpclient URI as "unwise", and have been found to be problematic
- // * backslash in a query param breaks URI.create
- + "\\"
- ).indexOf(ch) >= 0;
- }
-
-}
\ No newline at end of file