Author: marrs
Date: Mon Jul 1 21:35:11 2013
New Revision: 1498706
URL: http://svn.apache.org/r1498706
Log:
Added proper support for removing attributes and tags. Improved error messages
and stack traces in the artifact preprocessor base code. Improved the velocity
preprocessor to also upload when on 'https', not only 'http'.
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/RepositoryObject.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/ArtifactPreprocessorBase.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryObjectImpl.java
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetObjectImpl.java
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/RepositoryObject.java
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/RepositoryObject.java?rev=1498706&r1=1498705&r2=1498706&view=diff
==============================================================================
---
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/RepositoryObject.java
(original)
+++
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/RepositoryObject.java
Mon Jul 1 21:35:11 2013
@@ -48,6 +48,10 @@ public interface RepositoryObject extend
*/
public String addAttribute(String key, String value);
/**
+ * Removes a names attribute from this object's attributes.
+ */
+ public String removeAttribute(String key);
+ /**
* Gets a named attribute. Returns <code>null<code> when the attribute
named by
* <code>key</code> does not exist.
*/
@@ -63,6 +67,10 @@ public interface RepositoryObject extend
*/
public String addTag(String key, String value);
/**
+ * Removes a named tag from this object's attributes.
+ */
+ public String removeTag(String key);
+ /**
* Gets a named tag. Returns <code>null<code> when the attribute named by
* <code>key</code> does not exist.
*/
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/ArtifactPreprocessorBase.java
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/ArtifactPreprocessorBase.java?rev=1498706&r1=1498705&r2=1498706&view=diff
==============================================================================
---
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/ArtifactPreprocessorBase.java
(original)
+++
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/ArtifactPreprocessorBase.java
Mon Jul 1 21:35:11 2013
@@ -138,12 +138,11 @@ public abstract class ArtifactPreprocess
location = connection.getHeaderField("Location");
break;
case HttpURLConnection.HTTP_CONFLICT:
- throw new IOException("Artifact already exists in
storage.");
+ throw new IOException("Artifact already exists in
storage: " + name);
case HttpURLConnection.HTTP_INTERNAL_ERROR:
- throw new IOException("The storage server returned an
internal server error.");
+ throw new IOException("The storage server returned an
internal server error while trying to upload " + name);
default:
- throw new IOException("The storage server returned
code " + responseCode + " writing to "
- + url.toString());
+ throw new IOException("The storage server returned
code " + responseCode + " writing to " + url.toString());
}
}
}
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java?rev=1498706&r1=1498705&r2=1498706&view=diff
==============================================================================
---
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
(original)
+++
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/helper/base/VelocityArtifactPreprocessor.java
Mon Jul 1 21:35:11 2013
@@ -126,10 +126,12 @@ public class VelocityArtifactPreprocesso
String name = getFilename(url, targetID, version);
String location = null;
- if(obrBase.getProtocol().equals("http")){
+ String protocol = obrBase.getProtocol();
+ if ("http".equals(protocol) || "https".equals(protocol)) {
// upload the new resource to the OBR
location = upload(new ByteArrayInputStream(result), name,
ConfigurationHelper.MIMETYPE, obrBase);
- } else {
+ }
+ else {
// this is only to support the unit tests
location = obrBase + name;
}
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryObjectImpl.java
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryObjectImpl.java?rev=1498706&r1=1498705&r2=1498706&view=diff
==============================================================================
---
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryObjectImpl.java
(original)
+++
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/impl/RepositoryObjectImpl.java
Mon Jul 1 21:35:11 2013
@@ -163,24 +163,73 @@ public class RepositoryObjectImpl<T exte
}
public String addAttribute(String key, String value) {
+ if (value == null || key == null) {
+ throw new IllegalArgumentException("Invalid key/value pair: " +
key + "/" + value);
+ }
for (String s : getDefiningKeys()) {
if (s.equals(key)) {
throw new UnsupportedOperationException("The defining
attribute " + key + " is not allowed to be changed.");
}
}
+ String result = null;
synchronized (m_attributes) {
ensureCurrent();
- notifyChanged(null);
- return m_attributes.put(key, value);
+ result = m_attributes.get(key);
+ if (!value.equals(result)) {
+ result = m_attributes.put(key, value);
+ notifyChanged(null);
+ }
}
+ return result;
+ }
+
+ @Override
+ public String removeAttribute(String key) {
+ for (String s : getDefiningKeys()) {
+ if (s.equals(key)) {
+ throw new UnsupportedOperationException("The defining
attribute " + key + " is not allowed to be changed.");
+ }
+ }
+ String result = null;
+ synchronized (m_attributes) {
+ ensureCurrent();
+ result = m_attributes.get(key);
+ if (result != null) {
+ result = m_attributes.remove(key);
+ notifyChanged(null);
+ }
+ }
+ return result;
}
public String addTag(String key, String value) {
+ if (value == null || key == null) {
+ throw new IllegalArgumentException("Invalid key/value pair: " +
key + "/" + value);
+ }
+ String result = null;
+ synchronized (m_attributes) {
+ ensureCurrent();
+ result = m_tags.get(key);
+ if (!value.equals(result)) {
+ result = m_tags.put(key, value);
+ notifyChanged(null);
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String removeTag(String key) {
+ String result = null;
synchronized (m_attributes) {
ensureCurrent();
- notifyChanged(null);
- return m_tags.put(key, value);
+ result = m_tags.get(key);
+ if (result != null) {
+ result = m_tags.remove(key);
+ notifyChanged(null);
+ }
}
+ return result;
}
public String getAttribute(String key) {
Modified:
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetObjectImpl.java
URL:
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetObjectImpl.java?rev=1498706&r1=1498705&r2=1498706&view=diff
==============================================================================
---
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetObjectImpl.java
(original)
+++
ace/trunk/org.apache.ace.client.repository/src/org/apache/ace/client/repository/stateful/impl/StatefulTargetObjectImpl.java
Mon Jul 1 21:35:11 2013
@@ -463,6 +463,13 @@ public class StatefulTargetObjectImpl im
return m_targetObject.addAttribute(key, value);
}
}
+
+ public String removeAttribute(String key) {
+ synchronized(m_lock) {
+ ensureTargetPresent();
+ return m_targetObject.removeAttribute(key);
+ }
+ }
public String addTag(String key, String value) {
synchronized(m_lock) {
@@ -470,6 +477,13 @@ public class StatefulTargetObjectImpl im
return m_targetObject.addTag(key, value);
}
}
+
+ public String removeTag(String key) {
+ synchronized(m_lock) {
+ ensureTargetPresent();
+ return m_targetObject.removeTag(key);
+ }
+ }
public String getAttribute(String key) {
// retrieve from both