@Override public void pullRemote(CallingContext context, String raptureURIString) { RaptureURI internalURI = new RaptureURI(raptureURIString, Scheme.DOCUMENT); if (internalURI.hasDocPath()) { throw RaptureExceptionFactory.create( HttpURLConnection.HTTP_BAD_REQUEST, apiMessageCatalog.getMessage("NoDocPath", internalURI.toShortString())); // $NON-NLS-1$ } checkParameter(NAME, internalURI.getDocPath()); log.info( Messages.getString("Admin.PullPerspective") + Messages.getString("Admin.OnType") + internalURI.getDocPath() // $NON-NLS-1$ //$NON-NLS-2$ + Messages.getString("Admin.InAuthority") + internalURI.getAuthority()); // $NON-NLS-1$ // NOW this is the fun one // Here are the steps // (1) Look at the local, does it have a remote defined? If // so, what is the latest commit known about // for that remote? // (2) Make a remote call to retrieve the commits up to that commit from // the RemoteLink // (3) For each commit, look at all of the references, retrieve them // from the remote and persist them // into the repo. // (4) Update the local perspective to point at the latest commit, and // update the Remote commit to point at that. getKernel().getRepo(internalURI.getFullPath()); // $NON-NLS-1$ }
@Override public Object getReflectionObject(CallingContext ctx, String uri) { RaptureURI ruri = new RaptureURI(uri); if (ruri.getScheme().equals(Scheme.TABLE)) return Kernel.getIndex().getTable(ctx, uri); else if (ruri.getScheme().equals(Scheme.INDEX)) { if (ruri.hasDocPath()) log.warn(uri + " has unexpected dogPath " + ruri.getDocPath() + " - stripped"); return Kernel.getIndex().getIndex(ctx, ruri.toAuthString()); } else throw RaptureExceptionFactory.create("URI " + uri + " not supported by IndexEncoder"); }
@Override public void clearRemote(CallingContext context, String raptureURIString) { RaptureURI internalURI = new RaptureURI(raptureURIString, Scheme.DOCUMENT); if (internalURI.hasDocPath()) { throw RaptureExceptionFactory.create( HttpURLConnection.HTTP_BAD_REQUEST, apiMessageCatalog.getMessage("NoDocPath", internalURI.toShortString())); // $NON-NLS-1$ } checkParameter(AUTHORITYNAME, internalURI.getAuthority()); Repository repository = getKernel().getRepo(internalURI.getAuthority()); // $NON-NLS-1$ repository.clearRemote(); }
/** This method is used to setup a link between a local repo and a remote one. The remoteName */ @Override public void setRemote( CallingContext context, String raptureURIString, String remote, String remoteURIString) { RaptureURI internalURI = new RaptureURI(raptureURIString, Scheme.DOCUMENT); if (internalURI.hasDocPath()) { throw RaptureExceptionFactory.create( HttpURLConnection.HTTP_BAD_REQUEST, apiMessageCatalog.getMessage("NoDocPath", internalURI.toShortString())); // $NON-NLS-1$ } checkParameter(NAME, internalURI.getAuthority()); checkParameter("Remote", remote); // $NON-NLS-1$ RaptureURI remoteURI = new RaptureURI(raptureURIString, Scheme.DOCUMENT); if (remoteURI.hasDocPath()) { throw RaptureExceptionFactory.create( HttpURLConnection.HTTP_BAD_REQUEST, apiMessageCatalog.getMessage("NoDocPath", remoteURI.toShortString())); // $NON-NLS-1$ } checkParameter(NAME, remoteURI.getAuthority()); // This is set in the repo Repository repository = getKernel().getRepo(internalURI.getAuthority()); // $NON-NLS-1$ repository.setRemote(remote, remoteURI.getAuthority()); Kernel.typeChanged(internalURI); }
@Override public PluginTransportItem encode(CallingContext context, String uriString) { RaptureURI uri = new RaptureURI(uriString, Scheme.SCRIPT); return uri.hasDocPath() ? encodeRaw(context, uri) : super.encode(context, uriString); }